Weekly self-improve proposals from luci (2026-W22). Window: last 7 days. Source: ~/.claude/skills/self-improve/ (Steps 2-3). Triage instructions: - Approve by number to apply ...
StateDoneNext ActionClosedOwnerLucienneRuntimeClosedAge16d ago
Ticket is done; runtime is closed.·profile claude_opus_1m_medium
Description
MC-4325
Weekly self-improve proposals from luci (2026-W22).
Window: last 7 days. Source: ~/.claude/skills/self-improve/ (Steps 2-3).
Triage instructions:
- Approve by number to apply (Step 4 of skill).
- Skip = discard.
- Reply "all" to apply all high-confidence items.
--- PROPOSALS ---
FINDING: HA automation edit discipline rule was created mid-session but not retroactively followed at scope-clarification step — wholesale revert happened before checking whether scope was lamps-only.
EVIDENCE: 2026-05-27 20:49 session: "I only wanted that rule for the dining and lounge lamp, not for all the lights" — Claude had patched Lounge/Kitchen Off automations without first asking which entities were in scope.
PROPOSED ACTION: Add concrete trigger phrase to `~/.claude/rules/ha-automation-edit-discipline.md` pre-flight checklist: `- [ ] Asked user "which specific entities (light/switch/scene) does this rule apply to?" when user describes desired behavior in terms of light TYPE (lamp, downlight, CFL) rather than entity_id`. Strengthens scope-identification step.
CONFIDENCE: high
FINDING: PKA git-sync task has recurring failure pattern (3 separate failure sessions same hour) from untracked-file collisions and stuck merge states; fix was reactive each time rather than once-and-for-all.
EVIDENCE: 2026-05-27 sessions at 12:03, 12:05, 17:03, 17:05 all diagnosing git-sync failures: "Pulling is not possible because you have unmerged files" and "untracked working tree files would be overwritten by merge".
PROPOSED ACTION: Add to `~/workspace/tasks/git-sync.md` command: prepend `git merge --abort 2>/dev/null; git rebase --abort 2>/dev/null; git stash push -u -m "git-sync-autostash-$(date +%s)" -- $(git ls-files --others --exclude-standard) 2>/dev/null;` before the pull. Captures BOTH stuck-merge AND untracked-collision failure modes in one command. (Stuck-merge fix already landed 17:03; untracked-collision still recurs.)
CONFIDENCE: high
FINDING: mc_pickup.py swallows dispatch 409 CONFLICT errors and exits 0 with `task_run.status=completed`, causing failed-run monitor to miss real dispatch failures — only the output-scraping watchdog catches them.
EVIDENCE: 2026-05-27 16:06 session MC-4308: "task_runs row marked `completed` because `mc_pickup.py` swallows the dispatch error and exits 0 after reverting. Failed-run monitor never trips." Same pattern recurred MC-4311/4312/4286/4207/4215/4200.
PROPOSED ACTION: Open MC ticket to (a) GC stale `runtime_sessions` rows for target session_key (status in {stale,terminal_state_reap,terminated}) before POST to ticket runtime in `mc_pickup.py`; (b) when dispatch 409s after revert, exit non-zero so `task_run.status='failed'` and native watchdog fires. Recommendations already drafted in MC-4308 REVIEW but no ticket opened to action them.
CONFIDENCE: high
FINDING: Watchdog `check_missed_fires` uses bare `_git_first_commit_ts` instead of `_task_added_ts` wrapper, causing false-positive alerts on untracked task files.
EVIDENCE: 2026-05-27 16:08 session MC-4307: "Watchdog bug found. `_task_added_ts` wrapper exists with mtime fallback, but `check_missed_fires` calls the bare `_git_first_commit_ts` instead. Untracked task → None → false alarm." Fix landed on branch `fix/mc-4307-watchdog-untracked-task` but not yet merged at session end.
PROPOSED ACTION: Verify branch `fix/mc-4307-watchdog-untracked-task` merged to master; if not, merge it. Pattern: other code paths in same file may have same bug — grep for `_git_first_commit_ts(` direct calls and replace with `_task_added_ts(`.
CONFIDENCE: high
FINDING: Chrome zombie processes (root-owned, 17GB RSS, default profile, 50h idle) accumulate and require sudo to clean — operator KILL POLICY doesn't cover this case explicitly.
EVIDENCE: 2026-05-27 20:17 session: "172 procs, ~17 GB RSS… Chrome owned by root. I'm `lucienne`. Need sudo." Same situation 11:33 was skipped: "Skip kill — risk > benefit." Inconsistent handling between sessions.
PROPOSED ACTION: Add to `~/workspace/CLAUDE.md` operator KILL POLICY: explicit rule that chrome processes on `~/.config/google-chrome` profile (NOT `google-chrome-wingman` or `hermes-chrome`) older than 24h with no OAuth marker can be reclaimed via `sudo kill -TERM` when swap >60%. Removes per-session judgement variance.
CONFIDENCE: high
FINDING: Operator detector re-fires same `[operator:ticket-backlog]` ticket repeatedly after DONE filed (≥5 retriggers on MC-4291), suggesting cooldown / dedup missing.
EVIDENCE: 2026-05-27 13:32–14:33 sessions: MC-4291 received 5+ "Ticket moved to Todo" system messages after each DONE reply. "Operator detector re-firing — check current backlog state and trigger source."
PROPOSED ACTION: Open MC ticket to add cooldown to operator detector — after a ticket gets `done` signal, suppress re-creation of same operator-flag ticket for N minutes (e.g. 15). File: likely `~/workspace/mission-control/luci_operator.py` or similar.
CONFIDENCE: low
FINDING: `mission-control/` directory has been losing `.py` source files (replaced by stale `__pycache__/`) while `mc-orchestrator-build-mc/` holds canonical copies — drift caused 2 separate task failures in same hour (shadow-review + persistent-luci-watchdog).
EVIDENCE: 2026-05-27 21:47 + 21:48 sessions: `persistent_luci.py`, `mc_tmux.py`, `models.py`, `mc_shadow_review.py`, `mc_orchestrator_flags.py` all missing from `mission-control/`. "These files were never tracked in git — they were deployed directly and got lost (likely during a branch rotation or bad deploy)."
PROPOSED ACTION: Open MC ticket to either (a) git-track the canonical source files in `mission-control/`, or (b) update all scripts that `sys.path.insert(0, '/home/lucienne/workspace/mission-control')` to point at `mc-orchestrator-build-mc/` instead, then deprecate `mission-control/` as Python-importable. Drift root-cause not yet fixed.
CONFIDENCE: high
FINDING: Caveman mode lite/full intensity preference unstated — many session outputs are full prose despite Luci context indicating preference for terse.
EVIDENCE: This session: caveman mode auto-activated at startup. Multiple recent worker sessions (e.g. life manager VERBOSE reports) emit full-paragraph prose without explicit caveman invocation.
PROPOSED ACTION: No action — caveman is on-demand; life manager VERBOSE mode is explicit instruction in task prompt. Not a real correction.
CONFIDENCE: low
Activity
done
INTERACTIVE
Luci is working...
Details —
Done
· Medium
· Lucienne
▼
SState
Done
Closed
PPeople
TTiming / Details▼
api (human)
Mission Control
16d ago
14d ago
Advanced / Operator evidence
RRouting owner
ROperator console
Ticket is done; runtime is closed.MC is visibility-only. Hermes Luci launches and gates work outside MC, then mirrors evidence/status here.
WWorkflow
Start Dev Review + QA ▾
Select phases to include:
Agents
Review Gates
Decision
WAT routing: choose an agent, review gate, or decision. Buttons use the live runtime when one is attached.