docs(qa): key the permission-matrix publish refusal on code NO_DRAFT, not a retired message spelling - #19843
Draft
objectstack-fleet[bot] wants to merge 1 commit into
Draft
docs(qa): key the permission-matrix publish refusal on code NO_DRAFT, not a retired message spelling#19843objectstack-fleet[bot] wants to merge 1 commit into
objectstack-fleet[bot] wants to merge 1 commit into
Conversation
… not a retired message spelling The access-security.permission-matrix-edit-loop clause and verify quoted a bracketed lowercase opener inside the refusal message. That opener was retired from every metadata-protocol refusal in 7a25a3e; the refusal still answers 404 with code NO_DRAFT (SysMetadataRepository.promoteDraft). Re-key both on the status + code axis, cite the producer, and record the change as revision 3 (history is append-only; revision 2 is untouched). Claude-Session: https://claude.ai/code/session_01VDtqoecgES7ScQYGbFVDRv Co-authored-by: Claude <noreply@anthropic.com>
This was referenced Sep 23, 2026
Contributor
Author
Contract reviewServed-tier: ① Derived judgments
② Semver level
③ Boundary flags
Implemented-by: VERDICT: PASS Isolated at-tier reviewer, adopted by the Generated by Claude Code |
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes #19705
Clause-②: no
What
docs/qa/platform-checklist/areas/access-security.json, itemaccess-security.permission-matrix-edit-loop(P1): clause 2 and itsverifyquoted the nothing-to-publish refusal by a bracketed lowercase opener inside the message text. That opener was retired from every metadata-protocol refusal in7a25a3ee9c(PR #19683), so a checker following the clause verbatim against a live answer recorded a false failure.Per the card's fix shape (adopted by triage): the clause and verify now key on the code axis: HTTP 404 whose body carries
code: 'NO_DRAFT', and say explicitly to judge the refusal on status +code, never on message prose. Pass/fail semantics are unchanged.revision2 -> 3, with a new append-onlyhistoryentry (revision 3, ref [finding] Two QA platform-checklist area files quote404 [no_draft]as the expected refusal text — a spelling #16245 retires #19705). The revision-2 history entry that quotes the old spelling is untouched (history is append-only).sourcerow:packages/metadata-protocol/src/sys-metadata-repository.ts#promoteDraft, the producer.Runtime site (verified on
origin/main71ef221)SysMetadataRepository.promoteDraft(packages/metadata-protocol/src/sys-metadata-repository.ts) throws messageNo pending draft exists for TYPE/NAME — nothing to publish.withcode = 'NO_DRAFT',status = 404. No bracketed opener.POST /meta/:type/:name/publishinpackages/rest/src/rest-server.tsroutes the throw throughhandleRouteError; the wire body shape{ error, code: 'NO_DRAFT' }is pinned inrest-4xx-message-truncation.test.tsandrest-5xx-message-sanitization.test.ts.protocol.bracketed-refusal-opener-absence.test.ts.Carrier re-derivation over
docs/qa/**Instrument:
git grep -ni no_draft -- docs/qaplus a family censusgit grep -noE '[0-9]{3} \[[a-z][a-z_]+\]' -- docs/qa, at 71ef221 (base). Radius: every tracked file underdocs/qa/. Lit control:git grep -nic invalid_metadata -- docs/qaanswers 3 hits in each of two area files, so the instrument reaches both files.no_draft3 lines, all inaccess-security.json(clause, verify, revision-2 history).docs/qa/**carrier of the retiredno_draftspelling exists.Gates (all at
db81a89b)node scripts/pm/dispatch-gates.mjs --repo objectstack-ai/objectstack --commandsderived 13 commands; all 13 run, reconciled with--ran(13 derived, 13 run, 0 NOT-MEASURED, derived from recorded exit codes). All exit 0.check:doc-formula-expressionsfirst exited 3 (PREREQUISITE NOT MET, formula/lint unbuilt, nothing measured); afterturbo run build --filter=@objectstack/formula --filter=@objectstack/lintit re-ran exit 0.check:platform-checklistanchor counts: symbol anchors before 620/638 resolved against 310 cited sources, after 621/639 against 311 (the one new source row resolves); residual 18 unchanged; 17 file floors held; line citations 0 before and after. No floor or ledger touched.Changeset
None. Docs/QA-only:
docs/qa/**ships in no package'sfiles[](git grep -l docs/qa -- '**/package.json'= 0 hits; positive control: thefilesarrays exist and listdist). This isskip-changesetterritory; per the dispatch, no label write was attempted from this seat.Acceptance notes
docs/qa/platform-checklist/areas/studio-authoring.jsonis off-limits for this card by the triage ruling. Its[invalid_metadata]lines have already been re-spelled onmain(its item revision 3, dated 2026-09-23). It still carries422 [writable_package_required]in one clause and one source row, for the metadata-protocol write door, which no longer emits that opener (SysMetadataRepositorythrowsWRITABLE_PACKAGE_REQUIRED/ 422 with plain prose). Same false-failure class as this card; reported for the seat to file or attach to [finding] Three more producers still write bracketed openers that restate their own declaredcode— the #16245 family beyond its two named files #19709, not edited here.packages/runtime/src/domains/packages.tsstill opens two refusals with a bracketed restatement of their declared code ([writable_package_required]and[duplicate_source_not_a_base]). The absence pin covers onlymetadata-protocol. Reported, not edited here (outsidedocs/qa/**).packages/rest/src/rest-server.ts: the comment above the publish route still reads404 [no_draft] when nothing to publish. This is a code comment, not a refusal, so it goes here as a note only.packages/clientJSDoc carrying the same spelling is [finding]packages/client/src/index.ts:2151JSDoc still documents404 [no_draft], a spelling the runtime no longer emits after #16245 #19704 (adomain:clicard). [finding]packages/client/src/index.ts:2151JSDoc still documents404 [no_draft], a spelling the runtime no longer emits after #16245 #19704 is not addressed here.Generated by Claude Code