Update spec-dod-multimodel.dot for Rust: fix paths, build commands, and language references

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Bryan Helmkamp 2026-02-23 17:50:10 -05:00
parent 3dfa0f9044
commit 7e7e8a9088

View file

@ -1,6 +1,6 @@
digraph SpecDoDMultiModel {
graph [
goal="Satisfy every Definition of Done checkbox across all three attractor-main specs (unified-llm-spec.md, coding-agent-loop-spec.md, attractor-spec.md). The implementation is in pure C11 under src/ and include/. Do NOT modify the spec files. Only modify implementation code. Uses multi-model consensus: Opus 4.6 and GPT-5.2 compete on audits and planning, GPT-5.2-codex and Opus 4.6 alternate on implementation.",
goal="Satisfy every Definition of Done checkbox across all three attractor specs (unified-llm-spec.md, coding-agent-loop-spec.md, attractor-spec.md). The implementation is in Rust under crates/. Do NOT modify the spec files. Only modify implementation code. Uses multi-model consensus: Opus 4.6 and GPT-5.2 compete on audits and planning, GPT-5.2-codex and Opus 4.6 alternate on implementation.",
default_max_retry="3",
retry_target="triage_merge",
default_fidelity="full",
@ -32,9 +32,9 @@ digraph SpecDoDMultiModel {
shape=box,
class="opus",
fidelity="truncate",
prompt="Read attractor-main/unified-llm-spec.md Section 8 (Definition of Done) in full. Then read every source file under src/llm/, src/util/, and include/llm/, include/util/.
prompt="Read docs/specs/unified-llm-spec.md Section 8 (Definition of Done) in full. Then read every source file under crates/llm/src/.
For EACH checkbox in sections 8.1 through 8.10, evaluate whether the current C implementation satisfies it. Be strict — a checkbox is only checked if the feature is fully implemented and would work correctly at runtime.
For EACH checkbox in sections 8.1 through 8.10, evaluate whether the current Rust implementation satisfies it. Be strict — a checkbox is only checked if the feature is fully implemented and would work correctly at runtime.
Respond with ONLY a JSON object (no prose) -- don't write it out as a file:
{
@ -58,9 +58,9 @@ Be thorough. Check every single checkbox."
shape=box,
class="gpt",
fidelity="truncate",
prompt="Read attractor-main/unified-llm-spec.md Section 8 (Definition of Done) in full. Then read every source file under src/llm/, src/util/, and include/llm/, include/util/.
prompt="Read docs/specs/unified-llm-spec.md Section 8 (Definition of Done) in full. Then read every source file under crates/llm/src/.
For EACH checkbox in sections 8.1 through 8.10, evaluate whether the current C implementation satisfies it. Be strict — a checkbox is only checked if the feature is fully implemented and would work correctly at runtime.
For EACH checkbox in sections 8.1 through 8.10, evaluate whether the current Rust implementation satisfies it. Be strict — a checkbox is only checked if the feature is fully implemented and would work correctly at runtime.
Respond with ONLY a JSON object (no prose) -- don't write it out as a file:
{
@ -86,9 +86,9 @@ Be thorough. Check every single checkbox."
shape=box,
class="opus",
fidelity="truncate",
prompt="Read attractor-main/coding-agent-loop-spec.md Section 9 (Definition of Done) in full. Then read every source file under src/agent/ and include/agent/.
prompt="Read docs/specs/coding-agent-loop-spec.md Section 9 (Definition of Done) in full. Then read every source file under crates/agent/.
For EACH checkbox in sections 9.1 through 9.13, evaluate whether the current C implementation satisfies it. Be strict.
For EACH checkbox in sections 9.1 through 9.13, evaluate whether the current Rust implementation satisfies it. Be strict.
Respond with ONLY a JSON object (no prose) -- don't write it out as a file:
{
@ -109,9 +109,9 @@ Be thorough. Check every single checkbox."
shape=box,
class="gpt",
fidelity="truncate",
prompt="Read attractor-main/coding-agent-loop-spec.md Section 9 (Definition of Done) in full. Then read every source file under src/agent/ and include/agent/.
prompt="Read docs/specs/coding-agent-loop-spec.md Section 9 (Definition of Done) in full. Then read every source file under crates/agent/.
For EACH checkbox in sections 9.1 through 9.13, evaluate whether the current C implementation satisfies it. Be strict.
For EACH checkbox in sections 9.1 through 9.13, evaluate whether the current Rust implementation satisfies it. Be strict.
Respond with ONLY a JSON object (no prose) -- don't write it out as a file:
{
@ -134,9 +134,9 @@ Be thorough. Check every single checkbox."
shape=box,
class="opus",
fidelity="truncate",
prompt="Read attractor-main/attractor-spec.md Section 11 (Definition of Done) in full. Then read every source file under src/attractor/, src/main.c, and include/attractor/.
prompt="Read docs/specs/attractor-spec.md Section 11 (Definition of Done) in full. Then read every source file under crates/attractor/.
For EACH checkbox in sections 11.1 through 11.13, evaluate whether the current C implementation satisfies it. Be strict.
For EACH checkbox in sections 11.1 through 11.13, evaluate whether the current Rust implementation satisfies it. Be strict.
Respond with ONLY a JSON object (no prose) -- don't write it out as a file:
{
@ -157,9 +157,9 @@ Be thorough. Check every single checkbox."
shape=box,
class="gpt",
fidelity="truncate",
prompt="Read attractor-main/attractor-spec.md Section 11 (Definition of Done) in full. Then read every source file under src/attractor/, src/main.c, and include/attractor/.
prompt="Read docs/specs/attractor-spec.md Section 11 (Definition of Done) in full. Then read every source file under crates/attractor/.
For EACH checkbox in sections 11.1 through 11.13, evaluate whether the current C implementation satisfies it. Be strict.
For EACH checkbox in sections 11.1 through 11.13, evaluate whether the current Rust implementation satisfies it. Be strict.
Respond with ONLY a JSON object (no prose) -- don't write it out as a file:
{
@ -314,7 +314,7 @@ Respond with JSON (not by writing out a file):
prompt="The consensus audit results are in context key response.audit_consensus. Parse the all_failed_items list from that JSON and triage every failing DoD checkbox.
Group failures into:
1. IMPLEMENTABLE — can be fixed by writing/modifying C code (functions, handlers, logic)
1. IMPLEMENTABLE — can be fixed by writing/modifying Rust code (functions, handlers, logic)
2. STRUCTURAL — requires new files, new modules, or significant architecture changes
3. DEFERRED — requires external resources (real API keys, network access, interactive testing) that cannot be done in a code-only pass
@ -338,7 +338,7 @@ Respond with JSON (not by writing out a file):
prompt="The consensus audit results are in context key response.audit_consensus. Parse the all_failed_items list from that JSON and triage every failing DoD checkbox.
Group failures into:
1. IMPLEMENTABLE — can be fixed by writing/modifying C code (functions, handlers, logic)
1. IMPLEMENTABLE — can be fixed by writing/modifying Rust code (functions, handlers, logic)
2. STRUCTURAL — requires new files, new modules, or significant architecture changes
3. DEFERRED — requires external resources (real API keys, network access, interactive testing) that cannot be done in a code-only pass
@ -396,17 +396,19 @@ Otherwise set preferred_next_label to \"Fix\"."
fidelity="full",
prompt="The merged triage report is in context key response.triage_merge. It contains a prioritized list of IMPLEMENTABLE DoD failures.
Pick the top 5 most impactful items (or all if fewer than 5) and implement the fixes in pure C11.
Pick the top 5 most impactful items (or all if fewer than 5) and implement the fixes in Rust.
Begin by making sure the build is green with `cargo test`
For each fix:
1. Read the relevant source file(s)
2. Make the minimal change needed to satisfy the DoD checkbox
3. Write the modified file(s)
4. Verify the fix compiles (mentally trace includes and types)
3. Write the modified file(s) -- update tests as needed
4. Verify the fix and the tests pass (`cargo test`)
Constraints:
- Do NOT modify any files under attractor-main/ (those are the specs)
- Do NOT add external dependencies beyond what's already used (libcurl, pthreads, math)
- Do NOT modify any files under docs/specs/ (those are the specs)
- Do NOT add external dependencies beyond what's already used
- Keep changes minimal and focused — one checkbox per fix
- Maintain the existing code style
@ -435,7 +437,7 @@ PART A — Review Codex's work:
PART B — Implement additional fixes:
5. From the remaining IMPLEMENTABLE items (see response.triage_merge for the full list), pick up to 5 more and implement them
6. Follow the same constraints as Codex (pure C11, no new deps, minimal changes)
6. Follow the same constraints as Codex (Rust, no new deps, minimal changes)
Respond with JSON (not by writing out a file):
{
@ -483,7 +485,7 @@ Otherwise set preferred_next_label to \"Ready for build\"."
build_check [
label="Build & Smoke Test",
shape=parallelogram,
tool_command="cd /Users/justin.mccarthy/code/jm-attractor && make clean && make 2>&1 && echo '---BUILD OK---' && ./attractor --dry-run test/simple.dot 2>&1 && ./attractor --dry-run test/branching.dot 2>&1 && ./attractor --dry-run test/styled.dot 2>&1 && ./attractor --dry-run test/parallel.dot 2>&1 && ./attractor --dry-run test/conditions.dot 2>&1 && echo '---ALL TESTS PASSED---'",
tool_command="cd /Users/bhelmkamp/p/brynary/attractor-rust && cargo build 2>&1 && echo '---BUILD OK---' && ./target/debug/attractor run --dry-run test/simple.dot 2>&1 && ./target/debug/attractor run --dry-run test/branching.dot 2>&1 && ./target/debug/attractor run --dry-run test/styled.dot 2>&1 && ./target/debug/attractor run --dry-run test/parallel.dot 2>&1 && ./target/debug/attractor run --dry-run test/conditions.dot 2>&1 && echo '---ALL TESTS PASSED---'",
timeout="120s"
]
@ -498,9 +500,8 @@ Read the relevant source files, identify the issue, and write corrected versions
- Missing includes
- Type mismatches
- Undeclared functions
- Linker errors
Output the fixes applied and ensure the code will compile cleanly with: cc -Wall -Wextra -std=c11"
Output the fixes applied and ensure the code will compile cleanly with: cargo build"
]
/*========================================================================
@ -518,9 +519,9 @@ Output the fixes applied and ensure the code will compile cleanly with: cc -Wall
prompt="This is a verification pass. The items that were previously failing are listed in context key response.triage_merge (the implementable list). The fixes applied are in response.fix_codex and response.review_fix_opus.
Re-read all three spec DoD sections:
- attractor-main/unified-llm-spec.md Section 8
- attractor-main/coding-agent-loop-spec.md Section 9
- attractor-main/attractor-spec.md Section 11
- docs/specs/unified-llm-spec.md Section 8
- docs/specs/coding-agent-loop-spec.md Section 9
- docs/specs/attractor-spec.md Section 11
And re-read the implementation files that were changed in this iteration.
@ -544,9 +545,9 @@ Respond with JSON (not by writing out a file):
prompt="This is a verification pass. The items that were previously failing are listed in context key response.triage_merge (the implementable list). The fixes applied are in response.fix_codex and response.review_fix_opus.
Re-read all three spec DoD sections:
- attractor-main/unified-llm-spec.md Section 8
- attractor-main/coding-agent-loop-spec.md Section 9
- attractor-main/attractor-spec.md Section 11
- docs/specs/unified-llm-spec.md Section 8
- docs/specs/coding-agent-loop-spec.md Section 9
- docs/specs/attractor-spec.md Section 11
And re-read the implementation files that were changed in this iteration.