docs: close out #127 provenance; broaden the annotations read-gate note (cf. #450) - #521
Merged
Merged
Conversation
The route description said reading is not gated on the batch being open. That is true but narrower than the rule the service enforces: neither job state nor batch state gates a read. The description is a published wire string, so openapi.json and the generated client are regenerated in the same change.
DESIGN.md's Provenance section recorded the version-control affordances as post-beta and pending a decision, and three passages promised they return with the model behind them. Neither half holds: the top-bar slots were removed on 2026-08-05, and the branch-and-merge model was settled on 2026-08-10 as superseded by the batch, review and release model the product already has.
JArmandoAnaya
added a commit
that referenced
this pull request
Aug 21, 2026
…te (cf. #450) (#521) * docs(api): the annotations read is not gated on job or batch state The route description said reading is not gated on the batch being open. That is true but narrower than the rule the service enforces: neither job state nor batch state gates a read. The description is a published wire string, so openapi.json and the generated client are regenerated in the same change. * docs: the branch and merge affordances are settled, not deferred DESIGN.md's Provenance section recorded the version-control affordances as post-beta and pending a decision, and three passages promised they return with the model behind them. Neither half holds: the top-bar slots were removed on 2026-08-05, and the branch-and-merge model was settled on 2026-08-10 as superseded by the batch, review and release model the product already has.
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.
Two ratified corrections to text that no longer describes the repository. Nothing here
changes behaviour: one published wire string is broadened to match the rule the service
already enforces, and four passages of prose stop deferring a question that has since been
settled. No issue is ended by this pull request.
The branch-and-merge affordances are settled, not deferred
DESIGN.md's Provenance section recorded the version-control affordances the referencedesign draws — the
mainversion dropdown and Merge — as post-beta and pending adecision, and said their top-bar slots render disabled. Both halves stopped being true. The
slots were removed on 2026-08-05 by the change that took them off the annotator's top bar
(#354), and the annotation-versioning question itself was settled on 2026-08-10 as
superseded by the batch, review and release model the product already has (cf. #127) — the
working line is the batch and job, the merge-after-review is the review flow's accept pass,
and the immutable line a consumer takes is the release.
Three further passages promised the controls "return with the model", which is a promise the
decision withdrew. All four now read true at
HEAD, in each file's own voice, keeping theprinciple-9 rationale that a disabled control whose only honest explanation is "this feature
does not exist" says nothing about what would enable it:
DESIGN.md— the Provenance paragraph, and the top-bar bullet in the annotation-pagesection that described the three unrendered controls.
docs/ui.md— the top-bar section that told a reader the dropdown and Merge return withthe model behind them.
frontend/ui-core/src/annotator/AnnotationPage.tsx— the module docstring's "What the topbar has and what it does not" section, which carried the same deferral and the same
promise. It cites no issue number, and does not start to.
The audit behind that list was the bounded one the task named —
git grep -n "127"overdocsandDESIGN.md, plus a word grep forMergein the workspace docs, widened toreturn with the modelandpost-betaonce those turned out to be the load-bearingphrases. Every surviving
post-betahit is about something else: dark mode, and aprovenance field in an SDK example.
The annotations read is not gated on job or batch state
The route description on
GET /jobs/{job_id}/assets/{asset_id}/annotationssaid reading isnot gated on the batch being open. That is true but narrower than the rule: neither job state
nor batch state gates a read, and a description that names only the batch invites a client to
believe job state might. This was flagged as "found, not fixed" while shipping the
batch-lifecycle write-gate documentation (cf. #450) and ratified on 2026-08-08. The sentence
now reads "Reading is not gated on job or batch state", keeping the reason it was written
for — a label outlives the work that produced it.
The description is a published wire string, so
openapi.jsonandfrontend/ui-core/src/generated/api.tswere regenerated through the repository's owngeneration path (
uv run python scripts/export_openapi.py, thenpnpm generate:client) andcommitted alongside it. The regeneration produced exactly one changed line in each file,
and both are the description text.
checks.tsis byte-identical, and thegeneratedgroupof the gate — openapi drift, generated client drift, MCP tool reference drift, version sync —
passes on the committed artifacts.
Found, not fixed
The Provenance sentence also claimed that the removal record "re-milestoned #127 out of
0.1.0". #127 carried the 0.1.0 milestone when it was closed on 2026-08-10, so the claim did
not describe the tracker. Rather than assert a milestone fact in a document that cannot be
kept in sync with one, the rewritten sentence drops the clause; the milestone on a closed
issue is a tracker question, not a
DESIGN.mdquestion.Test plan
bash scripts/check.shwas run in its four groups rather than as a single invocation,because the full run exceeds this environment's command ceiling. Every group ran, on Node
24.19.0, from the worktree at
572281b. Exit codes, verbatim:Per-step timings, as each group reported them:
Nothing was skipped and no exception was invoked: both browser suites ran, and the whole
gate is green on unmodified test code.
check.shruns pytest under-q, which suppressesthe count line; the progress output carries no failure or error marker and the step exits 0.