Repository navigation
Description
Part of #27108 (M3). Blocked-by: #27124. Filing gate: ③ maintainer-directed — ruling 6461953053 on objectstack#26553 and ADR-0025 v2 §3.6 / §3.7 / §3.10 / §7 (PR #27118, merged). Filed by the director seat (session_01KrKXQVvgYk2AJ4VkqMobyb, ledger objectstack#12708). ⛔ Not a claim. ⛔ No domain:*: spans runtime (sandbox), cloud (scans), spec (secret-refs, the fs/network decision); triage sets the lanes and splits as needed.
维护者速读
第三方插件才需要的那一层:① runtime:'sandbox' 的插件在加载时分派到 QuickJS(packages/runtime/src/sandbox/quickjs-runner.ts 今天只跑脚本体),PluginSandboxRuntime 要么接上要么删;② 云端发布侧加密钥/漏洞扫描;③ 连接器凭据走 settings/KV 的 secret-refs(ADR-0007),不进包;④ permissions.fs / permissions.network 两类按 ADR-0049 定「执行或删除」;⑤ §7 推迟的三题:发布者密钥轮换/吊销、T2 进程外 RPC 面(仍预留)、插件间依赖冲突。每项一张子卡或一个 PR,M3 落完才允许未验证发布者的插件装进租户。
What lands
- T1 dispatch: the M1 tier dispatch point routes
sandboxto a QuickJS-backedPluginContextexposing only capability-gatedctx.api / crypto / log;PluginSandboxRuntime(core/src/security/sandbox-runtime.ts, zero production construction sites today) is either wired as that runtime or removed. The cloud publish-time rule (unverified publisher ⇒ notnode) stays; the runtime now honours it. - Publish-side scans (cloud
package-publish.ts): secret scan of the archive, known-vulnerability scan of the bundle's SBOM, per-file integrity re-verification on the server; findings blockpublished. - Secret-refs (ADR-0007):
configurationfields marked secret resolve to the settings/KV store at install; the artifact never carries a value; the first real connector is the acceptance. fs/networkenforce-or-remove: eitherenforceFileRead/WriteandenforceNetworkRequestgain their call surface in the sandbox context, or the two classes leavePluginPermissionsSchemaunder ADR-0049 with a migration note. The lane proposes; the maintainer rules on a decision card if the two options differ in what a plugin may declare.- §7 answers: host trusted-root key set + rotation/revocation; the minimal T2 RPC contract (design only, T2 stays reserved);
requiresdiamond resolution at install.
Acceptance
- An unverified publisher's
runtime:'sandbox'plugin installs and runs under QuickJS with no Node API reachable; anode-tier plugin from the same publisher is refused at publish and at load. - A planted secret and a known-vulnerable dependency are refused at publish with one finding each.
- No "NOT ENFORCED" / "never reached" self-description about tiers or
fs/networkremains in the tree; ADR-0025 v2 §3.6 / §3.7 become ✅ lines.
Size: XL (several cards; triage splits by lane). Clause-②: likely yes for item 4 if a permission class is removed (the lane declares the arm). Metadata-protocol: none.
Related
#27108 (epic, Q3, Q4, Q7, Q8), ADR-0025 v2 §3.6 / §3.7 / §3.10 / §7, ADR-0007, ADR-0049, ADR-0026 (UI plugins stay out).
Activity
objectstack-fleet commentedon Oct 28, 2026
triage#1 · os-zhuang · session_01AavokzJ5DndAwitDXvKy4U
Triage: cloud ·
domain:cloud+status:parked· p1 kept · 2026-10-28T08:00Z⛔ Not a claim.
package-publish.ts), alongside the T1 sandbox dispatch here. A required step lands in objectstack-ai/cloud, so by the cloud rule (pm-dispatch(triage + lanes): any card that involves cloud is routed to the cloud PM (domain:cloud+status:parked), never to an objectstack lane #26762) the whole card goes to the cloud PM:domain:cloud+status:parked,pm:queueremoved.Generated by Claude Code
objectstack-fleet commentedon Oct 28, 2026
Frozen (2026-10-28T16:24Z). The maintainer chose 「M1 做完,其余冻结」 on the decision card about #27108 after the bridges ruling. That ruling is recorded on #27108, and the bridges epic is #27314. This card stays parked and is not dispatched. It unfreezes when a paying customer asks for third-party code distribution. ⛔ Not a claim.