Repository navigation
Auto R&D two modes: autoresearch + autodev over one director core #497
Description
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 core -
gate_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-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).
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).
Activity
aarontrowbridge commentedon Aug 23, 2026
Frontier progress (2026-08-23): the four parallel slices are implemented, parent-gated, and up as draft PRs — all TDD (red→green), typechecks clean, blocklist-verified:
Remaining: #501 (mode cards — unblocks when armonissima#62 merges; embeds the director core's discovery rule verbatim inside spine markers) → #502 (dual-harness suite — needs #518/#519/#520/#501) → telaio#20 (campaign-mapping docs). Reviewer notes: #519's fixture corpus and #520's blocklist fixture carry the authorship-split obligation (READMEs record it).
feat(protocol): naming records — six locked glossary terms + blocklis…
aarontrowbridge commentedon Aug 23, 2026
Merge ledger (2026-08-23, batch authorization 'anything green'): 12 PRs merged, all gates green.
Remaining on this graph: #501 (mode cards — now unblocked, next dispatch) → #502 (dual-harness suite) → telaio#20 (campaign docs).
jeonghun-jj-lee commentedon Sep 12, 2026
Closing — the three-mode surface (copilot / research / develop) over director-core is shipped and live. The autoresearch/autodev rename landed per spec-20260907-011500 D1. Both mode cards and the director-core skill are in the skill index.