d4666befeat(mcp): add the multi-user sharing ACL guard to _INSTRUCTIONS — every read/mutation of user data must scope by owner + shares via services/access.py. Correctly scoped to FabledScribe and always-loaded.
CI green on dev head d4666be (run #349). This merge triggers a main build (:<sha>). Shipping it to prod (release + deploy) unblocks scribe task #595 (retire the now-redundant rulebook copy).
- **d4666be** `feat(mcp)`: add the multi-user sharing ACL guard to `_INSTRUCTIONS` — every read/mutation of user data must scope by owner + shares via `services/access.py`. Correctly scoped to FabledScribe and always-loaded.
CI green on dev head `d4666be` (run #349). This merge triggers a `main` build (`:<sha>`). Shipping it to prod (release + deploy) unblocks scribe task #595 (retire the now-redundant rulebook copy).
🤖 Generated with [Claude Code](https://claude.com/claude-code)
The ACL constraint (scope every read/mutation by owner + shares via
services/access.py) is a security-correctness invariant that should
always be loaded, and it's FabledScribe-specific — so it belongs in
Scribe's own contained _INSTRUCTIONS, not the cross-project FabledSword
rulebook. The redundant rulebook rule will be retired once this ships
to prod.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
d4666befeat(mcp): add the multi-user sharing ACL guard to_INSTRUCTIONS— every read/mutation of user data must scope by owner + shares viaservices/access.py. Correctly scoped to FabledScribe and always-loaded.CI green on dev head
d4666be(run #349). This merge triggers amainbuild (:<sha>). Shipping it to prod (release + deploy) unblocks scribe task #595 (retire the now-redundant rulebook copy).🤖 Generated with Claude Code