<?xml version="1.0" encoding="UTF-8"?>
<spec xmlns="https://vibevm.org/spec/1">
  <title>Card Registry — INDEX (Go projection)</title>
  <p p="1">**Discipline v0.2 · BETA · T2 · Go**</p>
  <p p="2">*The navigable registry of the Go projection's cards. The harness uses this to resolve a
trigger to a card and to deliver the Band-3 extract for a `.go` edit. These are the Go
shape of the nine language-neutral scaffold patterns catalogued in the core
`02-EXECUTABLE-SCAFFOLDS.xml`; this stack ships its own `cards/` so the weak-reader
runtime surface for Go is a Go Band-3 block, never another language's
(`GUIDE-AI-NATIVE-GO.xml` §12). Generated/maintained as a derived index (A2/R-030); hand
edits are a defect.*</p>
  <section title="Scaffold cards (the nine executable-scaffold patterns)">
    <table p="3">
      <tr>
        <td>Card</td>
        <td>Layer</td>
        <td>Mechanism</td>
        <td>Trigger mode</td>
        <td>Transfer</td>
        <td>Checker status</td>
      </tr>
      <tr>
        <td>`scaffold-a-generators`</td>
        <td>A+C</td>
        <td>scaffold A</td>
        <td>raid/gate</td>
        <td>[E-strong]</td>
        <td>specified</td>
      </tr>
      <tr>
        <td>`scaffold-b-typed-builders`</td>
        <td>E</td>
        <td>scaffold B</td>
        <td>gate</td>
        <td>[E-mid]</td>
        <td>specified</td>
      </tr>
      <tr>
        <td>`scaffold-c-runnable-contracts`</td>
        <td>E</td>
        <td>scaffold C</td>
        <td>inline</td>
        <td>[E-mid]</td>
        <td>specified</td>
      </tr>
      <tr>
        <td>`scaffold-d-differential-oracle`</td>
        <td>E</td>
        <td>scaffold D</td>
        <td>gate</td>
        <td>[E-mid]</td>
        <td>specified (pilot: `research/go-demo` fuzz differential)</td>
      </tr>
      <tr>
        <td>`scaffold-e-fast-loop`</td>
        <td>E+H</td>
        <td>scaffold E</td>
        <td>gate</td>
        <td>[E-strong]</td>
        <td>shipped (`go-ai-native fast-loop`; per-package `go test` needs no project machinery)</td>
      </tr>
      <tr>
        <td>`scaffold-f-structured-diagnostics`</td>
        <td>E+C</td>
        <td>scaffold F</td>
        <td>inline</td>
        <td>[E-mid]</td>
        <td>shipped (`seam-error-cites-req`, go-ai-native-conform)</td>
      </tr>
      <tr>
        <td>`scaffold-g-doctests`</td>
        <td>C+G</td>
        <td>scaffold G</td>
        <td>gate</td>
        <td>[E-strong]</td>
        <td>specified (the health collector counts exported-item `Example` coverage; the gate lands with the pilot)</td>
      </tr>
      <tr>
        <td>`scaffold-h-simulators`</td>
        <td>E+H</td>
        <td>scaffold H</td>
        <td>gate</td>
        <td>[E-strong]</td>
        <td>specified</td>
      </tr>
      <tr>
        <td>`scaffold-i-codemods`</td>
        <td>H+A</td>
        <td>scaffold I</td>
        <td>raid</td>
        <td>**[E-hyp]**</td>
        <td>pilot prototype shipped (`go-ai-native codemod add-cell`); free parameterization stays the open R4 question</td>
      </tr>
    </table>
    <p p="4">The classification axes (layer, mechanism, trigger mode, transfer tag) are
language-neutral and carried verbatim from the core catalog so the three projections
stay comparable. What differs per row is the **checker** (a Go tool, not a Rust or TS
one) and the per-language Band-3 routine.</p>
  </section>
  <section title="Rule cards">
    <p p="5">*Authored as their checkers ship. The naming card is authored once, in the Rust projection (the shared rule's lineage home); its checker ships on Go too — one engine rule reads Rust `#[cell]` and Go `//spec:cell` (rendered by the extract bridge into the same attr) through one parser.*</p>
    <table p="6">
      <tr>
        <td>Card</td>
        <td>Layer</td>
        <td>Mechanism</td>
        <td>Trigger mode</td>
        <td>Transfer</td>
        <td>Checker status</td>
      </tr>
      <tr>
        <td>`rule-closed-vocabulary-naming`</td>
        <td>B+H</td>
        <td>rule</td>
        <td>gate</td>
        <td>[E-mid]</td>
        <td>shipped — `cell-name-is-computed` (shared core engine, mounted in `go-ai-native-conform`; composition only). Card authored in the Rust projection: `rust-ai-native-lang/v1.0.0/spec/cards/rule-closed-vocabulary-naming.xml`. The closed-vocabulary / one-referent / no-synonym halves of R3-004 are unbuilt.</td>
      </tr>
      <tr>
        <td>`rule-position-is-a-resource`</td>
        <td>D+H</td>
        <td>rule</td>
        <td>gate</td>
        <td>[E-mid]</td>
        <td>shipped — `invariant-comment-position` (shared core engine, mounted in `go-ai-native-conform`). Card authored in the Rust projection: `rust-ai-native-lang/v1.0.0/spec/cards/rule-position-is-a-resource.xml`.</td>
      </tr>
    </table>
  </section>
  <section title="Trigger-mode delivery summary">
    <list ordered="false" p="7">
      <item>**inline** (per-edit, lint-detectable): C, F — go vet / staticcheck / conform findings
  in the editor loop.</item>
      <item>**gate** (per-merge): B, D, E, G, H — `go build` / per-package `go test -race` /
  Example execution at the cell's verification gate.</item>
      <item>**raid** (scheduled/on-adoption): A, I — `go:generate` regeneration and codemods swept
  across a layer.</item>
      <item>**review** (human/strong-agent): none yet; reserved for judgment-heavy cards.</item>
    </list>
  </section>
  <section title="Go checker surface (what each card&apos;s checker stands on)">
    <list ordered="false" p="8">
      <item>**`go build` / `go vet`** — the compile gate: defined-type nominal safety (B),
  unused-import/variable hygiene, `context` placement, printf shapes.</item>
      <item>**`go test` per package, `-race`** — the Class E loop (E); `Example` functions with
  `// Output:` are compiled AND executed (G — a behavioral doctest, stronger than
  compilation-only).</item>
      <item>**`go test -fuzz` + committed `testdata/` seed corpus** — the differential engine (D).</item>
      <item>**staticcheck / `exhaustive`** — evidence providers (MIT / BSD-2): the unused-code and
  correctness census, and the closed-set switch exhaustiveness the compiler cannot check
  (guide §5 — the one rule a linter carries entirely).</item>
      <item>**go-ai-native-conform (`go-extract` facts → conform-core rules)** — the structural
  gate: cell isolation, the §7 ban census (`init`, ambient defaults, naked `go`,
  error-string matching), file budget, `seam-error-cites-req` in the Class-F grammar.</item>
      <item>**codemod post-checks** — atomic apply + `go build` + per-package `go test` green (I).</item>
    </list>
    <p p="9">Checker statuses marked `shipped` land with this package's own toolchain (the
GO-AI-NATIVE-PLAN campaign); `specified` rows await the pilot
(`research/go-demo` is the first carrier — vibevm itself carries no Go until the
Kubernetes work begins). A card graduates from BETA when its checker is implemented AND
its evidence IDs are non-empty AND pilot evidence has not falsified it.</p>
  </section>
  <section title="Axis coverage (research frame A–H)">
    <list ordered="false" p="10">
      <item>A language-shape: A (generators), I (codemods)</item>
      <item>B names &amp; tokens: covered by guide §3 (naming + the free nominal types) —
  `rule-closed-vocabulary-naming` (shipped `cell-name-is-computed`, composition only;
  the closed-vocabulary half of R3-004 stays unbuilt)</item>
      <item>C meta-layer: A, F, G</item>
      <item>D context &amp; repo: covered by guide §2 (cells, closure) — candidate `rule-cell-closure`</item>
      <item>E verification: B, C, D, E, F, H</item>
      <item>F spec-binding: specmap (PROP-014, guide §8) — mechanism, not a card</item>
      <item>G empirics: G</item>
      <item>H weak-reader: E, H, I</item>
    </list>
  </section>
  <section title="Go-specific additive coverage (beyond the nine)">
    <list ordered="false" p="11">
      <item>**Goroutine ownership** (guide §5) is a Go-specific *rule* enforced through the ban
  census (`naked_go_in_cell`) and review; candidate dedicated card
  `rule-owned-concurrency` if pilot triggers warrant.</item>
      <item>**The loud-conformance assertion** (`var _ Seam = (*Impl)(nil)`, guide §2) rides card
  B's checker as a presence check; candidate `rule-loud-conformance`.</item>
    </list>
  </section>
  <section title="Pending cards (named, not yet authored — pilot will prioritize)">
    <list ordered="false" p="12">
      <item>`rule-cell-closure` (R3-001) — cells declare their full semantic dependency set;
  no ambient state.</item>
      <item>`rule-owned-concurrency` (guide §5) — every goroutine has an owner; channels are
  implementation.</item>
      <item>`rule-contract-first-ordering` (R3-002) — intent before body.</item>
      <item>`rule-uniformity` (R3-006/H6) — one idiom per operation; mark exceptions.</item>
      <item>`antipattern-init-registration` (guide §2/§7) — the stdlib-blessed import side effect,
  banned in cells.</item>
      <item>`antipattern-god-file` (R3-013) — fan-in per file bounds swarm throughput.</item>
      <item>`antipattern-lying-prose` (R2C-004/H4) — unverified godoc claims near code.</item>
    </list>
    <p p="13">These are deferred not because they are unimportant but to honor minimal sufficiency:
the nine scaffold cards are the runnable-capital core; rule/anti-pattern cards are added
as the pilot shows which triggers actually fire.</p>
  </section>
  <section title="Notes on status">
    <list ordered="false" p="14">
      <item>**shipped** = the checker ships in this stack (go-ai-native-conform / go-ai-native)
  and runs on any consumer tree.</item>
      <item>**specified** = checker is defined but not yet implemented.</item>
      <item>**specified (pilot)** = checker defined; implementation is a named pilot task.</item>
      <item>**WISH** = no checker yet (A5); the card is advisory until one exists.</item>
    </list>
  </section>
</spec>
