Skip to content

Epic: -iser regeneration-cartridge pattern — wire all 28 -isers into boj-server (unified gated adapter) #89

Description

@hyperpolymath

Problem (systemic)

iseriser scaffolds 28 -iser generators; all run ad hoc and hand-commit generated/* → 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 -iser was given an equivalent. Surfaced via idaptik#77 → k9iser#8.

Reference implementation (DONE — pilot)

  • k9iser#9 — codegen emits K9!+pedigree (0 err/warn vs canonical validator).
  • boj-server#73 — k9iser-mcp cartridge + unified transaction-gated adapter (one internal listener, REST/SSE/GraphQL/gRPC → one gated dispatch → one Zig ABI; mirrors Idris2 exposureSatisfied; idris2 --check passes) + boj-rest SSE + doc reconciliation to ADR-0004. Elixir 177/177; zig ffi 16/16, adapter 5/5.
  • k9iser-regen.yml merged into rsr-template-repo#58 / v3-templater#76 / reposystem#52.

Sub-issues

  1. Roll the unified-gated-adapter + SSE + *-regen.yml pattern into the iseriser scaffold (supersedes the ssg-era 3-parallel-port adapter estate-wide; adds SSE + the transaction gate to every -iser).
  2. http-capability-gateway tier-2 production-wiring — per ADR-0004 (accepted): mTLS-as-primary, E2E, benchmarks; fills Trustfile.a2ml tier-2 PENDING. ~8–12 wks. Tracks the existing ADR; does not duplicate it.
  3. Idris2 as source-of-truth — generate/verify the Zig FFI from the Idris2 ABI instead of the current hand-mirrored dual-encoding (cross-checked only by tests). Affects ssg-mcp + k9iser-mcp + all future cartridges.
  4. Stop committing 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

Activity

  1. hyperpolymath commented on May 19, 2026

    @hyperpolymath
    OwnerAuthor

    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.rs now generates two new files for every new -iser repo:

    1. .github/workflows/<name>-regen.yml — central regeneration trigger (boj-server cartridge pattern; mirrors k9iser-regen.yml / rsr-template-repo#58)
    2. adapter/<name>_adapter.zig — unified transaction-gated adapter (single loopback port, REST+SSE+GraphQL+gRPC-compat → one gated dispatch → one Zig ABI; gate mirrors Idris2 exposureSatisfied; 4 truth-table tests)

    Build: cargo build clean. 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.yml and 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) and k9iser-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)
    • .gitignore stanza + 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 mergedAt confirmed
    boj-server#73 MERGED mergedAt: 2026-05-18T21:00:08Z
    rsr-template-repo#58 MERGED confirmed
    v3-templater#76 MERGED confirmed
    reposystem#52 MERGED confirmed

    All 5 pilot PRs are merged. cartridges/k9iser-mcp/ is on origin/main of boj-server (confirmed via git).

    🤖 Generated with Claude Code

  2. hyperpolymath commented on May 19, 2026

    @hyperpolymath
    OwnerAuthor

    Progress 2026-05-19 (keeping OPEN):

    • Sub-issue 1 (roll unified-gated-adapter + SSE + *-regen.yml into iseriser scaffold) — scaffold-only safe slice landed in iseriser#12 (merged): generate_regen_workflow + generate_unified_adapter added to scaffold_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.

  3. hyperpolymath commented on May 20, 2026

    @hyperpolymath
    OwnerAuthor

    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 from Safe*.idr, not hand-authored)
    • iseriser#15 — Zig reserved-word converter (kills the error → err false-positive class)
    • boj-server#98 (Phase 2) — per-cartridge CI gate, allowlist ssg-mcp + k9iser-mcp
    • boj-server#102 — fix for 007-mcp ToolRisk ABI 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

  4. hyperpolymath commented on May 20, 2026

    @hyperpolymath
    OwnerAuthor

    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.

    Fan-out — PARKED. The estate-wide fan-out of <name>-regen.yml across the 28 existing -iser repos (and iseriser cartridge invocations 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

  5. hyperpolymath commented on Aug 27, 2026

    @hyperpolymath
    OwnerAuthor

    Next step (re-verified 2026-08-27, corrections included): 26 -iser generator repos, not 28 (iseriser itself and nextgen-language-evangeliser excluded); zero of the 26 — and zero in iseriser — carry any *-regen.yml; only 1 of 148 cartridges in boj-server-cartridges is an -iser cartridge. Two body claims are dead: hyperpolymath/k9iser 404s, and k9iser-regen.yml lives only in reposystem, 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.

  6. added
    meta:umbrellaParent issue aggregating child issues
    architectureStructural/system-level shape and runtime behaviour
    scope:estateAffects many or all repos across the estate
    status:blockedCannot proceed until a dependency clears
    on Sep 30, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    architectureStructural/system-level shape and runtime behaviourmajorMajor / load-bearing workmeta:umbrellaParent issue aggregating child issuespriority:p3Low - nice to haverequirements-targetTracked requirements-target item (joint-close)scope:estateAffects many or all repos across the estatestatus:blockedCannot proceed until a dependency clears

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions