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).
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
|