Skip to content

chore: resolve the two-scaffoldia fork — engine dormant, registry harvested - #16

Merged
hyperpolymath merged 1 commit into
mainfrom
chore/resolve-composer-fork
Jul 21, 2026
Merged

chore: resolve the two-scaffoldia fork — engine dormant, registry harvested#16
hyperpolymath merged 1 commit into
mainfrom
chore/resolve-composer-fork

Conversation

@hyperpolymath

Copy link
Copy Markdown
Owner

What

Third leg of the scaffolding resolution (see rsr-template-repo ADR-0003 + standards SCAFFOLD-LIFECYCLE.adoc PRs).

Two scaffoldia codebases existed with no recorded relationship: this repo (GitHub, design-only, 5%) and developer-ecosystem/scaffoldia (GitLab lineage — an implemented Haskell CLI + Nickel builder whose existence this repo's own blocker list ignored).

  • STATE.a2ml — fork resolution recorded: this repo is canonical (design surface + consumer of the spine's ARCHETYPE/VARIANT contracts); the GitLab-lineage engine is dormant — not deleted, not developed in parallel; the Phase 1 composer ADR must weigh it explicitly. The previously-schemaless profile axis is resolved: profile = capability set per template-capability-gates.toml (what rsr-profile.a2ml declares).
  • ECOSYSTEM.a2mldormant-implementation and conformance-oracle (hypatia) relations added.
  • machine-readable-design/harvested-registry/ — the 7 Nickel registry entries, verbatim, with a provenance README.

Flag-only caveats (no licence edits, per standing rule)

  • julia/package.ncl declares PMPL-1.0-or-later — outside the three-repo Palimpsest carve-out; owner review needed before any consumer mints from it.
  • rescript/deno-app.ncl is banned-language legacy — kept as harvest data only, must not seed an archetype.
  • Entries embed authorship defaults; consumers must take identity from just init answers.

🤖 Generated with Claude Code

…vested

- STATE.a2ml: fork resolution recorded (this repo = canonical design
  surface + consumer of spine contracts; developer-ecosystem/scaffoldia =
  dormant Haskell+Nickel engine, no parallel development); the previous
  blocker line ignored that the implementation exists. Profile axis
  resolved: capability set per template-capability-gates.toml (ADR-0003).
- ECOSYSTEM.a2ml: dormant-implementation + conformance-oracle relations.
- machine-readable-design/harvested-registry/: the 7 Nickel entries,
  verbatim, with provenance README. Flag-only caveats: julia/package.ncl
  declares PMPL outside the carve-out; rescript entry is banned-language
  legacy kept as data.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@sonarqubecloud

Copy link
Copy Markdown

@hyperpolymath
hyperpolymath marked this pull request as ready for review July 21, 2026 12:36
@hyperpolymath
hyperpolymath merged commit fee7dab into main Jul 21, 2026
39 of 41 checks passed
@hyperpolymath
hyperpolymath deleted the chore/resolve-composer-fork branch July 21, 2026 12:37
hyperpolymath added a commit that referenced this pull request Jul 27, 2026
## 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>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant