Skip to content

fix(progress-report): show the build plan once, in the phase cards (#474) - #475

Merged
MendixMau merged 3 commits into
masterfrom
claude/progress-report-474
Oct 20, 2026
Merged

MendixMau merged 3 commits into
masterfrom
claude/progress-report-474

Conversation

@MendixMau

@MendixMau MendixMau commented Oct 20, 2026 •

Copy link
Copy Markdown
Owner

Fixes #474.

What changed and why
The phase cards now are the build plan, so it is shown once. Phase cards (details.ph) hold the full row detail: #, Kind, Step, Produces/Proves, Depends on, State, Scripts, plus Claims. build-plan-status.sh writes it to a --phase-detail file and progress-report.py splices it into each card. The duplicate "Full plan tables" details#plan-tables is gone; the plan tally, view A (script folders) and view B (module proof) remain as their own section (#plan-tables). The now phase renders open with a selected style; opening a phase closes the previous one (accordion); a #phase-N link opens its card and wins over the default on load; a viewer's saved open/closed state survives the 30 s reload and wins over the default. build-plan-status.sh passes --phase-detail only when the generator supports it (grep -q -- '--phase-detail' "$GEN"), so an older progress-report.py left by sync-project.sh --only-bin build-plan-status.sh or a hand-edited copy still writes the page, with the old short row tables. Dead CSS (.ph .scroll, .frag section.phase) removed. No libraries.

Impact

Row Answer
Process none
Dependencies build-plan-status.sh and progress-report.py ship together; the --phase-detail guard covers version skew between them. No shared files (_common.sh, exec.sh, skill-routing.tsv) touched.
Context cost none: no routed or always-loaded file touched
Behaviour n/a: scripts only
Runtime one temp file per render (the phase-detail file), negligible

Field evidence: fixture-only; maintainer field run owed. Reported by a requirements-driven field project at Stage 5.

Test tier: T1 (scoped fixtures, no full suite) on fixture architecture/build-plan.md inputs.

  • Fixtures run (scoped): test-progress-report, -polish, -pages, -field-fixes, -gitignore, test-build-plan-json, test-build-plan-status-args, test-windows-msys-paths: all pass.
  • polish P6: every row appears once (<td>3</td> once), inside its card with the full columns; the now phase is open; views A and B stay.
  • polish P6b: a generator copy without --phase-detail (checked to reject the flag directly) still renders the page via build-plan-status.sh, with the short row tables.
  • polish P6c: the page's own two <script> blocks run in node against a small DOM shim with coalesced toggle events, asserting: the now phase is open on load; opening phase 1 closes phase 2; #phase-3 on load wins over the default; restored state wins over the default. P6b and P6c each fail against a mutant (guard removed / toggle handler removed). No browser run is part of the fixture.
  • bin/check-scripts.sh, bin/check-portability.sh, bin/check-pr-discipline.sh origin/master, bin/check-no-client-data.sh: clean.

Word budget: no baseline skill files touched.


Generated by Claude Code


Generated by Claude Code

…pen the now phase (#474)

Phase cards now carry the full row detail (Produces/Proves, Depends on, Scripts,
Claims) from build-plan-status.sh via --phase-detail; the duplicate 'Full plan
tables' block is removed and views A and B stay as their own section. The now
phase renders open + selected; phase cards behave as an accordion; #phase-N
links and saved reload state still work.

Field proof: no real project available in this session; ran against a fixture
architecture/build-plan.md (2 phases, 4 rows, claims). grep -c '<td>12</td>' = 1,
'<td>3</td>' = 1. Chromium at 375px: now phase open on load, click opens/closes
previous, #phase-2 hash opens it, no horizontal scroll. Fixtures run:
test-progress-report{,-polish,-pages,-field-fixes,-gitignore}, test-build-plan-json,
test-build-plan-status-args, test-windows-msys-paths (all pass).

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XruEA24qrAkK7Zqxc5Z59E
…ash link wins on load, real JS assertions

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XruEA24qrAkK7Zqxc5Z59E
… accordion tests (#474)

- build-plan-status.sh passes --phase-detail only when progress-report.py
  knows it, so a generator left behind by a partial sync still writes the
  page (cards fall back to the short row tables) instead of exiting on
  "unrecognized arguments".
- polish P6b: an old-generator copy without the flag still renders; the
  copy is checked to reject the flag directly.
- polish P6c: the page's own two scripts run in node against a DOM shim
  with coalesced toggle events: now phase open on load, opening phase 1
  closes phase 2, #phase-3 on load wins over the default, restored state
  wins over the default. Both new cases fail against a mutant.
- Remove dead CSS: .ph .scroll and .frag section.phase (.frag .scroll is
  still used by views A and B).
- CHANGELOG: credit MendixMau on the #474 line.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VJgWP5vEoAsNsJYqCDMGNw
@MendixMau
MendixMau merged commit ac4021d into master Oct 20, 2026
2 checks passed
MendixMau pushed a commit that referenced this pull request Oct 20, 2026
Keeps both ## Unreleased CHANGELOG entries.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VJgWP5vEoAsNsJYqCDMGNw
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.

Progress report: build plan shown twice (phase cards + "Full plan tables"); active phase should open by default

2 participants