AIOSAI
5b476e0dc3
feat(prax): commons live social feed in monitor (DPLAN-0257) — monitor run commons streams posts/comments/votes/reactions room-tagged, mode=ro sqlite (write refused, live-verified), 10-event backfill + 1.5s id-cursor poll, --logs escape, relay drop-in. 33 new tests, 1065 green, audit 100. Built by @prax, devpulse-verified + live door-tested (post/comment/react streamed)
2026-07-21 20:13:50 -07:00
AIOSAI
4169d085e3
fix(hooks): engine handler timeout (daemon thread + join, honors hooks.json timeout, default 30s, fails loud) + presence_gate PID-reuse defense (procStart vs /proc stat starttime, liveness-only fallback). DPLAN-0253 backlog via DPLAN-0256. 15 new tests, 1272 green, seedgo 31/31 both files. Built by @hooks, devpulse-verified (diff read + suite re-run + checklist)
2026-07-21 18:34:18 -07:00
AIOSAI
37a26ea86c
fix(trigger): runaway-log alerts expire 24h like every other mute (DPLAN-0256 backlog) — _write_alert hardcoded expires_at None, alerts nagged forever; DEFAULT_ALERT_TTL_SECONDS=86400 + forever escape hatch. 2 new tests, 621 green, audit 100. Built by @trigger, devpulse-verified (diff read + suite re-run)
2026-07-21 18:19:37 -07:00
AIOSAI
7a2700d649
feat(drone): joint-decision gate on @git merge (DPLAN-0256, todo #92 ) — TTY gets y/N prompt, headless refused without --confirm, merge_pr unreachable ungated, all decisions logged. 6 new tests (86 green), live refusal verified, seedgo 31/31. Patrick ruling S330: merges together, never accidental
2026-07-21 18:05:39 -07:00
AIOSAI
d1a6c874e8
feat(skills): telegram user_message_relay joins the hook sound layer — relay events carry a sound key (59/59 + 252 green). Rides the @hooks sounds rollout
2026-07-21 18:05:20 -07:00
AIOSAI
76ce13830d
fix(devpulse): watchdog stall threshold 120s to 300s (false stalls on long tool calls, verified live S330) + branch settings.local carries the 350k autoCompactWindow dial (Patrick ruling S326)
2026-07-21 18:04:51 -07:00
AIOSAI
57285740f2
fix(seedgo): AST checker accuracy arc — 13 false positives gone fleet-wide, 2 legit hooks bypasses documented, checkers/audit/checklist aligned, fixture refreshed, stale bypass entries purged (devpulse/memory/seedgo). Fleet audit 100 pct. S330 night arc
2026-07-21 18:04:32 -07:00
AIOSAI
73baa0005f
feat(hooks): sound layer across the hook fleet + temporal grounding handler — sounds mirror the log (2465 green, audit 100, compass #157 ); new prompt/temporal.py injects live local date/time every turn, host-tz, wired both wires (hooks.json + provider manifest). Built by @hooks
2026-07-21 18:04:08 -07:00
AIOSAI
c71f389409
feat(aipass): adopt verb + shared/ scaffold refactor — projects/ adoption (registry, resident agent, additive scaffold) proven on aipass-site (doctor 31/0); shared/project_home + scaffold_content = one source of truth for init/new/adopt; spawn template registry synced. 786 green, audit-clean. Built by @aipass
2026-07-21 18:03:44 -07:00
AIOSAI
e2157e118c
docs(projects): reframe projects/ README — private by default, publishing is opt-in (Patrick ruling). Mechanics unchanged and confirmed: projects/* gitignored, own git repo per project, aipass new creates no remote. CHANGELOG entry updated in place (same unmerged section).
2026-07-20 19:42:47 -07:00
AIOSAI
1ac0cecb9a
docs(projects): projects/ README — satellite-project explainer + Earmark roster entry. Fills the !projects/README.md gitignore whitelist that existed since the aipass-new design. CHANGELOG entry included.
2026-07-20 19:38:16 -07:00
AIOSAI
583a792515
fix(hooks): persistent_alert cross-process dedup + loud trust-break banner (DPLAN-0253 trace round). Dedup: module-global _announced set replaced with session+alert-keyed tempdir guard files - fresh bridge process per prompt meant TTS would announce every turn while an alert existed; banner capped at 10 with overflow note. Trust: is_hash_mismatch distinguishes real break from never-enrolled, trust_break_banner does config-independent walk+hash, engine emits loud banner once per prompt via presence_gate call - a hooks.json edit had silently darkened the ENTIRE hook layer for 2+ hours (found by 5-agent trace round). No auto-heal, re-enroll stays human. Live-fired both ways by devpulse: hash broken = banner, restored = healthy. 16 new tests, 1206 green, seedgo 100 pct, both re-run by devpulse. Also: @hooks prompt corrected (taught one-entry-per-event model) + two-wires checklist + mandatory provider-wire flag; README tree/counts refreshed. Built by @hooks
2026-07-20 16:28:48 -07:00
AIOSAI
33a1510cbb
feat(hooks): auto-compact prep - context gauge + snapshot stamp (DPLAN-0253). context_gauge (UserPromptSubmit) reads live transcript fill each prompt and nudges /prep at 80 pct of the compact trigger, escalates at 95, once per threshold per session; pre_compact_prep (PreCompact) stamps AUTO-COMPACT SNAPSHOT (fill, dispatch locks, open plans, git, inbox) into the compacting branch local.json; shared context_window resolver (env > branch settings.local.json > 200k). Round 2 root cause: name-scoped events (UserPromptSubmit/PreCompact) invoke the bridge per-handler - hooks.json alone never fires; provider_manifest.json entries added for both + @hooks branch prompt corrected with provider-wire reminder (Patrick-directed). 36 new tests, suite 1190 green, seedgo 100 pct, both re-run by devpulse. Built by @hooks, 2 rounds. Go-live: user syncs ~/.claude/settings.json from manifest + fresh session
2026-07-20 13:13:43 -07:00
AIOSAI
d1facd8bdc
fix(skills): TG poll 5xx triggers network backoff — HTTPError >=500 in poll_updates raises _NetworkPollError instead of rapid-fire retry; 4xx unchanged. 3 new tests (502/503 backoff, 429 excluded). Medic loop: detected by @trigger (ERROR ae5ddbd4), fixed autonomously by @skills, verified by devpulse (1080 tests green, seedgo 100%)
2026-07-19 21:20:10 -07:00
AIOSAI
0529a4e7c4
fix(ai_mail): inbox-poller spawn_agent now passes --model DEFAULT_MODEL (sonnet). The daemon asymmetry Vera flagged lived in ai_mail's own handlers/dispatch/daemon.py (name collision, not @daemon branch — their scheduled wakes import wake_branch directly and were covered by efb530e0). DEFAULT_MODEL imported from wake.py, single source; 200k window pin already covered via shared dispatch_monitor wrapper. Test asserts --model in captured spawn cmd. 778 tests green, seedgo 100%, both re-run by devpulse. Investigated by @daemon, built by @ai_mail
2026-07-19 09:32:42 -07:00
AIOSAI
efb530e0b2
feat(ai_mail): dispatch default Sonnet 5 — alias pass-through + 200k context pin. MODEL_MAP replaced by KNOWN_MODEL_ALIASES pass-through (CLI resolves latest-in-class, map can never go stale), DEFAULT_MODEL opus->sonnet, dispatch_monitor pins CLAUDE_CODE_AUTO_COMPACT_WINDOW=200000 per spawn (Sonnet 5 is 1M-native — without pin agents inherit 1M window). E2E: live @cli dispatch probe reported claude-sonnet-5 + WINDOW=200000 from inside the spawned session. 777 tests green, seedgo 100%, both re-run by devpulse. Daemon spawn_agent --model gap confirmed, handled separately. Patrick ruling S326, built by @ai_mail
2026-07-19 09:15:04 -07:00
AIOSAI
f09d42a862
fix(flow): lock+atomic registry aggregate writes — S304 F85 residual. save_branch_registry + save_central were bare open+dump; now O_EXCL lockfile with backoff + tmpfile os.replace, matching save_registry.py. Devpulse verified: 730 tests green + 6-proc 180-write concurrent hammer, final file valid JSON. N1 root cause found: is_template_content line threshold fires before bracket-marker check. CHANGELOG entries. DPLAN-0250, dispatched to @flow
2026-07-19 02:55:55 -07:00
AIOSAI
d631fd8d54
fix(hooks): pytest-guard the two static-path JSONL writers — S304 F6/F43 closed. diagnostics + telegram_response resolved log paths at import, bypassing prax test routing; now per-write resolvers route to tmp under pytest. Devpulse marker-bounded verify: 1154 tests green, engine.jsonl 1291 lines before AND after, zero suite-attributable entries. CHANGELOG wave entry + prep skill feedback-check habit (F46). DPLAN-0250 Track A, dispatched to @hooks
2026-07-19 01:08:59 -07:00
AIOSAI
7811381d54
fix(hooks-tests): stop test_log_write_failure_does_not_crash minting MagicMock/LOG_FILE dirs — bare-Mock LOG_FILE patch reached prax append_jsonl's real mkdir via mock fspath; now patches a real tmp path. 100/100 green, clean-CWD verified zero dirs minted. S324 scan finding, FYI mailed @hooks
2026-07-18 22:10:05 -07:00
AIOSAI
bdb128d904
docs(flow): merge playbook site drift-check step — every merge run asks if install/onboarding/agent-count/platform story changed, aipass.ai updates same day (DPLAN-0249 follow-on, S323 projection ruling). Template edit by @flow, seedgo 42/42
2026-07-18 21:07:10 -07:00
AIOSAI
2213251756
docs(readme): v3 restructure — single-funnel story, site link line, gif slots, Claude-Code-on-Linux/WSL positioning (DPLAN-0249)
2026-07-18 19:43:43 -07:00
AIOSAI
71e5198d4c
feat(onboarding): install ends in a conversation — TDPLAN-0014 chain complete + v2.7.3 bump. Dead-end kills: empty-template init runs handoff+report (default path reaches the conversation), non-interactive completes with defaults exit 0 (was EOFError crash — caught by live door-test after green suites), aipass new TTY auto-launch into the manager w/ printed fallback + escape line. Install-to-chat handoff: launch_inline @aipass with authored first prompt + install report context, ONE unified INIT_PROMPT, headless print-only. Welcome Mode branch prompt (opener spec, name-ask, turn-5 triage, hooks-first via real dispatch, WSL beat, exact-command principle) behaviorally door-tested over a live multi-turn run incl second-session momentum. Feedback pulse (@hooks): 10-turn one-liner, aipass feedback on/off alias, disabled on host, live-proven cadence+persistence. README: install-ends-in-conversation story, aipass new documented, non-interactive truth. CHANGELOG + version 2.7.3 both files. seedgo 17/17 100%, local CI gate green
2026-07-18 15:28:44 -07:00
AIOSAI
193336967b
feat(aipass-new): agent = full spawn citizen at src/<pkg>/<pkg> (FPLAN-0334). new_project routes through spawn_agent() against spawn's new project_agent template (branch prompt, inbox.json, birth certificate, trinity, house entry point, agent README) - hand-rolled scaffold retired. citizen_class=manager, seat path relative, registry walk stops at project root. Birth commit excludes .venv symlink + registry lock. Boundary verified 4/4 refusals incl ai_mail cross-project check
2026-07-17 22:56:19 -07:00
AIOSAI
f6d31285ea
fix(seedgo): Debug_Print detector regex matched print( inside string literals - strip string content before matching (+regression test); flatten depth-5 nesting in cli_ux_check. The auditor was the last branch under 100 - fleet now genuinely 17/17 (FPLAN-0333)
2026-07-17 20:17:41 -07:00
AIOSAI
d4b265ad45
feat(aipass): aipass new + front-door overhaul, project boundary, cli_ux+readme_quality standards, fleet-100 sweep (FPLAN-0333/DPLAN-0247). aipass new creates isolated projects with full framework agents (registry-first credential linkage, birth commit, drone-resolvable from inside, invisible to host). ai_mail refuses cross-project mail. seedgo gains user-facing-quality standards born from live door-test. 15 branch fronts brought to house pattern - 17/17 branches 100%
2026-07-17 19:29:47 -07:00
AIOSAI
6163202a93
release: bump 2.7.2 — compass v2 + ambient recall window. New cadence ruling: PATCH bump + tag every merge, PyPI tracks main
2026-07-16 23:29:26 -07:00
AIOSAI
4912d96f58
docs(flow): merge playbook SOP fixes from live run PPLAN-0010 — gated fetch step replaced with drone @git sync, create-syntax hint at template top
2026-07-16 23:19:50 -07:00
AIOSAI
a89ddb30bd
fix(ci): seedgo gate back to 100% — hooks handler logging + silent catches, memory governance modules/handlers split (import path frozen, bridge E2E green), devpulse README test count. All 17 branches 100%
2026-07-16 22:44:01 -07:00
AIOSAI
e412cfed14
fix(drone): namespace subprocess timeout to --drone-timeout — plain --timeout passes through to modules (watchdog 600s regression, live repro x2). Regression test, 879 green, CHANGELOG both fixes
2026-07-16 22:04:03 -07:00
AIOSAI
6b0dcdccef
fix(memory): governance module ate all @memory commands — standard handle_command signature, declines non-governance commands (Track 2 follow-up). Search verified live, 1011 green
2026-07-16 21:31:10 -07:00
AIOSAI
1902775812
feat(compass): Track 2 ambient recall — compass_recall hook + pure governance (memory) + recall API w/ rare-token scoring (devpulse), verbatim tidbit injection, live acceptance matrix green (DPLAN-0246/FPLAN-0332). 446+1011+1129 tests, seedgo 100%
2026-07-16 20:43:49 -07:00
AIOSAI
03dfce20b4
feat(devpulse): compass curation v2 Track 1 — supersedes links + atomic archive, write-time FTS conflict advisory, note command, --include-archived, score code-removal, review-per-prep (DPLAN-0246/FPLAN-0331). 435 green, seedgo 31/31
2026-07-16 19:45:21 -07:00
AIOSAI
b3bb529a6a
feat(drone): 3-layer timeout policy — per-command overrides + --timeout flag + 30s default, override hint in error (DPLAN-0245). 878 tests green
2026-07-16 00:09:28 -07:00
AIOSAI
702e335cb8
fix(skills): TG routine read-timeouts silenced on OSError path + outage episode-start demoted ERROR→WARNING per Patrick ruling — ends medic wake-loop. 825 TG tests green
2026-07-15 23:21:41 -07:00
AIOSAI and Claude Fable 5
a8b1ce6658
feat(hooks): DPLAN-0244 hooks.json trust model hardening — Layer A engine gates + Layer B registry/CLI
...
Closes a zero-interaction RCE where a hostile repo's .aipass/hooks.json
(discovered via loader CWD walk-up, bridge wired globally) could run an
arbitrary command-type hook on SessionStart. Defense-in-depth:
Layer A (engine): refuse command-type hooks from per-project configs via
unconditional _source clobber; gate handler paths to aipass.* namespace.
Layer B (loader+CLI): trusted-project registry (path+sha256), fail-closed
trust-check, $AIPASS_HOME-only bootstrap (no TOFU), aipass init auto-enroll
+ new aipass trust/revoke commands.
Live acceptance test (real bridge, real payload) proves both gates block
independently. 1105 hooks + 133 aipass tests green.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01YEAyLFCuo4uD934fwFxocz
2026-07-15 18:23:02 -07:00
AIOSAI
294d25cea3
docs: CHANGELOG entry for DPLAN-0243 supply-chain hardening (signing, hash-pinned CI, provenance, hvtracker#186)
2026-07-15 12:36:19 -07:00
AIOSAI
25fc02d07a
feat: TG streaming v2 polish (DPLAN-0229) — logs_were_active + multi-chunk (>4096) finalize now honor the streaming flag: logs-active reconcile-edits the streamed message instead of Done.+fresh, multi-chunk edits chunk 1 in place + sends [2/N] continuations, edit-fail falls back safely. Batch path verified zero-change via regression tests. 6 new tests, 1077 hooks green + seedgo 100% devpulse-verified. Live streamed-turn proof pending Patrick's next streaming session.
2026-07-15 11:14:05 -07:00
AIOSAI
9dc2ecd604
feat: rate_tracker v1.2.0 burst-evasion fix — severity evaluates max(instant_rate, 60s window avg): bursty runaways (20 lines/6s retry-loop shape, 200/min avg, previously 4min undetected live) now sustain through gap windows; continuous unchanged, subsidence clears. 4 new burst tests, 1032 green + seedgo 100% devpulse-verified, live-proven from running service: RUNAWAY WARNING prax_burst_storm_test.log 191 lines/min sustained 120s.
2026-07-15 10:45:38 -07:00
AIOSAI
13ae64cbae
fix: unpark the parked CI reds — Patrick ruling: red CI is never parked. @prax: relay mtime-cache flake root-caused (test relied on two writes sharing one mtime-granularity window — true locally, false on CI) — os.utime pins mtime so the cache contract tests deterministically, 50/50+20/20 loops green. @hooks: 4 Windows session_boot reds — _tmux_session_exists() real subprocess spawn (no tmux on Windows, WinError 2) mocked per ca096295 convention, execvp already mocked = zero real spawns left. 1028 prax + 102 session_boot green, devpulse-verified.
2026-07-15 10:26:09 -07:00
AIOSAI
024cf5a104
fix: pin sys.platform=linux in test_is_pid_alive_dead — Windows runners take the OpenProcess path so the os.kill mock never fires; test reds whenever PID 1234 is alive on the runner (first hit today, 6/6 sibling tests were already pinned by ca096295). 38 presence tests green.
2026-07-15 09:03:01 -07:00
AIOSAI
be68d23d6a
fix: CI green pass on PR#696 — lint (ruff format on trigger runaway tests), seedgo 100% both red branches (@hooks: new json_handler + persistent_alert/alert_dismiss wired through it, cc_sessions introspection gate, _menu_live nesting extraction, 1071 tests; @prax: rate_tracker DI refactor — module layer injects logs_dir + trigger.fire via configure(), 1028 tests), navmap trim 9.3k→7.9k under injection cap. All owner-fixed via dispatch, devpulse-verified: both audits 100% independently re-run, full runaway chain re-proven live post-refactor (332 lines/min storm → WARNING at 130s → trigger → @aipass triage → alert banner rendered in-session → dismiss clears). Burst-evasion design finding (pre-existing, not regression) filed to @prax by mail.
2026-07-15 08:49:21 -07:00
AIOSAI
81658ce0ea
feat: runaway-log detection + escalation (DPLAN-0242, agent-designed) + citizen wake-back. Prax-led three-branch build via TDPLAN-0013: prax rate_tracker (disk-persisted volume detection, WARNING >100 l/min 2min / CRITICAL >10 l/s 1min, 4th monitor thread) + drone @prax log-health; trigger runaway_log_detected event + handler (per-file 30min cooldown independent of medic breaker, UNKNOWN->prax, writes .aipass/alerts.json); hooks persistent_alert banner + drone @hooks dismiss (devpulse fixed nearest-.aipass path bug in both + wired settings.json - registration is not deployment). Live-fire proven: planted 240 l/min storm -> detect 257 l/min -> event -> dispatch -> @aipass autonomous no-action triage -> banner -> dismiss. ai_mail wake ruling: owner-gate removed (citizen wake-back live-proven), devpulse structurally unwakeable (manager check all paths), self-wake loop found+fixed same night (guard + senderless wake-back sessions). Navmap comms section, 4 branch READMEs + root README + CHANGELOG. ~77 new tests, suites green: prax 1028, trigger 619, hooks 1071, ai_mail 765
2026-07-15 00:05:02 -07:00
AIOSAI
de109846bf
fix: prax TG relay offline backoff — network-class send failures enter offline mode (1s-60s doubling, flush gate skips sends, monitor loop never blocks, viewers keep rendering), log-once (enter + 5min summary + recovery w/ drop count), full reset on first success. Found live in Patrick's plug-pull: bots went quiet right, relay spun Send failed every 5s (89 lines) + self-fed via log watcher re-ingest. 11 new tests, 1007 prax green devpulse-verified
2026-07-14 17:01:23 -07:00
AIOSAI
5744073c11
fix: TG bot offline hot-spin — network-class poll errors (DNS/connection/socket) back off exponentially 1s-60s cap, reset on first successful poll; log-once semantics (1 unreachable line + 5min summaries + 1 recovery line) instead of 13 err/sec; routine long-poll read-timeouts silent (863/day medic noise class gone). Found live: Patrick's tether outage spun all 5 bots for an hour. 25 new tests, 822 TG + 252 skills green devpulse-verified
2026-07-14 16:29:57 -07:00
AIOSAI
b791af2372
feat: medic revival + concurrent monitor viewers — pytest logs route to tmp (PYTEST_CURRENT_TEST, fixture storms cant pollute prod logs), breaker self-heals (half-open on read, close on probe, cooldown decay), TTL mutes (mute/off auto-expire 24h, --for/--forever, temp off keeps detection), footer+navmap mute breadcrumbs; prax monitor lock scoped to TG relay role (relay.pid) so viewers always start — Patrick ruling: processes are not agents. Loop proven live: planted commons bug fixed by medic dispatch in 105s byte-identical. 993 prax + 603 trigger green
2026-07-14 14:57:40 -07:00
AIOSAI
af12158cbc
fix: TG bot heartbeat race — generation counter kills resurrected heartbeat threads (shared stop Event cleared by next start let a >5s-stuck thread overwrite delivered replies with Processing...), delivered re-check before every edit in batch+streaming loops, superseded pending placeholders finalized in message+file paths (rapid-fire single-slot strand). Root-caused live from Patrick's frozen bubble; 6 new heartbeat tests, full TG suite 797 green devpulse-verified.
2026-07-14 11:00:48 -07:00
AIOSAI
62d047cac1
fix: TG mirror live-test round — agent_type filter unblocked main chats (daemon-backed sessions carry agent_type=claude; subagents never fire UserPromptSubmit; skip is now agent_id-based) + TG-echo gate (bot stores injected_prompt in pending file, relay skips fresh undelivered text-match; raw injections carry no marker). Found live by Patrick's morning door-tests; mirror proven both directions. 791 TG tests green (incl. cross-file mock fix @skills missed).
2026-07-14 09:16:02 -07:00
AIOSAI
5c82db6729
feat: TG user-comment mirror — user messages from ALL doors (terminal/remote) now mirror to the branch TG chat with origin tag. UserPromptSubmit relay handler (self-contained in telegram skill, crash-isolated last entry in hooks.json), human-only noise fences (system/task notifications, slash-command output, dispatch wakes, subagents, TG-echo, dupes), inbound hardening (stale-pending clean before write, undelivered-overwrite warning). 47 new TG tests, execution proven via engine.jsonl, positive path live-verified to real TG chat.
2026-07-14 02:42:41 -07:00
AIOSAI
116c4e9d69
fix: DPLAN-0241 round 4 — R6 extra_args threaded through ALL launch paths (user flags survive resume/takeover/continue/dead-window/headless), R7 auto-namer stamps --name branch-shortid on every launch (flag live-verified 2.1.209, user -n/--name wins), new-over-all aborts on failed daemon stop, honest close-all hint, exit/q/quit in all menus. op:kill per-job stop found in daemon socket protocol — documented, not shipped (undocumented internal). 1048 hooks tests green (102 session_boot, 11 CLI contract).
2026-07-14 02:10:44 -07:00
AIOSAI
0b739ac525
fix: DPLAN-0241 rounds 2-3 — Enter IS the takeover. Phantom claude-agents-stop removed (bg close honest, never SIGTERM), bg resume = daemon stop --any (returncode-checked, blast-radius y/N confirm) + --resume in tmux with bypass, ALL interactive launches tmux-wrapped, multi-session menu shows real names + explicit pick + honest new/close, real-binary CLI contract test tier (20 tests, phantom-subcommand class unshippable). 1025 hooks tests green, all facts live-verified vs claude 2.1.208. Plus DPLAN north-star: one conversation per branch, surfaces are views, agents bind to machine not interface.
2026-07-13 23:49:57 -07:00