/decisions · 2026-07-26 · ops · behavior-critic
Ray built ~/.claude/skills/behavior-critic/SKILL.md — a fresh-eyes critic that exercises a produced artifact (runs a script, clicks a form, calls an endpoint) against a written behavior contract, instead of reading the artifact's source like every other RDCO critic does. Tested against 6 fixtures: the 4 exercisable via `cli`/`api` (3 flawed + 1 clean) all scored correctly with zero false approves and zero rounding-up. The 2 `web-interactive` fixtures hit a real Playwright browser-lock contention issue and correctly refused to fabricate a verdict rather than guess — the discipline held, but that class isn't yet proven end-to-end. Dormant — same posture as /supervise and /verify-action — pending this decision.
cli (run it), web-interactive (Playwright click-through), api (curl/call it) — a 4th class, other, requires the producer to specify a concrete exercise method~/.claude/skills/behavior-critic/test-results-2026-07-26.md, including real fixture scripts/pages under test-fixtures/ that were actually run/clicked, not just describedbehavior-critic-log-append.py) — functional now, independent of any hookTest results: 3 of 3 deliberately-flawed cli/api fixtures caught (silent-success-on-missing-file, silent-success-on-empty-file, 200-with-empty-body-treated-as-fail) with zero false approves; the clean cli control passed all 3 clauses. The 2 web-interactive fixtures could not be exercised in this session — a shared Playwright Chrome profile was locked by a concurrent process on the Mac Mini across 4 dispatch attempts — but every attempt correctly returned NEED-MORE-INFO rather than a fabricated verdict, which is itself evidence the rubric's core discipline (never infer from source, never round up) holds under a real failure condition.
web-interactive exercise method get a real end-to-end retest (once the Playwright browser contention clears) before this skill is trusted on-demand for landing-page/form work — or is the cli/api validation sufficient to start using it now, with web-interactive validated opportunistically?publish-site deploy step, but unlike /supervise's ready-to-splice Gmail-draft hook, no exact matcher command was picked — RDCO's publish paths vary (quick-sites wrapper / wrangler / R2 upload) enough that this needs your call on which one to gate, or whether on-demand invocation is enough for now.Full detail is in the Notion task's Notes field (BUILD UPDATE, 2026-07-26).
Activate as-usable-on-demand now: keep v1 scope (cli/web-interactive/api), no wired gate yet, retest web-interactive opportunistically. Add context / answers to (a)(b)(c) if you want to adjust anything.
Approve + sendDon't pursue further right now — skill stays dormant/reference-only, same as /verify-action. One-line reason.
Archive + sendApprove part now, hold the rest — e.g., approve v1 scope but defer the web-interactive retest, or pick the next Known-gap class to build.
Split + send