Repository navigation
docs(spec): ConnectorConnectionState.status JSDoc drops "expired" from the no-refresh-token reconnect reason - #29238
Conversation
…m the no-refresh-token reconnect reason A refresh also runs on a cache miss and on a dispatch's 401, so a connection with no refresh token, or no client, is marked while its access token may still be valid. Match the runtime's own wording. Claude-Session: https://claude.ai/code/session_01ADHkmQs2bVYuybG5pYYUg2 Co-authored-by: Claude <noreply@anthropic.com>
📓 Docs Drift Check1 anchor(s) derived from 1 changed package(s); no hand-written page names any of them, so this run has nothing to list — not a clean bill of health. This check sees only pages that NAME a derived anchor: one that documents this change in prose, or enumerates it in an authoring dialect, names none and stays invisible to it on every run. What this run could not see
Coarse fallback — 168 page(s) merely mention a changed package (the pre-#9192 predicate, kept for the deliberately-wide backstop): Which tree this was computed onThis run read A worktree cut from an older # while this PR is open — GitHub drops the merge commit once it closes
git fetch origin be35f992fd5154809e15b8b423f8a7ee35d87c54 && git checkout be35f992fd5154809e15b8b423f8a7ee35d87c54
# afterwards, rebuild it from the two parents, which stay fetchable
git fetch origin 45e9b2f14c91f76683296cd33bb1b477cbaef1bb 8d3ba747cdcd6b703b09b4c07622d924c3a7eb3e && git checkout -B drift-repro 45e9b2f14c91f76683296cd33bb1b477cbaef1bb && git merge --no-ff 8d3ba747cdcd6b703b09b4c07622d924c3a7eb3e
node scripts/docs-audit/affected-docs.mjs --json 45e9b2f14c91f76683296cd33bb1b477cbaef1bb |
|
domain:spec#1 · os-steve · session_01ADHkmPi25XXKx92Xmg4viS Head-sha: 维护者速读
席位意见:可落地(纯注释,不需契约复审)。 席位核对 — ACCEPT ·
|
|
domain:spec#1 · os-steve · session_01ADHkmPi25XXKx92Xmg4viS Contract reviewServed-tier: Read-only round: the net diff against ① Derived judgments
② Semver level
③ Boundary flagsDev flags, from os-dev-report 6574504560 on the card (head
④ Design judgment
No must-fix, no should-fix. A note, not a finding: the JSDoc states the fact and the runtime's code comment states the mechanism (cache miss, moved revision, 401); a reader of the published contract gets the corrected fact without the mechanism, which is the right altitude for a status description and is what the card asked for. Implemented-by: VERDICT: PASS |
Requested by Steve · project thread
Fixes #28961
Clause-②: no
Metadata-protocol: none
维护者速读
ConnectorConnectionState.status的一段 JSDoc 注释,去掉「过期(expired)」一词,外加一个 spec patch changeset。packages/spec/src/contracts/automation-service.ts(第 1145–1148 行)。git grep -n "access token it has to renew with" -- packages,应看到 3 处:运行时 2 处(connector-connections.ts、sys-connector-connection.object.ts)和 spec 1 处,说法一致。What changes
packages/spec/src/contracts/automation-service.ts: thereconnect_requiredarm of theConnectorConnectionState.statusJSDoc said a connection is marked when it "keeps nothing to renew an expired access token with". A refresh also runs on a cache miss (a fresh replica, or arevisionanother replica moved) and on a dispatch's 401, so a connection with no refresh token, or no client to refresh with, is marked while its access token may still be valid. The arm now reads "keeps nothing to renew an access token it has to renew with", the wording the runtime already uses for the same fact inConnectorConnectionStore.markReconnectRequired(packages/services/service-automation/src/connector-connections.ts) and in thesys_connector_connection.statusdescription, and the sense of the reasons the runtime stores (no_refresh_token/no_clientinoauth2-grant/grant-handle.ts: "an access token the connection has to renew cannot be renewed"). The runtime sentence from PR fix(service-automation): a connection marked reconnect required says the cause that actually happened (#28863) #28955 is onmain, so no wording waits on it. No new claim is added..changeset/28961-connector-connection-status-doc.md:@objectstack/specpatch, with the two declaration lines.Comment only: no schema, type, export or runtime string changes. No forced test edits.
Tests
Run in the card worktree at head
8d3ba747, each underscripts/pm/os-verify-lock.sh:packages/spec build, test, typecheck, check:generated
pnpm --filter @objectstack/spec build(plus the@objectstack/lintclosure for the formula gate):VERDICT command-exit 0.pnpm --filter @objectstack/spec test:VERDICT command-exit 0, Test Files 790 passed (790), Tests 23370 passed, 1 todo (23371).pnpm --filter @objectstack/spec typecheck:VERDICT command-exit 0.pnpm --filter @objectstack/spec check:generated: exit 0, "All 14 generated artifacts are up to date" against the dist just built. A JSDoc on an interface field is not a.describe(), socontent/docs/references/**does not move.No consumer tests: the claim is
Metadata-protocol: noneand the public surface is byte-identical (check:api-surfacegreen).Acceptance notes
None.
Verification
dispatch-gates derived set at 8d3ba74: 73 derived, 71 run green, 2 NOT MEASURED
node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstackderived 73 commands for the 2 paths; every one was run and recorded with its exit code;--ranreconciles: "73 derived famil(ies) accounted for, 71 run, 2 NOT-MEASURED".check:doc-authoring,check:api-surface,check:docs,check:changeset-no-major --base origin/main,check:empty-changeset --base origin/main,check:adr-0087-registration --base origin/main,check:nul-bytes,check:issue-citations,check:spec-docblock-symbol-anchors.check-plugin-teardown-shape.mjs --self-testfirst exited 3 on the shallow clone (its pinned fixture commit was unreachable); after fetching that one commit it exits 0, 48 cases pass.pnpm check:dual-build-cjs-loadsandpnpm check:lean-entry-closure. Both load every package's builtdist/, which this card did not build (no package's code changes). CI'sLint & Repo Gatesruns them.Generated by Claude Code