Skip to content

Settle writ reconcile's surface, and stop teaching writ status - #773

Merged
David-Noble-at-work merged 1 commit into
developfrom
doc/772-reconcile-surface
Sep 1, 2026
Merged

David-Noble-at-work merged 1 commit into
developfrom
doc/772-reconcile-surface

Conversation

@David-Noble-at-work

Copy link
Copy Markdown
Contributor

Closes #772

Two plans described the same command differently. One recorded flags it will not have, and both still
taught writ status — a command being retired, not modernized. Documents only.

The settled surface

writ reconcile produces a report. It has no command flags. It takes the globals — --output /
-o, --filter, --jq, --store, --dry-run — and must utilize all of them faithfully. The selector
between fix, diff and summary behaviors is deferred to the reconciliation epic and is not designed
here.

The flags go

762:51 recorded the shape as writ reconcile [--drift] [--fix] [--json] [<project>...]. None of the
three survives: --json is replaced by the shared -o, and the other two are the deferred selector
under earlier names.

762:96 and 5.1:12 both said 5.1's "there is no --fix" was retired as a stale claim. That
overstates it — reconcile will repair, but there is no --fix today and the surface is undecided. Both
are corrected.

A caution, recorded where the selector will be designed

Two of the three candidate views are already projections of the one document:

View Already is
diff --jq '.entries'
history --jq '.packages'

Those are stage 2 of the pipeline #740 landed, and --jq and --filter are already reserved. Adding
--diff and --history flags would create a second way to select a subset of the same document, and the
two will drift. Only the repair half is genuinely new, because it is a mutation rather than a projection
— and --dry-run already owns the mutation axis.

Terminology corrected wherever it appears

Eight sites in 740. Six are the command's name and change outright. Two are not terminology:

The measurements keep their date, not their vocabulary: lines 231–242 record what was found on
2026-08-30, and one dated note says so, rather than seven caveats through the text.

Test plan

  • ./scripts/Test-GuideFrontmatter.sh — green
  • No plan records a flag writ reconcile will not have; the surviving --drift/--fix/--json
    mentions are historical quotation or the explanation that they do not survive
  • The globals commitment is stated in 762, which owns the command
  • The only writ status left in 740 is line 231's dated note saying that is what it was called when
    measured
  • :212 names both the path today and where The writ lifecycle surface: reconcile, scopes, and the vocabulary settlement #762 moves it
  • Not covered: whether the deferred selector is designed correctly, because it is not designed

Open question, carried in the plan

Does the repair half become a mode of reconcile, or stay as the named commands each Entry already
points at in its Repair field? writ-deploy-family.md:136 chose the latter deliberately — "no
--fix: the repair for each finding is named instead"
— and that is what the tree implements today.
Bigger than flag syntax; belongs to the reconciliation epic.

https://claude.ai/code/session_01SqQVFZz7AdiLZkGoAcUqRW

Closes #772

Two plans described the same command differently. One recorded flags it will not have, and both still
taught `writ status` -- a command being retired, not modernized.

THE SETTLED SURFACE. `writ reconcile` produces a report. It has NO command flags. It takes the globals --
--output/-o, --filter, --jq, --store, --dry-run -- and must utilize all of them faithfully. The selector
between fix, diff and summary behaviors is deferred to the reconciliation epic and is not designed here.

THE FLAGS GO. 762 recorded `writ reconcile [--drift] [--fix] [--json] [<project>...]` as the shape. None
of the three survives: --json is replaced by the shared -o, and the other two are the deferred selector
under earlier names. 762 and 5.1 both said 5.1's "there is no --fix" was retired as a stale claim, which
overstates it -- reconcile will repair, but there is no --fix today and the surface is undecided.

A CAUTION IS RECORDED WHERE THE SELECTOR WILL BE DESIGNED. Two of the three candidate views are already
projections of the one document the report produces: the diff is --jq '.entries', the history is
--jq '.packages'. Those are stage 2 of the pipeline #740 landed, and --jq and --filter are already
reserved. Adding --diff and --history would create a second way to select a subset of the same document,
and the two will drift. Only the repair half is genuinely new, because it is a mutation rather than a
projection -- and --dry-run already owns the mutation axis, so anything added there must say how the two
compose.

TERMINOLOGY CORRECTED WHEREVER IT APPEARS. Eight sites in 740. Six are the command's name and change
outright. Two are not terminology: :212 is a path, recorded now as
`cmd/writ/writ/status/report.go` (`reconcile/` under #762) so it is findable before and after the rename;
:27 was a false claim about ordering, and is rewritten rather than renamed -- the work lands AS
`writ reconcile`, so this epic's writ phase and #762's phase 2 are one piece of work, not two adjacent
ones.

The measurements keep their date, not their vocabulary. Lines 231-242 record what was found on
2026-08-30. The finding survives the rename; the name does not. One dated note says the measurement
predates the rename, rather than seven caveats scattered through the text.

Claude-Session: https://claude.ai/code/session_01SqQVFZz7AdiLZkGoAcUqRW
@David-Noble-at-work David-Noble-at-work self-assigned this Sep 1, 2026
@David-Noble-at-work
David-Noble-at-work merged commit a4054b6 into develop Sep 1, 2026
12 checks passed
@David-Noble-at-work
David-Noble-at-work deleted the doc/772-reconcile-surface branch September 1, 2026 21:17
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.

740 and 762 disagree on writ reconcile: flags that will not exist, and an ordering that no longer holds

1 participant