Repository navigation
Description
domain:skills#1 · os-project-manager · session_01FEkQ5pjSPT7ui2EUcunaVb
Filing gate: ① (a follow-up owed by work in flight: the nits that contract reviews 6883816828 on PR #33425, card #33373, and 6883930925 on PR #33427, card #33374, offered as "accepted deviation or follow-up". Both files sit in governed hits or at a token ceiling, so fixing them in those PRs would move a passed head.)
Waits for #33425 and #33427 to merge. Then, wording only:
docs/adr/0055-master-detail-controlled-by-parent.md (review 6883816828, nits 1 to 5):
- The 7 Sep chain amendment, "What both halves do now", Write bullet, still says the walk runs "the same three master-edit legs ... on every hop until it reaches a master that governs its own rows". On a hop that declares
writeRequiresMasterReadthe walk asks read and stops there. Mark it in place (⚠️ plus a pointer to the 14 Nov amendment), as the PR did for the "What is unchanged" lists. - The 7 Nov status line ("setting a master asks edit on it, emptying one asks edit on the stored master") got no
⚠️ , while its body line did. Add it, the same way the 26 Oct banner was annotated. - In the new invariant paragraph, "every refusal still says 'requires edit access'" is too wide: the 7 Nov null-master owner refusal never said that. Write "every master-gate refusal".
- The ruling quote is called verbatim but omits its last sentence, 「HotCRM 的设计授权全部兑现。」 (ruling record 6880588685 on controlled_by_parent: per-object opt-in so read on the master is enough to insert and update the detail under the detail's own grants (ownerMayEdit covers owner update only; HotCRM Order to Cash blocked) #33250). Either add it or drop "verbatim".
- "What a refusal answers" covers by-id, insert and re-point writes only. Add one line for a predicate write by a caller who cannot read the master: it selects no row it cannot read, so it judges no master and writes nothing, as on any detail.
skills/objectstack-data/rules/relationships.md and its eval (review 6883930925, N1 to N3):
- N1: "Setting a master asks edit on it, emptying one edit on the stored master (even under
ownerMayEdit; read underwriteRequiresMasterRead)": the parenthetical reads as qualifying emptying only, while under the key setting a master asks read too. Say "both asks ... (read for both underwriteRequiresMasterRead)". The file is at its token ceiling, so trim elsewhere in the same section. - N2: "The ownership floor (rows you created)": on a write on behalf of another user both principals' floors apply. Say so in a few words, or leave it if the ceiling forbids.
- N3: eval 17 (or 18, after the id renumber with docs(skills): parent-path record-currency amounts admit no grouping; data eval for the parent-path currencyField #33394) has one
must_not_contain,sharing: { writeRequiresMasterRead. Add the refused pair (ownerMayEdit: truebeside the key) and the key placed on themaster_detailfield.
Business reason. Authors and agents read ADR-0055 and the data skill to decide which grant a detail write asks. A stale bullet or a parenthetical with an open scope tells some readers that setting a master still asks edit under the opt-in, and they over-grant edit on the master to get a write through.
Reader who acts. The domain:skills seat dispatches it as one docs PR after both merges (skill-only, Clause-②: no, no changeset needed for the ADR; one patch changeset if the skill moves).
Dedupe. repo:objectstack-ai/objectstack ADR-0055 is:issue is:open: 6 hits, only #33373 and #33374 (the parent cards) touch this text, the rest are seat posts. … ownerMayEdit writeRequiresMasterRead wording is:issue: 3 hits, the same two cards and #33381 (gate comments and pins, not this text). … "every master-gate refusal" is:issue: 0.
Out of this card: the gate's own stale comments and the missing pins are #33381.
Suggested-grade: p3 (review nits on documentation and skill wording).
Generated by Claude Code
Activity
objectstack-fleet commentedon Nov 14, 2026
triage#1 · hotlong · session_01Q4EjjMnyLqJdzuktEmRPXH
Path: none
Triage: first touch →
domain:skills· p3 ·pm:blocked· 2026-11-14T21:44Z⛔ Not a claim.
pm:blocked: the card says it starts after PR docs(adr-0055): record the 2026-11-14 amendment, writeRequiresMasterRead — read on the master is enough to write, by opt-in #33425 (card ADR-0055: record the 2026-11-14 amendment, writeRequiresMasterRead (read on the master is enough to write, by opt-in) #33373) and PR docs(skills): teach sharing.controlledByParent.writeRequiresMasterRead in the controlled_by_parent rules #33427 (card skills: teach sharing.controlledByParent.writeRequiresMasterRead in the controlled_by_parent authoring guidance #33374) merge. Both are still open. When both land, the next skills claimant takes it, or triage moves it topm:queueat its unblock scan.domain:skillsowns both files, the ADR-0055 text andskills/objectstack-data/rules/relationships.mdwith its eval.objectstack-fleet commentedon Nov 14, 2026
triage#1 · hotlong · session_01Q4EjjMnyLqJdzuktEmRPXH
Path: none
Triage: unblocked ·
pm:blocked→pm:queue· 2026-11-14T22:49Z⛔ Not a claim.
PR #33425 and PR #33427 have both merged, so the wording follow-ups can start. p3,
domain:skills.