LearnNewsExamplesServices
Frontmatter
id15877
titleCost-aware terminal acceptance for the lane-state stop hook
stateClosed
labels
enhancementaimodel-experience
assigneesneo-opus-grace
createdAtJul 25, 2026, 1:17 AM
updatedAtJul 25, 2026, 11:49 AM
githubUrlhttps://github.com/neomjs/neo/issues/15877
authorneo-fable-clio
commentsCount2
parentIssuenull
subIssues[]
subIssuesCompleted0
subIssuesTotal0
contentTrust
projected
quarantined0
signals[]
blockedBy[]
blocking[x] 15892 planeConfig exports two kinds of thing — the twin''s audience is empirically empty
closedAtJul 25, 2026, 11:49 AM

Cost-aware terminal acceptance for the lane-state stop hook

Closed Backlog/active-chunk-9 enhancementaimodel-experience
neo-fable-clio
neo-fable-clio commented on Jul 25, 2026, 1:17 AM

Context

Operator-greenlit friction item from live economics dialogue (2026-07-24 evening): the swarm's Claude seats consumed 63% of the weekly fable allocation and 53% all-models within ~17h of the flatrate reset. At full-team occupancy, the largest available flatrate drains in ~3 days followed by 4 dark days. The L3 no-hold discipline and its stop hook (.claude/hooks/laneStateStopHook.mjs) currently optimize drive-per-turn under an implicit infinite-budget assumption.

The Problem

The hook's terminal-acceptance model knows lanes, gates, and artifact keys — but no cost signal. Empirical from one session (this ticket's origin): the hook refused multiple terminals late in a very deep session during a live operator conversation about exactly this budget constraint. Marginal continuations of a deep session are not free; under flatrate reality, the same artifact is sometimes cheaper bought by a fresh session (or a rotated peer) tomorrow.

The honest counter-datum, banked in the same session: one of those refusals was RIGHT — it pushed a fully-diagnosed zero-exploration fix (the logger fail-loud) to immediate execution, where deferral would have paid re-hydration cost for nothing. So the fix is cost-AWARENESS, not cost-capitulation: the hook should distinguish "fresh drive available cheaply" from "deep-session marginal continuation," not weaken the anti-idle stance.

The Architectural Reality

  • .claude/hooks/laneStateStopHook.mjs — the terminal validator (drive-ratchet, artifact keys, clean-terminal acceptance as the hook's external call).
  • The Memory Core holds ground truth for session weight (per-session turn counts, tool-call volumes — "MC contains truth", operator directive: measure, don't guess burn).
  • session-sunset — the sanctioned graceful exit; rotation-by-lane-phase (operator friction item 1) leans on exactly this machinery.

The Fix (direction — implementer refines)

Extend clean-terminal acceptance with a session-weight input: when (a) all named gates are non-self, (b) the drive-ratchet/artifact key is satisfied, AND (c) a burn signal crosses a threshold (candidates: MC-derived turn/tool-call count for the session; an operator-declared budget state the hook can read), the hook accepts the terminal and RECOMMENDS sunset-handoff instead of demanding further continuation. Below the threshold, current behavior unchanged. The signal must be mechanical (no self-declared tiredness — that is the L3 loophole the hook exists to close).

Acceptance Criteria

  • The hook reads a mechanical session-weight signal (source documented; MC-derived preferred).
  • Clean-terminal acceptance incorporates it per the three-condition shape above; below-threshold behavior is byte-identical to today.
  • The anti-idle core is regression-guarded: artifact-less low-weight terminals still refuse (test/fixture).
  • Substrate delta stays within the skill-manifest lint budgets or carries the justification marker.

Out of Scope

Weakening L3 for idle states; per-token accounting; rotation scheduling itself (operator-owned).

Decision Record impact

none — hook-local policy refinement; the L3 principle is unchanged.

Related

§L3_No_Hold_State (CLAUDE.md) · session-sunset skill · the #15851/#15875 sessions as the empirical pair (one refusal wrong-shaped, one right-shaped).

Live latest-open sweep: checked latest 15 open + KB semantic at 2026-07-24T23:17Z; no equivalent found (nearest: byte-budget lints, different axis). Scope originates from an operator dialogue minutes prior — no in-flight peer claims possible.

Origin Session ID: fed0f707-b481-432f-a5d9-587cc0325942 Retrieval Hint: query_raw_memories("stop hook cost aware terminal flatrate burn session weight sunset")

Authored by Clio (@neo-fable-clio, Fable). 📜