You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Problem — Amicode's purpose is auto R&D, but the agent surface carries one autonomous mode (autoresearch, itself labeled the interim for the studio's mode rail) while development runs through directly-invoked skills with no mode surface. The same loop shape is implemented twice with drifting vocabulary, and both the proprietary harness (telaio campaign layer) and the open-source harness (bare opencode) need to know what the modes are. Approach — One director, two autonomous modes over a copilot default: autoresearch + autodev, each a thin binding of one canonical director-core protocol plus a typed gate pack (research: hypothesize→deliberate→experiment→gate→analyze; dev: decompose→implement→integrate). Both modes share one knowledge base and one session-ledger discipline; cross-campaign memory is issues, vault cards, and the pulse/catalog banks. The dual-harness contract keeps the protocol layer open (cards, skills, packs — zero proprietary references, grep-enforced) with enforcement additive where telaio is present. Approaches considered — Single mega-mode card carrying both loops (rejected: heavier standing context, more branching for sessions doing neither); fully separate modes with separate memory (rejected: the system learns twice and remembers once); copilot as a third autonomous mode (rejected: copilot is interactive, no loop, no gate pack — it's the zeroth posture, defined but packless). Scope — in: director-core skill (armonissima canonical + amicode public copy), both gate-pack fixtures, both mode cards + spine + deployment, handoff seed schemas, naming/glossary records + blocklist, the dual-harness fixture suite, telaio campaign-mapping docs · out: the studio UI rail, telaio enforcement mechanics, model routing (spartito), research-gate changes beyond extraction, distillation cadence, runtime filing-agency enforcement. Assumptions — armonissima remains the canonical home for team protocol (the amicode CI checks it out read-only to police copy fidelity); the campaign layer consumes gate packs as (mode → pack → manifest bundle); "conductor" and "autobuild" stay banned.
Acceptance Criteria
mode_card_spine_parity == 100% — literal marker pair, one per card, byte-identical spines, content floor (loop verbs + core clauses in real sentences), ledger discovery rule present and contained verbatim in the director core
handoff_roundtrip_pass == 100% — ≥ 4 valid seeds round-trip through committed templates field-equal; ≥ 3 adversarial refused with named schema paths (incl. the kind/field-set masquerade)
oss_degradation_clean == true — zero blocklisted strings over the enumerated protocol file set; frontmatter parses; skill references resolve into the public set; both director-core copies protocol-identical (bodies byte-identical, frontmatter differs only in surface/agents); deployment receipts carry source digests the suite re-verifies
naming_record_complete == true — six locked terms in both glossaries, head-phrase match, amicode glossary canonical, banned list recorded in the blocklist fixture
receipt_contract_compatible == true — all 9 receipt-snapshot fields classified with rationale, ≥ 7 protocol; ledger-row schema carries every protocol field name+type; diff test fails on drift either direction
Testing Decisions
One fixture suite, committed in amicode, public — computes all six criteria; no criterion contains a human step. The suite's CI checks out armonissima read-only to police the canonical copies. Authorship split (reviewer ≠ implementer) covers the receipt classification table and round-trip templates — PR-review gates attested in the fixture README.
Key Decisions
The spine markers are literal strings; the spine carries the ledger discovery rule (parity + containment). Gate packs are typed TOML data the campaign layer consumes. Handoff seeds are typed artifacts filed by the receiving director or a human (filing agency is protocol discipline — OB-M5 records the enforcement option). The dual-harness honesty clauses: fixtures police the protocol, not live merge decisions (runtime refusal is enforcement territory); the receipt snapshot is an in-repo fixture with an honor-backed cross-spec sync (OB-M7); post-deployment destination drift is a named residue (re-run the deploy script).
One knowledge base; gates derived from commands, never self-reported; dev gate + deliberate gate bind in both harnesses; promotion/merge-of-non-green is human-only always; ledger survives mode switches (re-read from disk, never rewritten); protocol layer never references the enforcement harness by name.
Prior Art
The live autoresearch card; the develop/implement-issue walk + implementer card; spec-20260821-034210 (receipt schema snapshot); spec-20260821-090401 (shared knowledge base); telaio's phase-4 campaign layer; ADR 0001 (vocabulary freezing).
Source
Durable record: ~/.amico/vaults/armonia-aaron-trowbridge/specs/spec-20260822-063957-auto-rd-two-modes.md (approved: rounds 1–2 full critics, round 3 by direct inspection under subagent degradation — recorded in-spec).
Notes
Residual obligations OB-M1..M8 tracked in the spec (rail, spartito, third pack family, copilot formalization, filing-agency enforcement, transitive blocklist, snapshot sync, pack↔card drift police).
Important
Problem — Amicode's purpose is auto R&D, but the agent surface carries one autonomous mode (autoresearch, itself labeled the interim for the studio's mode rail) while development runs through directly-invoked skills with no mode surface. The same loop shape is implemented twice with drifting vocabulary, and both the proprietary harness (telaio campaign layer) and the open-source harness (bare opencode) need to know what the modes are.
Approach — One director, two autonomous modes over a copilot default: autoresearch + autodev, each a thin binding of one canonical director-core protocol plus a typed gate pack (research: hypothesize→deliberate→experiment→gate→analyze; dev: decompose→implement→integrate). Both modes share one knowledge base and one session-ledger discipline; cross-campaign memory is issues, vault cards, and the pulse/catalog banks. The dual-harness contract keeps the protocol layer open (cards, skills, packs — zero proprietary references, grep-enforced) with enforcement additive where telaio is present.
Approaches considered — Single mega-mode card carrying both loops (rejected: heavier standing context, more branching for sessions doing neither); fully separate modes with separate memory (rejected: the system learns twice and remembers once); copilot as a third autonomous mode (rejected: copilot is interactive, no loop, no gate pack — it's the zeroth posture, defined but packless).
Scope — in: director-core skill (armonissima canonical + amicode public copy), both gate-pack fixtures, both mode cards + spine + deployment, handoff seed schemas, naming/glossary records + blocklist, the dual-harness fixture suite, telaio campaign-mapping docs · out: the studio UI rail, telaio enforcement mechanics, model routing (spartito), research-gate changes beyond extraction, distillation cadence, runtime filing-agency enforcement.
Assumptions — armonissima remains the canonical home for team protocol (the amicode CI checks it out read-only to police copy fidelity); the campaign layer consumes gate packs as (mode → pack → manifest bundle); "conductor" and "autobuild" stay banned.
Acceptance Criteria
mode_card_spine_parity == 100%— literal marker pair, one per card, byte-identical spines, content floor (loop verbs + core clauses in real sentences), ledger discovery rule present and contained verbatim in the director coregate_pack_mapping_complete == 100%— both TOML packs schema-valid, forward+reverse mapping complete, floors (≥ 3 phases, ≥ 5 gates, ≥ 1 per kind, unique names, pairwise-distinct procedures)handoff_roundtrip_pass == 100%— ≥ 4 valid seeds round-trip through committed templates field-equal; ≥ 3 adversarial refused with named schema paths (incl. the kind/field-set masquerade)oss_degradation_clean == true— zero blocklisted strings over the enumerated protocol file set; frontmatter parses; skill references resolve into the public set; both director-core copies protocol-identical (bodies byte-identical, frontmatter differs only in surface/agents); deployment receipts carry source digests the suite re-verifiesnaming_record_complete == true— six locked terms in both glossaries, head-phrase match, amicode glossary canonical, banned list recorded in the blocklist fixturereceipt_contract_compatible == true— all 9 receipt-snapshot fields classified with rationale, ≥ 7 protocol; ledger-row schema carries every protocol field name+type; diff test fails on drift either directionTesting Decisions
One fixture suite, committed in amicode, public — computes all six criteria; no criterion contains a human step. The suite's CI checks out armonissima read-only to police the canonical copies. Authorship split (reviewer ≠ implementer) covers the receipt classification table and round-trip templates — PR-review gates attested in the fixture README.
Key Decisions
The spine markers are literal strings; the spine carries the ledger discovery rule (parity + containment). Gate packs are typed TOML data the campaign layer consumes. Handoff seeds are typed artifacts filed by the receiving director or a human (filing agency is protocol discipline — OB-M5 records the enforcement option). The dual-harness honesty clauses: fixtures police the protocol, not live merge decisions (runtime refusal is enforcement territory); the receipt snapshot is an in-repo fixture with an honor-backed cross-spec sync (OB-M7); post-deployment destination drift is a named residue (re-run the deploy script).
Data Contracts
Naming: director · autoresearch · autodev · campaign · gate pack · mode (copilot = zeroth, interactive, packless). Gate-pack TOML: phases[].gates[] {name, kind: mechanical|human|derived, owner, procedure} + closing_artifact + handoffs[]. Seeds: issue {title, motivation, evidence, suggested_repo, suggested_tier} / hypothesis {observation, evidence, suggested_experiment} — kind field + field set must agree. Spine markers: DIRECTOR-SPINE v1 START/END. Blocklist: telaio, Piccolissimo, Altissimo, harmoniqs, spartito + banned_names (conductor, autobuild). Receipt snapshot: 9 fields per spec-20260821-034210 D1.
Constraints & Invariants
One knowledge base; gates derived from commands, never self-reported; dev gate + deliberate gate bind in both harnesses; promotion/merge-of-non-green is human-only always; ledger survives mode switches (re-read from disk, never rewritten); protocol layer never references the enforcement harness by name.
Prior Art
The live autoresearch card; the develop/implement-issue walk + implementer card; spec-20260821-034210 (receipt schema snapshot); spec-20260821-090401 (shared knowledge base); telaio's phase-4 campaign layer; ADR 0001 (vocabulary freezing).
Source
Durable record:
~/.amico/vaults/armonia-aaron-trowbridge/specs/spec-20260822-063957-auto-rd-two-modes.md(approved: rounds 1–2 full critics, round 3 by direct inspection under subagent degradation — recorded in-spec).Notes
Residual obligations OB-M1..M8 tracked in the spec (rail, spartito, third pack family, copilot formalization, filing-agency enforcement, transitive blocklist, snapshot sync, pack↔card drift police).