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 ActionClosedOwnerLucienneRuntimeClosedAge14d ago
Ticket is done; runtime is closed.·profile claude_opus_1m_medium
Description
MC-4426
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: findata@safair.co.za reports (Cabin Flights ×6-7, OTP, Exco Sales, ACSA Stats, NPS) get manually classified SKIP every single hourly scan — known noise (obs 6627) but never codified into auto-skip config.
EVIDENCE: 2026-05-29 every scan 02:00–23:00: "all `findata@safair.co.za` automated recurring reports → SKIP", "No `auto_skipped` flag shown, but classification clear", "duplicate auto-reports (6 copies in ~13s)". Repeated 15+ sessions in one day.
PROPOSED ACTION: Add `findata@safair.co.za` to the email `skip_senders` list in life_manager config (same mechanism that already auto-skips `newsletter@`/`marketing@`). Eliminates per-scan manual classification of guaranteed-noise sender. Keep `always_include` override if a future findata subject ever needs surfacing.
CONFIDENCE: high
FINDING: Probing notify.py with `--help` sends the literal string "--help" to Elmar's Telegram as a message (notify.py takes message as argv positional, dest from LUCI_NOTIFY_DEST env).
EVIDENCE: 2026-05-29 08:05 morning-briefing session: "Accidental send — `--help` got sent as message to DM... One stray line, harmless. Won't repeat — checked signature after."
PROPOSED ACTION: Add memory feedback note: "notify.py — never probe with `--help`; message is argv[1], so `--help` posts as a real Telegram message. Dest comes from LUCI_NOTIFY_DEST env (no --dest in scheduler tasks). Read the script signature, don't probe-test it live."
CONFIDENCE: high
FINDING: Scheduler `python3` resolves to uv-managed cpython, which lacks modules installed only in system Python (notebooklm-py), silently breaking tasks until runtime ModuleNotFoundError.
EVIDENCE: 2026-05-29 07:30 social-pulse fail: "ModuleNotFoundError: No module named 'notebooklm'... error's python is a uv-managed cpython, not the system python that has notebooklm-py" (obs 6745).
PROPOSED ACTION: Add to `~/.claude/rules/check-modules-first.md`: "On Luci, `python3` in scheduler/shell tasks may resolve to uv-managed cpython, NOT system Python. A module that imports fine interactively can fail in a scheduled task. Pin the interpreter (absolute path to system python, or install module into the uv env with --break-system-packages) — verify which python the task's env actually resolves before declaring it installed."
CONFIDENCE: low
FINDING: JSON containing backticks breaks bash eval during ticket creation; recurring shell-escape friction solved by writing payload to file.
EVIDENCE: 2026-05-29 14:06: "Backtick in JSON broke bash eval. Write JSON to file, pass via stdin/file." Same pattern 12:01 and digest sessions: "Build message in python, call notify.py (avoids shell-escape pain)."
PROPOSED ACTION: Add memory feedback: "Ticket-create / notify payloads with backticks, quotes, or markdown → write JSON/message to a temp file and pass via stdin/file arg. Never inline special-char payloads in bash; backticks trigger command substitution."
CONFIDENCE: low
FINDING: Outlook Graph API frequently returns empty `webLink`, so email-derived tickets can't deep-link back to the message.
EVIDENCE: 2026-05-29 multiple: "webLink empty (Lightstone external mail)", "both `webLink` empty from Graph — ticket says open Outlook Web by subject", "webLink empty — note it."
PROPOSED ACTION: Add memory feedback: "Graph email webLink is often empty (external senders esp.). When ticketing an email, fall back to including sender+subject+received-time so Elmar can find it in Outlook Web; don't rely on webLink being populated."
CONFIDENCE: low
Activity
done
INTERACTIVE
Luci is working...
Details —
Done
· Medium
· Lucienne
▼
SState
Done
Closed
PPeople
TTiming / Details▼
api (human)
LegalMind
14d 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.
Control Room triage: this self-improvement digest contains permanent assistant-behaviour/config changes, so I am not auto-applying it from the supervisor cron. Recommended owner decision: approve the two high-confidence housekeeping items only (auto-skip recurring findata report noise; add a Telegram-notify safety note so helpers do not accidentally send test text). Leave the three low-confidence items parked until a human explicitly wants a broader self-improve pass.
lucienne-control-room14d ago
Workflow action `request_signoff` applied. Elmar sign-off requested.
lucienne14d ago
Controller: closed as duplicate/superseded. MC-4325 (same W22 digest, status=done) already handled this. Self-improve digest duplication pattern — per lucienne-manager, close earlier duplicate pointing to the active/done one.