You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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>
Copy file name to clipboardExpand all lines: .devcontainer/README.adoc
+2-2Lines changed: 2 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,7 +1,7 @@
1
1
// SPDX-License-Identifier: CC-BY-SA-4.0
2
2
// Copyright (c) Jonathan D.A. Jewell <j.d.a.jewell@open.ac.uk>
3
3
= Dev Container Usage
4
-
:author: {{AUTHOR}} <{{AUTHOR_EMAIL}}>
4
+
:author: Jonathan D.A. Jewell <j.d.a.jewell@open.ac.uk>
5
5
6
6
== Overview
7
7
@@ -25,4 +25,4 @@ This dev container uses `cgr.dev/chainguard/wolfi-base` with git, curl, bash, an
25
25
26
26
== Customization
27
27
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.
> **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.
26
11
27
12
## Our Pledge
28
13
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.
30
15
31
16
We pledge to act and interact in ways that contribute to an open, welcoming, diverse, inclusive, and healthy community.
32
17
@@ -140,7 +125,7 @@ If you experience or witness unacceptable behaviour, or have any other concerns,
0 commit comments