Skip to content

docs(client): re-anchor the dead tracker citations in packages/client/src to the commits that decided them - #20703

Merged
objectstack-fleet[bot] merged 3 commits into
mainfrom
claude/issue-20594-client-dead-citations
Sep 29, 2026
Merged

objectstack-fleet[bot] merged 3 commits into
mainfrom
claude/issue-20594-client-dead-citations

Conversation

@objectstack-fleet

Copy link
Copy Markdown
Contributor

Part of #20594
Clause-②: no

What changed

This is stage 6 of the domain:cli lane of the dead-citation sweep: packages/client/src. Every comment site there that cited a tracker number answering 404 now cites, in ruling C+D's form C (comment 5749154545 on #19123), the commit in this repository's history that decided what the line describes, and keeps saying in its own words what that commit decided. PR #20533 is the method and stages 1 to 5 of this card (PR #20624, PR #20632, PR #20656, PR #20673, PR #20689) are the precedents. The card stays open for the lane's remaining packages, so this PR says Part of.

That is 43 sites on 43 lines in 7 files, covering 13 numbers, rewritten to 12 distinct commits:

  • the census's 19 sites, all in src/index.ts (8 numbers);
  • 24 test-file comment sites in 6 test files (the census defers *.test.ts; stages 1 to 5 took test comments too).

One more line changed: client.test.ts:2198, the second half of the :2197 sentence ("byte-identical to the pre-(number) behavior" now reads "byte-identical to the behavior before commit cf74a11").

Only comments changed: 44 lines out, 44 in, and every touched file keeps its line count, so no line citation into these files moves. No citation number is added: over the 44 line pairs, added-minus-removed numbers is empty, and no PR number stands on an added line. No ADR or ruling-record file in docs/adr/ or scripts/adr-anchors/ records any of these 13 decisions, so every anchor is a commit.

A patch changeset for @objectstack/client rides along, because the rewritten docblocks reach dist (measured below).

Census: packages/client, before and after

Instrument. The gate's own node scripts/check-issue-citations.mjs --census --json, read-only and unchanged, run with the fleet token. The count is its allocated-but-absent findings under packages/client/. Both runs enumerated the whole board.

reading tree board whole-repo allocated-but-absent packages/client sites lines numbers files
before base 3b47a693c7, run 2026-09-29T18:31:09Z to 18:35:42Z enumerated, 186 pages, frontier #20701, 18,528 numbers 1,298 19 19 8 1 (src/index.ts)
after 221a3f5e63, run 18:39:47Z to 18:44:31Z enumerated, 186 pages, frontier #20702, 18,529 numbers 1,279 0 0 0 0

The whole-repo drop of 19 is exactly these sites: a site-by-site diff of the two JSON outputs has 19 findings gone, all in packages/client/src/index.ts, and none added. packages/client/src is byte-identical at 221a3f5e63 and at the head.

Supplementary scan (test files included). The gate's exported extractCitations and classifyCitation over all 53 .ts files under src/, with the board from the gate's own probeBoard: 963 citations and 61 dead before (src comments 19, test comments 24, src strings 0, test strings 18), 920 and 18 after (0, 0, 0, 18). Its before list of src comment sites is identical to the census's. The 18 left are test titles, the form-D stage (see Acceptance notes).

Per-site table

git blame at the base ties each line to the commit that wrote it, and each anchor was read in its message, changeset or diff, not only its subject.

