Skip to content

Auto R&D two modes: autoresearch + autodev over one director core #497

Description

@aarontrowbridge

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).

Metadata

Metadata

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions