* feat(l10): autonomous idle frontier-contemplation — the always-on life learns on its own Frontier survey move #2, path (c): give the always-on idle life a stream of experience via SYMBOLIC intake (not the afferent→field seam, which is deferred pending a commensurability ruling — docs/analysis/afferent-field-ingest-scope-2026-06-15.md). The idle heartbeat converges (idle_tick drains a finite backlog + saturates is-a closure, then does nothing forever); this makes it autonomously MINE its frontier with no user turn. Reuse-heavy (the mechanism largely existed): a gated idle pass wires ADR-0080 contemplation into the always-on loop. - core/config.py: contemplate_frontier_during_idle (default off → no behavior change). - chat/runtime.py: idle_tick pass 2b — when on, runs core.contemplation.run_contemplation() (mines the checked-in frontier-compare reports) and persists a reviewable ContemplationRun to <engine_state>/contemplation_runs/idle_<substrate_hash>.json. IDEMPOTENT per frontier (an already-mined frontier is not re-persisted → the life converges, no churn) and MEMOIZED per session (the static frontier is mined once, not re-read every beat). SPECULATIVE-only (ADR-0080: ContemplationFinding.__post_init__ RAISES if not SPECULATIVE → wrong=0 by construction; never ratified here — the HITL path is untouched). IdleTickResult gains frontier_findings. - chat/always_on.py: run_continuous did_work + HeartbeatRecord count frontier work, so the heartbeat/soak convergence (H3) stays honest. - core/cli.py: `core always-on --contemplate-frontier` (explicit learning-daemon mode) + honest per-beat log ("+N findings"). Adversarial 3-lens review (wrong=0/convergence, determinism/trust-boundary, test-vacuity) found 7; fixed the real ones: the MEDIUM torn-write (write_contemplation_run is now atomic temp+os.replace — the indefinite-uptime daemon expects SIGKILL mid-write, and the skip-guard would never repair a torn canonical file), the gitignore breadth (contemplation_runs/ at any engine-state root), the 64-bit filename truncation (full substrate_hash), and the re-mine-every-beat cost (session memoization). Deferred + documented: the shared contemplation miner embeds absolute report paths in finding CONTENT — a portability wrinkle that does NOT affect wrong=0/convergence/soak determinism (those key on the content-only substrate_hash) and touches shared code + its test surface; a follow-up. Tests (non-vacuous): 7 — off-by-default (no behavior change), mines-when-enabled, findings-SPECULATIVE (wrong=0), converges-idempotent, heartbeat-mines-then-converges, mines-once-per-session (memoization), atomic-no-orphan. 55 idle/contemplation/always-on + 96 invariants/contemplation + 28 smoke green; `core always-on --contemplate-frontier` mines end-to-end. engine_state contemplation_runs are per-life runtime state (gitignored). * fix(l10): isolate idle frontier pass + persist frontier_findings (#758) Three review blockers on the autonomous idle frontier-contemplation pass: 1. Daemon isolation. idle_tick's pass 2b called run_contemplation / write_contemplation_run bare inside the always-on loop (run_continuous wraps idle_tick in nothing but an exit-checkpoint finally), so a malformed frontier report or a transient FS fault would propagate out and KILL the continuous life. Wrap the optional pass best-effort (the exit-checkpoint boundary idiom): degrade to 0 findings + RuntimeWarning, leave did_work untouched, let a later beat retry. 2. Durable did_work explanation. HeartbeatRecord carried frontier_findings but serialize_report omitted it and AlwaysOnReport had no run total, so lived_life.json could show did_work=true with facts=0/proposals=0 and no persisted cause. Persist frontier_findings per-record + total_frontier_findings. 3. Honest HITL claim. The docstring/CLI/config said findings are "reviewable via the HITL path", but the existing HITL queue + workbench reader scan <repo>/contemplation/runs while the pass writes <engine_state>/contemplation_runs/. Narrow the claim to "persisted reviewable artifact, not yet in the HITL queue" (wiring that discovery is a follow-up). Tests: 4 new non-vacuous regressions (mining-failure degrade, write-failure degrade, always-on loop survives frontier failure, lived_life persists frontier_findings) — all fail against the unpatched pass. 38 L10/always-on/ workbench tests green.
74 lines
2 KiB
Text
74 lines
2 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
|
|
engine_state/always_on.lock
|
|
# per-life idle frontier-contemplation runs — any engine-state root (incl. CORE_ENGINE_STATE_DIR).
|
|
contemplation_runs/
|
|
|
|
# Private outreach / personal packet — never tracked
|
|
01_Anthropic/
|
|
|
|
# Agent working directories
|
|
.agents/
|
|
|
|
# Cowork/Claude tooling artifacts
|
|
skills-lock.json
|