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 the RSR template for scaffoldia (#21)
## Summary
scaffoldia (sibling of `contractiles`) was scaffolded from
`rsr-template-repo` but never fully instantiated. Companion cure to
hyperpolymath/contractiles#21, adapted to
scaffoldia's actual (different) disease shape — scaffoldia had already
been partially cured in earlier PRs (#16/#17), so this closes the
*remaining* gaps rather than repeating contractiles' fix verbatim.
* **~420 `{{TOKEN}}` identity placeholders** resolved across ~65 files,
derived from the repo's own SPDX headers, LICENSE file, and GitHub's own
description (`gh repo view hyperpolymath/scaffoldia --json
description`). Deliberately left `container/*`,
`machine-readable-design/{canonical-directory-structure,harvested-registry}/`,
`docs-template/`, and drift-detector files whose job is to literally
match `{{PLACEHOLDER}}` as a pattern.
* **Literal `rsr-template-repo` self-identity string** fixed in ~15
files — most notably `.machine_readable/contractiles/*` (a stale,
never-updated copy of an earlier root `Justfile`) and three onboarding
docs that described a nonexistent installable app with fabricated `just
run`/`just heal`/`just setup` commands. Genuine references to the real
upstream (pipeline mentions, clone-to-start-new-project examples,
provenance notes) were left alone.
* **Two real (non-template) doc bugs** found and fixed:
`docs/attribution/CITATIONS.adoc` linked to
`github.com/hyperpolymath/Scaffoldia` (capitalised, wrong) in all five
citation formats; `docs/developer/ABI-FFI-README.adoc`'s Idris2 example
imported a nonexistent `SCAFFOLDIA.ABI.Foreign` module (real path is
`Abi.Foreign`).
* **Removed a fabricated PGP fingerprint/key** from
`.github/SECURITY.md` and `.well-known/security.txt` — confirmed via
`curl https://github.com/hyperpolymath.gpg` and `gh api
users/hyperpolymath/gpg_keys` that no key has ever been uploaded, rather
than inventing one.
## Zig — the hard requirement
`src/interface/ffi/src/main.zig` had the same three real Zig 0.16
compile bugs as contractiles, beyond placeholder text:
1. `Handle` was `opaque { allocator: ..., initialized: ... }` — opaque
types cannot have fields; changed to a plain `struct`.
2. `callconv(.C)` is not a valid `CallingConvention` member under Zig
0.16 — changed to `.c`.
3. `std.heap.c_allocator` requires libc; `build.zig` never linked it.
`build.zig` was a no-op stub — rewritten into a real build (static
library, `.link_libc = true`, test steps for both the main module and
the integration-test module). `test/integration_test.zig` was a
fully-commented-out placeholder — replaced with 10 real tests exercising
every exported `scaffoldia_*` function.
**Verified:**
- `zig fmt --check .` → exit 0
- `zig build` → exit 0
- `zig build test --summary all` → exit 0, **13/13 tests pass** (3 unit
+ 10 integration)
- `idris2 --build abi.ipkg` → exit 0
- `just --list` → exit 0
- All workflow YAML still parses
## Justfile
Fake-gate recipes (`build`, `build-release`, `test`, `test-verbose`,
`test-smoke`, `e2e`, `aspect`, `bench`, `fmt`, `fmt-check`, `lint`,
`deps`, `install`) replaced with real invocations. `run`/`run-verbose`
deleted (library, no executable). `readiness` deleted (duplicated
`crg-grade`/`crg-badge` with no distinct real check). `clean` fixed — it
previously did `rm -rf ... build/ ...`, which would have deleted the
repo's own tracked `build/` orchestration directory; now targets only
`build/ttc/`, `.zig-cache/`, `zig-out/`.
`tests/e2e.sh` (previously fully commented out) now runs real preflight
+ Idris2 build + Zig build/test. `benches/template_bench.sh` dropped its
two benchmark sections that called the now-deleted scripts and kept the
real ones.
## Deleted template-only machinery
`scripts/validate-template.sh`,
`tests/e2e/template_instantiation_test.sh`,
`.machine_readable/ai/PLACEHOLDERS.adoc`. No workflow referenced them.
`docs/status/TEST-NEEDS.adoc` rewritten — it previously narrated the
deleted `validate-template.sh`'s "8-phase validation" as the repo's own
feature; now describes the real test suite honestly.
## Test plan
- [x] `zig fmt --check .` exits 0
- [x] `zig build` exits 0 (from `src/interface/ffi`)
- [x] `zig build test --summary all` exits 0, 13/13 tests pass
- [x] `idris2 --build abi.ipkg` exits 0
- [x] `just --list` exits 0
- [x] All `.github/workflows/*.yml` still parse as valid YAML
- [x] `git diff --cached --stat` confirms `.editorconfig`,
`.gitattributes`, `.gitignore`, `flake.nix`, `.tool-versions` untouched
- [x] `tests/aspect_tests.sh` passes except the pre-existing,
out-of-scope false positive on proof-doc prose mentioning
"Admitted"/"sorry"
🤖 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 `Scaffoldia` placeholders in both `devcontainer.json` and `Containerfile` with your actual project name. Run `just deps` to verify the environment after first launch.
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.
9
+
We as members, contributors, and leaders pledge to make participation in Scaffoldia 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
10
31
11
We pledge to act and interact in ways that contribute to an open, welcoming, diverse, inclusive, and healthy community.
32
12
@@ -140,7 +120,7 @@ If you experience or witness unacceptable behaviour, or have any other concerns,
0 commit comments