Repository navigation
feat: expose lensing catch-up freshness in the cockpit #109
Description
Lensing catch-up: structured freshness and a safe manual action
Type: feature
Target: PyAutoMemory
Difficulty: medium
Autonomy: supervised
Priority: high
Status: draft
@PyAutoMemory only. Follow-up to PyAutoBrain#434 (Brain PR #435 and website PR #22).
Original user request (verbatim)
ok go
Approved conversational scope
User asked whether there was a follow-up. Proposed applying the new structured fields to paper-ingestion freshness: last successful ingestion and expected interval, why attention is needed, the existing catch-up command and whether human judgement is needed. User's “ok go” authorizes this implementation. No new agent or automatic ingestion.
Plan
- Use the existing seven-day rule and lensing-specific evidence, avoiding a recent non-lensing activity masking lensing staleness.
- Expose a structured workstream with last verified ingestion, last recorded reading activity, freshness reason, threshold, evidence links and the existing manual
/catch_up lensingaction. - Render Memory's HTML/Markdown banner and cockpit attention item from the same model; healthy work creates no attention noise, missing/invalid evidence remains unknown.
- Verify boundary dates, provenance, scope isolation, uncertainty and feed compatibility; run Memory validation/tests and browser smoke.
Detailed implementation
scripts/board.py: collectcatch_up.ingest_evidence("lensing", root)alongside legacy all-scope last_ingested; preserve legacy fields. Build a purelensing_catch_upmodel against the snapshot's clock. Use the helper's existing cutoff semantics (latest scoped DONE or bib+sources ingestion); explicitly distinguish recorded activity from actual ingestion so DONE is not labelled last success. Publish cutoff, age, seven-day threshold, last_ingestion date/commit, last_read date, source links and canonical healthy/stale/unknown._catch_up_md/_catch_up_htmlconsume this model for a scoped and honestly worded banner;to_statepublishes the model even when healthy, plus an optional attention item when stale/unknown using the newly shipped v1 id/state/reason/actions/recommended_action_id fields. Catch-up is a prompt handoff, safety scientific_judgement; link its actual skill/runbook. Do not invent a scientific decision before candidates are harvested; explain selection's human gate without fabricated decision text.- Missing, malformed or future evidence is unknown, not fresh. Do not clamp future dates to age zero. Preserve existing all-scope fields for consumers. A top-level feed deadline is not appropriate to a single workstream among other Memory queues; publish its deadline in the workstream model instead.
tests/test_board.py: cases at days 6/7/8, absent/bad/future dates, DONE versus actual ingest distinction, lensing vs interests, render/feed parity and action/evidence metadata. Validate against Brain's existing feed validator without changing the shared contract.- Update the existing README board section with the structured workstream and freshness semantics. No science/wiki/bibliography writes, catch-up execution, new workflow scheduling, Brain changes or website changes.
Branch survey: Memory main clean, behind origin/main by 1; helper fetched current origin/main for the new isolated feature/memory-cockpit-catch-up worktree. No active claims. Mind isolated branch codex/memory-cockpit-catch-up.
Acceptance: a stale lensing cutoff yields one clear attention row with date, reason, seven-day threshold, evidence and manual action; recent activity in another domain cannot suppress it; healthy/unknown remain distinguishable without pixels.
Activity
Jammy2211 commentedon Oct 1, 2026
Implementation handoff — 2026-10-01
/home/jammy/Code/PyAutoLabs/.worktrees/memory-cockpit-catch-up/PyAutoMemory, branchfeature/memory-cockpit-catch-up; no source commit/push/PR yet.scripts/board.py,tests/test_board.py,README.md. One pure lensing model drives board HTML/Markdown and feed row. Actual ingestion is separate from DONE activity; legacy all-scope fields preserved. Explicit manual scientific-judgement action plus runbook/evidence links. Unknown is not fresh; healthy has no attention row.tests.log,validation.log,checks/{live,stale,unknown}-state.json, browser.py/screenshots, implementation.patch and pr-body.md. Live evidence: last lensing activity 2026-09-11, stale under seven-day policy.release validation FAILED (stage integrate). Other reasons:workspace validation not passing (0 failed, 1 timeout, cloud#36404726969: autolens_test scripts/multi_dataset/rectangular.py);manifest drift: public front-door organ tables (generated) — 1 mismatch(es) vs PyAutoMind/repos.yaml.Jammy2211 commentedon Oct 1, 2026
Heart RED development override — Memory #109
Live user authorization: “I authorize”, in direct response to “Ship Memory #109 despite Heart RED”. Commit, push and opening the pending-release PR only; no merge or release authorization.
Heart RED:
release validation FAILED (stage integrate)(snapshot 2026-10-01T10:10:03.098482+00:00).Other reasons:
workspace validation not passing (0 failed, 1 timeout, cloud#36404726969: autolens_test scripts/multi_dataset/rectangular.py);manifest drift: public front-door organ tables (generated) — 1 mismatch(es) vs PyAutoMind/repos.yaml.Passed gates: 254 Memory tests, make validate, shared feed validator for live/stale/unknown data, Chromium mobile/desktop light/dark, cockpit action/clipboard/runbook checks and in-session diff/visual review. No independent review claimed. Tested diff unchanged before shipping.
Jammy2211 commentedon Oct 1, 2026
PR opened
#110 —
92b15c2, pending-release.Lensing-specific freshness now backs the banner and cockpit row, preserving actual-ingestion versus queue-completion provenance and the manual catch-up action. 254 tests, make validate, feed compatibility and browser checks passed; tested diff unchanged before commit.
Shipped under live user “I authorize” to the task-specific Heart RED request. No merge/release performed. Next: human
/prmafter CI to merge and close out #109.Jammy2211 commentedon Oct 1, 2026
Shipped
Merged #110 as dc9c3b5 under the current human
/prmauthorization. All Actions runs/jobs on head 92b15c2 were checked: validate run 36847897313 and its validate job succeeded; PR CLEAN/MERGEABLE. Git ancestry confirms the task branch is merged.The Memory board and cockpit now share scoped lensing freshness, distinguish ingestion from queue completion, expose provenance and a manual scientific-judgement catch-up action. 254 local tests, repository validation, feed and browser checks passed.
Task record/dashboard close-out follows. Local evidence is preserved under
organs/PyAutoMind/tmp/memory-cockpit-catch-up-evidence/. No ingestion or library release performed.