CHANGELOG: record this session's closes — #682 os.kill detector, #665 (full close, items 1/2/4/5/8), #685 subcommand_help standard, #673 append_jsonl + sweep + fleet adoption.

This commit is contained in:
AIOSAI
2026-07-10 18:37:22 -07:00
parent 4404b60305
commit cac79b4b1a
+41
View File
@@ -31,6 +31,36 @@ PyPI version — not the changelog header.
incl. compound-smuggle, wake-back owner/non-owner/depth-cap).
(built by @spawn + @hooks + @ai_mail, verified by devpulse)
- **`subcommand_help` seedgo standard — entry points must intercept `<cmd> --help`
before dispatch (issue #685, split from #665 item 3).** `drone @X <cmd> --help`
had no framework contract: drone (a router, not a standards enforcer) forwards
`--help` as a positional, so behavior was per-branch — 8/16 missed, and two
branches *executed* the subcommand instead of showing help. seedgo now owns the
contract: a new AST checker flags entry points that don't guard `<cmd> --help`
(explicit `remaining_args[0]` guard or argparse `parse_known_args`). 21 tests,
cwd-portable. 7/17 branches comply; the 10 offenders are tracked as a fleet
migration (#686). (@seedgo, verified devpulse)
- **`windows_compat` now detects `os.kill(pid, 0)` liveness probes, not just
documents them (issue #682).** `os.kill(pid, 0)` resolves to `TerminateProcess`
on Windows — it *kills* the target instead of probing it. The checker documented
the anti-pattern but never flagged it in source. A new detector recognizes the
valid early-return platform guard (so the reference impl `watchdog/agent.py` isn't
false-flagged) while catching genuinely unguarded sites. 6 tests; verified across
the fleet (guarded ref passes, 10 offenders caught → fleet migration #684).
(@seedgo, verified devpulse)
- **`append_jsonl` — a sanctioned rotating JSONL writer + a 30-day stale-log sweep
(issue #673).** Branches wrote `.jsonl` via raw `open('a')`, bypassing prax
rotation (which was `.log`-only) — unbounded log growth. `from aipass.prax import
append_jsonl` gives 500 KB / 1-backup atomic (`os.replace`) rotation with zero
dependency on the prax logging pipeline (recursion-safe for @trigger's event
handlers), and `drone @prax log-audit sweep` deletes logs older than 30 days
across system + branch logs. The raw appenders in @backup (1), @hooks (2), and
@trigger (11 `.log` sites → `.jsonl`, plus downstream medic readers) all adopted
it — zero raw log appenders remain fleet-wide.
(@prax + @backup/@hooks/@trigger, verified devpulse)
### Fixed
- **Watchdog stall detector no longer false-fires on a long single tool call, and
@@ -56,6 +86,17 @@ PyPI version — not the changelog header.
#665 items (version, --help names, subcommand --help, placeholders, hints, crash-vs-
unknown) span multiple owners and stay open. (devpulse)
- **`aipass`/`drone` first-contact papercuts resolved — issue #665 fully closed
(items 1, 2, 4, 5, 8).** `aipass --version` now reads package metadata (was
hardcoded `0.1.0`); `aipass --help` lists real `COMMAND` names, not file stems
(`help` not `help_chat`, `init` not `init_flow`); a crashing or unimportable
handler surfaces its real cause instead of `Unknown command` (@aipass). `drone
systems` placeholder descriptions now derive from each branch's passport/README,
fixed in code so they survive registry regen — the earlier gitignored data edit
didn't (@spawn). Bare-mode hints point to working commands — `drone @daemon
--help` (there is no `daemon` binary) and the standard `drone @memory --help`
(@daemon, @memory). Item 3 became the #685 standard. (multi-branch, verified devpulse)
- **Telegram poll loop no longer re-drains a rate-limited backlog; systemd
suicide-loop + silent config fallback fixed (issues #668, #669).** #668: the poll
loop advanced the update offset *after* processing, so a rate-limited/erroring