Skip to content

[DIC-17] coherence-scan --emit-followup: wire DIC-26 monitor → DIC-17 follow-up bridge - #9720

Draft
an0mium wants to merge 3 commits into
mainfrom
vision-incubator/dic-17-coherence-followup-cli
Draft

[DIC-17] coherence-scan --emit-followup: wire DIC-26 monitor → DIC-17 follow-up bridge#9720
an0mium wants to merge 3 commits into
mainfrom
vision-incubator/dic-17-coherence-followup-cli

Conversation

@an0mium

@an0mium an0mium commented Aug 6, 2026

Copy link
Copy Markdown
Collaborator

Summary

  • Adds --emit-followup flag to aragora coherence-scan (DIC-26 CLI surface) that surfaces DIC-17 FollowupProposal objects for every error-severity coherence issue in the scanned belief ledger.
  • Exports propose_followup_for_coherence_issue from aragora.epistemic package API (was in followup.__all__ but missing from the package-level __init__.py).
  • 10 focused tests covering flag-gating, text/JSON output, warning-only no-proposal behaviour, and the boss-ready-exclusion queue-governance invariant.

Type of Change

  • New feature (non-breaking change that adds functionality)
  • Test improvement

Related Issues

Related to #6027 (DIC-17 — failed-claim / open-crux follow-up bridge)
Related to #6220 (DIC-26 — belief coherence monitor)

Checklist

Before Submitting

  • My code follows the project's code style (ruff clean, mypy clean on touched modules)
  • I have added tests that prove my fix/feature works
  • All new and existing tests pass (tests/cli/test_dic26_coherence{,_followup}.py, tests/epistemic/test_coherence*.py — 41 tests passing)
  • My commit messages follow conventional commit format

Code Quality

  • New code has type hints
  • No hardcoded secrets or credentials
  • Error handling is appropriate

For New Features

  • Feature is tested with unit tests
  • Feature integrates with existing systems appropriately

Test Plan

# All 10 new CLI tests + 31 existing coherence + followup tests
pytest tests/cli/test_dic26_coherence_followup.py tests/cli/test_dic26_coherence.py tests/epistemic/test_coherence_followup_bridge.py tests/epistemic/test_coherence.py -v
# → 41 passed

# Smoke: package-level export
python3 -c "from aragora.epistemic import propose_followup_for_coherence_issue; print('OK')"

Additional Notes

Flag gating: both ARAGORA_COHERENCE_MONITOR_ENABLED=1 and ARAGORA_EPISTEMIC_FOLLOWUP_ENABLED=1 must be set for proposals to flow. Default is OFF. Live queue effect: none — read-only operator surface.

Queue governance: boss-ready label is never applied to generated proposals (tested explicitly). Proposals are DIC-17 planning-truth output only; the proof-first Foreman gate controls promotion.

Net diff: 273 LOC (61 modified, 212 new test lines). No changes to scripts/, dispatch, boss loop, or swarm supervisor.


Generated by Claude Code

Extends `aragora coherence-scan` with `--emit-followup` flag that calls
`scan_coherence(emit_followup_proposals=True)` and surfaces DIC-17
FollowupProposals alongside the coherence report.  Proposals appear only
when both `ARAGORA_COHERENCE_MONITOR_ENABLED=1` and
`ARAGORA_EPISTEMIC_FOLLOWUP_ENABLED=1` are set; default is OFF.

Changes:
- `aragora/epistemic/__init__.py`: export `propose_followup_for_coherence_issue`
  (was in `followup.__all__` but missing from the package-level API).
- `aragora/cli/commands/dic26_coherence.py`: add `--emit-followup` support
  with text and JSON rendering of proposals; `boss-ready` invariant upheld.
- `aragora/cli/parser.py`: register `--emit-followup` flag.
- `tests/cli/test_dic26_coherence_followup.py`: 10 focused tests covering
  default-off, flag-gating, text/JSON output, warning-only no-proposal, and
  queue-governance invariant.

Advances: issue #6027 (DIC-17 — failed-claim / open-crux follow-up bridge).
Flag-gated, default OFF. No live queue effect.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0191Ev3QHqtQziTvKkyiiEQy
@an0mium an0mium added the vision-layer label Aug 6, 2026 — with Claude
claude added 2 commits August 6, 2026 08:50
…atchet

Compacts the 10-line --emit-followup add_argument block to 2 lines and
removes a redundant `default=False` from a store_true arg in the same
file, keeping parser.py exactly at the 5400-LOC ratchet limit.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0191Ev3QHqtQziTvKkyiiEQy
ruff format expands the --emit-followup add_argument block; remove four
more redundant default=False lines from store_true args to keep parser.py
at the 5400-LOC ratchet limit after formatting is applied.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0191Ev3QHqtQziTvKkyiiEQy
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants