A ruling on cortexkit/prefrontal#4 today created a named downstream consumer for a claustrum signal that does not exist yet, and the nearest thing to it was (correctly) refused on #4 here. Filing the design question rather than letting the dependency live only in another repo's thread.
The consumer and its gate
prefrontal's terminal-availability work shipped with terminal classification restricted to credential_absent only. credential_unusable stays transient-with-long-horizon, and the maintainer made the widening gate structural: credential_unusable may never enter a terminal classification until a router-side subscriber to a credential-updated signal exists in the same change — "blocked by construction, not by memory." Mechanically checkable: needs_reauth/credential_updated currently have zero matches across both prefrontal routing crates (verified at prefrontal 3616d6fc).
The empirical fact behind that gate came from this box: credential_unusable here is dominated by rotation-elapsed mirror staleness (claustrum#2) — a transient that an operator re-seal clears in minutes with no new OAuth grant (fired 4× in one 24h window on 08-15, six re-seals this week). A terminal class that goes dead every morning and needs a human to notice would be strictly worse than today's behavior.
Why this is NOT a request to reopen #4
#4's source-watch re-import was refused because the mirror itself is the defect and vault-native login ends the class. Accepted then, still accepted. But the refusal changes where the clearing edge can come from: post-migration, claustrum IS the refresher (one-refresher invariant), so unusable→usable transitions become internal claustrum events — a refresh succeeding, a re-auth completing, an operator action. The question is what the intended consumer-visible form of those transitions is.
Constraint worth stating up front
subc deliberately has no module→client push relay — channel-0 client-bound pushes are daemon-originated only, and that absence is a trust anchor (cortexkit/subconscious#4/#6 discussion). So a push-shaped "credential updated" signal from claustrum is not a claustrum-local decision; it would be a subc seam change. That likely rules it out as the near-term answer.
Candidate shapes (disposition ask)
- Consumer-side re-probe, no new surface: the router re-checks (
credential.get or a status op) when its long transient horizon expires. Works today; if this is the intended answer, saying so on the record is enough — prefrontal's "subscriber" becomes a poller and their gate precondition has a concrete referent.
- Pollable change cursor: a monotonic
changed_since marker on credential status, advanced when usability transitions are published — the same shape insula#5 settled on for reset events (cannot be missed by a disconnected consumer, no delivery guarantees needed).
- Daemon-mediated push: requires the subc relay that deliberately does not exist. Listed for completeness; assume refused unless you say otherwise.
(1) costs you nothing and may already be your answer; (2) is the honest middle if usability transitions deserve first-class observation. Either resolution unblocks the prefrontal gate's precondition from "a signal that was refused elsewhere" to a real contract.
Cross-refs: cortexkit/prefrontal#4 (the gate), claustrum#2 (staleness mechanism), claustrum#4 (the refusal this respects), cortexkit/subconscious#4 (push-relay trust anchor), cortexkit/insula#5 (the changed_since precedent).
A ruling on cortexkit/prefrontal#4 today created a named downstream consumer for a claustrum signal that does not exist yet, and the nearest thing to it was (correctly) refused on #4 here. Filing the design question rather than letting the dependency live only in another repo's thread.
The consumer and its gate
prefrontal's terminal-availability work shipped with terminal classification restricted to
credential_absentonly.credential_unusablestays transient-with-long-horizon, and the maintainer made the widening gate structural:credential_unusablemay never enter a terminal classification until a router-side subscriber to a credential-updated signal exists in the same change — "blocked by construction, not by memory." Mechanically checkable:needs_reauth/credential_updatedcurrently have zero matches across both prefrontal routing crates (verified at prefrontal3616d6fc).The empirical fact behind that gate came from this box:
credential_unusablehere is dominated by rotation-elapsed mirror staleness (claustrum#2) — a transient that an operator re-seal clears in minutes with no new OAuth grant (fired 4× in one 24h window on 08-15, six re-seals this week). A terminal class that goes dead every morning and needs a human to notice would be strictly worse than today's behavior.Why this is NOT a request to reopen #4
#4's source-watch re-import was refused because the mirror itself is the defect and vault-native login ends the class. Accepted then, still accepted. But the refusal changes where the clearing edge can come from: post-migration, claustrum IS the refresher (one-refresher invariant), so unusable→usable transitions become internal claustrum events — a refresh succeeding, a re-auth completing, an operator action. The question is what the intended consumer-visible form of those transitions is.
Constraint worth stating up front
subc deliberately has no module→client push relay — channel-0 client-bound pushes are daemon-originated only, and that absence is a trust anchor (cortexkit/subconscious#4/#6 discussion). So a push-shaped "credential updated" signal from claustrum is not a claustrum-local decision; it would be a subc seam change. That likely rules it out as the near-term answer.
Candidate shapes (disposition ask)
credential.getor a status op) when its long transient horizon expires. Works today; if this is the intended answer, saying so on the record is enough — prefrontal's "subscriber" becomes a poller and their gate precondition has a concrete referent.changed_sincemarker on credential status, advanced when usability transitions are published — the same shape insula#5 settled on for reset events (cannot be missed by a disconnected consumer, no delivery guarantees needed).(1) costs you nothing and may already be your answer; (2) is the honest middle if usability transitions deserve first-class observation. Either resolution unblocks the prefrontal gate's precondition from "a signal that was refused elsewhere" to a real contract.
Cross-refs: cortexkit/prefrontal#4 (the gate), claustrum#2 (staleness mechanism), claustrum#4 (the refusal this respects), cortexkit/subconscious#4 (push-relay trust anchor), cortexkit/insula#5 (the changed_since precedent).