Commit Graph

612 Commits

Author SHA1 Message Date
box-ctl 2d24a711bc Add job work-finder via box-ctl 2026-10-05 05:01:44 +00:00
operator 9b5eeab4a3 feat(jobs): standing 15-minute codebase & fleet auditor job for muse 2026-10-05 04:57:20 +00:00
operator cd23e72ee5 feat(relay): add box timer and box swarm CLI commands for container agents 2026-10-05 04:55:20 +00:00
operator 73b3dfa8d0 box-service-health: fix host mismatch in template
service.status runs bl-local (.timer -> user bus, .service -> system bus).
board.service/caddy.service are inactive on bl by design -- they run on the
VM and are covered by box-health-check.sh over the SSH chain.
response-harvester.timer lives on the bl user bus, not the VM.
2026-10-05 04:53:25 +00:00
box-ctl 57a769dd0f Add job opm-swarm-harvest via box-ctl 2026-10-05 04:52:18 +00:00
operator 7581e983d5 feat(harvester): synthesize [RESULT <job-id>] DECLINE on explicit assistant natural language refusal 2026-10-05 04:44:38 +00:00
operator ac8fd9a06e fix(harvester): include autonomy-pulse sidechats in conversational nudge scope 2026-10-05 04:41:46 +00:00
operator b88209d7a1 feat(autonomy): autonomous swarm worker orchestration, nudge triggers, and recursive loop 2026-10-05 04:32:06 +00:00
operator-main b0454289ae feat(box): recursive job workflow -- job-result, job-status, job-next, job-chain 2026-10-05 04:14:04 +00:00
box-ctl cf687dcd4c Delete job rec-test-b via box-ctl 2026-10-05 04:10:16 +00:00
box-ctl d54db98f33 Delete job rec-test-a via box-ctl 2026-10-05 04:10:16 +00:00
box-ctl 4869a9d53d Update job rec-test-b via box-ctl 2026-10-05 04:10:05 +00:00
box-ctl bebcc2d675 Chain job rec-test-a -> rec-test-b via box-ctl 2026-10-05 04:09:29 +00:00
box-ctl b7cc5c555e Add job rec-test-b via box-ctl 2026-10-05 04:09:29 +00:00
box-ctl 40df9d35ae Add job rec-test-a via box-ctl 2026-10-05 04:09:29 +00:00
operator dc1b4f8ce6 fix(dispatch): eliminate noisy SSH signatures from routine job prompts and activate real tool triggers 2026-10-05 04:04:41 +00:00
operator d09e1c4872 feat(sidechats): auto-archive completed ephemeral job threads via hybrid gateway 2026-10-05 03:57:06 +00:00
operator 2132d15cb4 feat(box): expand agent tool capabilities with files, web, and service ops 2026-10-05 03:51:43 +00:00
operator 581bbfe3b4 fix(harvester): format tool outputs into concise human-readable messages 2026-10-05 03:47:18 +00:00
operator 31c03e0d0f feat(box): enable real-time agent tool triggers and capabilities expansion 2026-10-05 03:41:43 +00:00
operator 0e99e31fe9 fix(loop): eliminate main chat saturation from sidechat activity
- Exclude automated jobs ([JOB ...]) and heartbeat from sidechat activity digestion
- Exclude recurring background job channels (box-*-health, canary, heartbeat) from monitored sidechats
- Reset default prompt destinations to dedicated task sidechats (646 tasks, main-loop brain, pip tasks, muse tasks)
- Prevent synthetic 'Incoming sidechat activity' prompts from polluting agent Main Chats
2026-10-05 03:30:25 +00:00
operator da59ad6edd feat(harvester,jobs): fast gateway harvesting, parallel thread polling, dynamic sidechat spawning
- Implement muse_hybrid fast gateway in response-harvester.py with ThreadPoolExecutor
- Reduce harvest cycle time from ~1m50s to ~18s; eliminate browser tab-hopping and CDP lock contention
- Add smart active thread filtering in get_monitored_threads to prune dead historical test pipes
- Fix initial watermark ingestion logic so fresh sidechats process first-arrival job responses
- Configure gw_wait window in dm.py (20s on reply:expected) so backend generation is not prematurely severed
- Update box-http-health, box-service-health, box-deep-health to dynamic timestamped sidechats without reuse_key
- Fix heartbeat job to route to dedicated heartbeat channel
2026-10-05 03:21:20 +00:00
operator 03ea7ed6d9 fix(main-loop): configure sidechats to actively drive main chat across all fleet agents 2026-10-05 03:01:27 +00:00
operator 0eadd096b7 feat(fleet): expand sidechat auto-provisioning for muse and dev, integrate response harvesting 2026-10-05 02:48:59 +00:00
operator ec547b28ac feat(sidechats): headless gateway new channel auto-provisioning and dedicated heartbeat channel 2026-10-05 02:27:23 +00:00
operator 9f27dbd592 feat(main-loop): expand fleet dual monitoring to dev, verify box-relay paths and sidechat brain execution 2026-10-05 01:53:23 +00:00
operator c54f0120da fix(cookies): add dev port 9460 to NODES in refresh-node-cookies.py 2026-10-05 01:39:08 +00:00
operator aba4bce682 feat(fleet): expand VALID_AGENTS to include dev and def 2026-10-05 01:38:26 +00:00
operator 61cf9d027b feat(signers): register operator-dev and dev public keys in allowed_signers 2026-10-05 01:38:07 +00:00
operator 741e5952d4 feat(signers): register operator-pip and pip public keys in allowed_signers 2026-10-05 01:29:08 +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 664b4da952 chore(jobs): enforce sidechat targets for mainloop rollout jobs p1-p4 2026-10-04 23:44:42 +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 f60394cd9b feat(subagent): implement subagent lifecycle tracking and core loop reactive wakeup
- Implement bin/subagent_tracker.py with session registry in subagent-sessions.json
- Register spawned sessions automatically in super-cli.py cmd_deploy
- Add check_subagents() to bin/self_main_loop.py with thread updated watermark comparison
- Add 15-minute stall watchdog with automated parent alerting
- Support 'box subagent spawn' top-level command alias in super-cli.py
- Add symmetrical pip-opm sidechat routing in job-sidechats.json
2026-10-04 23:40:04 +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 c1545fe6db fix(sidechats): alias heartbeat and heartbeat-opm to main-loop brain 2026-10-04 23:07:18 +00:00
operator f88e3c4f57 feat(cred): add meta-audit command to inspect Accounts Center linked profiles and sync opm/pip accounts 2026-10-04 23:03:27 +00:00
operator 75e6e745a9 feat(core-loop): implement dual-monitoring, fast gateway dispatch, dedicated pip tasks sidechat, and 2m cadence 2026-10-04 23:02:04 +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 3d5fbe5aeb NODES.md: mark ghost nodes def, dev inactive
The unassigned def/dev nodes were being iterated every 5 min by
agent-health.sh (via netvm-registry.py active_nodes()), producing a
perpetual FAIL -> kill -9 -> CRITICAL loop since they can never
"recover". fleet-alert-check.sh iterates the same registry, so this
also stops ghost-node alert noise. The dev registry row itself came
from another session's uncommitted work; this commit keeps their row
and marks it inactive rather than provisioning a node nobody asked
for.

