core/docs
Shay 18e25580f3 feat(l10): always-on daemon/CLI — the process that runs the continuous-life heartbeat
The L10 heartbeat loop (run_continuous) had no process to drive it; `core always-on`
is that process — the T-experience spine made runnable. It ticks idle_tick on a wall-clock
cadence so the engine LIVES and LEARNS with no user turn, persists lived_life.json (the
workbench Lived Life surface) + the checkpoint, and resumes the SAME life on restart.

- chat/always_on.py: run_continuous gains unbounded operation (heartbeats=None, runs until
  stop) + an interruptible inter-beat wait (_sleep_until_stop) so shutdown latency is one
  slice, not the cadence interval. Persists the run's identity pack ids (resume-verdict
  faithfulness). on_heartbeat is now best-effort (a broken log pipe can't kill the life).
- chat/always_on_daemon.py (new): the daemon shell — a single-instance OS lock (fcntl.flock:
  kernel-held, atomic, auto-released on death — no stale window, no PID-reuse, no half-written
  race), SIGINT/SIGTERM -> graceful stop (handlers saved/restored), the continuous-life config
  FORCED on, ephemeral (--no-load-state) writes no durable artifact. Foreground + explicit:
  no hidden background execution (CLAUDE.md); only writes the engine-state dir it was given.
- core/cli.py: `core always-on [--interval --max-beats --no-load-state --quiet]` with per-beat
  + summary logging; validates --interval; reports IdentityContinuityError / IncompatibleEngine
  StateError (the "different life / newer build" cases) as clean refusals, not tracebacks.
- workbench/readers.py: ENGINE_STATE_ROOT now honors CORE_ENGINE_STATE_DIR (= the daemon's
  resolved dir), so the workbench can't be split-brained (reading REPO_ROOT/engine_state while
  the daemon writes elsewhere); the Lived Life resume verdict recomputes from the persisted
  pack config, not a default config (no false substrate_changed for a non-default-pack life).
- Lived Life absence state now points at the real `core always-on` command (loop closed).

Adversarial 4-lens review (lock/concurrency, signals/shutdown, invariants/trust-boundary,
test-vacuity/CLI) caught 16 findings; this fixes all real ones — the HIGH lock races (two
daemons over one life), the env split-brain, the IO-kill, the uncaught identity/schema errors,
the unvalidated interval, the ephemeral-artifact shadow, and the resume-verdict pack-id bug —
and closes the two test-coverage gaps it flagged (real SIGTERM path + config-forcing-at-the-
runtime boundary).

Tests (non-vacuous): 11 daemon (flock live-holder refusal, leftover-lock reclaim, unbounded+
stop, interruptible sleep, forced-config-at-boundary, no-load-state guard, REAL SIGTERM
subprocess) + the reader pack-id discrimination test (fails under the old default-config bug).
245 workbench+invariants+always-on Python green; frontend tsc + vitest green; `core always-on`
verified end-to-end (bounded, real SIGTERM graceful stop, interval rejection).

engine_state/always_on.lock is runtime state (gitignored, ADR-0146 pattern).
2026-06-14 17:33:37 -07:00
..
adr
analysis Merge pull request #745 from AssetOverflow/codex/comprehension-coverage-wall-map 2026-06-14 15:18:48 -07:00
architecture
audit audit(l10-l11): lookback review lived spine 2026-06-05 15:52:40 -07:00
brief Add Brain Corp technical brief 2026-06-02 12:07:32 -07:00
briefs
curriculum
decisions docs(workbench): note the /health liveness signal in ADR-0162 footer spec 2026-06-14 17:18:13 -07:00
evals
handoff docs(handoff): scope the proof-carrying coherence-promotion wiring decision 2026-06-14 15:00:33 -07:00
handoffs
implementation
issues feat(teaching): ADR-0218 P3 — proof-carrying coherence promotion 2026-06-11 17:02:45 -07:00
lab Add passive tabletop lab protocol 2026-06-06 12:37:57 -07:00
planning docs(planning): record #700 deductive entailment demo as merged 2026-06-12 16:34:53 -07:00
plans Add sensorium compiler law and tile vision 2026-06-03 19:58:36 -07:00
research docs(research): select quantitative field reasoner wedge 2026-06-04 17:23:57 -07:00
sessions docs(scoping): epistemic disclosure bus (Stage 2 / VERIFIED v1) + Q1 question-articulation briefs 2026-06-08 14:53:47 -07:00
workbench feat(l10): always-on daemon/CLI — the process that runs the continuous-life heartbeat 2026-06-14 17:33:37 -07:00
zig Merge pull request #511 from AssetOverflow/feat/adr-0180-crdt-contract-lock 2026-05-31 20:30:26 -07:00
admissibility-exemplars.md
audio_pipeline_overview.md
capability_roadmap.md
claims_ledger.md Merge pull request #546 from AssetOverflow/docs/reconcile-current-state-2026-06-03 2026-06-04 07:14:39 -07:00
ethics_packs.md
EVAL_AUDIT_2026-05-20.md
eval_methodology.md
formation_pipeline_plan.md
frontier_baselines.md
gaps.md
hitl-backpressure.md
holdout_recipients.txt
identity_packs.md
master-plan-post-substrate-audit.md
memo.html memo: tighten for Karpathy + Anthropic exec audience 2026-06-10 16:10:47 -07:00
model_dependency_size_tally.md
pack_inventory_2026-05-21.md
position_paper.md fix(demo): harden epistemic truth-state authority — sealed corpus + entailment-decided inference 2026-06-11 23:38:03 -07:00
PROGRESS.md
recognizer-registry.md
refusal-taxonomy.md
reviewers.yaml docs(claims): ADR-0200 reconciliation — expert claim to audit-passed truth 2026-06-02 10:06:16 -07:00
runtime_contracts.md feat(workbench): Wave M Phase C legibility — pipeline record, contemplation, identity continuity 2026-06-13 15:44:31 -07:00
RUST.md
safety_packs.md
teaching_order.md
test-debt-quarantine.md
truth_seeking_schema.md
Whitepaper.md
Yellowpaper.md