- Add insta + tempfile to _assembler/Cargo.toml [dev-dependencies]. - Create tests/common/mod.rs with helpers: seed_tempdir (copies fixtures into an isolated AGENT_ROOT), run_assemble (invokes the built binary via std::process::Command), and assemble_one (end-to-end single-manifest helper). - Seed tests/fixtures/ with the 4 manifests covered by the golden snapshots (code-implementer, researcher, cost-guardian, patent-compliance) and the 7 blocks they reference (baseline, evidence-grading, memory-protocol, rule-pre-dev-gate, rule-test-first, rule-error-budget, rule-double-audit). Binary-only crate (no lib target), so integration tests invoke the assemble binary in-process instead of calling internal functions. This exercises the full main.rs I/O + validator + assembler pipeline end-to-end, which is exactly what the determinism claim covers. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
578 B
578 B
TEST-FIRST
- Critical paths: tests BEFORE code (TDD — RED → GREEN → REFACTOR)
- Everything else: tests WITH code in the same change
- NEVER "I'll write tests later"
Goal-Driven variant: convert any task to a verify-criterion BEFORE starting.
- "Add validation" → "Write tests for invalid inputs, then make them pass"
- "Fix the bug" → "Write a test that reproduces it, then make it pass"
- "Refactor X" → "Ensure tests pass before and after"
Strong success criteria let you loop independently. Weak criteria ("make it work") require constant clarification.