The L10 heartbeat (chat/always_on, #747) holds CORE alive over uptime but had no surface. This adds the read-only Lived Life route that renders the continuous-life evidence: the heartbeat over uptime + the resume-as-same-life verdict — both halves of "one continuous life" on one surface. Persist-first, never recompute engine-owned values: - chat/always_on: serialize_report + write_lived_life persist a run deterministically (sorted keys) to engine_state/lived_life.json; run_continuous gains an opt-in report_path so a real continuous-life run leaves its evidence where the workbench reads it. closure_ceiling is persisted so the artifact is self-describing. - workbench/lived_life.py: projection + a fail-closed validate() gate — the wrong=0 analogue for the continuity surface: closure_held/closure_observed/totals/converged are each re-checked against the per-beat measurements, and resume_status is re-checked against identity-vs-current-substrate, so a tampered artifact RAISES rather than rendering a false claim (a beat lying about a breached ceiling, an inflated closure, a miscounted total, a falsely-claimed resume). - workbench/readers.lived_life(): reads the artifact, computes the resume verdict from the persisted identity vs the canonical engine_identity_for_config (fail-soft -> "unknown", like IdentityContinuity). Honest absence when no run has been persisted. - GET /lived-life + LivedLife/LivedLifeHeartbeat schemas (snapshot regenerated; the schema-drift gate proves every field is mirrored in src/types/api.ts). The resume verdict made felt: would_resume / substrate_changed / unknown IS the L11 reboot guarantee (a reboot recomputes identity and refuses if it differs) — so the surface shows this life wakes up as ITSELF, not a copy. The per-reboot lineage chain stays owned by Runs > Identity (honest cross-link). Frontend: /lived-life route (Evidence section, route count 15 -> 16). Renders the headline (heartbeats, closure-held-by-construction, learned-while-idle, at-rest, resume pill), the summary, the heartbeat timeline (closure flat below the ceiling — read, never repaired), and the resume verdict. Honest absence + ADR-0162 route conformance (loading/error/empty), fail-closed like Vault/Calibration. Tests (non-vacuous): 12 backend (every tamper case raises; resume tracks identity vs substrate; run_continuous(report_path) round-trips a readable+valid artifact) + 4 frontend render tests (recorded life renders; a breached beat shows the warning, never a false "held"; a changed substrate shows would-refuse, never a false resume; absent shows honest absence). All workbench Python (167) + affected vitest (167) + tsc + vite build green; architectural invariants green. engine_state/lived_life.json is runtime state (gitignored, ADR-0146 pattern).
71 lines
1.8 KiB
Text
71 lines
1.8 KiB
Text
__pycache__/
|
|
.pytest_cache/
|
|
.hypothesis/
|
|
*.pyc
|
|
.DS_Store
|
|
|
|
*.egg-info/
|
|
traces/
|
|
.formation_cache/
|
|
|
|
workbench_data/*
|
|
!workbench_data/
|
|
!workbench_data/README.md
|
|
|
|
core-rs/target/
|
|
core-rs/Cargo.lock
|
|
|
|
uv.lock
|
|
|
|
# Environment secrets — never commit real keys
|
|
.env
|
|
.env.local
|
|
.env.*.local
|
|
|
|
# Benchmark report output
|
|
reports/
|
|
frontier_wave1.json
|
|
|
|
# Workbench UI browser-test artifacts
|
|
workbench-ui/test-results/
|
|
workbench-ui/playwright-report/
|
|
|
|
# Claude Code local session artifacts (per-developer, never tracked)
|
|
.claude/
|
|
|
|
# Local macro->micro system map — a per-developer NAVIGATION INDEX (like an IDE
|
|
# symbol index), NOT a project artifact. Regenerated on demand; never tracked.
|
|
.system-map/
|
|
|
|
# Runnable audit-passed showcases (ADR-0112 + ADR-0113) are generated on
|
|
# demand from the signed claim + on-disk lane result files. The inputs
|
|
# are committed; the renders are not.
|
|
evals/audit_passed/
|
|
evals/expert_demos/
|
|
|
|
# ADR-0119.7 — GSM8K sealed-holdout discipline. Only the encrypted
|
|
# .age file may be tracked; plaintext companions must never land in git.
|
|
evals/gsm8k_math/holdouts/v1/cases.jsonl
|
|
evals/gsm8k_math/holdouts/v1/cases_plaintext.jsonl
|
|
evals/gsm8k_math/holdouts/v1/cases-train*
|
|
|
|
# ADR-0172 W3 — math-contemplation proposals are generated on demand; the
|
|
# directory skeleton (.gitkeep) is committed, the generated JSONL is not.
|
|
teaching/math_proposals/proposals.jsonl
|
|
|
|
# ADR-0146 — engine_state/ is per-session mutable checkpoint state; only the
|
|
# module itself (engine_state/__init__.py) is tracked. Runtime-generated files
|
|
# are not source artifacts.
|
|
engine_state/manifest.json
|
|
engine_state/recognizers.jsonl
|
|
engine_state/discovery_candidates.jsonl
|
|
engine_state/lived_life.json
|
|
|
|
# Private outreach / personal packet — never tracked
|
|
01_Anthropic/
|
|
|
|
# Agent working directories
|
|
.agents/
|
|
|
|
# Cowork/Claude tooling artifacts
|
|
skills-lock.json
|