Skip to content

spec: the ConnectorConnectionState.status JSDoc says a connection with no refresh token cannot renew an "expired" access token, while it is also marked with a valid one #28961

Closed

Description

@objectstack-fleet

domain:server#1 · os-project-manager · session_01R1q2xdtYgU6FKrZ7LgjPCC

Filing gate: ① the spec half of #28863 item 5, named by the #28863 dev (PR #28955, os-dev-report on #28863) and kept out of that PR by the red line on packages/spec/**. Filed by domain:server seat 1. ⛔ Not a claim. Graded by this seat p3 under 「定级你可以自己决定」 (Leehom, 2026-11-01): prose in a published JSDoc.

Reach: a reader of the published ConnectorConnectionState.status contract, told that a connection with no refresh token is marked because its access token expired.

Where (on main)

packages/spec/src/contracts/automation-service.ts L1145–1146, the ConnectorConnectionState.status JSDoc merged by PR #28862: "the connection keeps nothing to renew an expired access token with".

What is true

A refresh also runs on a cache miss (a fresh replica, or a revision another replica moved) and on a dispatch's 401, so a connection with no refresh token, or no client, is marked even while its access token is still valid. PR #28955 (#28863) words the runtime's stored reason "an access token the connection has to renew cannot be renewed", and the PR #28862 contract review asked that the two change together.

Done when

The JSDoc drops "expired", for example "the connection keeps nothing to renew an access token it has to renew with", matching the runtime sentence after PR #28955. Comment only.

Dedupe: searched expired access token renew ConnectorConnectionState. Related: #28863 (runtime half), #28614 / PR #28862 (the JSDoc). New.


Generated by Claude Code

Activity

  1. objectstack-fleet commented on Nov 2, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:spec#1 · os-steve · session_01ADHkmPi25XXKx92Xmg4viS

    Claim: PM loop round 1 · 2026-11-02T09:28Z
    Session: session_01ADHkmPi25XXKx92Xmg4viS (seat); dev = card thread session_01ADHkmQs2bVYuybG5pYYUg2
    Account: os-steve
    Branch: claude/project-thread-6nm8cv
    Worktree: the card thread's own checkout of objectstack-ai/objectstack
    Domain: domain:spec
    Seat: domain:spec#1
    File surface: packages/spec/src/contracts/automation-service.ts (the ConnectorConnectionState.status JSDoc only, ≈L1145); root .changeset/; regenerated files a spec gate names, if any; not the runtime (packages/services/**) (stop on breach; explain in the report)
    Container & model: XS, mode:thread, model: default — the tier is the PM's per-card call (floor sonnet · default opus · ceiling fable); comment only, no contract review unless a gate asks, effort: medium
    Clause-②: no
    Metadata-protocol: none
    Responsibility: packages/spec automation-service.ts ConnectorConnectionState.status JSDoc | PR #28862 (#28614) wrote "renew an expired access token"; the runtime also refreshes on a cache miss and on a 401 | readers of the published connection-state contract
    Thread-read: none
    Premise: holds (on origin/main dedc350519 L1145 reads "the connection keeps nothing to renew an" … "expired access token with")
    Serial constraints cleared: none (the seat's other in-flight cards hold disjoint files)

    Ruling-ref: the issue's "Done when": the JSDoc drops "expired" and matches the runtime's stored reason after PR #28955.

  2. objectstack-fleet commented on Nov 2, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:spec#1 · os-steve · session_01ADHkmQs2bVYuybG5pYYUg2
    os-dev-report

    {
      "issue": 28961,
      "status": "done",
      "branch": "claude/project-thread-6nm8cv",
      "pr": "https://github.com/objectstack-ai/objectstack/pull/29238",
      "session": "session_01ADHkmQs2bVYuybG5pYYUg2",
      "premise_still_valid": true,
      "summary": "The reconnect_required arm of the ConnectorConnectionState.status JSDoc no longer says the connection keeps nothing to renew an EXPIRED access token with; it now reads 'keeps nothing to renew an access token it has to renew with', the wording the runtime already uses in ConnectorConnectionStore.markReconnectRequired and the sys_connector_connection.status description, matching the stored no_refresh_token / no_client reasons from PR #28955 (on main at 104cd1a5). Comment only, plus an @objectstack/spec patch changeset with the claim's two lines. No new claim added.",
      "tests": "Head 8d3ba747, under os-verify-lock: spec build VERDICT command-exit 0 (with the @objectstack/lint closure); spec test VERDICT command-exit 0, Test Files 790 passed (790), Tests 23370 passed | 1 todo; spec typecheck VERDICT command-exit 0; spec check:generated exit 0, all 14 generated artifacts up to date. No ablation: comment only, no tested behaviour changed. No consumer tests: Metadata-protocol none, public surface byte-identical (check:api-surface green).",
      "gates": "dispatch-gates --commands at 8d3ba747 derived 73; all run, each recorded with exit code; --ran: 73 accounted, 71 run, 2 NOT-MEASURED (exit 0). 71 exit 0 incl. check:doc-authoring, check:api-surface, check:docs, check-changeset-no-major --base origin/main (also offline with --event on the PR body: LEVEL AXIS ok, exit 0), check-empty-changeset, check-adr-0087-registration, check:nul-bytes, check:issue-citations. check-plugin-teardown-shape --self-test: exit 3 on the shallow clone, exit 0 (48 cases) after fetching its pinned fixture commit. NOT MEASURED: check:dual-build-cjs-loads and check:lean-entry-closure, exit 3 PREREQUISITE NOT MET (need every package's dist; left to CI Lint and Repo Gates). CI check-runs: in_progress at report time.",
      "dogfood_battery": "n/a: no ! in the PR title and no (narrowing) arm",
      "files_changed": [".changeset/28961-connector-connection-status-doc.md", "packages/spec/src/contracts/automation-service.ts"],
      "line_budget": "+13 / -3 (16 changed lines, 2 files; JSDoc 3 lines rewrapped, changeset 10 lines); no governed path",
      "deviations": ["The first commit ran with core.hooksPath overridden by mistake, so pre-commit did not run; the commit was amended (unpushed) with the repo's own .githooks before the first push. Pushed head 8d3ba747 passed pre-commit and pre-push."],
      "mcp_calls": "3: issue_read get_comments (#28961), issue_read get (#28961), pull_request_read get (#29238); no write tools",
      "api_writes": "2: relay pr_create (POST pulls, #29238, run 41426489605); os-dev-report comment on #28961 via post-stamped.mjs",
      "open_questions": [],
      "out_of_scope_findings": []
    }

    Stamped 2026-11-02T10:10Z.


    Generated by Claude Code

  3. objectstack-fleet commented on Nov 2, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:spec#1 · os-steve · session_01ADHkmPi25XXKx92Xmg4viS

    Landed · 2026-11-02T11:31Z

    Probe Reading
    PR #29238 MERGED 2026-11-02T11:26Z, merge commit f125ce40da, through the merge queue
    #28961 closed completed by Fixes #28961

    pm:dispatched is removed. Seat record on PR #29238: ACCEPT 6574875476 (comment only, so no contract review is owed). The ConnectorConnectionState.status JSDoc now says a connection with no refresh token, or no client, is marked because it has nothing to renew an access token it has to renew with, matching the runtime's markReconnectRequired wording.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions