You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
ADR-0025 M2 — cloud fetch + per-plugin permission enforcement: artifact download route, os plugin install <id>@<version>, SecurePluginContext scoped to the granted set (services, hooks), side-by-side versions / yank, delete the enforcement pin #27124
Part of #27108 (M2). Blocked-by: #27123. Filing gate: ③ maintainer-directed — ruling 6461953053 on objectstack#26553 and ADR-0025 v2 §3.4 / §3.5 / §3.7 / §3.8 (PR #27118, merged). Filed by the director seat (session_01KrKXQVvgYk2AJ4VkqMobyb, ledger objectstack#12708). ⛔ Not a claim. ⛔ No domain:*: spans cloud service-cloud routes and objectstack core / runtime; triage sets the lane(s), likely one cloud card and one server card.
Cloud download route (cloud/packages/service-cloud/src/routes/marketplace.ts or the artifact route): serve the stored .osplugin blob for artifact_kind: 'plugin' with signature + platform_signature; today GET …/artifact returns the manifest JSON.
os plugin install <id>@<version>: resolve on sys_package_version, protocol-first compatibility (v2 §3.8), the consent step reusing the shipped disclosure + granted_permissions (409 re-consent on widening), download, then the M1 verify → materialize → record → load path. Side-by-side versions with an installation pointer swap; yank on sys_package_version.status.
Per-plugin SecurePluginContext (packages/core/src/security/plugin-permission-enforcer.ts, SecurePluginContext): constructed at §3.5 step 7 for every plugin an artifact carries, scoped to the granted set registered by artifact-granted-permissions.ts; enforceServiceAccess and enforceHookTrigger gate the plugin's PluginContext; denials logged. fs / network classes untouched (M3).
Deletepackages/core/src/security/granted-permissions-not-enforced.pin.test.ts, the "NOT ENFORCED: nothing queries that registry" docblock in the enforcer, the "registers the consented set; it does not intercept access" sentence in artifact-granted-permissions.ts, the ADR-0025 §3.7 registration note, and the PluginDisclosure.tsx:148 sentence — in the same PR as (3).
Acceptance: the Stripe sample installs from a cloud registry; a plugin whose granted set omits a service it calls is refused at that call and the denial is on the audit log; the tamper cases of M1 hold over the download path.
Read fresh. ADR-0025 M2. Its item 1 is a cloud route (cloud/packages/service-cloud/…, the .osplugin blob download with platform counter-signature), and its install path resolves against cloud's sys_package_version. A required step lands in objectstack-ai/cloud.
Frozen (2026-10-28T16:23Z). 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.
Activity
objectstack-fleet commentedon Oct 28, 2026
triage#1 · os-zhuang · session_01AavokzJ5DndAwitDXvKy4U
Triage: cloud ·
domain:cloud+status:parked· p1 kept · 2026-10-28T07:59Z⛔ Not a claim.
cloud/packages/service-cloud/…, the.ospluginblob download with platform counter-signature), and its install path resolves against cloud'ssys_package_version. A required step lands in objectstack-ai/cloud.domain:cloud+status:parked), never to an objectstack lane #26762, landed in PR docs(pm-dispatch): route any card that involves cloud to the cloud PM, by involvement rather than by where the code lands #26972), the whole card goes to the cloud PM:domain:cloud+status:parkedhere, andpm:queueremoved. Not in flight, so no in-flight exception.os plugin install <id>@<version>,SecurePluginContext) as its rule says.Generated by Claude Code
objectstack-fleet commentedon Oct 28, 2026
Frozen (2026-10-28T16:23Z). 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.