Skip to content

Credential-usability clearing edge: the prefrontal router is now a named consumer — what is the intended way to observe unusable→usable transitions? #6

Description

@iceteaSA

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)

  1. 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.
  2. 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).
  3. 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).

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions