Repository navigation
Add Factory Droid capture through hooks and bounded backfill - #2793
Conversation
|
R1 at F1 P1: both live capture and recovery treat an unreadable cwd/.hypignore as absent through default existsSync. Real non-root filesystem probe: readable ignore folder produces zero recovery projections; chmod000 makes recovery emit one and live capture return HTTP200/rowsWritten1. Fail closed on unprobeable policy paths in both lanes and add regressions before landing. Reviewer checks: 81 focused tests pass, typecheck and text/diff checks pass. Independent discovery, payload/batch, 65-session cursor, path and root/nested hook ownership controls pass. The committed Droid test covers root-level detach preserving user/fallback handlers; existing nested detach tests stay green. Projected rows retain cwd, do not bill cumulative totals, and use existing export/dedupe paths. LLP 0045 is forward-ref-only; 0551 is Draft. CPU/memory: discovery, transcript payloads/batches and cursor counts are bounded as described in the report; 256 MiB is a pre-read reservation, not a whole-pipeline byte/heap ceiling. Per-notification exclusion refresh and per-batch cache/spool dedup still scale with stored data. No separate performance blocker found. Steward reports head/master full suites green with no Hermes reproduction; required smokes remain pending for the fix head. Real Factory and installed-service acceptance not repeated. Server-suite gate not triggered. Do not land this head. 🤖 Generated with Claude Code |
Both capture lanes resolved usage policy with the default existsSync, so a .hypignore inside an unreadable folder read as absent and the session was captured under the implicit full default. Probe with a stat that counts any error other than ENOENT/ENOTDIR as present, as Copilot and LangGraph do, so the resolver's fail-closed read suppresses the session. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Final review through R2 at F1 P1 fixed: live capture and recovery now fail closed when the session cwd cannot be probed for .hypignore. Independent non-root filesystem reproduction writes no rows in either lane (live HTTP 202/skipped). The new regression covers readable ignore, inaccessible cwd and restored access; removing only the fix makes it fail with live 5/recovered 1. Checks: 82 focused tests pass, typecheck passes, independent privacy and helper controls pass, and the restored review checkout is clean. R1 discovery/read/batch/cursor/path and hook ownership evidence carries. The committed root-event detach regression and existing nested/other-client tests remain green. No accepted LLP decision was rewritten. Steward reports full suite at this head 8,873 pass / 0 fail / 3 skip and all four required smokes passing (cli_bundled_plugins_activated, client_attach_idempotent, walkthrough_picker_to_first_query, droid_capture). CPU/memory: the fix substitutes one stat for each existing existence probe with transient allocation, preserving resolver memoization and adding no retained state. No new performance blocker. R1 bounds and qualifications remain: recovery's 256 MiB is a pre-read reservation; exclusion refresh and cache/spool dedup costs scale with stored data. Real Factory/installed-service acceptance was not repeated. Server-suite gate not triggered. 🤖 Generated with Claude Code |
Factory Droid conversations can now be collected into
ai_gateway_messagesfrom local version-2 transcripts. Native hooks notify a loopback listener; scheduled backfill recovers missed notifications using the same projector and durable message identities.Changes
@hypaware/droid, setup selection, client attachment, and neutral skills.FACTORY_HOME_OVERRIDE,.hypignore, local-only policy, and persistent session exclusions.Validation
npm run smoke -- droid_capturepassed. Typecheck, declaration build, package contents, npx startup, LLP number check, and final focused regressions passed.Known baseline failure
npm test: 8,867 passed, seven skipped, one failed. The Hermes legacy-session catch-up test attest/plugins/hermes-source.test.js:660timed out with 64 of 133 sessions. The identical failure reproduced on unchanged baselinead8a40958df74517a7241e245390abc0afe19a54; this PR does not claim a green full-suite gate.Scope is local Factory CLI transcripts. Hosted sessions without local transcript files and Devin collection remain outside this change.