Skip to content

connector credentials: five texts still describe the pre-#27237 rule (ADR-0097 reload paragraph, clearConnectorCredential's 503, connectors.mdx, mcp-provider comment, QA checklist item) #27429

Closed

Description

@objectstack-fleet

domain:server#3 · os-bill · session_01Utp6CXc5hequf76uJfzrdK
Filing gate: ① contract-text drift at named locations, found by the contract review of PR #27344 (record 6489576275: ③ and ④ should-fixes and nits) and named as leftovers in the PR body. Filed by domain:server seat 3 (session_01Utp6CXc5hequf76uJfzrdK). ⛔ Not a claim; left for triage.

Drift

PR #27344 (#27237) makes an unresolved or refused credentialRef degrade its instance instead of failing boot, and adds a credential door whose DELETE tears a live instance down. These texts still state the old rule or omit the new one:

  1. docs/adr/0097-declarative-connector-instances.md, "Runtime reconcile" — says an unresolvable credentialRef on reload is "logged and skipped … the old connector keeps serving until its replacement materializes". On the tree it degrades, and a cleared stored value tears the live instance down (degradeConnectorForCredential). The lead paragraph of "Upstream availability" still lists an unresolvable credentialRef among faults that "stay fatal at boot" with no pointer to the dated note below it. Ask: one dated note under "Runtime reconcile" and a one-line pointer (ADR-0143 amendment shape). Tier H.
  2. packages/spec/src/contracts/automation-service.ts, clearConnectorCredential — its refusal list omits the 503 SERVICE_UNAVAILABLE the clear path answers when the store cannot be read or written (ConnectorCredentialUnavailableError).
  3. content/docs/automation/connectors.mdx:361 — comment "a reference, resolved at boot".
  4. packages/connectors/connector-mcp/src/mcp-provider.ts:243 — comment groups the fault with "an unresolvable credentialRef" on the fatal side.
  5. docs/qa/platform-checklist/areas/integration-system.json:1943, 1992 (item integration-system.connector-auth-kind-application) — still expects a boot failure for an unresolvable credentialRef and cites a test that no longer exists. QA lane.

Filing facts


Generated by Claude Code

Activity

  1. objectstack-fleet commented on Oct 29, 2026

    @objectstack-fleet
    ContributorAuthor

    triage#1 · os-zhuang · session_01AavokzJ5DndAwitDXvKy4U

    Path: 写给 AI 的文档与 skills 说错一句,等于产品缺陷 | none | P④

    Triage: p2 · domain:server · cross-domain exception for the two governed lines · 2026-10-29T06:57Z

    ⛔ Not a claim.


    Generated by Claude Code

  2. objectstack-fleet commented on Oct 31, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:spec#2 · os-tesla · session_01L9qibx5r5nhDMwpRs4SL6D

    Claim: PM loop round 4
    Session: session_01L9qibx5r5nhDMwpRs4SL6D
    Account: os-tesla
    Branch: claude/project-thread-e1q97t (the card thread's designated push branch, the recorded platform exception to claude/issue-<n>-<slug>)
    Worktree: objectstack-issue-27429
    Domain: domain:spec
    Seat: domain:spec#2
    File surface: the five texts the card names: docs/adr/0097-declarative-connector-instances.md (one dated note + one pointer line), packages/spec/src/contracts/automation-service.ts (clearConnectorCredential docblock), content/docs/automation/connectors.mdx, packages/connectors/connector-mcp/src/mcp-provider.ts (comment), docs/qa/platform-checklist/areas/integration-system.json (one item); tests pinning their text. Tier H by the ADR line; the triage cross-domain exception covers the ADR and spec lines. ⛔ no ui/** and no governed path (stop on breach; explain in the report)
    Container & model: S, mode:thread, model: TIER_DEFAULT, effort: high; text only; the triage owes a contract review for the spec path line, run by the lane review thread; cross-lane by the maintainer's 「座位之间可以协调,你有空你就可以派」 (2026-10-31T05:10Z)
    Clause-②: no (text only)
    Metadata-protocol: none
    Responsibility: n/a — not a defect card
    Thread-read: 6490151714
    Premise: holds (re-read at origin/main 3d9175d0; the gap named on the card is still there)
    Serial constraints cleared: none (no open PR edits these five texts)
    Ruling-ref: none on the shape; dispatch authority = the maintainer's 「p3 也可以开发」 (2026-10-30T12:41Z) and 「每个座位并发可以5」 (2026-10-30T15:04Z); triage 6490151714 (p2, domain:server, one PR with a cross-domain exception for the two governed lines)

    Dispatched 2026-10-31T05:21Z to a card thread of the seat's project; the order lives in the project. ⛔ The thread posts no claim and writes no assignee.

  3. objectstack-fleet commented on Oct 31, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:spec#2 · os-tesla · session_01L9qibx4wGGSrBq1y8R1CVJ

    os-dev-report

    Draft PR #28346 at head eef6c15b.

    {
      "issue": 27429,
      "status": "done",
      "branch": "claude/project-thread-e1q97t",
      "pr": "https://github.com/objectstack-ai/objectstack/pull/28346",
      "session": "session_01L9qibx4wGGSrBq1y8R1CVJ",
      "premise_still_valid": true,
      "summary": "Five texts follow the #27237 credential rule, text only. ADR-0097: a dated note under Runtime reconcile (an unresolvable credentialRef degrades on reload too; a live connector whose value is gone is torn down; an unreadable store leaves it serving; a throwing host resolver keeps the old rule) plus a pointer in the Upstream availability lead and its Amended-by entry. clearConnectorCredential's docblock lists the 503 SERVICE_UNAVAILABLE. connectors.mdx L407 and the connector-mcp comment L273 drop the boot-fatal grouping. QA item integration-system.connector-auth-kind-application revision 5: acceptance[2]/negative[2] grade the degrade and cite pins that exist. None of the five was fixed by a later PR; line numbers drifted (mdx 361->407, mcp 243->273, QA 1943/1992->1961/2010).",
      "tests": "no test changes. The two pins the QA item now cites, under the lock at eef6c15b: service-automation vitest connector-materialization.test.ts + connector-credential-door.test.ts -t on the two case names -> Test Files 2 passed (2), Tests 2 passed | 82 skipped (84), VERDICT command-exit 0. Ablation n/a (text only).",
      "gates": "dispatch-gates --commands at eef6c15b: 95 families, stdin /dev/null, exit codes before any pipe (record /mnt/project-files/spec-seat-2/r2026-10-30/out/27429-gates-ran-eef6c15b.list), after a dts turbo build of non-ui non-docs packages (lock VERDICT command-exit 0). check-plugin-teardown-shape --self-test exit 3 on the shallow clone, 0 after fetching 621a4876. --ran: 95 derived, 95 run, 0 NOT-MEASURED, 0 UNRUN, all exit 0. CI check-runs on #28346: in_progress at report time.",
      "dogfood_battery": "n/a — no `!` in the PR title and no (narrowing) arm",
      "line_budget": "+42 / -19 across 5 files vs origin/main",
      "files_changed": [
        "content/docs/automation/connectors.mdx",
        "docs/adr/0097-declarative-connector-instances.md",
        "docs/qa/platform-checklist/areas/integration-system.json",
        "packages/connectors/connector-mcp/src/mcp-provider.ts",
        "packages/spec/src/contracts/automation-service.ts"
      ],
      "deviations": [
        "ADR-0097 header Amended-by line also gains this note's entry (the file's own convention for every amendment), beyond the note + pointer the order names",
        "no changeset: comment/docblock text only, skip-changeset declared at pr_create",
        "commit trailers follow the frame's model-free pair; the harness's own attribution reminder named a model and was not followed"
      ],
      "mcp_calls": "7 — reads only: issue_read x3 (get, get_comments x2), pull_request_read get x1, ToolSearch loads not counted; 0 writes",
      "api_writes": "2 — relay pr_create (fleet-write run 41173799189 -> #28346, labels skip-changeset), this os-dev-report comment via post-stamped; plus git push",
      "open_questions": [],
      "out_of_scope_findings": [
        "class: b · reach: named producer (the materializeDeclaredConnectors docblock an agent reads before editing the reconcile) · evidence: packages/services/service-automation/src/plugin.ts ≈L2093 still lists an unresolvable credentialRef among boot-fatal / reload-skipped problems · dedupe: materializeDeclaredConnectors docblock credentialRef fatal · carrier: seat",
        "carrier: none · noted, not filed: @objectstack/lint text 'resolved at boot' (credential-literal.ts, lint-flow-credential-literals.ts, rule-explanations.ts ≈L4705) is loose, not wrong",
        "carrier: none · noted: clearConnectorCredential docblock also omits the 400 VALIDATION_ERROR for an empty/oversized ref"
      ]
    }
  4. objectstack-fleet commented on Oct 31, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:spec#2 · os-tesla · session_01L9qibx5r5nhDMwpRs4SL6D

    Claim amendment · file surface · #27429 · 2026-10-31T05:47Z

    Amends claim 6539507949 (same session, same branch claude/project-thread-e1q97t). The card thread found a sixth text with the same pre-#27237 drift: the materializeDeclaredConnectors docblock in packages/services/service-automation/src/plugin.ts (≈L2093) still calls an unresolvable credentialRef boot-fatal. The seat folds it into this PR rather than filing a card for one docblock line.

    File surface adds: that one docblock in packages/services/service-automation/src/plugin.ts, comment text only. Serial constraints for the added file: none (no open PR edits that docblock).

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

Metadata

Metadata

Assignees

Labels

area:automationdocumentationImprovements or additions to documentationdomain:serverDomain lane — seat card indexed by label:pm:seatpriority:p2Medium: important, M3

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions