Skip to content

Admin surface as a pi extension (supersedes the web panel, closes #5) - #15

Merged
edgehero merged 5 commits into
mainfrom
plan-exec/2026-07-21-admin-pi-extension
Jul 22, 2026
Merged

Admin surface as a pi extension (supersedes the web panel, closes #5)#15
edgehero merged 5 commits into
mainfrom
plan-exec/2026-07-21-admin-pi-extension

Conversation

@edgehero

Copy link
Copy Markdown
Owner

Supersedes the planned web admin panel (issue #5) with an admin surface that lives fully inside the pi coding agent CLI: a pi extension in the new admin/ workspace providing /dispatch operator commands (status, pause/resume, runs, logs, budget, triggers, settings, set/unset), a live TUI dashboard overlay, and exactly four LLM-callable tools (reads plus pause/resume — settings writes stay operator-only). Runtime settings ship as a settings.json overlay (PI_SETTINGS_FILE) the worker re-reads per job with precedence job.data > overlay > env > default, fail-closed on an invalid file before any budget slot is reserved. Specs amended spec-first: CONST-ISOLATION-CONTAINER-PER-JOB scoped to harness-invoked pi (maintainer-approved), DES-PANEL-SEPARATE-FROM-RECEIVER superseded by DES-ADMIN-VIA-PI-EXTENSION, new DES-RUNTIME-SETTINGS-FILE-OVERLAY, INT-CONFIG-OVERLAY-CONTRACT, REQ-ADMIN-VIA-PI-EXTENSION, REQ-RUNTIME-SETTINGS-PICKUP, OQ-008 (trigger editing deferred, display-only).

Also fixes a live P0: every GitHub-webhook job deterministically failed after burning a daily-cap slot (receiver sends no provider/model/maxTurns; the worker never filled defaults; buildContainerEnv threw after reserveBudget). The per-job effective-fill is both the feature mechanism and the fix; a regression test enshrines the receiver-shaped job.

Verification

Check Baseline Final
tests (only gate; no typecheck/lint scripts) 390 total / 375 pass / 0 fail / 15 skip 496 total / 481 pass / 0 fail / 15 skip (+106, zero regressions)
E2E — Webhook n/a PASS (receiver diff comment-only; signed-accept / wrong-signature-reject / author-gate covered by named tests)
E2E — Queue n/a PASS (offline full suite + LIVE Valkey pause-durability 3/3 incl. pause-survives-restart)
E2E — Container smoke n/a N/A (job image untouched)
Legacy sweep n/a PASS (no add-alongside, no introduced dead code; reference-counted)
Spec drift exit 0 exit 0 — no new drift

Notes for review: operator pi version is uncontrolled — the extension probes its USED_API at load, all-or-nothing, refusing loudly on non-0.80.7; raw .log output is structurally excluded from model context (overlay viewer only); pre-existing coverage gap flagged (no explicit duplicate-GUID second-delivery test) — not introduced here.

Closes #5

🤖 Generated with Claude Code

https://claude.ai/code/session_01D3npQvQXLWsW6qsrRMAmNL

edgehero and others added 5 commits July 21, 2026 21:48
…c amendments" passed gates

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01D3npQvQXLWsW6qsrRMAmNL
…ker runtime-settings + P0 fix" passed gates

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01D3npQvQXLWsW6qsrRMAmNL
…in workspace scaffold + reads" passed gates

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01D3npQvQXLWsW6qsrRMAmNL
…tes, agent tools, dashboard" passed gates

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01D3npQvQXLWsW6qsrRMAmNL
…s closure + rules coverage" passed gates

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01D3npQvQXLWsW6qsrRMAmNL
@edgehero
edgehero merged commit 37adc72 into main Jul 22, 2026
10 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Admin panel: observability + settings + on/off (127.0.0.1, separate from receiver)

1 participant