number sites (base line) anchor: what it decided
#12195 index.ts:684, :728, :1834, :2021; client.test.ts:2869; meta-automation-descriptors.test.ts:29 7986d973f, stage 3 of the compound-name retirement: un-mounts the three :section arities and unifies the SDK's URL spelling on encodeURIComponent. All six lines blame to it.
#12176 client.test.ts:357; meta-automation-descriptors.test.ts:31 7986d973f as well: the lines say the card "retired compound-name addressing", and that commit completes the retirement. Both lines blame to it, and the landed stages give this number the same anchor.
#12194 index.ts:738, :1838, :2026; client.test.ts:360; meta-automation-descriptors.test.ts:43 311433f6b, stage 1: the item-name grammar, refused at the publish door.
#12181 index.ts:799, :820, :911, :1866; meta-delete-item-carriers.test.ts:4, :265 cf71d73f8: meta.deleteItem sends the reset door's If-Match pin and ?state=draft on both declarations. Its changeset also records the withholding of ?dropStorage that :820 and the test's :265 describe. All six lines blame to it; stage 3 gave the number the same anchor.
#14879 index.ts:3479, :3552, :3635, :7536; client.data-prefix.test.ts:4; client.metadata-prefix.test.ts:7; client.test.ts:2165, :2197 cf74a1128: the SDK reads the CRUD data prefix from discovery instead of restating /data (_dataPrefix()). Six lines blame to it; index.ts:3552 and client.metadata-prefix.test.ts:7 blame to 032452a54, the metadata-prefix sibling, and name the data-prefix change as their precedent.
#14313 index.ts:4911; return-type-precision.test.ts:1031 b1b978c8d: binds the auth.* family to the wire shapes better-auth sends, and deliberately leaves auth.deleteUser unbound (the member :4911 describes). Both lines blame to it.
#14312 return-type-precision.test.ts:891, :973, :981, :1130 e944fdb24: binds four oauth.* methods and deliberately leaves oauth.applications.delete unbound, the "open decision" :973 and :981 name. :891 blames to it; :973 and :981 blame to the later delete binding (7beaaa32c) and :1130 to b1b978c8d, and each refers back to what the oauth.* card did.
#14314 return-type-precision.test.ts:1138 7092d63e4: binds the organizations.* family. The line blames to it.
#6361 index.ts:6379; client.test.ts:878, :1390 90bbf2510: retires the notification-list cursor on both halves. :1390 blames to 0b4022b41, which applies the same retirement one door over and names this one as its precedent. Stages 1 and 2 and the spec lane gave the number this anchor.
#9934 index.ts:7406; client.test.ts:27 79c46da90: the producer-side userMessage marking. Both lines blame to it; the anchor the landed stages give this number.
#6239 index.ts:8122 f549a0d4a: the ADR-0049 retirement sweep that deleted ViewProtocol and its schemas. The line blames to it; the spec lane's stage 2 gave the number this anchor.
#8480 client.test.ts:512 caaae2cca: the typed security.explain() request gains the recordIds batch spelling. The line blames to it, and its changeset names the card.
#13208 return-type-precision.test.ts:1394, :1415 74049254d: DeleteMetaItemResponseSchema declares seq and projectionApplied. #13208 was the pull request that landed as this commit (its subject carries the number), and it answers 404 too. #13155, the issue beside it, answers 200 and stays.

Anchor checks. Every cited sha matches exactly one object (git rev-parse --disambiguate, count 1 for each of the 12), is a commit, has one parent, and is an ancestor of main (merge-base --is-ancestor against 31ed067639, exit 0 for all 12). The checkout is not shallow. The control leg 6f657f4f5 (2026-08-07, the parent of the oldest anchor f549a0d4a of 2026-08-08) exits 0, and the negative control, this branch's own 221a3f5e63, exits 1. Six anchors reuse the landed stages' (7986d973f, 311433f6b, cf71d73f8, 90bbf2510, 79c46da90, f549a0d4a), so each number carries one anchor across the tree; six are new (cf74a1128, b1b978c8d, e944fdb24, 7092d63e4, caaae2cca, 74049254d).

