Skip to content

Gate-pack fixtures: research + dev packs as schema'd TOML with mapping tests #498

Description

@aarontrowbridge

Important

Problem — The research loop's gates live as prose in a card and the dev walk's gates live as prose in skills; neither is data, so the campaign layer can't consume them, completeness can't be checked, and the two packs can't be compared or floors enforced.
Approach — Extract both gate packs as schema'd TOML fixtures in amicode (open contract): the research pack from the live autoresearch protocol, the dev pack from the develop/implementer walk — plus the pack schema and the mapping-completeness test with non-triviality floors.
Scope — in: pack TOML schema, both pack fixtures, the mapping-completeness suite (forward + reverse + floors + distinctness) · out: the mode cards that reference them, the campaign-layer consumption (docs slice), the dual-harness grep.

Acceptance Criteria

  • Pack schema validates: phases[] { name, gates[] { name, kind: mechanical|human|derived, owner, procedure }, roles[] } + closing_artifact + handoffs[]
  • Research pack extracted faithfully: hypothesize → deliberate → experiment → gate → analyze; spec review (3-round budget, no unreviewed launch-shaped work), run gates derived from commands, catalog promotion human-only; hypothesizer/experimenter/analyzer; closing = experiment note + ledger delta; handoff = issue seeds — plus the additional gates the live protocol carries (advisory closure, ledger commit) to clear the floors honestly
  • Dev pack extracted faithfully: decompose → implement → integrate; dev gate (issue + PR), TDD red-green, draft-PR lifecycle, review; implementer (worktree-bound, no-merge); closing = landed-delta record; handoff = hypothesis seeds
  • Mapping complete forward (every phase ≥ 1 gate, one closing artifact, every gate has owner+kind, every role in ≥ 1 phase) and reverse (every gate in a phase, every role in a pack, every handoff has a target kind)
  • Floors: ≥ 3 phases, ≥ 5 gates, ≥ 1 gate of each kind, ≥ 1 role per phase-with-roles, ≥ 1 handoff, per pack; gate names unique within a pack; procedure texts pairwise distinct (normalized-text equality)

Testing Decisions

New surface (first TOML fixtures in the protocol suite); the mapping test IS the spec's gate_pack_mapping_complete criterion — this slice delivers it.

Key Decisions

Gates as data, not prose: the campaign layer selects manifests by phase name from these files. The research pack's floor-clearing gates come from the live protocol (advisory closure, ledger commit are real gates, not filler). Kind assignments: mechanical = command-derived verdicts; human = promotion/sign-off; derived = state computed from artifacts.

Constraints & Invariants

Zero blocklisted strings (protocol layer). Field names exactly per the spec's data contracts.

Prior Art

The autoresearch skill's loop; the develop + implement-issue skills (the dev walk being extracted); the spec's D2.

Source

Part of 497 · spec spec-20260822-063957-auto-rd-two-modes.md (D2, Measurement Protocol) · no blockers.

Metadata

Metadata

Labels

afkImplement + merge unattended — tests decide green

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions