Commit Graph

60 Commits

Author SHA1 Message Date
Muse Sidechat a9f014f9fa feat: completion-enforcement loop (fallback, proof, emit-model, auditor)
Close the loop so dispatched work actually completes on bl:

- on_no_result fallback in followup-sweeper (op + job forms via
  exec-constrained registry / job-dispatch), seeded on the three
  autonomy-pulse jobs; fallback_due() dedupes the gravity path
- gravity.py: add __main__ entry (loop-remediator.timer was a no-op),
  300s re-arm budget, fallback firing + stamp/skip logic
- harvester: proof-of-result followups (result_has_evidence),
  acted-variant NACK, emit-model tool-hint wording
- envelope: RESPONSE RULE states the emit model (agents EMIT
  directives verbatim; runtime executes; works from bare containers)
- completion-audit.py + systemd 15-min timer: per-family funnel,
  swarm drain, followup backlog; digest DM when degraded, 6h heartbeat
- tests/test_completion.py (29 tests), JOB-SPEC.md docs

Tests: 67/67 focused green (completion + tool_calls).
2026-10-06 08:20:14 +00:00
operator-main f2640397ed feat(messaging): balanced TOOL parsing, DM shorthand, box.exec, tools.list
- response-harvester: extract [TOOL]/[EXEC] JSON args with balanced-brace
  scanning (']' and nesting inside args no longer truncate calls); add
  [DM {...}] shorthand mapping to dm.send; native aliases (dm, box,
  tools) plus arg-synonym normalization; formatters and expanded hints.
- exec-constrained: new read-only box.exec op (27 allowlisted box-ctl
  reads) and tools.list op backed by --list-ops for dynamic discovery.
- prompt_envelope: advertise dm.send/box.exec/tools.list in every timer
  DM; add dm_call builder.
- lookup_engine + regex_patterns.json: canonical tool_call pattern
  accepts the DM engine, ']' in args, one nesting level.
- tests/test_tool_calls.py: 38 tests; docs/INBAND-MESSAGING-SPEC.md:
  accepted decision record (Final).
2026-10-06 07:29:16 +00:00
operator adfcd2e602 feat(box): passkey fetch, agent key-approval flow, unified lookups, tmux agent UX
- box passkey [show|fetch] (+ muse passkey): documents VM-only passkey
  (/srv/box/passkey.txt, fallback /etc/netvm/passkey.txt on 34.139.37.135),
  probes VM over SSH with graceful fallback; --json supported. No secrets on bl.
- approvals: request_key_approval / check_node_key_request; KEY_APPROVAL status
  surfaced in `box approvals check`; allow/deny resolve + audit to box-ctl.jsonl;
  never auto-approved. New `box approvals request-key <node> --reason`.
- box lookup (summary|fleet|threads|unread|approvals|key|docs) and docs-lookup
  engine with lookup_internal/ database (docs_internal symlink).
- muse-tmux: non-TTY attach falls back to scrollback capture; prune NameError fix.
- box/muse passthrough for tmux/muse/docs; thread list/view alias + prefix resolve.
- Docs: AGENTS.md, AGENT-TOOLING.md, BOX-WEB-SURFACE-GUIDE.md, README.
- Tests: key-approval + passkey tests; sync stale sidechat UUIDs and manifest name.
- .gitignore runtime trackers (subagent-sessions, conversation-nudge-tracker).
2026-10-05 20:18:47 +00:00
operator 611181b81e docs(runbook): add fleet resource optimization, timer consolidation, and headless throttling runbook 2026-10-05 17:42:32 +00:00
operator 7fc15eb127 feat(operators): amendment workflow and automated drive watchdog daemon 2026-10-05 17:15:50 +00:00
operator cc8702b38c feat(operators): agent markdown drive management via Hatch and SSH runbook 2026-10-05 16:51:56 +00:00
operator 653166e202 docs: add tmux stability post-mortem and update AGENT-TOOLING with hybrid tmux and direct operator directives 2026-10-05 16:48:44 +00:00
operator 2608fa114f docs: document streamlined Work Order and tmux envelope integration 2026-10-05 16:42:48 +00:00
operator 1e86ed8a44 retention piece 1: immediate rotations for chat-history / job-log / followups (b67084660385)
- chat-history.jsonl rotates at 10MB or 7d -> logs/archive/*.jsonl.gz + .sha256
- job-log.jsonl rotates at 2MB or 14d -> same archive layout
- followups.json archives resolved>7d / escalated>30d -> followups.archive.jsonl (append-only)
- verify wrapper: sha256 -c, gzip -t, clean listing, spot-extract JSON + ts bounds
- driver + hourly systemd user timer (retention-rotations.timer)
- archive-only: nothing is ever deleted; thread backfill excluded (needs human-reviewed preview)
First run 2026-10-05 16:35Z: chat-history 29.7MB + job-log 4.7MB rotated and verified; followups 0 eligible of 163.
2026-10-05 16:37:14 +00:00
operator 4e512a0742 feat(tmux): persist session output and send-keys actions to logs/tmux/<session>.log via pipe-pane 2026-10-05 16:24:36 +00:00
operator 945e6bb481 feat(tmux): implement 2-hour inactivity session TTL reaper and prune command 2026-10-05 16:23:45 +00:00
operator 0ca0fd0c1a feat(tmux): add shared muse tmux socket manager with CLI and agent [TOOL tmux.*] integration 2026-10-05 16:11:19 +00:00
operator 94d6502289 docs: sync onboarding runbooks, node inventory, bridge mappings, and box api docs 2026-10-05 15:58:37 +00:00
operator 7c6c3a8fbf feat(cli): add interactive chat REPL mode for native muse CLI 2026-10-05 15:58:33 +00:00
operator 7b1998f00e docs: add native interactive muse cli wrapper and documentation 2026-10-05 15:50:24 +00:00
operator-main 86f0082ffc feat(main-loop): digest response protocol — actionable digests, reply verbs, closure metrics
Session: sidechat/main-loop-protocol
2026-10-05 00:48:38 +00:00
operator b2920b0da0 docs: formalize fleet autonomous development handoff charter
- Detail operator role allocations (646 lead dev, opm coordinator, pip overseer)
- Document hierarchical subagent delegation & core loop wakeup architecture
- Provide complete sidechat routing matrix and active timer catalog
- Define immediate autonomous development milestones for fleet operators
2026-10-04 23:41:23 +00:00
operator d6ca600394 feat(relay): add subagent spawn, thread tools, and container box client
- Upgrade exec-constrained.py with subagent.spawn, thread.list, thread.view, pipeline.run ops
- Grant full ops permissions to all fleet agent identities (646, pip, muse, opm)
- Implement bin/box-relay.sh zero-dependency client supporting bearer and SSH signature auth
- Add fast hybrid gateway path to dm.py for sub-2s verified deliveries
- Fix wait=0 handling in super-cli.py subagent deployments
- Add hourly check-in jobs and scheduler for 646, pip, muse
- Document agent tooling and relay APIs in docs/AGENT-TOOLING.md
2026-10-04 23:30:18 +00:00
operator 1a271b1bbd feat(hybrid-gateway): integrate muse-cli with Cloudflare netns isolation, symmetric sidechat routing, and 646-pip sync unblock 2026-10-04 22:54:01 +00:00
operator-main 1e82f3adba Document 2026-10-04 followup fix set in LOOP-MANAGEMENT.md (backfill semantics, final_nudge_target, placement gate, multi-RESULT) 2026-10-04 20:09:56 +00:00
operator-main ad9dbca7eb Restore followup/DM reliability fixes wiped by 19:43Z tree-clean
Re-applies three workstreams lost when 793d3d7 committed over uncommitted
edits, reconciled against the parallel track's committed dm.py changes:
- followup-sweeper.py: backfill thread_uuid after successful nudge sends;
  record final_nudge_target=main on final-nudge routing (C1/C2)
- response-harvester.py: resolve followups on main-chat replies when
  final_nudge_target=main (C3); harvest ALL [RESULT] markers per message
- dm.py: pre-send placement gate (fail closed when post-nav URL lacks the
  target thread UUID; skips main) — purely additive over 793d3d7+f268d3d
- sidechat_manager.py: wait_for_chat_list() settle-poll for list population
  race (sidebar button renders before titles load)
- new: bin/tests/test_followup_fixes.py (25 tests), bin/placement-audit.py,
  bin/dm-log-taxonomy.py, bin/session-probe.py,
  docs/SIDECHAT-RELIABILITY.md, docs/UUID-ROTATION.md

Verified: 25/25 tests pass, py_compile clean, sweeper/harvester dry-runs clean.
Known limitation: gate catches wrong-placement, not wrong-mapping (false
autoprovision adopting the parked thread needs a creation check).
2026-10-04 20:06:58 +00:00
operator-main 550e30901b fix: placement verification and sidechat policy enforcement
- dm.py: placement-aware verify (verify_placement), checked_uuid logging, placement_mismatch events
- main-chat-watchdog.py: P0 alerts on placement_mismatch
- box-ctl.py: notify routes to sidechat, box policy command
- jobs: ops-audit and pipe-demo use sidechats
- response-harvester.py: chain deduplication

Session: sidechat/ops-restore
2026-10-04 18:29:13 +00:00
operator 1d739f6b6a feat(loop): codify external intrinsic loop management, progressive remediation, and operational runbook
- Add bin/gravity.py loop diagnostics, reconstruction, and progressive remediation
- Wire hard-break alerting to job-log audit and operator direct message
- Add comprehensive architecture and operational specification in docs/LOOP-MANAGEMENT.md
- Add sidechat thread auto-provisioning fallback on 'Navigated to: None' in bin/dm.py
- Support Muse unconfirmed signup error handling in bin/muse-signin.py
- Track dynamic pipe sidechat mappings in job-sidechats.json
2026-10-04 16:52:54 +00:00
operator-main b8f02af572 docs: add Box Web Surface and orchestration architecture guide 2026-10-04 16:50:57 +00:00
operator 7a35b684c4 feat: unified fleet CLI, Main Chat preservation policy, sidechat routing, and file transfers
- Added CHAT_POLICY.md and README.md banner enforcing sidechat-first and file-transfer-first rules.
- Added strict Main Chat block to super dm send and super dm wo with --allow-main-chat override.
- Implemented file transfer staging and metadata registry in super dm send-file and super dm files (with clean subcommand).
- Added full job lifecycle management (show, create, enable, disable, delete, run --follow) to super-cli.py and box-ctl.py.
- Audited all jobs in jobs/*.json and redirected automated dispatches away from Main Chat.
- Hardened chromebox-watchdog.sh with systemd user session environment exports and stale singleton cleanup.
- Added compose_check command choice to muse-chat-api.py.
2026-10-04 16:34:25 +00:00
operator-main eba6c6965f Add CHROMEBOX-RUNBOOK.md: operator guide for the fleet browser stack
Covers architecture, watchdogs, queue, monitors, common failures, and 2am triage.

Session: sidechat/chromebox-ops
2026-10-04 13:27:29 +00:00
operator-main 0d25696860 docs: exec-server -> exec-constrained stale references (bl:8444)
- docs/TOKEN_POLICY.md: rewritten for exec-constrained.py (named ops,
  -n exec-constrained, {op,args,ts,nonce} envelope; rotate endpoint gone)
- bin/chromebox-gateway.py: exec-server naming -> shared exec token files
- docs/DM-HTTPS-DESIGN-646.md + docs/DM-OVER-HTTPS-DESIGN.md: port
  8443->8444, namespace exec-server->exec-constrained, envelope updated,
  cloudflared port fix marked done 2026-10-04
2026-10-04 13:04:45 +00:00
operator-646 3dd9d9ffaf docs: DM-over-HTTPS design from operator-646 2026-10-04 05:27:55 +00:00
dom-inspector-4 ef453ccb26 Verify + extend DOM-SETTINGS/SEARCH/NOTIFICATIONS (2026-10-04, 3 nodes)
Session: sidechat/dom-settings
2026-10-04 04:31:11 +00:00
dom-panel-inspector 7d0ccba64c docs/DOM-CHAT-PANEL.md — re-verified 2026-10-04 on opm/muse/pip; unread indicator, stripped state, row differences
Session: sidechat/dom-panel
2026-10-04 04:29:16 +00:00
dom-inspector-5 e28b10edc8 DOM inspector 5/5: verify page structure + edge states, regenerate index
Session: sidechat/dom-structure
2026-10-04 04:29:10 +00:00
dom-inspector-2 c50667b626 DOM message surface re-verified 2026-10-04 (3 nodes): .group/msg nesting fix, ownership-split menus, More reactions dialog, dividers, virtualization, DM text formats
Session: sidechat/dom-messages
2026-10-04 04:28:21 +00:00
dom-inspector-3 bbe1ebb76a docs/DOM-APPROVALS.md — approval/permission dialog DOM surface reference
Session: sidechat/dom-approvals
2026-10-04 04:27:16 +00:00
operator-main 4b9f4889e3 docs/BOX-API-DESIGN-THREADS.md — per-agent thread oversight API contract (draft)
Session: main
2026-10-04 04:16:15 +00:00
operator-main 61d59de30d Box API design: timer and job endpoints\n\n- 14 endpoints with full schemas, JSON canonical (not YAML)\n- Allowlisted box-ctl.py helper (no raw systemctl over SSH)\n- Auto-confirmed vs agent-confirmed split for [REQ]/[CONFIRM] 2026-10-04 03:59:01 +00:00
operator-main 458314cbf6 Box UI design: operator dashboard and management pages\n\n- 7 sections: dashboard, timers, jobs, DMs, board/chat, requests, audit\n- Server-rendered + theme engine (not SPA)\n- Every mutation shows its API equivalent (steering made visible) 2026-10-04 03:58:36 +00:00
operator-main ef8e98abf0 Box API design: DM and message endpoints\n\n- POST /api/box/dms, /chat/send, /message, /board/post\n- Bearer token auth with spoof scope, idempotency via deterministic IDs\n- Rate limits mirror rate_limiter.py 2026-10-04 03:58:30 +00:00
operator-main 6fcd3bfb4e DOM reference: search functionality\n\n- Quick search dialog structure and data-value encoding\n- chat🧵<uuid> gives ready-made thread lookup\n- Radix gotchas: trusted events only, never touch input via JS 2026-10-04 03:54:16 +00:00
operator-main 13d231b86a DOM reference: message actions and thread interactions\n\n- Messages use .group/msg (no testid); action via More options radix menu\n- 6 quick reactions documented; Reply is composer-quote only, no Edit UI\n- Headless quirk: full pointer event sequence needed for radix 2026-10-04 03:53:52 +00:00
operator-main 265a76778b DOM reference: settings and profile\n\n- Dock rail structure, radix menu gotchas (synthetic click fails)\n- Settings dialog sections, appearance controls\n- No in-app account switching (profile-level only) 2026-10-04 03:53:01 +00:00
operator-main 664b66be93 DOM reference: edge states, loading, and error handling\n\n- S3 PARTIAL_LOAD dissected with timed probes\n- readyState useless; settled-state signature documented\n- False-positive traps for innerText.includes() 2026-10-04 03:51:05 +00:00
operator-main e470dfc244 DOM reference: notifications and activity\n\n- No bell icon; toast live region + Activity tab documented\n- Chat nav unread via aria-label flip (match on testid, not label) 2026-10-04 03:50:57 +00:00
operator-main a98fcfa64c DOM master index with quick-reference recipes\n\n- 50+ testids deduplicated across all docs\n- 6 copy-pasteable automation recipes\n- Resolves 4 contradictions (Ctrl+J superseded by click-based)\n- Flags 7 gaps for future mapping 2026-10-04 03:50:49 +00:00
operator-main 39e9db07b2 DOM reference: page structure, states, and approvals\n\n- 538-line map of 5 page states with detection logic\n- 57 data-testid values inventoried and categorized\n- check_approvals IP filtering documented 2026-10-04 03:48:33 +00:00
operator-main 6d737a48f1 DOM reference: messages, input, and chat activation\n\n- 332-line map of composer, send button, message list\n- Author encoding via data-message-id prefix documented\n- hatch-nav-chat as reliable Ctrl+J replacement 2026-10-04 03:48:18 +00:00
operator-main 0511e88b60 DOM reference: chat panel and sidechat structure\n\n- 367-line map of switcher, compose button, panel shell\n- 24 data-testid inventory with states and detection signals\n- Documents toggle behavior and false-positive traps 2026-10-04 03:47:00 +00:00
operator-main dbc6ac6f3b DM_SPEC: converge operator reply into sections 4-6
Tiered request/command semantics with hard rule (no order at any tier
may demand channel abandonment or key exfiltration); policy adoption
out-of-band; per-agent private-key custody with dm-signers/ write
authority as the trust anchor; verification provisional by default;
single trust root (board allowed_signers, namespace dm).
Converges the three answers to the fd553ef5 operator DM.
Session: sidechat/dm-spec-convergence
2026-10-04 03:39:49 +00:00
operator-main 6f1ed27a0d BOX-API-SPEC: Add board and chatroom API appendix\n\nAppendix C: Unified message API for populating boards and chatrooms.\nCovers board post/get, chatroom send/list, and unified /message endpoint\nwith target routing (board:#, chat:, dm:). 2026-10-04 03:02:06 +00:00
operator-main 706fe057a6 BOX-API-SPEC: Add confirmation system spec\n\nAPI requests result in DMs; DMs require explicit confirmations.\nCovers: [REQ id] -> [CONFIRM id] flow, pending request tracking,\nsweeper for timeouts, when to require confirmation. 2026-10-04 03:00:36 +00:00
operator-main ac6d7bf2d3 BOX-API-SPEC: Add UI/API design principle\n\nUI surfaces allow agent creativity but clearly steer toward API.\nThe UI teaches, the API is the source of truth. 2026-10-04 03:00:03 +00:00