Repository navigation
Closed
Labels
area:accessPermissions that actually hold — RLS/FLS, sharing model, write-path guardsPermissions that actually hold — RLS/FLS, sharing model, write-path guardsbugSomething isn't workingSomething isn't workingdomain:serverDomain lane — seat card indexed by label:pm:seatDomain lane — seat card indexed by label:pm:seatpriority:p1High: required for production / M2High: required for production / M2security
Description
Filing gate: ① product defect, reproduced three times, landing site named and code-confirmed. Maintainer direct dispatch; the authorizing words are quoted in the claim comment.
Summary
After a runtime metadata publish, packages/plugins/plugin-security keeps serving some authorization decisions computed from the metadata as it stood before. This lasts until a server restart.
- Measured 2026-10-27 on a server built from
3fcafcd3; the code is unchanged onorigin/main898703f9. - Each reproduction had a control that behaved correctly.
- access: changing an object's sharing model to public_read_write after it was first published leaves members unable to edit records they can read — the #8023 write-floor exemption does not follow the change (detail withheld pending maintainer) #26596 is a fail-closed face of the same cause, and the two are fixed together on one branch.
The symptoms, reproduction and code location are withheld pending maintainer, per the maintainer's instruction for security defects that are not to be disclosed. The implementer receives them privately.
Acceptance (public part)
- Authorization verdicts follow a published metadata change with no restart, measured over HTTP.
- A pin changes metadata at runtime and asserts the new verdict.
- access: changing an object's sharing model to public_read_write after it was first published leaves members unable to edit records they can read — the #8023 write-floor exemption does not follow the change (detail withheld pending maintainer) #26596's acceptance holds through the same fix.
Filing facts
- Business reason: admins change access after go-live and rely on the change taking effect at once.
- Reader who acts: an
os-devimplementer, dispatched directly by this PM session together with access: changing an object's sharing model to public_read_write after it was first published leaves members unable to edit records they can read — the #8023 write-floor exemption does not follow the change (detail withheld pending maintainer) #26596. - Dedupe: semantic search
security plugin metadata cache not invalidated after publish watch MetadataManager restart requiredon objectstack-ai/objectstack → 1 hit (closedobjectstack devwatcher rebuilds dist/objectstack.json but the running server keeps serving the metadata it booted with #5148, a different path: the dev watcher rebuilding dist). No duplicate. - Source: Studio QA run, 2026-10-27, coordinator session
session_01J8VVAkZns5rNnK2rtszzbQ.
Metadata
Metadata
Assignees
Labels
area:accessPermissions that actually hold — RLS/FLS, sharing model, write-path guardsPermissions that actually hold — RLS/FLS, sharing model, write-path guardsbugSomething isn't workingSomething isn't workingdomain:serverDomain lane — seat card indexed by label:pm:seatDomain lane — seat card indexed by label:pm:seatpriority:p1High: required for production / M2High: required for production / M2security
Activity
objectstack-fleet commentedon Oct 27, 2026
Claim: PM loop round 1 (maintainer direct dispatch; folded family dispatch with #26596 as chain head)
Session:
session_01J8VVAkZns5rNnK2rtszzbQAccount:
huangyiireneBranch:
claude/issue-26596-owd-change-write-floor(shared with #26596, the chain head; one PR carriesFixes #26596andFixes #26698, one commit per card)Worktree:
objectstack-issue-26596Domain:
domain:serverSeat:
domain:server#1(direct-dispatch session, not a lane seat)File surface:
packages/plugins/plugin-security/src/**,packages/metadata/src/**(only the subscription seam),packages/qa/dogfood/test/**(stop on breach; explain in the report)Container & model:
M,mode:subagent,model: TIER_DEFAULT (dispatch-gates --tier: no path-derived mandate),effort: xhigh(security, p1)Clause-②: no
Metadata-protocol: none
Responsibility: detail withheld pending maintainer |
none| detail withheld pending maintainerThread-read: none
Premise: holds (reproduced three times 2026-10-27 at 3fcafcd; the code path is unchanged on origin/main 898703f)
Serial constraints cleared: open PR #26337 (ADR-0142 phase 2) may touch plugin-security — rebase over it if it lands first; #26596 is folded onto this same branch, so there is no separate in-flight claim on this surface
Direct-dispatch authority — maintainer, this session, 2026-10-27, verbatim: 「3 个 AUTH 类问题(复现细节都不公开);你可以直接派发处理」 and 「不能公开的安全问题,你直接使用pm-dispatch 派发处理」
Reproduction steps stay off GitHub per those instructions; they go to the implementer in the private dispatch prompt.
Generated by Claude Code
test(dogfood): pin the security verdict across further runtime metada…
objectstack-fleet commentedon Oct 28, 2026
Triage: PR #26878 has been draft for about 5 hours with no seat ACCEPT and no os-dev report · triage seat ·
session_01AavokzJ5DndAwitDXvKy4U· 2026-10-28T00:43Z⛔ Not a claim.
Fixes #26596,Fixes #26698, branchclaude/issue-26596-owd-change-write-floor, head8dcb3e2a, committed 18:50Z) is draft, green (35 success, 0 red) andmergeable_state: clean. Nothing has been posted on it since 19:45Z.## 席位核对after the claim on this card (13:17Z, sessionsession_01J8VVAkZns5rNnK2rtszzbQ,domain:server#1, direct-dispatch).domain:serverseat: check whether that session is still alive. If it is, it posts its report and readies the PR. If it is not, release the claim and re-dispatch from the pushed branch (its head is on the platform, so nothing is lost).Clause-②: no,Metadata-protocol: none). The seat's ACCEPT is the gate.Generated by Claude Code