feat(opencode): mandate stub-first @make pre-pass for Rust integration TDD
Rust integration tests live in a separate test crate that imports from lib.rs, so any test referencing not-yet-existing public API can only RED at build time. The build error masks assertion diagnostics and makes the RED state opaque — no stack trace, no left/right values. For Rust tasks whose @test step writes an integration test against public API that does not yet exist, the orchestrator now dispatches a stub-first @make pass before @test runs: 1. @make adds the planned public API as todo!()-bodied stubs in lib.rs and any new src/<module>.rs. Signatures lifted verbatim from the Phase 5 task spec. Acceptance criterion is cargo check only — no test command runs. 2. @test writes the integration test, which now compiles and panics at todo!() with a stack trace — a clean MISSING_BEHAVIOR RED. 3. Phase 7 dispatches @make again to replace the todo!() bodies with real implementations. Two atomic commits per task: scaffold then implement. Phase 5's Rust test-path guidance now flags the two-dispatch requirement up front. test.md's Rust failure-classification hints recognize todo!() / unimplemented!() panics as MISSING_BEHAVIOR with a pointer to the workflow's stub-first section.
This commit is contained in:
parent
832306c817
commit
5b5c59aa84
2 changed files with 24 additions and 1 deletions
|
|
@ -200,6 +200,7 @@ After running tests, classify each failure:
|
|||
**Mapping hints (Rust):**
|
||||
- `error[E0432]: unresolved import` / `error[E0425]: cannot find function/value` for the symbol under test → `MISSING_BEHAVIOR`
|
||||
- `error[E0599]: no method named ...` on a real but incomplete type → `MISSING_BEHAVIOR`
|
||||
- Test panics with `not yet implemented` / `not implemented: …` (from `todo!()` or `unimplemented!()` in a stub body) → `MISSING_BEHAVIOR` (this is the expected RED state for stub-first integration TDD; see workflow Phase 6 "Rust integration TDD: stub-first")
|
||||
- Test panics with `assertion failed: ... left: ..., right: ...` → `ASSERTION_MISMATCH`
|
||||
- Test file fails to compile due to its own bug (typo, wrong type, unused-import-as-error) → `TEST_BROKEN`
|
||||
- `linker not found`, missing system library, missing feature flag → `ENV_BROKEN`
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue