Skip to content

fix(dashboard-check): fail on a missing dashboard or field; read .adoc (P1-0 prep) - #143

Merged
hyperpolymath merged 1 commit into
mainfrom
fix/dashboard-check-honest
Oct 2, 2026
Merged

hyperpolymath merged 1 commit into
mainfrom
fix/dashboard-check-honest

Conversation

@hyperpolymath

Copy link
Copy Markdown
Owner

First step of ULTRAPLAN P1-0 (the claims ledger). Before dashboard-check takes on claims, it has to be able to fail.

Two reasons the STATE-vs-dashboard gate could not fail on main

  1. The job died before the checker ran. dashboard-check.yml passed with: toolchain: v1 to dtolnay/rust-toolchain@v1, and v1 is not a toolchain. STATE vs dashboard reconciliation is red on main b1fc4ed at the toolchain-parse step. Now toolchain: stable. uses: is unchanged, so actions.lock is untouched; gh actions-lock --no-fix reports the same on this branch as on main (0 errors).
  2. The checker compared nothing. It read TOPOLOGY.md / READINESS.md, which refactor: migrate Markdown to AsciiDoc #102 renamed to .adoc, and an absent file was skipped. Run locally on main, it printed OK — dashboards agree without reading either dashboard.

Change (crates/dashboard-check)

  • An absent dashboard, or a field that cannot be parsed on either side, is now a failure, not a skip. That covers completion, grade (TOPOLOGY and READINESS), Last-updated, and the STATE fields.
  • OK lists every value it compared, so a vacuous pass is visible.
  • Reads .adoc with a .md fallback, and descriptiles/STATE.a2ml with a 6a2/ fallback (AGENTS §2a). The 6a2/ directory is not renamed here.
  • The TOPOLOGY grade is read from the OVERALL line only. Previously the first Grade anywhere in the file counted, and it matched prose by accident.
  • AsciiDoc shapes (*Current Grade:* D, // Last updated: …) are parsed. Test fixtures are copied from the real files.

Real gap surfaced, fixed here

#102 dropped TOPOLOGY's Last updated line, so staleness was uncheckable. It is restored as an AsciiDoc comment with its original date (2026-07-02, from TOPOLOGY.md at 3a8a4b3^), not today's date.

Evidence

$ cargo run -q -p dashboard-check -- --check .        # this branch
dashboard-check: OK — dashboards agree with ./.machine_readable/6a2/STATE.a2ml:
  ✓ completion 60% (TOPOLOGY.adoc)
  ✓ grade D (TOPOLOGY.adoc)
  ✓ TOPOLOGY.adoc last updated 2026-07-02 >= STATE 2026-06-12
  ✓ grade D (READINESS.adoc)

Before the date line was restored: ✗ TOPOLOGY.adoc has no 'Last updated: YYYY-MM-DD' line, rc=1.

  • Unit tests: 8 → 19, all pass. clippy --all-targets -D warnings is clean, and cargo fmt --check is clean (it reformatted lines the old file already had unformatted).
  • Ten mutants, all killed. Each one reintroduces a silent skip (TOPOLOGY absent, Last-updated absent, grade absent), reads the grade from any line, drops the adoc READINESS token, drops .adoc, drops the .md fallback, or ignores descriptiles/. The first run left two survivors: the adoc-token path was masked by the CRG Grade: heading, and read_surface was untested. Tests were added for both, and they are now killed.

Scope

This is a correctness fix to an existing gate. The claims ledger itself (rows of claim | status | artefact | command, measured test counts, reject-class fixtures) is the next PR, stacked on this one.

🤖 Generated with Claude Code

https://claude.ai/code/session_01VxcAoyMQe7CjQwCKL18Mm4

… .adoc

The STATE-vs-dashboard gate could not fail on main, for two reasons:

- .github/workflows/dashboard-check.yml passed `toolchain: v1` to
  dtolnay/rust-toolchain, which is not a toolchain name, so the job died
  in setup before the checker ran (red on main b1fc4ed).
- The checker read TOPOLOGY.md / READINESS.md. After the md-to-adoc
  migration (#102) both are .adoc, so it compared nothing and printed OK.

Now an absent surface, or a field that cannot be parsed on either side, is
a failure rather than a silent skip, and OK lists every value it compared.
The checker reads .adoc with a .md fallback, and descriptiles/STATE.a2ml
with a 6a2/ fallback. The TOPOLOGY grade is read from the OVERALL line
only. The change surfaced one real gap: #102 dropped TOPOLOGY's
'Last updated' line. It is restored with its original date, 2026-07-02.

Tests: 8 -> 19. Ten mutants (each a skip reintroduced, or a lookup
disabled) are all killed.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VxcAoyMQe7CjQwCKL18Mm4
@coderabbitai

coderabbitai Bot commented Oct 2, 2026 •

Copy link
Copy Markdown
Contributor

Review in Change Stack →

Navigate logical layers of code changes, visualize relationships, and explore their blast radius.

Note

Currently processing new changes in this PR. This may take a few minutes, please wait...

⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Advanced

Run ID: 5010cb75-667d-4f6a-aefd-4061a4459563

📥 Commits

Reviewing files that changed from the base of the PR and between b1fc4ed and 97c2a16.

📒 Files selected for processing (3)
  • .github/workflows/dashboard-check.yml
  • TOPOLOGY.adoc
  • crates/dashboard-check/src/main.rs
 ________________________________________
< CI is red. I'm also red. We match now. >
 ----------------------------------------
  \
   \   (\__/)
       (•ㅅ•)
       /   づ
✨ Finishing Touches
📝 Generate docstrings
  • Commit to this branch
  • Create a new PR
  • Autopilot · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Autopilot is currently an internal CodeRabbit preview.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@hyperpolymath
hyperpolymath merged commit 539e6f9 into main Oct 2, 2026
31 of 45 checks passed
@hyperpolymath
hyperpolymath deleted the fix/dashboard-check-honest branch October 2, 2026 12:29
@coderabbitai

coderabbitai Bot commented Oct 2, 2026

Copy link
Copy Markdown
Contributor

Autopilot could not be updated. Open Coding to check access and billing.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant