Repository navigation
fix(conformance, look-ledger): a built row is not a regression; mark-built at module close; dropped pages are not owed (#671, #681) - #697
Merged
Conversation
…built at module close; dropped pages are not owed (#671, #681) #671: conformance-check.sh keyed a PRESENT `planned` row as UNDERSTATED, so every correct build read "was OK, now UNDERSTATED" (exit 1) and --update-baseline was refused as a loosening (exit 2). UNDERSTATED is now keyed OK in the baseline and reported as a note ("ledger lags: N row(s) built but marked planned — run --mark-built"); OK -> STALE still fails. New --mark-built flips status cells planned/not built -> built for rows measured PRESENT, in per-BRD, per-module, flat and project ledgers; idempotent, status cell only, blocked rows untouched. module-close.sh runs it once per module; iterative-build-loop.md step 16 updated, word-neutral (baseline 65053 -> 65053). #681: look-ledger.sh owe reads DROP PAGE [IF EXISTS]; the last statement on a page in a script decides, dropped pages' owed.tsv rows are removed, a re-create owes again. RENAME not handled: no captured MDL statement shape. Fixtures: test-conformance-baseline-scope.sh 9-16 (8 fail on master), test-look-ledger.sh D1-D5 (3 fail on master). Field run: the #671 / #681 repros (mxcli nightly-20261105, Mendix 11.15.0) as reported. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_013jQvaonym9V1wKKfAEPmRr
This was referenced Nov 6, 2026
…ows get their own note (PR #697 review) - --mark-built matched by pointer + file, so two rows of one ledger sharing a pointer (one PRESENT, one ABSENT) both flipped to built and the next run exited 1 with STALE. extract now carries FNR; the rewrite matches file + line and re-checks the pointer on that line. - The "ledger lags" note counted PRESENT `blocked (...)` rows that --mark-built never flips, so it never went away. It now counts planned/not built only; blocked rows get their own note. - verify-module.sh: the "~25s per row (22 rows ~ 9 min)" comments predate the 2026-09-02 watchdog fix. Measured 2026-11-06: 22.7s for a 22-row ledger (~1s per row). - Fixture cases 10b, 14b, 17, 17b (5 fail on the previous PR head). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_013jQvaonym9V1wKKfAEPmRr
Keep both sides of CHANGELOG.md. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_013jQvaonym9V1wKKfAEPmRr
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes #671. Fixes #681.
Changes
#671:
project-bin/conformance-check.shplanned/not built/blocked, element PRESENT) is now keyed as OK in the baseline. Before, every correct build of aplannedrow read "was OK, now UNDERSTATED" (exit 1), and--update-baselinerefused the update as a loosening (exit 2).ledger lags: N row(s) built but marked planned — run --mark-built. It counts onlyplanned/not builtrows. A PRESENTblocked (…)row gets a separate note, because--mark-builtnever flips blocked rows.builtrow whose element later disappears still reads OK → STALE and exits 1 (case 15).--mark-builtflag. It flips the status cell of each row whose element was measured PRESENT and whose stored status isplannedornot builttobuilt, in the ledger file the row came from. It handles the per-BRD, per-module, flat (<M>-coverage-ledger.md) and project-level ledger shapes.|and joined again with|, so no other byte changes. Backticks around a status are kept. Prose rows andblockedrows are not touched. Running it twice changes nothing the second time.project-bin/module-close.shrunsconformance-check.sh --module <M> --mark-builtonce per module, beforeverify-module.sh, and copies the result line into the report.verify-module.shstill writes nothing.project-bin/verify-module.sh: the comments that said "~25s per row (22 rows ≈ 9 min)" are updated with the figure measured below. Comment-only change; the line count is the same.skills/iterative-build-loop.mdstep 16 now says that module-close does the ledger flip. The always-loaded word count is unchanged at 65053 (render-routing.sh --check).#681:
project-bin/look-ledger.shlook_pages_innow readsDROP PAGE [IF EXISTS] <name>. When a script has several statements on one page, the last one decides.oweremoves theowed.tsvrows of every page that a script ends by dropping, so the gate-check Stage 5 check no longer counts it. A latercreate pageappends a new row, and the page is owed again.rename pagestatement to test against.Time cost (#687)
--mark-builtruns once per module, inside module-close, not once per row.sleep 1holds the$(…)pipe open until it ends./dev/nullinrun_guardedbrought the same 22-row pass from 22.7 s to 4.0 s in a local try. It would speed up every conformance run, so it should be its own change with its own review.Regression risk after
sync-project.sh--update-baselinerefused only because of UNDERSTATED rows now goes through, and those rows are written asOK.UNDERSTATEDstay that way until they are rewritten. That is no looser than before.look:goes from FAIL to MANUAL for projects whose only unseen pages were dropped, but only once a new script drops them.owed.tsvrows for pages dropped earlier stay until then, or until removed by hand as the look ledger keeps owing pages that were dropped, gate counts them as never looked at #681 workaround describes.--mark-builtwrite is opt-in. It changes only status cells in the ledger, never the.mpr.module-close.shignores its exit code._common.sh. Only bash 3.2-safe constructs are used, andcheck-portabilityis clean.Proof
tests/wave2/test-conformance-baseline-scope.sh, cases 9–17b: 21/21 on this branch.tests/wave2/test-look-ledger.sh, D1–D5: 26/26 on this branch. Against master, D1, D2 and D4 fail; D4 is the gate-check Stage 5 FAIL from look ledger keeps owing pages that were dropped, gate counts them as never looked at #681.render-routing --checkis in sync. No full suites were run.Review: pending independent review
🤖 Generated with Claude Code