Session: sidechat/chromebox-fixes
2026-10-04 22:47:25 +00:00
operator-main 76f854da6b Harden agent-health.sh: soften API-timeout kill path, add recent-relaunch guard
- Require 2 CONSECUTIVE muse-chat-api.py API failures before kill -9
  (per-node counter in /tmp/agent-health-state, reset on success).
  A single 30s API timeout killed 646s healthy browser at 20:48:44 UTC
  while its CDP port was still listening.
- Extend post-restart re-check grace to ~60s (15s internal + 45s), matching
  chromebox-watchdog.shs proven 60s retry window.
- Add recent_relaunch() guard (mirrors chromebox-watchdog.sh idiom):
  skip the kill path when the main browser process launched <2 min ago,
  so the two watchdogs can not kill each others fresh browsers.
- check_agent now returns 0/1/2 (healthy/api-fail/port-down); CDP-port
  failure still kills immediately. warp-$node checks untouched.

Session: sidechat/chromebox-fixes
2026-10-04 22:46:44 +00:00
operator 5984e374ce docs(onboarding): document hard /access edge gate resolution via Meta Accounts Center and activate dev node 2026-10-04 22:43:27 +00:00
operator-main f5d92467c4 bin/muse-threads.py: JSON-contract thread bookkeeping over muse-cli-node
Wraps session-pin/unpin/archive/unarchive/rename + threads in the per-agent hybrid gateway transport (netns-isolated, auto-refreshing cookies). Emits the {ok,code,error} contract server.py needs; validates agent/thread/title; never prints secrets, never uses a shell.

Session: sidechat/muse-cli-threads-helper
2026-10-04 22:35:30 +00:00
operator 178ddc5dbf feat(cred): harden client onboarding with Instagram linking portal, age verification bypass, and fleet runbook 2026-10-04 21:43:32 +00:00
operator-main 7902622852 dm.py: autoprovision creation check — refuse to adopt parked/already-mapped thread UUIDs (fixes 2026-10-04 heartbeat misroute) 2026-10-04 21:16:50 +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 5ab157b3b0 fleet alerting: fix netns naming in agent-health.sh + add fleet-alert-check.sh
agent-health.sh used bare node names for 'ip netns exec' but netns are

named warp-<node> since the NetVM layout; the 6189793 CDP-liveness check

always failed ('No such file or directory'), logging false CRITICALs and

kill -9'ing healthy browsers every 5 min. Use warp-$node.

fleet-alert-check.sh: new 5-min critical-condition detector (per-node CDP

liveness via warp-<node> netns). Consecutive-failure state machine:

page after 2 consecutive failures, re-page every 30 min while critical,

quiet-hours-aware (first alert always pages). Emits ALERT/RECOVERY

records to ~/.local/share/fleet-alert/outbox.jsonl for the container

fleet-alert-relay hook; best-effort box-ctl notify to healthy agents.

Session: sidechat/critical-alerting-pipeline
2026-10-04 20:09:36 +00:00
operator-main 8bb64c4826 Restore executable bit on sweeper/harvester (dropped by atomic mv) 2026-10-04 20:07:06 +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
box-ctl b5c5e2ff4c Add job mainloop-p1-pilot via box-ctl 2026-10-04 20:02:09 +00:00