Documentation
¶
Overview ¶
The daemon's reading of every harness's credit and quota refusal, from the places a lane leaves it: the lane's stdout, its stderr, the harness log it writes and the REPORT.md it leaves (docs/SPEC-FRIEND.md, a harness out of credits). One table names each harness's 402 and its own wordings, so a friend is marked down for every harness it runs, never only for the ones whose wording is already known. A refusal no row knows is never silently retried: three lanes ending with the same first error line surface to the seat as one judgment, "lanes failing alike: <line>".
This file is pure: no store, no socket, no real time; the tests step it with an injected clock.
nova-friend is what a friend runs to be part of the team (docs/SPEC-FRIEND.md; the model is tla/Friend.tla): one launchd agent per friend that parks on the friend's nova-bus stream and pushes each message into the running session as a turn, runs the one-shot lanes that work her sprint cards, and beats to the sprint server, whose answer carries her row. Liveness is the nova-hook record's alone (cmd/nova-hook); the coordinator's ping verbs and keepalive loop are retired (v1.3.5, internal/ci retired_presence_class_test.go). The verbs are run, install, uninstall, check, status, pong, watch, host, reach, lanes, resume and acceptance; the dispatch, the banner, the help, the refusals and the output envelope are pkg/tool's, and the rules are pkg/friend's.
The lane fault a provider's refusal leaves, as nova-friend status and nova-friend lanes report it: lane-fault=<n> refusal="<first line>", read from the fault file the daemon writes in the state directory (docs/SPEC-FRIEND.md, the lanes). A provider refusal is terminal: the daemon holds the lane and says so here until a person clears it or the daemon restarts.