Repository navigation
docs(adr): ADR-0015 §8 binds its example credential with a sys_secret: handle, the only form the shipped binder resolves - #27906
Conversation
…: handle The §8 end-to-end example still taught credentialsRef 'secret:warehouse/readonly'. That form parses, but the shipped datasource secret binder resolves only a sys_secret:<id> handle minted by the secret store, so a copied example leaves the datasource unconnected at boot. The example now uses the handle form the schema refusals and drivers.mdx teach, and a dated amendment note under §8 records the original line, names what the binder resolves, says which component §10's service-secrets turned out to be, and marks the rest of the example as kept as written (two of its keys are refused by name today). The header's Amended by line points at the note. Claude-Session: https://claude.ai/code/session_016WV4cwBHtvCZyayQ8RFyUN Co-authored-by: Claude <noreply@anthropic.com>
|
domain:skills#2 · os-elon-musk · session_016WV4d1QkPVVzNz3FJqb2iS Contract-review-claim: session_016WV4d1QkPVVzNz3FJqb2iS · head faa40f0 · 2026-10-30T03:15Z |
|
domain:skills#2 · os-elon-musk · session_016WV4d1QkPVVzNz3FJqb2iS Contract reviewServed-tier: Read on the head, merge base ① Derived judgments
② Semver level
③ Boundary flags
④ Design judgmentThe ADR's §8 is its worked example, and its first consumer is whoever copies it: an author or an agent writing a Implemented-by: VERDICT: PASS Must-fix: none. |
|
domain:skills#2 · os-elon-musk · session_016WV4d1QkPVVzNz3FJqb2iS 维护者速读
席位意见:ACCEPT。契约复核 PASS,没有 must-fix,也没有 should-fix。CI 全绿。 席位核对
|
Requested by Elon · project thread
Fixes #27688
Clause-②: no
Metadata-protocol: none
维护者速读
secret:warehouse/readonly改为sys_secret:9f2c…句柄形态;示例下加一条带日期的修订注,原句照录,不是静默改写;文件头Amended by行指向这条注。sys_secret:句柄(Setup → 数据源连接表单的密钥栏写入)。照抄旧示例写出的引用能通过校验,但启动时解析不到,数据源一直连不上。PR fix(spec): datasource password refusals prescribe a credential shape that parses #27656 已改好 schema 提示和 drivers 文档,这个 ADR 是最后一处还在教旧写法的地方。docs/adr/0015-external-datasource-federation.md第 8 节第一个代码块和紧随其后的修订注,再看文件头第 7 行。grep -n "credentialsRef: '" docs/adr/0015-external-datasource-federation.md,预期两行:示例里的sys_secret:9f2c…,和修订注里照录的旧句。What changes
One file,
docs/adr/0015-external-datasource-federation.md(+22 / −2).credentialsRef: 'secret:warehouse/readonly'becomescredentialsRef: 'sys_secret:9f2c…', with a three-line comment that says where the handle comes from. The comment mirrors the one PR fix(spec): datasource password refusals prescribe a credential shape that parses #27656 put inexamples/app-showcase/src/system/datasources/showcase-external.datasource.ts.packages/services/service-datasource/src/datasource-secret-binder.ts#parseCredentialsRef), and points at the schema refusals andcontent/docs/data-modeling/drivers.mdx, which teach the same form after PR fix(spec): datasource password refusals prescribe a credential shape that parses #27656.Amended byline gains one entry pointing at the note.Not edited: §10's body, §4.1, and the example's other keys. D7 (
external.connector) is not taught here.Why — measured at
04740b7csecret:example,:657. No other prose spells the form.sys_secret:prefix:parseCredentialsRefreturns the id after it, elseundefined.resolve()then returnsundefinedwith no read, andDatasourceConnectionServiceleaves the datasource unconnected withfailed-credentials("could not be resolved or decrypted").os servewirescreateDatasourceSecretBinderas that resolver (packages/cli/src/commands/serve.ts).sys_secret:9f2c…indrivers.mdxand the showcase example, andsys_secret:9f2cin the twopasswordrefusals indatasource.zod.ts.DatasourceSchema.safeParse, run withtsxagainstpackages/spec/src:mainexternal.label(removed in 17.0.0, ADR-0049)secret:ref; every other key in its current spellingexternal.labelmoved to top level,config.connectionStringkeptconnectionString→urllabeltop level,config.urlor discrete fields,sys_secret:refSo the
secret:form is the one stale key in the example that fails silently. The other two are refused by name, each with its fix.Deviations from the dispatch order
The first two were reported to the seat before the push and accepted (seat note, 2026-10-30T03:05Z):
external.labelandconfig.connectionStringby name. Neither key is edited.credentialsRef"points atservice-secrets"; no package of that name exists. The note says the binder is the component that resolves the reference and that what it yields is the password, injected at connect. §10's body is not edited.dispatch-gatesderives was run instead (Verification).Acceptance notes
service-secretsin its body; the §8 note now says what it is. A body edit is for the maintainer if wanted.external.labelandconfig.connectionString. Both are refused loudly at the parse, each naming its fix.Verification
dispatch-gates
node scripts/pm/dispatch-gates.mjs --commands(no paths, from the committed diff against merge base04740b7c) derives 21 families. All 21 were run with exit codes captured before any pipe.pnpm --filter @objectstack/lint run check:doc-formula-expressionsfirst exited 3 (@objectstack/formulaand@objectstack/lintnot built in a fresh worktree); afterpnpm exec turbo run build --filter=@objectstack/formula --filter=@objectstack/lintit exited 0.--ran:21 derived famil(ies) accounted for — 21 run, 0 NOT-MEASURED. Re-derived after the commit: identical list. The ADR gates among them:check:adr-index,check:adr-anchors,check:adr-symbol-anchors,check-adr-links.mjs(+--self-test), all exit 0. Changed lines 24 (+22 / −2), under the 3000 threshold.--tieranswers MANDATORYCONTRACT_REVIEW_TIERfordocs/adr/**.git merge-treeagainstorigin/maine320e366is clean, and no commit since the base touched this file.scripts/check-nul-bytes.mjsexit 0.Contract review owed: governed
docs/adr/**, atCONTRACT_REVIEW_TIER. Landing is Tier H (triage 6505597349: "Tier H: the maintainer merges").Human Minimum
packages/specholds no runtime logic. (not touched)pnpm lintpasses (prose only; the full run is CI's).main, one pull request.docs/adr/**publishes nothing, soskip-changeset.packages/spectouched: n/a.content/docs/references/,packages/*/CHANGELOG.mdorcontent/docs/releases/.Generated by Claude Code