Skip to content

Commit cc680a8

Browse files
fix: instantiate knot-rider from the RSR template (#17)
## Summary `knot-rider` was scaffolded from `rsr-template-repo` but never instantiated — `{{PLACEHOLDER}}` tokens survived throughout, including in the `.zig` sources, so the Zig FFI seam genuinely did not parse. This PR cures the instantiation for real. - **Identity placeholders substituted** across ~80 files (`{{PROJECT_NAME}}`, `{{OWNER}}`, `{{REPO}}`, `{{AUTHOR}}`, `{{FORGE}}`, `{{LICENSE}}`, etc.) — real values used throughout, intentional generic scaffolding (`docs-template/`, ADR templates, K9 example configs, native Justfile `{{recipe}}` interpolation) left untouched. - **`.github/settings.yml` landmine fixed**: an unsubstituted `name: "{{REPO}}"` under the probot/settings config would have made the app try to rename the repo to the literal string `{{REPO}}` on the next push to `main`. - **Zig FFI seam now genuinely builds and tests**: `{{project}}_*` → `knot_rider_*`, plus two real Zig 0.16 incompatibilities fixed along the way (`opaque` types can no longer carry fields; `callconv(.C)` → `callconv(.c)`). `build.zig` was previously inert scaffolding with zero real build targets — rewrote it to actually compile `main.zig` as a static library and wire `zig build test` to the real test suites. `zig fmt --check`, `zig build`, and `zig build test` all pass (4/4 tests). - **`.machine_readable/6a2/{CLADE,ECOSYSTEM,STATE}.a2ml`** still described `rsr-template-repo`'s own identity/purpose/"95% complete, production maturity" claim — hardcoded wrong content, not a `{{}}` token. Fixed the fields that feed the `CLAUDE.md` arrival-pack generator, then regenerated `CLAUDE.md` for real via `just claude-md` rather than hand-editing the generated region. - **Justfile TODO/echo stubs rewired to real commands**: `build`/`test`/`fmt`/`fmt-check` → real `zig build`/`zig build test`/`zig fmt`; `lint` → `idris2 --typecheck abi.ipkg`; `e2e`/`aspect` → `bash tests/e2e.sh` / `bash tests/aspect_tests.sh`; `deps` → checks the Zig toolchain. Deleted `run`/`run-verbose`/`bench`/`readiness` recipes rather than leave `echo "..."` fake-pass stubs — this repo is a C-ABI library with no application entry point and no bench/readiness suite exists. - **Two real false positives fixed in `tests/aspect_tests.sh`** that the newly-wired `aspect` recipe surfaced: documentation prose describing banned patterns (`sorry`, `Admitted`) was being flagged as a violation, and Zig build-cache files were being scanned for SPDX headers. `just test-all` / `just quality` are genuinely green now, not just newly-wired-but-red. - **Removed obsolete template machinery**: `scripts/validate-template.sh`, `tests/e2e/template_instantiation_test.sh`, `benches/template_bench.sh`, `.machine_readable/ai/PLACEHOLDERS.adoc`. No workflow referenced any of them (re-verified). - **README/EXPLAINME/AFFIRMATION rewritten honestly.** ## This project's purpose remains undocumented This is deliberate, not an oversight. `knot-rider`'s specific technical purpose is not documented anywhere in this repository or the wider hyperpolymath estate registry (checked: `reposystem` tool registry, `verisimdb-data`, `gitbot-fleet`, estate memory). The only repo-specific content that exists is GitHub's own description, a knowing pun on the *Knight Rider* intro monologue: > A shadowy flight into the dangerous world of a man, who is either permanently or very often undone by circumstance. That's wordplay, not a spec. README.adoc says this plainly rather than inventing a product story. ## Known, out-of-scope findings (not fixed here) - The literal string `rsr-template-repo` (not a `{{}}` placeholder, so outside this PR's defined scope) still appears as leftover self-referential text in ~40 files under `.machine_readable/contractiles/`, `docs/onboarding/`, `docs/status/`, `.machine_readable/coaptation/`, etc. I fixed the highest-impact instances (the ones feeding `CLAUDE.md`, the Justfile's user-facing `doctor`/`tour` output, and de-duplicated `.machine_readable/contractiles/Justfile` back into a hardlink of the root Justfile per its own dust-check). A full sweep of this second bug class would roughly double the size of this change and is a reasonable follow-up. - `docs/status/TEST-NEEDS.adoc` describes `rsr-template-repo`'s own historical test-suite development (not knot-rider's) — left as-is, flagged as stale. - `idris2 --typecheck abi.ipkg` was verified to pass in this environment (exit 0, warnings only), but this wasn't part of the original ask and toolchain availability may differ elsewhere. ## Test plan - [x] `zig fmt --check src/interface/ffi` — exit 0 - [x] `cd src/interface/ffi && zig build` — exit 0 - [x] `cd src/interface/ffi && zig build test` — exit 0, 4/4 tests pass - [x] `just quality` (fmt-check + lint + test) — exit 0 - [x] `just test-all` (test + e2e + aspect) — exit 0 - [x] `just claude-md && just validate-claude-md` — in sync - [x] Edited workflow YAML re-parsed with `python3 -c "import yaml; yaml.safe_load(...)"` - [x] Grepped for lingering `.github/workflows/*.yml` references to the deleted template-machinery scripts — none found 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
1 parent 1cf1c52 commit cc680a8

84 files changed

Lines changed: 667 additions & 1896 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.devcontainer/Containerfile

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
# SPDX-License-Identifier: MPL-2.0
2-
# Copyright (c) {{CURRENT_YEAR}} {{AUTHOR}} ({{OWNER}}) <{{AUTHOR_EMAIL}}>
2+
# Copyright (c) 2026 Jonathan D.A. Jewell (hyperpolymath) <j.d.a.jewell@open.ac.uk>
33
#
4-
# Dev Container image for {{PROJECT_NAME}}
4+
# Dev Container image for knot-rider
55
# Base: Chainguard Wolfi (minimal, supply-chain-secure)
6-
# Build: podman build -t {{PROJECT_NAME}}-dev -f .devcontainer/Containerfile .
6+
# Build: podman build -t knot-rider-dev -f .devcontainer/Containerfile .
77
# `:latest` suits a dev container (rebuilt daily); pin by digest
88
# (...@sha256:<digest>) if you need a reproducible dev environment.
99

@@ -26,7 +26,7 @@ RUN groupadd -g 1000 nonroot || true \
2626
&& useradd -m -u 1000 -g 1000 -s /bin/bash nonroot || true
2727

2828
# Set workspace directory
29-
WORKDIR /workspaces/{{PROJECT_NAME}}
29+
WORKDIR /workspaces/knot-rider
3030

3131
# Default shell
3232
ENV SHELL=/bin/bash

.devcontainer/README.adoc

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
// SPDX-License-Identifier: CC-BY-SA-4.0
22
// Copyright (c) Jonathan D.A. Jewell <j.d.a.jewell@open.ac.uk>
33
= Dev Container Usage
4-
:author: {{AUTHOR}} <{{AUTHOR_EMAIL}}>
4+
:author: Jonathan D.A. Jewell <j.d.a.jewell@open.ac.uk>
55

66
== Overview
77

@@ -25,4 +25,4 @@ This dev container uses `cgr.dev/chainguard/wolfi-base` with git, curl, bash, an
2525

2626
== Customization
2727

28-
Replace `{{PROJECT_NAME}}` placeholders in both `devcontainer.json` and `Containerfile` with your actual project name. Run `just deps` to verify the environment after first launch.
28+
Replace `knot-rider` placeholders in both `devcontainer.json` and `Containerfile` with your actual project name. Run `just deps` to verify the environment after first launch.

.devcontainer/devcontainer.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
// SPDX-License-Identifier: MPL-2.0
2-
// Copyright (c) {{CURRENT_YEAR}} {{AUTHOR}} ({{OWNER}}) <{{AUTHOR_EMAIL}}>
2+
// Copyright (c) 2026 Jonathan D.A. Jewell (hyperpolymath) <j.d.a.jewell@open.ac.uk>
33
//
4-
// Dev Container configuration for {{PROJECT_NAME}}
4+
// Dev Container configuration for knot-rider
55
// Works with: VS Code Dev Containers, GitHub Codespaces, Gitpod
66
// Container runtime: Podman (recommended) or any OCI-compliant runtime
77
{
8-
"name": "{{PROJECT_NAME}}",
8+
"name": "knot-rider",
99

1010
"build": {
1111
"dockerfile": "Containerfile",

.envrc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ if has guix && [ -f guix.scm ]; then
1313
fi
1414

1515
# Project environment variables
16-
export PROJECT_NAME="{{PROJECT_NAME}}"
16+
export PROJECT_NAME="knot-rider"
1717
export RSR_TIER="infrastructure"
1818
# Add non-secret project env vars above (e.g. DATABASE_URL, service endpoints).
1919
# Real secrets belong in .env (gitignored) — never commit them to .envrc.

.github/.mailmap

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
{{AUTHOR}} <{{AUTHOR_EMAIL}}> <{{AUTHOR_EMAIL_ALT}}>
1+
Jonathan D.A. Jewell <j.d.a.jewell@open.ac.uk>

.github/CODEOWNERS

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,13 @@
22
# CODEOWNERS - Define code review assignments
33
# See: https://docs.github.com/en/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/about-code-owners
44
#
5-
# Replace {{OWNER}} with your GitHub username or team
5+
# Replace hyperpolymath with your GitHub username or team
66

77
# Default owners for everything
8-
* @{{OWNER}}
8+
* @hyperpolymath
99

1010
# Security-sensitive files require explicit review
11-
SECURITY.md @{{OWNER}}
12-
.github/workflows/ @{{OWNER}}
13-
Trustfile.a2ml @{{OWNER}}
14-
.machine_readable/ @{{OWNER}}
11+
SECURITY.md @hyperpolymath
12+
.github/workflows/ @hyperpolymath
13+
Trustfile.a2ml @hyperpolymath
14+
.machine_readable/ @hyperpolymath

.github/CODE_OF_CONDUCT.md

Lines changed: 15 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -4,29 +4,14 @@ Copyright (c) Jonathan D.A. Jewell <j.d.a.jewell@open.ac.uk>
44
-->
55
# Code of Conduct
66

7-
<!--
8-
============================================================================
9-
TEMPLATE INSTRUCTIONS (delete this block before publishing)
10-
============================================================================
11-
Replace all {{PLACEHOLDER}} values:
12-
{{PROJECT_NAME}} - Your project name
13-
{{OWNER}} - GitHub/GitLab username or org
14-
{{REPO}} - Repository name
15-
{{CONDUCT_EMAIL}} - Email for conduct reports
16-
{{CONDUCT_TEAM}} - Name of conduct team/committee
17-
{{RESPONSE_TIME}} - Initial response SLA (e.g., 48 hours)
18-
{{CURRENT_YEAR}} - Current year
19-
20-
Review and customise:
21-
- Adjust enforcement ladder for your community size
22-
- Add/remove examples based on your context
23-
- Ensure contact methods work for your team
24-
============================================================================
25-
-->
7+
> **Note:** This is a single-maintainer repository. The enforcement ladder
8+
> below is kept as-written from the RSR community-health template for
9+
> consistency across the estate; in practice reports go straight to the
10+
> maintainer.
2611
2712
## Our Pledge
2813

29-
We as members, contributors, and leaders pledge to make participation in {{PROJECT_NAME}} a harassment-free experience for everyone, regardless of age, body size, visible or invisible disability, ethnicity, sex characteristics, gender identity and expression, level of experience, education, socio-economic status, nationality, personal appearance, race, caste, colour, religion, or sexual identity and orientation.
14+
We as members, contributors, and leaders pledge to make participation in knot-rider a harassment-free experience for everyone, regardless of age, body size, visible or invisible disability, ethnicity, sex characteristics, gender identity and expression, level of experience, education, socio-economic status, nationality, personal appearance, race, caste, colour, religion, or sexual identity and orientation.
3015

3116
We pledge to act and interact in ways that contribute to an open, welcoming, diverse, inclusive, and healthy community.
3217

@@ -140,7 +125,7 @@ If you experience or witness unacceptable behaviour, or have any other concerns,
140125

141126
| Method | Details | Best For |
142127
|--------|---------|----------|
143-
| **Email** | {{CONDUCT_EMAIL}} | Detailed reports, sensitive matters |
128+
| **Email** | j.d.a.jewell@open.ac.uk | Detailed reports, sensitive matters |
144129
| **Private Message** | Contact any maintainer directly | Quick questions, minor issues |
145130
| **Anonymous Form** | [Link to form if available] | When you need anonymity |
146131

@@ -156,8 +141,8 @@ If you experience or witness unacceptable behaviour, or have any other concerns,
156141

157142
**What Happens Next**
158143

159-
1. You will receive acknowledgment within **{{RESPONSE_TIME}}**
160-
2. The {{CONDUCT_TEAM}} will review the report
144+
1. You will receive acknowledgment within **5 business days**
145+
2. The maintainer will review the report
161146
3. We may ask for additional information
162147
4. We will determine appropriate action
163148
5. We will inform you of the outcome (respecting others' privacy)
@@ -173,7 +158,7 @@ All reports will be handled with discretion:
173158

174159
### Conflicts of Interest
175160

176-
If a {{CONDUCT_TEAM}} member is involved in an incident:
161+
If the maintainer is involved in an incident:
177162

178163
- They will recuse themselves from the process
179164
- Another maintainer or external party will handle the report
@@ -183,7 +168,7 @@ If a {{CONDUCT_TEAM}} member is involved in an incident:
183168

184169
## Enforcement Guidelines
185170

186-
The {{CONDUCT_TEAM}} will follow these guidelines in determining consequences:
171+
The maintainer will follow these guidelines in determining consequences:
187172

188173
### 1. Correction
189174

@@ -235,13 +220,13 @@ For contributors with elevated access (Perimeter 2 or 1):
235220
If you believe an enforcement decision was made in error:
236221

237222
1. **Wait 7 days** after the decision (cooling-off period)
238-
2. **Email** {{CONDUCT_EMAIL}} with subject line "Appeal: [Original Report ID]"
223+
2. **Email** j.d.a.jewell@open.ac.uk with subject line "Appeal: [Original Report ID]"
239224
3. **Explain** why you believe the decision should be reconsidered
240225
4. **Provide** any new information not previously available
241226

242227
**Appeals Process**
243228

244-
- Appeals are reviewed by a different {{CONDUCT_TEAM}} member than the original
229+
- Appeals are reviewed by a different maintainer than the original, if one is available
245230
- You will receive a response within 14 days
246231
- The appeals decision is final
247232
- You may only appeal once per incident
@@ -314,8 +299,8 @@ We thank these communities for their leadership in creating welcoming spaces.
314299

315300
If you have questions about this Code of Conduct:
316301

317-
- Open a [Discussion](https://{{FORGE}}/{{OWNER}}/{{REPO}}/discussions) (for general questions)
318-
- Email {{CONDUCT_EMAIL}} (for private questions)
302+
- Open a [Discussion](https://github.com/hyperpolymath/knot-rider/discussions) (for general questions)
303+
- Email j.d.a.jewell@open.ac.uk (for private questions)
319304
- Contact any maintainer directly
320305

321306
---
@@ -328,4 +313,4 @@ We're all here because we care about this project. Let's make it a place where e
328313

329314
---
330315

331-
<sub>Last updated: {{CURRENT_YEAR}} · Based on Contributor Covenant 2.1</sub>
316+
<sub>Last updated: 2026 · Based on Contributor Covenant 2.1</sub>

.github/CONTRIBUTING.md

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,15 @@ SPDX-License-Identifier: CC-BY-SA-4.0
33
Copyright (c) Jonathan D.A. Jewell <j.d.a.jewell@open.ac.uk>
44
-->
55
# Clone the repository
6-
git clone https://{{FORGE}}/{{OWNER}}/{{REPO}}.git
7-
cd {{REPO}}
6+
git clone https://github.com/hyperpolymath/knot-rider.git
7+
cd knot-rider
88

99
# Using Guix (recommended for reproducibility)
1010
guix shell -D -f guix.scm
1111

1212
# Or using toolbox/distrobox
13-
toolbox create {{REPO}}-dev
14-
toolbox enter {{REPO}}-dev
13+
toolbox create knot-rider-dev
14+
toolbox enter knot-rider-dev
1515
# Install dependencies manually
1616

1717
# Verify setup
@@ -21,7 +21,7 @@ just test # Run test suite
2121
2222
### Repository Structure
2323
```
24-
{{REPO}}/
24+
knot-rider/
2525
├── src/ # Source code (Perimeter 1-2)
2626
├── lib/ # Library code (Perimeter 1-2)
2727
├── extensions/ # Extensions (Perimeter 2)
@@ -61,7 +61,7 @@ just test # Run test suite
6161
6262
**Before reporting**:
6363
1. Search existing issues
64-
2. Check if it's already fixed in `{{MAIN_BRANCH}}`
64+
2. Check if it's already fixed in `main`
6565
3. Determine which perimeter the bug affects
6666
6767
**When reporting**:
@@ -94,10 +94,10 @@ Use the [feature request template](.github/ISSUE_TEMPLATE/feature_request.md) an
9494
9595
Look for issues labelled:
9696
97-
- [`good first issue`](https://{{FORGE}}/{{OWNER}}/{{REPO}}/labels/good%20first%20issue) — Simple Perimeter 3 tasks
98-
- [`help wanted`](https://{{FORGE}}/{{OWNER}}/{{REPO}}/labels/help%20wanted) — Community help needed
99-
- [`documentation`](https://{{FORGE}}/{{OWNER}}/{{REPO}}/labels/documentation) — Docs improvements
100-
- [`perimeter-3`](https://{{FORGE}}/{{OWNER}}/{{REPO}}/labels/perimeter-3) — Community sandbox scope
97+
- [`good first issue`](https://github.com/hyperpolymath/knot-rider/labels/good%20first%20issue) — Simple Perimeter 3 tasks
98+
- [`help wanted`](https://github.com/hyperpolymath/knot-rider/labels/help%20wanted) — Community help needed
99+
- [`documentation`](https://github.com/hyperpolymath/knot-rider/labels/documentation) — Docs improvements
100+
- [`perimeter-3`](https://github.com/hyperpolymath/knot-rider/labels/perimeter-3) — Community sandbox scope
101101
102102
---
103103

.github/FUNDING.yml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# SPDX-License-Identifier: MPL-2.0
2-
# Funding platforms for {{OWNER}} projects
2+
# Funding platforms for hyperpolymath projects
33
# See: https://docs.github.com/en/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/displaying-a-sponsor-button-in-your-repository
44

5-
github: {{OWNER}}
6-
ko_fi: {{OWNER}}
7-
liberapay: {{OWNER}}
5+
github: hyperpolymath
6+
ko_fi: hyperpolymath
7+
liberapay: hyperpolymath

.github/GOVERNANCE.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,13 @@ Copyright (c) Jonathan D.A. Jewell <j.d.a.jewell@open.ac.uk>
44
-->
55
# Project Governance
66

7-
This document describes the governance model for **{{PROJECT_NAME}}**.
7+
This document describes the governance model for **knot-rider**.
88

99
---
1010

1111
## Project Governance Model
1212

13-
{{PROJECT_NAME}} follows a **Benevolent Dictator For Life (BDFL)** governance model.
13+
knot-rider follows a **Benevolent Dictator For Life (BDFL)** governance model.
1414
This model is well-suited for solo maintainers and small project teams where rapid,
1515
consistent decision-making is more valuable than formal consensus processes.
1616

@@ -157,4 +157,4 @@ with the community before adoption, even though the BDFL retains final authority
157157

158158
---
159159

160-
<sub>Copyright (c) {{CURRENT_YEAR}} {{OWNER}}. Licensed under MPL-2.0.</sub>
160+
<sub>Copyright (c) 2026 hyperpolymath. Licensed under MPL-2.0.</sub>

0 commit comments

Comments
 (0)