docs(qa): retarget readonly-package-locks-studio writable contrast at duplicate route - #13607
Merged
os-project-manager merged 1 commit intoAug 31, 2026
Conversation
… duplicate route (#9788) access-security.readonly-package-locks-studio's writable-package contrast side (step 5, acceptance clause 3) left "a WRITABLE (draft/app-local) object" unqualified. The maintainer ruled NO on a stock writable showcase package (2026-08-19, "接受你的所有建议"; reaffirmed 2026-08-25, "其他接 受") and directed retargeting at the platform's own runtime path instead: the runner clones the showcase base into a writable target via POST /packages/:id/duplicate (ADR-0070 D4 "duplicate base"). Bumped revision to 3 with a history entry; added a fixtures.requires line naming the runtime route explicitly, since the item never had a fixtures block before. Oracle stays api on both sides of the gate. Mirrors the sibling half already landed for automation.rollup-summary-filter (PR #11913, bb62d4d) — same retarget, same route. This half's item never carried a blocked.by:fixture entry or a fixtures.knownGaps line (unlike the automation item), so there is nothing of that shape to remove here. Claude-Session: https://claude.ai/code/session_01Pk26oZ12t5N1hwGW1m1MgC Co-authored-by: Claude <noreply@anthropic.com>
os-project-manager
marked this pull request as ready for review
August 31, 2026 03:19
os-project-manager
deleted the
claude/issue-9788-readonly-package-locks-retarget
branch
August 31, 2026 03:36
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 #9788.
What
Retargets
access-security.readonly-package-locks-studio's writable-packagecontrast side (step 5, acceptance clause 3,
docs/qa/platform-checklist/areas/access-security.json)at the platform's supported runtime path, per the maintainer ruling on #9788
(2026-08-19, verbatim: 「接受你的所有建议」; reaffirmed 2026-08-25, 「其他接受」):
the stock showcase does not boot with a project-scoped writable package.
The runner instead clones the showcase base into a writable target via
POST /packages/:id/duplicate(ADR-0070 D4 "duplicate base") to get thewritable object this item's contrast clause needs, then repeats the packaged
object's PUT against it.
This is the second and last of the two mechanical retargets the ruling
calls for — the first (
automation.rollup-summary-filter) already landedas PR #11913. With both items retargeted, #9788's full scope is done.
Changes to the item:
steps— step 5 now names the duplicate-route call instead of theunqualified "a WRITABLE (draft/app-local) object."
acceptanceclause 3 — retargeted wording; oracle staysapion bothsides of the gate, unchanged.
fixturesblock (the item had none before) with arequiresentryciting the duplicate route explicitly.
sourceentries citing the duplicate route(
packages/runtime/src/domains/packages.ts) and ADR-0070 §D4.revision2 → 3, with ahistoryentry recording the retarget and itsrationale.
Deliberately NOT copied from the sibling half (PR #11913,
bb62d4d08):this item never carried a
blocked: {by: "fixture", ...}block or a matchingfixtures.knownGapsline — those exist only on the automation item, whichhad been explicitly fixture-blocked since #3358. This item's writable side
was instead left as an unqualified phrase ("a WRITABLE (draft/app-local)
object") with no fixture blocker to remove. So this PR adds a
fixturesblock rather than editing one, and there is no
blocked/knownGapspair tostrip.
Verified before writing
POST /packages/:id/duplicateexists (packages/runtime/src/domains/packages.ts:819,protocol.duplicatePackage) and is the same route PR docs(qa): retarget rollup-summary-filter editor half at duplicate route #11913 verified andcited — re-confirmed here rather than taken on faith.
access-security.jsononorigin/mainfirst: the item's step 5 /acceptance clause 3 were exactly as the dispatch card described (generic
"WRITABLE (draft/app-local) object," no fixture blocker) — premise held.
ADR-0057 D10citations toADR-0124 D1#11780 (359e497f8, merged) only renamed ADR citations(ADR-0057 D10 → ADR-0124 D1) in this file and did not touch this item's
revision or the writable-contrast wording — nothing here was already done.
Scope
Only
docs/qa/platform-checklist/areas/access-security.json. The designquestion ("should the stock showcase boot with a writable package?") is
not reopened — it was ruled NO on 2026-08-19 and reaffirmed 2026-08-25;
this PR is the mechanical retarget the ruling calls for. No writable package
provisioned, no seed fixtures added,
content/docs/**untouched.Local gates
node scripts/pm/dispatch-gates.mjs --repo objectstack-ai/objectstack(runagainst the final commit
2821d5d08) names two matched families for thisdiff, both green:
pnpm check:doc-authoring— "393 files clean — no bare metadata literals."pnpm --filter @objectstack/lint run check:doc-formula-expressions—self-test 58/58, "22 record-scoped formula example(s) … judged clean,"
"9 @example(s) judged clean," "14 predicate(s) … judged clean; 6 skipped as
undeterminable" (documented, pre-existing, unrelated to this diff).
check:platform-checklistis not CI-wired (manual cadence by maintainerdecision — README), so
dispatch-gates.mjsdoes not name it, but the areaREADME asks for it whenever the checklist itself is touched, so it was run
anyway:
check-platform-checklist: OK — 15 areas, 221 items (221 active); coverage: 31 kinds mapped, 0 waived; traps: 19 documented, 19 in use; provisioning: 5 area recipes, 8 item references resolved (1 area-qualified), 5/5 recipes referenced.Also ran
pnpm check:nul-bytes(any edit) — green: "scanned 7539 textfile(s) … no raw ASCII control bytes."
No changeset — QA-checklist-only change, nothing user-visible or published
(same precedent as PR #11913).
skip-changesetlabel applied and confirmedpresent on read-back.
Generated by Claude Code