You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
refactor(spec): strip internal tracker ids from customer-facing zod refusal messages, and gate their return (#12527)
* refactor(spec): strip internal issue-ids from customer-facing zod refusal messages
15 refusal messages across 9 files under packages/spec/src rendered a tracker
id verbatim to an author running `os validate` / hitting a parse refusal. The
reader of those strings cannot open the tracker, so the id is a citation-shaped
token resolving to nothing.
Where the reference is genuinely load-bearing for an internal reader it moves
to an adjacent // comment (4 sites); elsewhere it is removed outright — git
history keeps the anchor.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01E5LFCYBJ3q2s6yW6oMLxwy
* feat(gates): hold the no-tracker-ids convention over spec refusal messages
Rule 3 in check-doc-authoring: an AST scan of packages/spec/src for internal
issue ids in customer-facing zod refusal messages, inheriting the same ruling
Rule 2 applies to the published skill catalog.
It parses rather than scanning lines because refusal prose here is written as
multi-line string concatenation: the commissioning card's own single-line
census command found 1 of the 16 literals in the population. Recognises both
the `message:` property and the positional validator-message argument, and
asserts it saw message strings at all so a blinded detector reds instead of
reporting a clean population it never located.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01E5LFCYBJ3q2s6yW6oMLxwy
* test(spec): pin the refusal substance, not the tracker id
Three twins asserted the id as a bare toContain('#7113' / 'objectui#5933' /
'#5055'). Each now pins the sentence that carries the claim, plus a negative
pin that the message contains no issue id at all.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01E5LFCYBJ3q2s6yW6oMLxwy
* chore: changeset for the spec refusal-message id strip
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01E5LFCYBJ3q2s6yW6oMLxwy
---------
Co-authored-by: Claude <noreply@anthropic.com>
? `Provider-bound connector instance '${entry.name}' must not inline secrets via \`authentication\`; reference credentials with \`auth: { type, credentialRef }\` instead (ADR-0097 §3).`
938
-
: `Connector '${entry.name}' must not inline secrets via \`authentication\` — a published connector row is stored whole in \`sys_metadata\`, so the credential would land in cleartext (#7990). A catalog descriptor holds no live credentials: drop \`authentication\` (or set \`{ type: 'none' }\`) and describe the auth scheme in \`description\`. A dispatchable instance declares \`provider\` and references its credential with \`auth: { type, credentialRef }\` (ADR-0097 §3).`,
938
+
: `Connector '${entry.name}' must not inline secrets via \`authentication\` — a published connector row is stored whole in \`sys_metadata\`, so the credential would land in cleartext. A catalog descriptor holds no live credentials: drop \`authentication\` (or set \`{ type: 'none' }\`) and describe the auth scheme in \`description\`. A dispatchable instance declares \`provider\` and references its credential with \`auth: { type, credentialRef }\` (ADR-0097 §3).`,
0 commit comments