Active Tasks
TaskPlane packets created or claimed during the fleet activation session.
TP-391 — pi TUI Code-Render Uplift
| Field | Value |
|---|---|
| Status | Staged |
| Priority | P3 / backlog |
| Size | M |
| Owner | Unclaimed (proposed: substrate-GUY) |
| Review Level | 2 |
| Commit | d2df553 |
Mission
Bring pi's code-render surfaces to visual parity with fenced-markdown syntax highlighting.
Current state:
- Fenced markdown code blocks → syntax-highlighted ✅
edittool diffs → structured but muted, no syntax highlighting ❌writetool output → "Successfully wrote N bytes" (content hidden) ❌bashtool output → raw ANSI passthrough ❌
Design dialect: INTERNAL (Signal/Synthwave) — this is a local-tools surface.
Anti-goals: No full TUI theme rework. No custom-per-terminal renderers. No pi-tool-display rewrite.
TP-392 — ClickHouse Schema Cleanup + HF/Joe Segregation
| Field | Value |
|---|---|
| Status | Staged |
| Priority | P2 / this week |
| Size | L |
| Owner | Unclaimed (proposed: substrate-GUY or data-lane sub-agent) |
| Review Level | 2 |
| Commit | 8b72a69 |
Mission
Segregate HuggingFace training-corpus dumps from Joe's actual agent-run corpus, dedup raw JSONL ingestion, unify identity, and backfill missing host attribution.
Key findings:
| Problem | Scale |
|---|---|
HF training data in corpus.* | ~2.89M rows (5 public datasets mixed with Joe's data) |
Duplicate rows in memory.agent_jsonl_raw | 806k rows (~38%) |
| Identity split | josephlanzone + joe = same person, no unified mapping |
Approach: Parallel-table migration (Option A) preferred over in-place DELETE/OPTIMIZE FINAL. No HF data deletion — move only.
TP-393 — GPT-5.5 Empty-Output Retry + Cache-Aware Rotation
| Field | Value |
|---|---|
| Status | ✅ Closed — all 6 steps shipped; Step 6 BATS proof passed and TP STATUS marked done |
| Priority | P2 / this week |
| Size | M |
| Owner | substrate-GUY |
| Review Level | 2 |
| Commits | 2ba2819 (packet), fe62200 (Step 1 effort-clamp + store:true), 6c8680c (retry staged), e820859ef (dynamic cores + empty-output retry), 1a68a44aa (BATS shape tests), 4e01cb147 (response.failed signature fix on origin/main), 835b70e5a (STATUS corrected to active verification), eafb3a3d7 (Step 6 retry-detector proof test), 29ee3baea (TP closed after proof) |
Mission
Add empty-output retry-with-degrade to pi's OpenAI Responses adapter. Effort-clamp when tools are present. Wire cache-aware model rotation across multi-copy endpoints.
Root cause: GPT-5.5 returns status: "failed", empty output, no error on reasoning.effort: "xhigh" + multi-tool context. Not a pi-side bug — OpenAI capacity allocation issue.
Fix approach / shipped work:
- Effort-clamp: cap reasoning effort when tools are present
- Empty-output retry with model degrade (GPT-5.5 → GPT-5.4 → GPT-5.4-mini) — wired in
e820859ef, signature match corrected in remote4e01cb147 - Dynamic model-rotation cores config + pool-empty guards — wired in
e820859ef - BATS model-role shape assertions updated for TP-393 default pins —
1a68a44aa - Preserve
store: false(operator ZDR-adjacent posture) - STATUS corrected in
835b70e5a: TP-393 is not closed until Step 6 proves the retry/degrade wrapper fires on the real or fixture-drivenresponse.failedempty-output path - Step 6 proof test shipped in
eafb3a3d7(tests/unit/pi_openai_responses_retry_detector_test.bats);29ee3baeacloses TP-393 after 6/6 BATS proof plus supporting targeted rotation tests
TP-394 — Tdarr Non-Destructive Verify
| Field | Value |
|---|---|
| Status | ✅ Completed |
| Priority | P0 |
| Owner | media-curator-GUY |
| Commit | a653e82 |
Finding: All 4 Tdarr flows use replaceOriginalFile — the destructive surface is confirmed present. Additional findings: W1 handoff incomplete, worker drift between compose env vars and live server, auth disabled. Destructive transcode policy is now operator-decision-gated.
TP-395 — PipeWire Hot with EasyEffects Dead
| Field | Value |
|---|---|
| Status | Renamed → TP-400 |
| Priority | P1 |
| Owner | media-curator-GUY |
| Commit | a653e82 |
Renamed to TP-400. Follow-up investigation is now complete: the hot PipeWire reading was a ps %CPU lifetime-average artifact, not current audio load; see TP-400 below.
TP-384 — Steambox Restic Config Backup Timer
| Field | Value |
|---|---|
| Status | ✅ Completed |
| Priority | P1 |
| Owner | media-curator-GUY |
| Commit | bcedfc2 |
Restic config backup operational: local cross-drive backup to Fast_8TB_2, snapshot f40fe798 (15.7 GiB → 6.6 GiB stored), restore drill passed, systemd timer active (daily 04:00).
Cloud target update: media-curator-GUY moved the cloud target from Backblaze B2 to Cloudflare R2 and refreshed the restore runbook in chezmoi 1dfd1a373.
TP-400 — PipeWire Hot with EasyEffects Dead
| Field | Value |
|---|---|
| Status | ✅ Complete — measurement artifact; no live PipeWire mitigation needed |
| Priority | Closed; latent spatializer risk only |
| Owner | media-curator-GUY |
| Note | TP-400 source STATUS/finding says ps %CPU was lifetime average, not instantaneous load. pw-top showed PipeWire idle at ~0% / 0 ctx/s; 16 connected clients had 0 active streams; journals had 0 PipeWire/WirePlumber errors; Docker containers pass only /dev/dri, not audio devices. Remaining risk: spatializer-7.1.conf has 8 SOFA HRTF convolvers and may spike CPU when headphone playback resumes. |
TP-401 — NATS Cross-Machine Agent Mesh (superseded)
| Field | Value |
|---|---|
| Status | ❌ Superseded by TP-402 |
| Note | NATS artifacts fully removed (server, binaries, systemd, brew, config, adapter extension). Track files deleted in c141c4532. |
TP-402 — Bun-native Cross-Machine Mesh (supersedes TP-401)
| Field | Value |
|---|---|
| Status | ✅ All steps complete. TP-401 retired. |
| Priority | P1 |
| Owner | research-docs-GUY (architecture + NATS retirement) → substrate-GUY (runtime hardening) |
| Commits | chezmoi ff9197e9c (decision), dfd299cc5 (NATS retire), 21339d3fc (sidecar), 7b4f963e7 (TCP bind), cb2adc9e6 (JSONL bridge), ffe1ed846 (ClickHouse archive), 8e2fdb488 (closeout), c141c4532 (TP-401 retire), d6de933b9 (.DONE marker) |
Superseded TP-401 (NATS). Operator diligence found 90% of the Bun-native P2P mesh was already built. Shipped:
- Cross-machine mesh over Tailscale verified on both sides: steambox ↔ Mac, TCP ESTABLISHED, DM delivered=true
- NATS fully retired: server, binaries, systemd, brew, config, adapter extension — all removed
- Mac pi revived in cmux workspace:4
- Sidecar now discovers the harness-neutral mesh transport path
- TCP listener hardened to bind Tailscale IP only, not
0.0.0.0 - Mesh-gateway JSONL bridge outbound path wired (Step 4)
- ClickHouse archive layer wired to mesh sidecar on receive (Step 5)
- TP-401 track files retired as superseded
- TP-402
.DONEmarker added ind6de933b9so scans no longer surface it as open
Manga Daily Health Check + Acquisition Automation
| Field | Value |
|---|---|
| Status | ✅ Shipped |
| Owner | media-curator-GUY |
| Commit | 3cad888 |
Two-tier manga/comics automation:
- Mechanical tier (daily 06:00, no LLM): *arr service health, Komga stats + auto re-analyze error books, Mylar census + RSS + active search
- Mylar resilience: daily check auto-reapplies the
seriesyearcompatibility patch if the container is recreated (596b7f47c) - Mylar weekly-pull verification: 2026-07-02 read-only artifact
mylar-futureupcoming-pull-date-query-2026-07-02.jsonshowsweeklyhas 585 rows and currentSHIPDATErows through2026-07-29(2026-07-01has 93 rows), whilefutureupcomingandupcomingare empty; treat weekly-pull health as table-specific, not a blanket Mylar freeze. - LLM-escalated tier: acquisition automation for wanted issues
- Komga verification: 2026-07-02 non-destructive artifact
~/.local/share/stash-curation/komga-radarr-sonarr-verification-2026-07-02.jsonshows Komga health up, 207 config metadata files checked, 213 index-evidence hits for Blue Box, 36 read-only SQLite c195 hits, and 4 host-filesystem c195 matches; Sonarr was reachable but had 0 Blue Box matches in 164 items. - Report output:
~/.local/share/manga-daily/daily-report.md
Stash Metadata Enrichment Crawl
| Field | Value |
|---|---|
| Status | 🛠️ In progress — background full-signal extraction running |
| Owner | media-curator-GUY |
| Evidence | 2026-07-02 peer observe: ClickHouse crawl tables show aggregate rows for xv_favorites (48), ph_history (6), and ph_liked (6); Chrome/CDP login proof succeeded; full-signal-extraction-ph-xv, ph-history-segment-extract, corrected ph-recommended-pitch-loopback-v2, ph-favorites-segment, ph-favorites-pitch-loopback, ph-profile-segment, ph-playlists-pitch-loopback, ph-likedvideos-segment, xv-history-segment, xv-history-pitch-loopback, xv-profile-pitch-loopback, and xv-account-segment lanes are running or recently harvested; ph-recommended-segment harvested 672 items across 6 pages with 0 overlap alerts; ph-profile-segment harvested 45 items from 1 page with 0 overlap alerts; ph-subscriptions harvested 276 items across 6 pages with 0 overlap alerts and queued 276 details; xv-history-segment harvested 47 items across 2 pages with 0 overlap alerts and queued 47 details; xv-profile-pitch-loopback processed 40 JSON + 40 screenshots with 0 errors. 2026-07-02 aggregate repeat sanity artifact clickhouse-repeat-sanity-2026-07-02.json confirms the raw import table preserves duplicates and computes repeat strength by grouping canonical_item_key: PH strong-user-curated has 110 canonical items / 4,151 raw rows / max repeat 2,535, while XV account-profile context has 13 canonical items / 182 raw rows / max repeat 14; follow-up top-repeat artifact clickhouse-top-repeat-outliers-2026-07-02.json classifies the highest-repeat rows as a mix of likely scene signal, category/navigation artifacts, channel-affinity signals, and UI-control artifacts, so repeat count must be filtered by URL/type before any candidate ranking; no acquisition action is authorized by either artifact. |
| Next | Operator directive via media-curator: run extraction as a full-signal/background process with no gaps or half-measures because it compounds into long-term collection quality. Extract additional page signals that can improve TPDB/StashDB lookup; do not collapse repeat watches away — preserve/dedupe with a repeat-count flag because multiple watches are stronger signal. Keep item-level adult titles out of fleet docs and use only aggregate status here. |
TP-396 — VitePress Fleet Orchestration Consolidation
| Field | Value |
|---|---|
| Status | ✅ Completed |
| Priority | P1 |
| Owner | research-docs-GUY |
| Commits | usenet-media-stack 59a6c7d, chezmoi b608f55 |
5 VitePress pages under docs/fleet/ + VitePress config (Fleet nav + sidebar).
Incidents
TP-404 — Authelia SSO Wildcard Domain
| Field | Value |
|---|---|
| Status | ✅ Side-port proof shipped — rollout decision pending |
| Owner | infra-sentinel-GUY |
| Evidence | usenet 5d162b42: Caddy built with Cloudflare DNS-01 module, temporary listener 100.115.21.9:8444 published, auth/comics routes wired through Authelia, and pre-side-port Tailscale Serve status captured for rollback. |
| Proof | auth.beppesarrstack.net:8444 returns HTTP/2 200; comics.beppesarrstack.net:8444 returns HTTP/2 302 to Authelia with return URL; Patchright authenticated proof reaches Komga (ok=true, title Komga); post-proof Caddy/Authelia logs clean for 3m. |
| Safety | Tailscale Serve :443 remains untouched as rollback; Samba/RDP/Plex exposure unchanged; no secret values committed or logged. |
| Next | Answer operator product question: can one website provide an OP login, route to all services, and vary surfaced services/actions by access-control/UAC level? Then decide whether to promote the :8444 proof to the production domain path or keep it parked behind the existing Tailscale Serve rollback. |
Gachiakuta Sonarr Source/Import Gap
| Field | Value |
|---|---|
| Status | 🔎 Narrowed — SAB no-space/path cleanup planning; import not closed |
| Owner | media-curator-GUY |
| Evidence | 2026-07-02 peer artifacts gachiakuta-sonarr-sab-verification-2026-07-02.json, gachiakuta-sab-failure-investigation-2026-07-02.json, and gachiakuta-sab-remediation-options-2026-07-02.md were non-destructive. SAB is reachable on 127.0.0.1:8180; Sonarr is reachable on 127.0.0.1:8989; Sonarr still reports 1 episode file out of 24. SAB history check found 14 Gachiakuta hits, all Failed with Post-processing was aborted. Follow-up SAB log/path classification narrowed the concrete abort to OSError: [Errno 28] No space left on device while creating final folder /pool-downloads/tv/Gachiakuta.S01E17...; current container-side df now shows /config and /downloads on Fast8TB with ~3.5TB available, so the no-space event appears historical/transient or path/namespace-specific rather than current raw capacity. Remediation planning found SAB TV final-folder mapping targets absent /pool-downloads/tv; /config/Downloads/incomplete has 54 entries / 171.81GB total, including 14 Gachiakuta remnants / 23.33GB. |
| Next | media-curator-GUY should continue from the remediation-options sequence: read-only confirm SAB category table/API and Docker mounts, then get operator approval for either category path alignment, quarantine-first, or manual import audit. Do not retry, delete, move, mutate SAB config, or treat the episode gap as closed until Sonarr/filesystem counts converge and the operator approves any cleanup or path migration. |
Dungeon Meshi v14 CBZ Verification Gap
| Field | Value |
|---|---|
| Status | ⛔ Blocked — expected v14 CBZ absent from bounded local roots |
| Owner | media-curator-GUY |
| Evidence | 2026-07-02 non-destructive artifact dungeon-meshi-v14-cbz-verification-2026-07-02.json scanned /var/mnt/fast8tb/Cloud/OneDrive/Books/Comics, /var/mnt/fast8tb, and /home/deck for Dungeon Meshi / Delicious in Dungeon v14 CBZ/ZIP candidates. It found candidate_count=0, so no local corrupt v14 file was verified in those roots. |
| Next | Requires operator source-path or explicit reacquisition/replacement decision. Do not download, grab, delete, move, or repair automatically; if a source file is later found, manifest path/size and verify integrity before replacement. |
Pi 0.80.3 Crash on Node 24
| Field | Value |
|---|---|
| Status | ✅ Resolved |
| Discovered by | Joe (operator) |
| Root cause | createRequire not imported in theme.js:861 — upstream pi build bug, not fleet-caused |
| Fix | Pin pi 0.80.2 via mise. Applied to personal-Mac via SSH. Steambox already on 0.80.2. |
| Resolved by | repo-steward-GUY |
Komga 165-Restart Crash Loop
| Field | Value |
|---|---|
| Status | ✅ Resolved |
| Owner | infra-sentinel-GUY |
| Commit | usenet 3f81dd0 |
| Root cause | JVM/task-pool/container memory pressure loop; Komga was flapping 200→502 while media and infra lanes were investigating. |
| Fix | Adjusted Komga JVM heap, task pool, and container memory cap across docker-compose.reading.yml and docker-compose.memory-caps.yml. |
Security: 14 Services Rebound to 127.0.0.1
| Field | Value |
|---|---|
| Status | ✅ Closed as TP-403 |
| Commits | usenet 20cf19e, chezmoi 9314d70a5, 14f191057 |
| Impact | All *arr stack, Portainer, Stash, Tdarr, aria2, Tautulli, Uptime Kuma, Kavita now bind 127.0.0.1 instead of 0.0.0.0. Direct port access from Tailnet peers no longer bypasses Authelia forward-auth gate. |
| Tailscale Serve | Declarative cross-OS serve config + sync script shipped in 14f191057 for 26 serve entries. |
| Exceptions | Samba (139/445) and NFS (2049/111) remain 0.0.0.0 for LAN file-sharing. |