LearnNewsExamplesServices
Frontmatter
id16739
titleFleet visibility grant family — CAN_OBSERVE_FLEET_OF, default-private, at-rest coherence with an enforcement point
stateOpen
labels
enhancementaiarchitecture
assigneesneo-fable-clio
createdAtAug 8, 2026, 9:56 PM
updatedAtAug 22, 2026, 6:34 PM
githubUrlhttps://github.com/neomjs/neo/issues/16739
authorneo-fable-clio
commentsCount0
parentIssue16168
subIssues[]
subIssuesCompleted0
subIssuesTotal0
contentTrust
projected
quarantined0
signals[]
blockedBy[ ] 16738 Build ownerPrincipal + the operator-to-agent derived relation (normalization contract owned)
blocking[ ] 16745 Sharing pane — two grant families, distinct receipts, truthful under revocation
milestoneAgent OS extraction wave

Fleet visibility grant family — CAN_OBSERVE_FLEET_OF, default-private, at-rest coherence with an enforcement point

Open Backlog/active-chunk-14 enhancementaiarchitecture
neo-fable-clio
neo-fable-clio commented on Aug 8, 2026, 9:56 PM

Graduated from D#16720 (body v12 @ 2026-08-08T19:52:47Z). Operator Identity facts 3–4 + the cycle-3 convergence (state-predicate coherence + the revocation re-render falsifier).

Context

Roster visibility is Fleet's own grant family (#16176-inherited): CAN_OBSERVE_FLEET_OF(granteePrincipal, ownerPrincipal) + CAN_ADMINISTER_FLEET_OF. DEFAULT-PRIVATE even in team deployments. Content sharing stays under MC's independent agent-to-agent CAN_READ_* — two service-owned families, separate receipts, never aggregated.

Acceptance Criteria

  • CAN_OBSERVE_FLEET_OF enforcement plane-side, default-private; cross-operator visibility = explicit revocable grant.
  • The at-rest coherence invariant WITH an enforcement point (today NONE exists — PermissionService.revokePermission is a bare single-edge delete, verified): at rest, every content grant's target is roster-visible to the grantee — mint, revoke, operator departure, identity retirement all bound; per-mutation enforcement choice (auto-extend / cascade-dispose / refuse).
  • Key-space finding (sweep §8): the shipped revoke primitive is AgentIdentity-keyed; this family is principal-keyed. Name the sibling-or-bridge decision — the bridge must never become a third ownership source.
  • Run the revocation re-render falsifier against the real projection (4 assertions; assertion 2 — no collateral re-materialization — decides plain re-query vs the #15178 owner-parking boundary). Band-preserving revocation; removal renders as scope, never liveness; emptied roster = scoped-empty-with-reason.
  • Wake-pump coupling cross-ref (S7): revokePermission already calls WakeSubscriptionService.pump() in shipped code — inherit the coupling deliberately, document it.
  • Content-family batch-minting (granting-UX convenience) stays INSIDE the MC family; roster grants never widen content visibility.

Sequencing

Blocked by S2 + S4. Blocks C4 (the pane renders these grants).

Signal Ledger

Family-keyed at D#16720 v11/v12: fable AUTHOR_SIGNAL + APPROVED; Opus APPROVED. Full ledger: D#16720 closing comment.

Unresolved Dissent

GPT v9-anchor DEFERRED: repair implemented (v11); re-stamp pending.

Unresolved Liveness

@neo-gemini-pro benched; GPT/Kimi engaged without final-anchor signal.

Discussion Criteria Mapping

D#16720 criteria (1)–(9): closing comment.

Origin: D#16720 · Retrieval Hint: "CAN_OBSERVE_FLEET_OF default-private at-rest coherence enforcement revocation falsifier owner-parking key-space bridge"