| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
fix(ci): guard the Unix import and handle unavailable companion audio Windows CI at bd8588ffff rejected the Unix-only Duration import after the timeout constant was guarded. Give the import the same platform boundary. The hosted macOS pet contract also assumed an audio device survives between two lease requests. A sink failure correctly releases the lease; accept that branch only when the frame explicitly reports unavailable audio and no owner. An available sink still has to refuse the competing lease. Release both test clients before proceeding. This changes no production audio behavior. Validation: hooks all-target/all-feature Clippy PASS under CI policy; 28/0 hooks tests remain valid from bd8588 (Unix behavior unchanged). Corrected black-box pet contract: 11/0 using the existing debug TUI, exercising the exclusive-lease branch on this Mac. The hardware-unavailable branch still requires hosted proof. fmt/diff checks PASS. JavaScript source unchanged from 8f7744e52f: npm 810/0, 1 platform skip; check:web PASS. Local Windows GNU check stopped before hooks in ring because x86_64-w64-mingw32-gcc is absent. No Windows compile or final CI pass claimed. Failed hosted and local cross-build logs are retained in takeover receipts. Signed-off-by: CodeWhale Bot <bot@codewhale.net> | 2 天前 | |
fix(hooks): expand ~ and create sinks privately; bound unix-socket delivery Audit findings R04-10 and R04-11 (#6561). R04-10: `JsonlHookSink` and `LifecycleOutbox` took their path literally. The documented `[lifecycle_outbox] path = "~/.codewhale/notifications/ outbox.jsonl"` (docs/CONFIGURATION.md, config.example.toml) created a directory literally named `~` in the working directory. New sink files and directories were created with the process umask (0644/0755), so hook and lifecycle events (tool payloads, prompts, paths) were readable by other local users. Both sinks now expand a leading `~` through the existing `codewhale_paths::validate_absolute_path` rule (a path without `~` is unchanged) and share one `open_private_append` that creates new directories 0700 and new files 0600 on Unix. R04-11: `UnixSocketHookSink::emit` awaited `connect` + `write_all` with no bound. `HookDispatcher::emit` awaits sinks in order, so a listener that accepts and never reads stalled every later sink and the emitting turn once the socket buffer filled. Delivery is now bounded at 2s and reported as an error (which the dispatcher already discards per sink). hooks gains a dependency on the leaf codewhale-paths crate (published earlier in scripts/release/crates.sh); Cargo.lock updated to match. Evidence (cargo test -p codewhale-hooks --lib): - fixed: test result: ok. 28 passed; 0 failed - reverted: test result: FAILED. 0 passed; 2 failed ("~/.codewhale/events.jsonl" not expanded; emit exceeded 10s: Elapsed) - modes-only reverted: test result: FAILED. 0 passed; 1 failed (left: 420 = 0o644, right: 384 = 0o600) - restored: test result: ok. 2 passed; 0 failed (filtered); full lib 28 passed Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: CodeWhale Bot <bot@codewhale.net> | 2 天前 |
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 2 天前 | ||
| 2 天前 |