Skip to content

refactor: migrate Markdown to AsciiDoc - #102

Merged
hyperpolymath merged 1 commit into
mainfrom
refactor/md-to-adoc
Aug 24, 2026
Merged

hyperpolymath merged 1 commit into
mainfrom
refactor/md-to-adoc

Conversation

@hyperpolymath

Copy link
Copy Markdown
Owner

Automated migration of .md to .adoc per global rules, preserving wikis and critical exceptions.

@hyperpolymath
hyperpolymath merged commit 3a8a4b3 into main Aug 24, 2026
@hyperpolymath
hyperpolymath deleted the refactor/md-to-adoc branch August 24, 2026 07:21
@gitar-bot

gitar-bot Bot commented Aug 24, 2026

Copy link
Copy Markdown

Important

You are using the Gitar free plan. Upgrade to unlock code review, CI analysis, auto-apply, custom automations, and more.

Gitar

hyperpolymath added a commit that referenced this pull request Oct 2, 2026
…c (P1-0 prep) (#143)

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 #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.com/claude-code)

https://claude.ai/code/session_01VxcAoyMQe7CjQwCKL18Mm4

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
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