Repository navigation
Epic: -iser regeneration-cartridge pattern — wire all 28 -isers into boj-server (unified gated adapter) #89
Description
Activity
- addedmajorMajor / load-bearing workMajor / load-bearing workrequirements-targetTracked requirements-target item (joint-close)Tracked requirements-target item (joint-close)
on May 17, 2026 - added a parent issue
on May 17, 2026 - added sub-issues
on May 17, 2026 Epic status refresh (session 2026-05-19)
Sub-issue 1 — Roll unified-gated-adapter + SSE + *-regen.yml into iseriser scaffold
IN PROGRESS — iseriser#12 (DRAFT PR)
Executed in this session.
iseriser/src/codegen/scaffold.rsnow generates two new files for every new-iserrepo:.github/workflows/<name>-regen.yml— central regeneration trigger (boj-server cartridge pattern; mirrors k9iser-regen.yml / rsr-template-repo#58)adapter/<name>_adapter.zig— unified transaction-gated adapter (single loopback port, REST+SSE+GraphQL+gRPC-compat → one gated dispatch → one Zig ABI; gate mirrors Idris2exposureSatisfied; 4 truth-table tests)
Build:
cargo buildclean. Tests: 33/33 (24 unit + 9 integration) green.Remaining for sub-issue 1: The 28 existing -iser repos still need migration PRs (each getting the
*-regen.ymland unified adapter, replacing the old 3-parallel-port ssg-era adapter where present). This is explicitly NOT done until gateway (sub-issue 2) is production-wired — the regen triggers are fire-and-forget loopback until then.Sub-issue 2 — http-capability-gateway tier-2 production-wiring
BLOCKED (external, ~8–12 wks). ADR-0004 accepted. Phase A contract + policy completed (boj-server#78, merged 2026-05-18). Next: mTLS, E2E, benchmarks (HCG tier-2 standards#91 / #96–#100). K9 Dogfood Gate on consumers stays red (tracked, not masked) until this ships.
Sub-issue 3 — Idris2 as source-of-truth for Zig FFI
OPEN — design spec posted on standards#92
Root-cause analysis complete (session 2026-05-19). Verified the dual-encoding in both
ssg-mcp(SafeSsg.idr↔ssg_ffi.zig) andk9iser-mcp(SafeK9iser.idr↔k9iser_ffi.zig). Three encoding contracts are hand-duplicated per cartridge: state enum integers, transition relation, exposure gate. Cross-checked only by tests — no structural guarantee.Proposed phased plan (see #92 comment):
- Phase 1: ABI manifest extraction at build time (~1 session, tractable now)
- Phase 2: CI diff gate — structural verification, not just tests (~1 session)
- Phase 3: Codegen (Zig FFI generated from manifest, multi-session)
- Phase 4: Idris2 foreign type proof (long-term)
Sub-issue 4 — Stop committing generated/*
BLOCKED (on sub-issues 1+2). Prepared execution contract posted on standards#93:
- 66 tracked
generated/*files identified across 10 repos (k9iser, tlaiser, wokelangiser, alloyiser, abi headers) .gitignorestanza + trigger contract ready to apply the moment gateway ships- Unblock condition: sub-issue 2 production-wired
Reference pilot — verified DONE
PR State Evidence k9iser#9 MERGED mergedAtconfirmedboj-server#73 MERGED mergedAt: 2026-05-18T21:00:08Zrsr-template-repo#58 MERGED confirmed v3-templater#76 MERGED confirmed reposystem#52 MERGED confirmed All 5 pilot PRs are merged.
cartridges/k9iser-mcp/is onorigin/mainof boj-server (confirmed via git).🤖 Generated with Claude Code
- added a commit that references this issue
on May 19, 2026 Progress 2026-05-19 (keeping OPEN):
- Sub-issue 1 (roll unified-gated-adapter + SSE +
*-regen.ymlinto iseriser scaffold) — scaffold-only safe slice landed in iseriser#12 (merged):generate_regen_workflow+generate_unified_adapteradded toscaffold_repo(); 4-test exposureSatisfied truth-table;continue-on-error: by-design:annotated for R4. Existing 28 -iser repos NOT mutated (estate-wide migration gated on sub-issue 2). - Sub-issue 2 — http-capability-gateway tier-2 production-wiring: BLOCKED ~8–12 wk; tracked under standards#91 (Phase A — Contract definition + policy-authoring workflow + example Verb Governance Spec #96–Phase E — Production wiring + staging validation + rollout/rollback runbook #100).
- Sub-issue 3 — Idris2 as source-of-truth: standards#92, design spec + Phase-1 ABI-manifest plan posted; multi-session.
- Sub-issue 4 — stop committing
generated/*: standards#93, blocker confirmed; 66-file/10-repo inventory + .gitignore stanza prepared.
Remaining for close: sub-issues 2/3/4 + 28-repo migration after gateway.
- Sub-issue 1 (roll unified-gated-adapter + SSE +
- added 5 commits that reference this issue
on May 20, 2026 Sub-issue 3 — Phase 1 + 1b + 2 all landed on main (2026-05-20)
The Idris2-as-source-of-truth + structural CI gate machinery is now live:
- iseriser#13 (Phase 1) —
iseriser abi-verify(manifest ↔ Zig FFI diff) - iseriser#14 (Phase 1b) —
iseriser abi-emit-manifest(manifest derived fromSafe*.idr, not hand-authored) - iseriser#15 — Zig reserved-word converter (kills the
error → errfalse-positive class) - boj-server#98 (Phase 2) — per-cartridge CI gate, allowlist ssg-mcp + k9iser-mcp
- boj-server#102 — fix for 007-mcp
ToolRiskABI drift surfaced by the spot-check - boj-server#104 — SHA-pin fix that brought the gate fully online in CI
Sub-issue 3 status: actively advancing; Phases 3 + 4 remain (codegen + Idris2 FFI type proof, both multi-session).
Other sub-issues — current state
- Sub-issue 1 (scaffold pattern): scaffold landed in iseriser#12 (merged); 28-repo migration still gated on sub-issue 2.
- Sub-issue 2 (HCG tier-2 production wiring): see standards#91 for live channel state — Phase B (mTLS) closed 2026-05-19; Phase C (E2E seam tests) progressing today via http-capability-gateway#11 + boj-server#90/Stop committing generated/* — gitignore + regenerate-on-trigger #93.
- Sub-issue 4 (stop committing
generated/*): still blocked on sub-issue 2.
Sub-issues 2/3/4 + 28-repo migration remain; this epic stays OPEN.
🤖 Generated with Claude Code
- iseriser#13 (Phase 1) —
- added 6 commits that reference this issue
on May 20, 2026 Status — 2026-05-20
Sub-issue 1 (roll the unified-gated-adapter + SSE + regen-trigger pattern into the iseriser scaffold) is scaffold-side complete:
Scaffold side — DONE.
- iseriser PR chore(deps): bump the actions group across 1 directory with 3 updates #12 (merged earlier) emitted the
<name>-regen.ymlcentral-trigger workflow correctly into new -iser repos. - iseriser PR chore(deps): bump the actions group with 2 updates #23 (merged today) reverted the wrong-place adapter emission that had been added in chore(deps): bump the actions group across 1 directory with 3 updates #12; the unified transaction-gated adapter belongs to the boj-server cartridge for the -iser, not to the -iser repo itself.
- iseriser PR chore(deps): bump the actions group across 1 directory with 3 updates #24 (merged today) shipped
iseriser cartridge --manifest <toml> --output <dir>— a full 13-file scaffolder for the boj-server cartridge (<iser>-mcp/), modelled on the k9iser-mcp pilot. Includes the ADR-0006 5-symbol C ABI, the Idris2 exposure-gate contract + Zig mirror, and the unified gated adapter (REST + SSE + GraphQL + gRPC-compat). End-to-end verified:idris2 --buildRC=0 on the emitted ipkg,zig build test4/4 onffi/, 5/5 onadapter/. - iseriser PR Revise README for Consent-Aware HTTP Framework #25 (merged today) corrected the cartridge ipkg to emit
depends = base, contribmatching the pilot convention. - iseriser PR Fix introductory sentence in README #26 + chore(deps): bump rand from 0.8.5 to 0.9.3 in /k9-svc/tools/src/k9-sign in the cargo group across 1 directory #27 (docs, today) — CHANGELOG entries, README subcommand row, STATE.a2ml refresh, ROADMAP updates, and
examples/cartridge-skeleton/README.adocworked example.
Fan-out — PARKED. The estate-wide fan-out of
<name>-regen.ymlacross the 28 existing -iser repos (andiseriser cartridgeinvocations for any missing cartridges) stays correctly gated on sub-issue 2 (#91 — http-capability-gateway tier-2 production-wiring, ~8-12wk). Until #91 ships, the unified core stays internal/loopback and consumer K9 Dogfood gates stay red (tracked, not masked).Sub-issue 3 (Idris2 source-of-truth) = standards#92 — Phase 1 (
abi-verify) and Phase 1b (abi-emit-manifest) shipped in iseriser #13/#14/#15. Class A drift swept via #20/#21/#22 emitter+verifier fixes. boj-server allowlist now at 65 cartridges audited green (after PR #136 removed the chapeliser-mcp orphan). Class B/C/D drift active under standards#150-156.Sub-issue 4 (
gitignore generated/*) = #93 — parked behind #91 by design.Detailed audit + decision trail for sub-issue 1 is on standards#90.
🤖 Generated with Claude Code
- iseriser PR chore(deps): bump the actions group across 1 directory with 3 updates #12 (merged earlier) emitted the
Next step (re-verified 2026-08-27, corrections included): 26 -iser generator repos, not 28 (
iseriseritself andnextgen-language-evangeliserexcluded); zero of the 26 — and zero iniseriser— carry any*-regen.yml; only 1 of 148 cartridges inboj-server-cartridgesis an -iser cartridge. Two body claims are dead:hyperpolymath/k9iser404s, andk9iser-regen.ymllives only inreposystem, not the template. The pilot (boj-server#73) is MERGED.→ The scaffold-side work is in progress now (see #331/#90 — the generator is being patched to emit the regen trigger + SSE + gated dispatch). After it lands: re-emit across the 26. Sub-issue 2's own 8–12-week estimate stands for the full wiring.
- addedmeta:umbrellaParent issue aggregating child issuesParent issue aggregating child issuesarchitectureStructural/system-level shape and runtime behaviourStructural/system-level shape and runtime behaviourpriority:p3Low - nice to haveLow - nice to havescope:estateAffects many or all repos across the estateAffects many or all repos across the estatestatus:blockedCannot proceed until a dependency clearsCannot proceed until a dependency clears
on Sep 30, 2026
Problem (systemic)
iseriserscaffolds 28-isergenerators; all run ad hoc and hand-commitgenerated/*→ rot → fail gates. K9 surfaced first (only one with a CI gate). The estate has the central-trigger pattern (boj-build.yml→ssg-mcp); no-iserwas given an equivalent. Surfaced via idaptik#77 → k9iser#8.Reference implementation (DONE — pilot)
K9!+pedigree (0 err/warn vs canonical validator).k9iser-mcpcartridge + unified transaction-gated adapter (one internal listener, REST/SSE/GraphQL/gRPC → one gated dispatch → one Zig ABI; mirrors Idris2exposureSatisfied;idris2 --checkpasses) + boj-rest SSE + doc reconciliation to ADR-0004. Elixir 177/177; zig ffi 16/16, adapter 5/5.Sub-issues
*-regen.ymlpattern into the iseriser scaffold (supersedes the ssg-era 3-parallel-port adapter estate-wide; adds SSE + the transaction gate to every-iser).Trustfile.a2mltier-2PENDING. ~8–12 wks. Tracks the existing ADR; does not duplicate it.generated/*—.gitignore+ regenerate-on-trigger once the gateway is wired.Dependency
Until the gateway (sub-issue 2) is production-wired, the unified core stays internal/loopback; K9 Dogfood Gate on consumers stays red (tracked, not masked). Sibling of #82/#83/#85 under #66.
🤖 Generated with Claude Code