Conversation
…moved The figures on these pages move only when the pinned retrievals are deliberately refreshed, and a refresh rewrites site/data/perimeters-coverage.json and dins-coverage.json in full. The only account of what changed was git diff over a large JSON document, which answers a different question: it reports lines, so a reordered list reads as hundreds of changes and one count that moved reads as two. python -m perimeter.diff OLD NEW walks every leaf of both documents and reports the value at its path with both sides. Exit 0 no change, 1 changes reported, 2 a refused removal or an unreadable input. --json writes the rows sorted by path, byte-identical on repeat, so a refresh can cite a comparison in PROVENANCE.md. make diff wraps it for a terminal, and records in the Makefile that make collapses every recipe failure to its own exit 2, so a script that needs the three codes calls the module. Three distinctions decide the design. A key the later artifact stops publishing is not a value moving: it is refused unless ALLOW_REMOVALS names it deliberate. A number becoming null is a change to absence and never a removal, because ADR-0010 writes a domain the layer stopped publishing as null rather than dropping it. And 1000 and 1000.0 are a type change, because every percentage here is a *_tenths_pct integer precisely so that no float decides an equality. make site-check now prints the leaf comparison before its byte-for-byte check decides. The comparison is the report and diff -r is still the gate: the report's exit status is discarded deliberately, so it can add detail and can never turn a red target green. Refusals per ADR-0004: a missing file, an empty file, an unparseable one and a JSON document whose top level is not an object are each refused rather than parsed into an empty document, because two empty documents compare equal and would report no change about two artifacts that were never read. Running the tests against the faults they exist to catch found a weak assertion in this change's own test file. With the emptiness check deleted, an empty file still failed as unparseable JSON and match='empty' was satisfied by the fixture filename empty.json. The fixture is renamed and the pattern now matches the reason. Closes #58
Throwaway branch. Do not merge.
Owner
Author
|
Diagnostic complete; this branch has done its job and is being removed. The finding: The fix is PR #74. Nothing here should be merged. Prepared with AI assistance; reviewed before submission. |
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.
TEMPORARY. DO NOT MERGE. Throwaway branch; it will be deleted.
Control for #72. Same three diagnostic steps, this time stacked on
feat/artifact-diff(#71), whoseverifyjob fails becausegit rev-parse --is-shallow-repositoryreportstrue. On main content the same steps reportfalseandmake verifypasses, so this isolates whether the branch content or the checkout is responsible.Prepared with AI assistance; reviewed before submission.