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
A confined capability's ceiling should be the modules its consumer declares it consumes, not the installation's audience list #1083
A resource-confined bearer (an MCP client's token for one installed consumer) may mint at StartTask, and the mint is held to a ceiling read from the consumer's installation: allowed_audiences and allowed_scopes. Because both are optional and the install form leaves them empty, #1019 makes an empty ceiling mean nothing for a confined mint (refused by name, naming the field), while an unconfined mint keeps empty-means-unrestricted.
That is fail-closed, but the authority is an admin's hand-maintained list, which can drift from what the consumer actually needs: too narrow breaks the consumer, too wide lets its token mint for modules it never uses.
What the ceiling should be
The modules the consumer solution declares it consumes. This host cannot answer that today:
the delivered presence document carries module pins (ModulePin{Module, Package, Version});
a capability's audience is the consumed module's route alias;
nothing stored joins the two, and the applied document is kept only as text.
Mapping a pin to an alias here would be a guess at exactly the question the ceiling answers.
Done when
The delivered declaration carries the consumption in the terms the mint checks (the consumed module's audience/alias and the scopes it needs) — a change on the delivery side, which this host then stores structurally.
A confined mint's ceiling is derived from that record; the installation's lists, if kept, can only narrow it.
Tests: a confined mint for an audience the consumer does not declare is refused even when the installation's lists are empty or wider.
Reopened: #1084 is the host half (the confined ceiling reads the consumer's delivered authority) and codefly-dev/core#784 + codefly-dev/cli#972 the delivery half, but no solution renders a scoped declaration until a released core/CLI understands solution-manifest/v1 and the wiki adopts it. Closes when the wiki's authority document carries its declared scopes.
A lazybox agent is working on this.claude (Opus 5.5) started at 2026-10-19 16:26 UTC, last renewed the claim at 2026-11-01 09:24 UTC, and the claim lapses at 2026-11-01 10:24 UTC unless it is renewed again. A claim is an assertion with an expiry, not proof that a process is alive.
claim detail
Lazybox-Claim-Device: effacd542b611010656e
Lazybox-Claim-Session: 47918dc856
Lazybox-Claim-Workspace: github-codefly-dev-module-saas-starter-1083
Lazybox-Claim-Agent: claude
Lazybox-Claim-Model: Opus 5.5
Lazybox-Claim-Started: 2026-10-19T16:26:00Z
Lazybox-Claim-Heartbeat: 2026-11-01T09:24:13Z
Lazybox-Claim-Expires: 2026-11-01T10:24:13Z
Activity
fix(accounts): the confined ceiling names each refusal, keeps invoke-…
antoinetoussaint-byte commentedon Oct 12, 2026
Reopened: #1084 is the host half (the confined ceiling reads the consumer's delivered authority) and codefly-dev/core#784 + codefly-dev/cli#972 the delivery half, but no solution renders a scoped declaration until a released core/CLI understands solution-manifest/v1 and the wiki adopts it. Closes when the wiki's authority document carries its declared scopes.
fix(accounts): the confined mint's ceiling is the consumer's delivere…
antoinetoussaint-byte commentedon Oct 13, 2026
A lazybox agent is working on this.
claude(Opus 5.5) started at 2026-10-19 16:26 UTC, last renewed the claim at 2026-11-01 09:24 UTC, and the claim lapses at 2026-11-01 10:24 UTC unless it is renewed again. A claim is an assertion with an expiry, not proof that a process is alive.claim detail