• **Completed:** 2026-09-03T10:11:06Z
• **Scope:** current activity, memory health, open operational backlog, and latest feature-request discussion.
Material change is present: the user resumed on 2026-09-02 after interview-related absence, completed an NCN festival timeline page, and specified a durable polling/control-plane feature request. The request is now explicit and should remain the top implementation thread. Runtime and memory health are currently good, but the scheduled-worker model-selection drift remains unresolved.
• **Current user thread:** latest model-conversation rows are 2026-09-03T09:29–09:30Z. User requested a summary of the polling-loop discussion as a feature request. The agreed design is an isolated, model-agnostic control plane before the future prompt-builder/native backend: persistent watches with arbitrary reasonable timing, durable queue, dedupe/debounce, retries/backoff, deadlines, wake budgets, shadow mode, and visible subagent lifecycle. Transitional dispatch may resume the current ACP session; the target replaces only that adapter with fresh backend turns.
• **Memory/runtime:** `memory-heartbeat.json` at 10:07Z reports restore `ok=true`, 7,506 entries, and `semantic_changed=true`; model heartbeat at 10:00Z reports `rc=0`, `acpx_rc=0`, `NO_CHANGE`. Restore packet was regenerated successfully.
• **Context:** `context-guard.json` at 10:07Z is `normal`, direct ACP on `openai/gpt-5.6-terra`, 179,535 provider tokens (17.1%), no compaction, and no reload recommendation. Do not reload the live backend from this maintenance turn.
• **Candidate state:** semantic candidates shown are reviewed/stale or promoted/ignored historical material; no new candidate promotion is justified. Existing explicit semantic memory remains low-precision/noisy in places, so it should not be treated as equivalent to curated memory.
• **Open backlog:** the durable polling control-plane action (2026-09-02) is already recorded and remains open. Other persistent open items include scheduled-worker model/config repair, provider-ceiling proof, independent control-plane/timer/subagent/backlog verification, stale decision-state, generated-summary drift, notice-source hardening, and the local YouTube archive.
• The polling feature can be added safely only as a new isolated service/queue, not by expanding the existing ACP-coupled timer dispatcher. This is a design hypothesis supported by the documented history of timer delivery failures, not a code-level verification.
• The current worker health does not prove the obsolete model configuration is fixed: the heartbeat status is successful, while the open action and recent topic record still say source/configuration repair has not been demonstrated. Require two clean runs after source inspection.
1. Review actual timer/direct-ACP seams and subagent state surfaces, then draft a narrow shadow-mode poller design before implementation.
2. Keep old timers unchanged while testing persisted watches, restart recovery, dedupe, timing, and event/outbox semantics.
3. Repair scheduled-worker model selection at its source and verify two consecutive clean runs; do not edit generated continuity-summary.txt directly.
4. When convenient, refresh stale decision-state.json and harden directed notice repopulation against resolved/obsolete entries.
• Direct read of `/home/matrix-lite/state/turns.jsonl` was denied in this cycle, despite model-conversation-log entries carrying authoritative-looking turn references.
• Native Matrix-lite timer/subagent status tools and `persistent_chat_log_backlog_status` were not exposed in the available tool namespace. `observability.jsonl` was not available for inspection. Therefore independent timer/subagent/backlog health and `missing_runtime_entries`/`needs_sync` could not be freshly verified here.
• The prior architecture-review job `9cec5ce3080c` timed out after empty-input tool calls and produced no verified design result; this remains a review gap, not evidence against the proposed architecture.
• Scheduled-worker model drift can silently make future synthesis fail even while the main session and fast memory heartbeat remain healthy; add a startup model-identity assertion and expose worker status in the control plane.
• Notice repopulation has historically re-injected stale duplicates; make source-report status filtering idempotent before relying on notices as a clean action queue.
• Preserve append-only event IDs and durable delivery receipts in the new poller so retries cannot duplicate external actions.
• No direct edit to `curated-memory.md` is proposed. The polling architecture is already a durable operational thread and is represented by the open action and current topics.
• No JSONL record was appended: the finding/action would duplicate existing records, while this report contains the useful synthesis.