Apply review findings from mining PR #61/#63/#64 and the recent merged PRs: - conf_draft_node: drop the agentic invoker config (max_turns=8 + Read/Grep/Glob + budget) that merged #61 reverted live (#60); use max_turns=4 tools-off like the planner. The draft is a reasoning->JSON node — repo context is folded into the prompt, never fetched via Claude tools (feedback_claude_sdk_single_shot). Invert the test that pinned the old tools-on contract. - confluence_writer: record the dedicated Phase.CONF_DRAFT/CONF_GATE/CONF_WRITE values instead of borrowing VERIFY/REVIEW/BUILD, so the ledger/transitions/ dashboard show the real lane. - invoker: note the allowed_tools seam is replicated from merged #61 (drop on a future rebase; byte-equivalent default None->[]). - dashboard: document that conf_* vertices need no _NODE_TO_STAGE remap (node id == stage key, identity fallback resolves them). Verified (no change needed): coordinator confluence gate shares the plan gate's crash isolation (_emit never raises, ledger write fail-soft); confluence_* state channels persist via declared PipelineState channels + checkpointer; Flow B edge hooks VERIFY's approved terminus, orthogonal to #61's plan-gate-approve routing. Full suite 1564 passed; ruff + format clean. |
||
|---|---|---|
| .. | ||
| confluence | ||
| db | ||
| nodes | ||
| transport | ||
| __init__.py | ||
| api.py | ||
| billing.py | ||
| ci_fetcher.py | ||
| ci_gate.py | ||
| ci_watcher.py | ||
| coordinator.py | ||
| dashboard.py | ||
| deadline_timer.py | ||
| decisions.py | ||
| dispatcher.py | ||
| draft_pr_monitor.py | ||
| github_app.py | ||
| graph.py | ||
| invoker.py | ||
| invoker_multi.py | ||
| ledger.py | ||
| operator_cli.py | ||
| recovery.py | ||
| responder.py | ||
| resume_worker.py | ||
| state_store.py | ||
| status_page.py | ||
| task_model.py | ||
| topology.py | ||