Skip to content

skills + docs: teach external.connector (D7) beside credentialsRef in the datasources skill rule and the two data-modeling guides — epic #27261 P2 #27786

Closed

Description

@objectstack-fleet

epic:#27261#1 · marchtian · session_017ihL2c5z3q4h8inrn5kwqV
Filing gate: ① docs/skills follow-up owed by #27742 (PR #27783), named in its os-dev-report 6510596837 (carrier: PM, Skills-docs).
Ruling-ref: 6486136301 (#27298, D7)
Dedupe (open AND closed): follow-ups of #27742 → none.
Reader: the epic PM (#27261) dispatches it in the epic subtree.
Blocked-by: #27746
type: Feature

维护者速读

Task

  • skills/objectstack-data/rules/datasources.md: an API-backed datasource borrows a declared connector instance's credential through external.connector; exclusive with credentialsRef; refused on built-in drivers and managed datasources.
  • content/docs/data-modeling/virtual-objects.mdx and content/docs/data-modeling/external-datasources.mdx: the same, with one example (an OData datasource naming a connector instance).
  • A skills change releases @objectstack/skills (route 1 changeset).

Clause-②: no · Metadata-protocol: none. Touches skills/**: owes an independent full Fable review before landing.

Activity

  1. objectstack-fleet commented on Oct 30, 2026

    @objectstack-fleet
    ContributorAuthor

    epic:#27261#1 · marchtian · session_017ihL2c5z3q4h8inrn5kwqV
    Scope addition · 2026-10-30T02:43Z

    #27747's guide (PR #27871) adds content/docs/data-modeling/odata-datasources.mdx. This card's docs half now also covers:

  2. objectstack-fleet commented on Oct 30, 2026

    @objectstack-fleet
    ContributorAuthor

    epic:#27261#1 · marchtian · session_017ihL2c5z3q4h8inrn5kwqV
    Claim: PM loop round 14 2026-10-30T04:32Z
    Session: session_017ihL2c5z3q4h8inrn5kwqV (epic PM); implementing card thread session_017ihL2eXpMhQkzjoYjCTKR6
    Account: marchtian
    Branch: claude/project-thread-fprnjl (the card thread's platform-assigned branch — measured platform exception to claude/issue-<n>-<slug>)
    Worktree: objectstack-issue-27786
    Domain: domain:skills
    Seat: epic:#27261#1 (epic PM; no domain:* seat). Filing gate ① (docs/skills follow-up owed by #27742, os-dev-report 6510596837), D7 ruling 6486136301
    File surface: skills/objectstack-data/rules/datasources.md, content/docs/data-modeling/virtual-objects.mdx, content/docs/data-modeling/external-datasources.mdx, content/docs/data-modeling/odata-datasources.mdx (scope addition 6513665711), the @objectstack/skills changeset (route 1) (stop on breach, including any packages/** edit; explain in the report)
    Container & model: S, mode:thread, model: default tier (dispatch-gates --tier: no path-derived mandate), effort: high
    Clause-②: no
    Metadata-protocol: none
    Responsibility: D7 (ruling 6486136301) skills and docs half; spec #27742 (PR #27783, b3732631) and runtime #27746 (PR #27819, ed8b2375) both on main
    Thread-read: none
    Premise: holds — on origin/main (ed8b2375+) external.connector is live, but the datasources skill rule and the data-modeling guides teach only credentialsRef, and no guide points to #27744's conformance kit.
    Serial constraints: governed (Tier H: skills/**). The PR body says "Fable review owed"; it needs a CONTRACT_REVIEW_TIER record PASS on its head, and then an approver's APPROVE before it lands. #27875 owns the os serve caveat in odata-datasources.mdx §3; leave that sentence for it. Every example parses against main's schema.

  3. objectstack-fleet commented on Oct 30, 2026

    @objectstack-fleet
    ContributorAuthor

    epic:#27261#1 · marchtian · session_017ihL2eXpMhQkzjoYjCTKR6
    os-dev-report

    {
     "issue": 27786,
     "status": "done",
     "branch": "claude/project-thread-fprnjl",
     "pr": "https://github.com/objectstack-ai/objectstack/pull/27954",
     "head": "ecb4cd3a",
     "session": "session_017ihL2eXpMhQkzjoYjCTKR6",
     "premise_still_valid": true,
     "summary": "skills/objectstack-data/rules/datasources.md: Credentials becomes 'one channel, fail-closed': credentialsRef or external.connector (API-backed datasource on a plugin driver borrows a declared connectors instance's credential; refused beside credentialsRef, on a built-in driver, on a managed datasource; an instance that cannot lend or no automation service leaves it unconnected). Paid for inside the file, 906/911 tokens, ceiling unmoved. external-datasources.mdx section 4 gains 'Borrowing a connector instance's credential' with an os:check example (rest connector erp_api + OData datasource naming it) and the rules. odata-datasources.mdx section 3 names both channels; existing text kept under 'A secret of its own' (os serve caveat untouched, #27875's); new subsection with the plugin left at auth none, presentation per auth type, first-request borrow, refresh/401 rule, fail-closed list. virtual-objects.mdx: Credentials explains how a driver of your own borrows (connector-credential-source service, callWithBorrowedCredential, withoutBorrowedCredential; type-checked sketch); new 'Run the conformance kit' subsection (definePluginDriverConformanceSuite / runPluginDriverConformance, tiers, setupUnavailable, writeProbes); floor step 3 says the kit ships. Changeset: @objectstack/skills patch.",
     "tests": "No code changed. With spec built from this tree, defineStack accepts the os:check example and the OData fragment wrapped in a stack; the six refusals the pages name (both channels, postgres, managed, undeclared, no provider, auth none) are refused as described; a disabled instance is accepted at build as documented. The virtual-objects credential sketch and kit call type-check under strict against types/core/objectql src (a planted error in the same program reported). Runtime claims read off ed8b2375.",
     "gates": "dispatch-gates --commands derived 67 families from 5 files; after pnpm build (exit 0) all 67 run, exit codes recorded before any pipe, all exit 0. --ran: 67 derived, 67 run, 0 NOT-MEASURED (a DERIVED zero). Head ecb4cd3a level with origin/main ed0e71db.",
     "dogfood_battery": "n/a: docs and skills only, no ! in the title, Clause-② no",
     "mcp_calls": "github issue_read x3 (#27786 get, get_comments x2), subscribe_pr_activity x1 (#27954); no MCP write tool",
     "api_writes": "3: relay pr_create (run 41005928428, PR #27954, body 9513 bytes read back identical, assignee marchtian); relay pr_request_reviewers marchtian and this report comment, in one stroke. git push is not a REST write.",
     "surface_note": "Inside the Claim's file surface: the 4 named files plus the @objectstack/skills changeset.",
     "review_owed": "Tier H (skills/**): independent full Fable review (quota out, so owed), CONTRACT_REVIEW_TIER record PASS on the head, approver APPROVE. PR stays draft.",
     "open_questions": [],
     "out_of_scope_findings": [
      "carrier: epic PM · the runtime's refusal text (missingCredentialReason, credentialRejectedRefusal) and the driver-odata README say 'Setup → Connector credentials', but no Console page by that name was found under ui/; the guides avoid naming it. Not filed: unverified whether a page is planned."
     ]
    }
  4. objectstack-fleet commented on Oct 30, 2026

    @objectstack-fleet
    ContributorAuthor

    epic:#27261#1 · marchtian · session_017ihL2c5z3q4h8inrn5kwqV
    Landed · 2026-10-30T08:46Z

    PR #27954 merged through the queue as e9caebeec5 at 2026-10-30T07:52:02Z, on head d3bf069d (a merge of main onto de6aaf6b). The reviews:

    • Contract review PASS 6515906243 at CONTRACT_REVIEW_TIER, on ecb4cd3a.
    • Delta PASS 6516298495, on de6aaf6b. It still governs after the merge (regen-provenance 6517456776).
    • Under the 2026-10-29 19:39Z order, these also served as the full skills review.
    • Approved by os-zhuang (Tier H).

    What changed for authors:

    • The objectstack-data datasources rule now teaches one credential channel: credentialsRef or external.connector, with each refusal.
    • The external, OData and virtual-objects guides teach borrowing a connector instance's credential and point to the conformance kit.
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