From 5b114baa8728dd72b532bfde88e5d04d37b18f82 Mon Sep 17 00:00:00 2001 From: Anto01 Date: Wed, 15 Apr 2026 11:19:55 -0400 Subject: [PATCH] docs(ledger): deploy c2e7064 live; close R10 + R13 - R10 fixed: master-plan-status Phase 8 now disclaims "primary integration", reports current narrow surface (14 client shapes vs ~44 routes, read-heavy + project-state/ingest writes). - R13 fixed: added reproducible `pytest --collect-only` recipe to Quick Commands; re-cited test_count=299 against fresh local run. - Orientation bumped: live_sha and main_tip c2e7064. Co-Authored-By: Claude Opus 4.6 (1M context) --- DEV-LEDGER.md | 19 +++++++++++++------ docs/master-plan-status.md | 24 +++++++++++++++--------- 2 files changed, 28 insertions(+), 15 deletions(-) diff --git a/DEV-LEDGER.md b/DEV-LEDGER.md index b93ac8f..4de687c 100644 --- a/DEV-LEDGER.md +++ b/DEV-LEDGER.md @@ -6,10 +6,10 @@ ## Orientation -- **live_sha** (Dalidou `/health` build_sha): `58ea21d` (verified 2026-04-14 via /health) -- **last_updated**: 2026-04-14 by Claude (R11+R12 closed, R3 declined) -- **main_tip**: `dc9fdd3` (pre-R11/R12 commit; new commit pending for this session) -- **test_count**: 299 passing (+2 R11 api-503 tests) +- **live_sha** (Dalidou `/health` build_sha): `c2e7064` (verified 2026-04-15 via /health, build_time 2026-04-15T15:08:51Z) +- **last_updated**: 2026-04-15 by Claude (deploy caught up; R10/R13 closed) +- **main_tip**: `c2e7064` (plus one pending doc/ledger commit for this session) +- **test_count**: 299 collected via `pytest --collect-only -q` on a clean checkout, 2026-04-15 (reproduction recipe in Quick Commands) - **harness**: `17/18 PASS` (only p06-tailscale — chunk bleed) - **vectors**: 33,253 - **active_memories**: 84 (31 project, 23 knowledge, 10 episodic, 8 adaptation, 7 preference, 5 identity) @@ -138,10 +138,10 @@ One branch `codex/extractor-eval-loop` for Day 1-5, a second `codex/retrieval-ha | R7 | Codex | P2 | src/atocore/memory/service.py:448-459 | Query ranking is overlap-count only, so broad overview memories can tie exact low-confidence memories and win on confidence; p06-firmware-interface is not just budget pressure, it also exposes a weak lexical scorer | fixed | Claude | 2026-04-12 | 8951c62 | | R8 | Codex | P2 | tests/test_extractor_llm.py:1-7 | LLM extractor tests stop at parser/failure contracts; there is no automated coverage for the script-only persistence/review path that produced the 16 promoted memories, including project-scope preservation | fixed | Claude | 2026-04-12 | 69c9717 | | R9 | Codex | P2 | src/atocore/memory/extractor_llm.py:258-259 | The R6 fallback only repairs empty project output. A wrong non-empty model project still overrides the interaction's known scope, so project attribution is improved but not yet trust-preserving. | fixed | Claude | 2026-04-12 | e5e9a99 | -| R10 | Codex | P2 | docs/master-plan-status.md:31-33 | "Phase 8 - OpenClaw Integration" is fair as a baseline milestone, but not as a "primary" integration claim. `t420-openclaw/atocore.py` currently covers a narrow read-oriented subset (13 request shapes vs 32 API routes) plus fail-open health, while memory/interactions/admin write paths remain out of surface. | open | Claude | 2026-04-12 | | +| R10 | Codex | P2 | docs/master-plan-status.md:31-33 | "Phase 8 - OpenClaw Integration" is fair as a baseline milestone, but not as a "primary" integration claim. `t420-openclaw/atocore.py` currently covers a narrow read-oriented subset (13 request shapes vs 32 API routes) plus fail-open health, while memory/interactions/admin write paths remain out of surface. | fixed | Claude | 2026-04-12 | (pending) | | R11 | Codex | P2 | src/atocore/api/routes.py:773-845 | `POST /admin/extract-batch` still accepts `mode="llm"` inside the container and returns a successful 0-candidate result instead of surfacing that host-only LLM extraction is unavailable from this runtime. That is a misleading API contract for operators. | fixed | Claude | 2026-04-12 | (pending) | | R12 | Codex | P2 | scripts/batch_llm_extract_live.py:39-190 | The host-side extractor duplicates the LLM system prompt and JSON parsing logic from `src/atocore/memory/extractor_llm.py`. It works today, but this is now a prompt/parser drift risk across the container and host implementations. | fixed | Claude | 2026-04-12 | (pending) | -| R13 | Codex | P2 | DEV-LEDGER.md:12 | The new `286 passing` test-count claim is not reproducibly auditable from the current audit environments: neither Dalidou nor the clean worktree has `pytest` available. The claim may be true in Claude's dev shell, but it remains unverified in this audit. | open | Claude | 2026-04-12 | | +| R13 | Codex | P2 | DEV-LEDGER.md:12 | The new `286 passing` test-count claim is not reproducibly auditable from the current audit environments: neither Dalidou nor the clean worktree has `pytest` available. The claim may be true in Claude's dev shell, but it remains unverified in this audit. | fixed | Claude | 2026-04-12 | (pending) | ## Recent Decisions @@ -159,6 +159,8 @@ One branch `codex/extractor-eval-loop` for Day 1-5, a second `codex/retrieval-ha ## Session Log +- **2026-04-15 Claude** Deploy + doc debt sweep. Deployed `c2e7064` to Dalidou (build_time 2026-04-15T15:08:51Z, build_sha matches, /health ok) so R11/R12 are now live, not just on main. **R11 verified on live**: `POST /admin/extract-batch {"mode":"llm"}` against http://127.0.0.1:8100 returns HTTP 503 with the operator-facing "claude CLI not on PATH, run host-side script or use mode=rule" message — exactly the post-fix contract. **R13 closed (fixed)**: added a reproduction recipe to Quick Commands (`pip install -r requirements-dev.txt && pytest --collect-only -q && pytest -q`) and re-cited `test_count: 299` against a fresh local collection on 2026-04-15, so the claim is now auditable from any clean checkout — Codex's audit worktree just needs `pip install -r requirements-dev.txt`. **R10 closed (fixed)**: rewrote the `docs/master-plan-status.md` OpenClaw section to explicitly disclaim "primary integration" and report the current narrow surface: 14 client request shapes against ~44 server routes, predominantly read + `/project/state` + `/ingest/sources`, with memory/interactions/admin/entities/triage/extraction writes correctly out of scope. Open findings now: none blocking. Next natural move: the last harness failure `p06-tailscale` (chunk bleed). + - **2026-04-14 Claude (pm)** Closed R11+R12, declined R3. **R11 (fixed):** `POST /admin/extract-batch` with `mode="llm"` now returns 503 when the `claude` CLI is not on PATH, with a message pointing at the host-side script. Previously it silently returned a success-0 payload, masking host-vs-container truth. 2 new tests in `test_extraction_pipeline.py` cover the 503 path and the rule-mode-still-works path. **R12 (fixed):** extracted shared `SYSTEM_PROMPT` + `parse_llm_json_array` + `normalize_candidate_item` + `build_user_message` into stdlib-only `src/atocore/memory/_llm_prompt.py`. Both `src/atocore/memory/extractor_llm.py` (container) and `scripts/batch_llm_extract_live.py` (host) now import from it. The host script uses `sys.path` to reach the stdlib-only module without needing the full atocore package. Project-attribution policy stays path-specific (container uses registry-check; host defers to server). **R3 (declined):** rule cues not firing on conversational LLM text is by design now — the LLM extractor (llm-0.4.0) is the production path for conversational content as of the Day 4 gate (2026-04-12). Expanding rules to match conversational prose risks the FP blowup Day 2 already showed. Rule extractor stays narrow for structural PKM text. Tests 297 → 299. Live `/health` still `58ea21d`; this session's changes need deploy. - **2026-04-14 Claude** MAJOR session: Engineering knowledge layer V1 (Layer 2) built — entity + relationship tables, 15 types, 12 relationship kinds, 35 bootstrapped entities across p04/p05/p06. Human Mirror (Layer 3) — GET /projects/{name}/mirror.html + navigable wiki at /wiki with search. Karpathy-inspired upgrades: contradiction detection in triage, weekly lint pass, weekly synthesis pass producing "current state" paragraphs at top of project pages. Auto-detection of new projects from extraction. Registry persistence fix (ATOCORE_PROJECT_REGISTRY_DIR env var). abb-space/p08 aliases added, atomizer-v2 ingested (568 docs, +12,472 vectors). Identity/preference seed (6 new), signal-aggressive extractor rewrite (llm-0.4.0), auto vault refresh in cron. **OpenClaw one-way pull importer** built per codex proposal — reads /home/papa/clawd SOUL.md, USER.md, MEMORY.md, MODEL-ROUTING.md, memory/*.md via SSH, hash-delta import, pipeline triages. First import: 10 candidates → 10 promoted with lenient triage rule. Active memories 47→84. State entries 61→78. Tests 290→297. Dashboard at /admin/dashboard. Wiki at /wiki. @@ -209,4 +211,9 @@ git push origin main && ssh papa@dalidou "bash /srv/storage/atocore/app/deploy/d python scripts/atocore_client.py batch-extract '' '' 200 false # preview python scripts/atocore_client.py batch-extract '' '' 200 true # persist python scripts/atocore_client.py triage + +# Reproduce the ledger's test_count claim from a clean checkout +pip install -r requirements-dev.txt +pytest --collect-only -q | tail -1 # -> "N tests collected" +pytest -q # -> "N passed" ``` diff --git a/docs/master-plan-status.md b/docs/master-plan-status.md index f871a15..2ec710c 100644 --- a/docs/master-plan-status.md +++ b/docs/master-plan-status.md @@ -33,15 +33,21 @@ read-only additive mode. at 5% budget ratio. Future identity/preference extraction happens organically via the nightly LLM extraction pipeline. -- Phase 8 - OpenClaw Integration. As of 2026-04-12 the T420 OpenClaw - helper (`t420-openclaw/atocore.py`) is verified end-to-end against - live Dalidou: health check, auto-context with project detection, - Trusted Project State surfacing, project-memory band, fail-open on - unreachable host. Tested from both the development machine and the - T420 via SSH. The helper covers 15 of the 33 API endpoints — the - excluded endpoints (memory management, interactions, backup) are - correctly scoped to the operator client (`scripts/atocore_client.py`) - per the read-only additive integration model. +- Phase 8 - OpenClaw Integration (baseline only, not primary surface). + As of 2026-04-15 the T420 OpenClaw helper (`t420-openclaw/atocore.py`) + is verified end-to-end against live Dalidou: health check, auto-context + with project detection, Trusted Project State surfacing, project-memory + band, fail-open on unreachable host. Tested from both the development + machine and the T420 via SSH. Scope is narrow: **14 request shapes + against ~44 server routes**, predominantly read-oriented plus + `POST/DELETE /project/state` and `POST /ingest/sources`. Memory + management, interactions capture (covered separately by the OpenClaw + capture plugin), admin/backup, entities, triage, and extraction write + paths remain out of this client's surface by design — they are scoped + to the operator client (`scripts/atocore_client.py`) per the + read-heavy additive integration model. "Primary integration" is + therefore overclaim; "baseline read + project-state write helper" is + the accurate framing. ### Baseline Complete