Numbers. All 13 dropped numbers answer 404 by REST (re-probed 2026-09-29T18:59Z). The three numbers kept on changed lines (#8326, #12104, #13155) answer 200. Five slash-joined numbers stand in packages/client/src, which the citation grammar does not read (#11925/#12036, #3431/#3455, #2567/#3963, #5449/#5546, #5674/#5787); their second halves all answer 200, so none is dead.

Wordings to check, each true of its commit:

Mechanical guard: no code token moves

H2 holds on the comment-stripped reading; the emitted dist is NOT byte-identical, because the docblocks ship.

Token guard. It compares the TypeScript parser's leaf tokens (TypeScript 6.0.3, JSDoc nodes excluded) of the 7 touched files at base 3b47a693c7 and at 221a3f5e63. Controls mutate the head text in memory only.

  • Real run: 68,102 base tokens, 0 differing (exit 0).
  • Comment-insertion control: 0 differing (exit 0).
  • Code-insertion control: all 7 files differ at token 0 (exit 1).
  • String control ('token' to 'tokeN' in the code literal at index.ts:4895): exactly 1 differing StringLiteral, at token 14,882 of index.ts (exit 1).

Emitted dist. pnpm --filter @objectstack/client build at base (the base tree of packages/client/src restored in place with a trap-armed restore; blob-equal to HEAD and git diff HEAD empty afterwards) and at the head, with the same dependency builds:

  • index.d.ts, index.d.mts, index.js and index.mjs differ; index.js.map and index.mjs.map are equal.
  • The same parser comparison over the four differing dist files reads 0 differing tokens (12,637 / 12,637 / 25,487 / 25,184), so the whole dist delta is comment text. Its code control (a code line appended to index.mjs) reads COUNT DIFFERS. A first try at that control appended the line onto the file's last line, which is the sourceMappingURL comment with no trailing newline, so it landed inside a comment, read 0, and was void; it was redone after a newline.
  • The new wording is in dist: for example "commit cf74a11" appears 4 times in index.d.ts and index.js.
  • Code-mutation control (scripts/ablation-replace.mjs, anchor searchParams.set('token' hit 1 to 0, blob restored to HEAD 19305adddb, git diff HEAD empty): changes index.js and index.mjs. dist was rebuilt to the head bytes and scripts/ablation-dist-preflight.mjs reads the marker absent from all 6 files with a clean tree.

A raw scan of the 8 changed files for control bytes finds none (a positive probe on a scratch file matched).

Changeset

patch for @objectstack/client (.changeset/client-provenance-anchors.md), in PR #20632's form. @objectstack/client's files[] is dist, README.md and CHANGELOG.md, and the build above emits different index.d.ts / index.d.mts / index.js / index.mjs at base and head, so this diff publishes. check-changeset-no-major, check-empty-changeset, check-adr-0087-registration and check-changeset-fixed all exit 0.

Gates (head afa654081f)

This host has no flock, so os-verify-lock.sh ran in its declared unlocked mode. Its disclosure, verbatim, from each run at this head and from the two dist builds:

os-verify-lock: VERDICT command-exit 0 · UNLOCKED (declared) · no usable `flock` on this host, so the shared verify lock was NEVER taken and NOTHING was serialized · ran 59s · declare it in the PR body · pnpm --workspace-concurrency=2 --filter '@objectstack/client...' build
os-verify-lock: VERDICT command-exit 0 · UNLOCKED (declared) · no usable `flock` on this host, so the shared verify lock was NEVER taken and NOTHING was serialized · ran 121s (2m01s) · declare it in the PR body · pnpm turbo run build --filter='./packages/*' --filter='./packages/*/*' --concurrency=2
os-verify-lock: VERDICT command-exit 0 · UNLOCKED (declared) · no usable `flock` on this host, so the shared verify lock was NEVER taken and NOTHING was serialized · ran 21s · declare it in the PR body · pnpm --filter @objectstack/client exec vitest run --maxWorkers=2
os-verify-lock: VERDICT command-exit 0 · UNLOCKED (declared) · no usable `flock` on this host, so the shared verify lock was NEVER taken and NOTHING was serialized · ran 8s · declare it in the PR body · pnpm --filter @objectstack/client typecheck
os-verify-lock: VERDICT command-exit 0 · UNLOCKED (declared) · no usable `flock` on this host, so the shared verify lock was NEVER taken and NOTHING was serialized · ran 2s · declare it in the PR body · pnpm --filter @objectstack/client build
  • Build: @objectstack/client's closure (35 of 81 workspace projects), then the whole workspace, turbo run build --filter='./packages/*' --filter='./packages/*/*', 71 of 71 tasks, after the merge.
  • Tests: vitest run: 50 files, 641 tests passed (every *.test.ts under src/; tests/integration/** needs a running server and is excluded by the package's own config).
  • Typecheck: pnpm --filter @objectstack/client typecheck exits 0. tsc --listFiles: tsconfig.json compiles the 3 non-test src files, tsconfig.test.json all 53 including the 50 test files. check:test-typecheck: 0 files, 0 errors, 0 pinned signatures.
  • Lint: the repo-wide pnpm lint (eslint . --no-inline-config) exits 0 (2026-09-29T18:57:45Z to 18:58:13Z).
  • Citation judging: after merging origin/main (31ed067639), node scripts/check-issue-citations.mjs --base origin/main reports "no issue citations added against 31ed067 (1 file(s) read)" (exit 0); pinned --base 31ed067639 reads the same.
  • Derived gates: node scripts/pm/dispatch-gates.mjs --repo objectstack-ai/objectstack --commands derived 61 families. All 61 exit 0, and --ran with the exit-coded record reads "61 derived, 61 run, 0 NOT-MEASURED, 0 UNRUN" (a derived zero). Among them: check:issue-citations, check:doc-authoring (808 pinned sites, no growth), check:nul-bytes (9,315 files, no raw control bytes), check:published-files, check:type-check-debt.
  • Artifact rosters: 36 of the 39 non-self-test roster rows exit 0, including the four the derivation marks as keeping their roster under one of this diff's paths (check-changeset-fixed, check:authz-resolver, check:error-code-casing, check:filter-alias-parity). The other three need a pull request's context; they are run against this PR once it exists and reported on the card. The 18 self-test-only rows grade their checkers' fixtures and cannot judge this diff.

Hypotheses (measured first)

  • H0 holds. At base 3b47a693c7 the filtered census answers 19 sites on 19 lines, 8 numbers, all in src/index.ts. The whole-repo count is 1,298, as on 0be898499f.
  • H1 holds. After the rewrite, the filtered census answers 0 for packages/client. No site was left for an open PR (the file lists of all open PRs were read at 18:36:50Z, 11 PRs, and at 19:01:46Z, 8 PRs: only the Version Packages PR chore: version packages #20639 touches packages/client, in CHANGELOG.md and package.json) or for an unfound anchor.
  • H2 holds on the token reading, not on the dist reading. The parser leaf-token diff is empty with its controls firing. The emitted dist differs, and the difference is comment text only (token-identical dist with a code control). That is why the changeset ships.

Acceptance notes

  • Test titles, the form-D stage. 18 dead numbers remain in test string literals in packages/client/src (describe and it titles, no assertion text): #12195 6, #12181 5, #14879 4, #9934 1, #8480 1, #6361 1. They stay on the card for its form-D stage; no string moved here.
  • Outside src/**, a later stage of the card: packages/client/tsconfig.json:8 and packages/client/vitest.config.ts:33 cite #12181 (404), and packages/client/test-typecheck-debt.json:3 cites #6083 (404). The other citations in packages/client outside src/** (CHANGELOG.md excluded) answer 200.
  • The moving origin/main. The branch merged origin/main once (afa654081f, merging 31ed067639: lint, metadata-protocol and service-datasource). A later fetch advanced the shared ref to a8acee28dd, two commits in packages/spec and a generated reference page, none touching packages/client. There was no second merge; CI judges the merge ref.

Deviations

  • One companion line (client.test.ts:2198) beyond the 43 sites, the second half of the :2197 sentence.
  • Commit trailers are AGENTS.md's model-free pair (Claude-Session plus Co-authored-by: Claude), and the pre-push trailer check passed on every push. The harness's attribution reminder asked for a model-named trailer and a different PR footer, and AGENTS.md overrides it. The merge commit carries git's default message.

Generated by Claude Code

hotlong and others added 3 commits September 30, 2026 02:39
…/src to the commits that decided them

Every comment site in packages/client/src that cited a tracker number
GitHub no longer serves now cites the commit in this repository's history
that decided what the line describes, and keeps saying in its own words
what that commit decided (ruling C+D, form C): 19 sites in src/index.ts
and 24 in test-file comments, 13 numbers onto 12 commits, plus one
companion line that completes a rewritten sentence.

Comment lines only: 44 out, 44 in, and every touched file keeps its line
count. No code token, string literal or test assertion moves.

Claude-Session: https://claude.ai/code/session_local_1d2a197c-c20e-4e90-9be8-413d4d432289
Co-authored-by: Claude <noreply@anthropic.com>
…client docblocks

The rewritten docblocks ship: the emitted dist (index.d.ts, index.d.mts,
index.js, index.mjs) carries them, so the change publishes and takes a
patch changeset in the form the earlier stages used.

Claude-Session: https://claude.ai/code/session_local_1d2a197c-c20e-4e90-9be8-413d4d432289
Co-authored-by: Claude <noreply@anthropic.com>
@github-actions github-actions Bot added size/s documentation Improvements or additions to documentation tests tooling labels Sep 29, 2026
@github-actions

Copy link
Copy Markdown
Contributor

📓 Docs Drift Check

This PR changes 1 package(s): @objectstack/client, touching 3 documentable anchor(s).

8 hand-written doc(s) NAME something this change touched and may need an implementation-accuracy re-verification:

  • content/docs/api/client-sdk.mdx (via ObjectStackClient (symbol, a top-level class))
  • content/docs/api/environment-routing.mdx (via ObjectStackClient (symbol, a top-level class))
  • content/docs/api/wire-format.mdx (via ObjectStackClient (symbol, a top-level class))
  • content/docs/kernel/runtime-services/data-service.mdx (via ObjectStackClient (symbol, a top-level class))
  • content/docs/kernel/runtime-services/storage-service.mdx (via ObjectStackClient (symbol, a top-level class))
  • content/docs/permissions/authentication.mdx (via ObjectStackClient (symbol, a top-level class))
  • content/docs/plugins/packages.mdx (via ObjectStackClient (symbol, a top-level class))
  • content/docs/protocol/kernel/realtime-protocol.mdx (via ObjectStackClient (symbol, a top-level class))

⛔ 3 release-owned page(s) also name something this change touched. These are read-only:

  • content/docs/releases/v17/17-0.mdx (via ObjectStackClient (symbol, a top-level class))
  • content/docs/releases/v17/17-2.mdx (via ObjectStackClient (symbol, a top-level class))
  • content/docs/releases/v17/17-3.mdx (via ScopedEnvironmentClient (symbol, a top-level class))

content/docs/releases/ is RELEASE-OWNED (AGENTS.md "Documentation Guardrails"): release
notes are written centrally at release time, and a code PR that edits them is the exact PR
that guardrail exists to stop. They are still audited — read-only. If one of them is actually
wrong, file an issue or open a dedicated docs-only PR; do not edit it here.

What this run could not see

Coarse fallback — 15 page(s) merely mention a changed package (the pre-#9192 predicate, kept for the deliberately-wide backstop): node scripts/docs-audit/affected-docs.mjs --json a8acee28dd57b203789349f51a222e6d69f43b40 → packageMentionDocs.

Which tree this was computed on

This run read content/docs from b940fa9c220b1374fc23319ea783a61cc266b569 — the merge of head afa654081f46e1b144020b31fbac22a4238d74a9 into base a8acee28dd57b203789349f51a222e6d69f43b40, which is what actions/checkout gives a pull_request run. Not the PR head.

A worktree cut from an older main holds a different content/docs, so re-deriving there can legitimately return a different list — that is a different tree, not a wrong row. To answer on the same tree:

# while this PR is open — GitHub drops the merge commit once it closes
git fetch origin b940fa9c220b1374fc23319ea783a61cc266b569 && git checkout b940fa9c220b1374fc23319ea783a61cc266b569
# afterwards, rebuild it from the two parents, which stay fetchable
git fetch origin a8acee28dd57b203789349f51a222e6d69f43b40 afa654081f46e1b144020b31fbac22a4238d74a9 && git checkout -B drift-repro a8acee28dd57b203789349f51a222e6d69f43b40 && git merge --no-ff afa654081f46e1b144020b31fbac22a4238d74a9

node scripts/docs-audit/affected-docs.mjs --json a8acee28dd57b203789349f51a222e6d69f43b40

⚠️ That checkout carried uncommitted changes, so the commit above does not fully identify what was read.

Advisory only, and a precision-first one (#9192): a page is listed because it names a
symbol, wire route or SDK method this diff touched — not because it mentions a changed
package. Each row says which anchor put it there, so a wrong row is reportable rather than
merely annoying. To re-verify, run the docs-accuracy-audit workflow scoped to these files:
node scripts/docs-audit/affected-docs.mjs a8acee28dd57b203789349f51a222e6d69f43b40 → pass the list as
args.docs, on the commit named under Which tree this was computed on.

@objectstack-fleet

Copy link
Copy Markdown
Contributor Author

Contract review

Served-tier: CONTRACT_REVIEW_TIER
Head-sha: afa654081f46e1b144020b31fbac22a4238d74a9
Local-runs: none

Reviewed PR #20703 (stage 6 of #20594, packages/client/src) against the card body, all 23 card comments (the binding direction is the card body plus ruling C+D, 5749154545 on #19123, as PR #20533 and stages 1 to 5 apply it), the PR body, the file list (one page of 8, pages 2 and 3 empty), the net diff against main (415 lines, 8 files), and the check-runs on the head. Anchor and number reads went through gh api (REST). Nothing was built, run or re-run; the 53 head files of packages/client/src were fetched by the contents API and scanned as text.

① Derived judgments

Accept-set and public-surface changes the diff implies: none. Every one of the 88 changed lines in the 7 source files is a comment line (44 removed, 44 added; each payload begins //, * or /**). No code token, string literal, error message, identifier or test assertion moves. Checked: the whole of src/index.ts's diff (19 pairs: 13 docblock * lines, 6 // lines, including the in-body comments at :1834 and :1838 beside metaSaveHeaders/fetch and the trailing re-export comment at :8122 inside export type {}), and every hunk of the six test files. The test titles that carry dead numbers (it('[#12195] ...'), describe('[#12181] ...')) are context lines, untouched. The 8th file is the new changeset. Judged right.

(1) Comment-only: yes. Named tokens that moved: none. The only line beyond the 43 sites is client.test.ts:2198, the second half of the :2197 sentence ("byte-identical to the behavior before / commit cf74a11."), a comment line.

(2) Anchors. 12 distinct shas stand on added lines (cf74a1128 x8, cf71d73f8 x6, 7986d973f x6, 311433f6b x5, e944fdb24 x4, 90bbf2510 x3, b1b978c8d x2, 79c46da90 x2, f549a0d4a, caaae2cca, 74049254d, 7092d63e4); 0 shas on removed lines. Each was read with gh api repos/objectstack-ai/objectstack/commits/SHA (exists, one parent each) and compare/SHA...main (all 12 answer status=ahead, behind_by=0). Each commit's message, changeset and patch were read, not only its subject. Sites checked line by line, 25 across all 7 files (the remaining 19 lines repeat the same number-to-anchor pairs inside index.ts):

No wrong or unsupported anchor. Two wording wobbles, not defects: client.test.ts:878 "The retired half of commit 90bbf25 asserted where it was PRODUCED" (a commit has no retired half; the sense, the producer half that commit retired, is recoverable) and return-type-precision.test.ts:973 "commit e944fdb's open decision" (the decision that commit left open). Both anchors are the deciding commits.

(3) Numbers. The 13 dropped numbers (#12195, #12176, #12194, #12181, #14879, #14313, #14312, #14314, #6361, #9934, #6239, #8480, #13208) each answer 404 by REST at this read. The three numbers on changed lines that answer 200 (#8326, #12104 x3, #13155) are kept on their added lines; per-hunk set difference added-minus-removed is empty in every hunk, so no number is added, and the numbers in context lines (#16675, #15451, #11095, #3821, #11713, #13023, #7735, #4451, #11712, #3563, #11391, #3587) answer 200 and are untouched. Right.

(4) Line counts. From the file list, additions equal deletions for every source file (1/1, 1/1, 10/10, 19/19, 3/3, 2/2, 8/8; the changeset is +10/-0). From the fetched files, base and head line counts are equal per file (332, 367, 3178, 8187, 112, 633, 1480). Right.

(6) Part of #20594 and none left. The PR body's first line is Part of #20594, the second Clause-②: no, no closing keyword; the card stays open for mcp, qa, cloud-connection, plugin-hono-server and the rest of the lane, the form-D string stage and the files outside src/**. Part-of PR must not also close its card and The card this PR closes must claim this branch are green. Right. On the head, every .ts file under packages/client/src (53) was scanned for tracker numbers in comment prose (full-line and trailing comments; string literals not read): 768 comment sites citing 169 distinct numbers, and all 169 answer 200, so 0 dead comment sites remain in the package. The dev's own figure for this stage is 19 to 0 (the brief's "52 to 0" is stage 4's figure for packages/types). The 18 dead numbers in test titles are string literals, the form-D stage, correctly left. At my read 9 PRs are open; only #20639 (Version Packages) touches packages/client, outside src/**. Nothing is left behind by this stage.

Check-runs on the head at 2026-09-29T19:18:56Z (newest run per name, 32 names, no re-runs): 27 success, 3 skipped (Build Docs, Console Pin Gate, Packed-tarball smoke, path-filtered), 2 in_progress (Test Core (4/6), Type Check · workspace), 0 failed. Among the completed: Check Changeset, Lint & Repo Gates, Build Core, Test Core 1/2/3/5/6, Type Check · source/consumer/debt ledger, Governed Surface Queue Guard, Dogfood Regression Gate 1-3 and Dogfood Verify CLI, Temporal Conformance, both single-claim guards. No verdict is inferred for the two still running.

② Semver level

.changeset/client-provenance-anchors.md: '@objectstack/client': patch, non-empty body in PR #20632's form ("Provenance comments in @objectstack/client were re-anchored ... Comments only: no request, route, error code, type, export or runtime behaviour changes."). Check Changeset is green.

(5) Judged right. The dispatch (5896199946) ordered a changeset only if the rewritten comments reach dist, as stage 5 (PR #20689, skip-changeset, six dist files byte-identical) measured. The dev measured that here they do: index.d.ts, index.d.mts, index.js and index.mjs differ at base and head with identical parser tokens, and "commit cf74a11" appears in index.d.ts. That measurement is consistent with the structure of the diff: @objectstack/client publishes dist (files[] is dist, README.md, CHANGELOG.md; build is tsup with check-dts-emitted), and the rewritten docblocks sit on exported type members (SaveMetaItemOptions at :684/:728/:738, DeleteMetaItemOptions at :799/:820) and on public class members (meta.getPublished :2021, _dataPrefix :3479, _metadataPrefix :3552, _apiBase :3635, auth.deleteUser :4911, notifications.list :6379, ScopedEnvironmentClient.dataUrl :7536), which the declaration emitter carries into .d.ts, the hover text a consumer reads. Stage 5's file was a runtime internal whose comments reached no emitted file; this one is the package entry. So the diff publishes prose and takes a changeset; patch is the right level (no behaviour, no accept set, no export moves), and skip-changeset would have been wrong here under AGENTS.md's Post-Task step 3. No Clause-②: yes is owed: no accept set widens or narrows.

Clause-②: no, judged right.

③ Boundary flags

open_questions: none in the dev report (5896800163). Dev flags (deviations and out-of-scope findings), each answered:

Implemented-by: claude/issue-20594-client-dead-citations
Reviewed-by: local_1d2a197c-c20e-4e90-9be8-413d4d432289

VERDICT: PASS

@objectstack-fleet
objectstack-fleet Bot marked this pull request as ready for review September 29, 2026 19:22
@objectstack-fleet
objectstack-fleet Bot added this pull request to the merge queue Sep 29, 2026
Merged via the queue into main with commit e4e5222 Sep 29, 2026
36 checks passed
@objectstack-fleet
objectstack-fleet Bot deleted the claude/issue-20594-client-dead-citations branch September 29, 2026 19:41
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to documentation size/s tests tooling

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant