What counts as a definition-of-done check was the origin project's stack (pytest / lint-imports / frontend) frozen into core: emit.py classified against inline literals and the Focus panel carried three fixed rows with duplicated regexes. Per the three-layer law that is project knowledge, so it now lives in one file: core/checks ships the old rows as the default, and a checks file in manager/local/ replaces it wholesale — the same filename-wins resolution as prompts. - core/checks: '<label>: <command regex>' per line, self-documenting; read fresh on every use. - emit.py classifies Bash commands against the resolved file (kind 'check', the label carried into the summary) and judges pass/fail generically — counted results, broken totals, OK/FAILED verdict lines — since the hook payload carries no exit status. The runtime moved under a __main__ guard so the classifier is importable. - config.checks() mirrors the parser (the bridge stays standalone) and httpd serves it in /api/state; the Focus panel renders one row per served entry, matching events with the same patterns — no fixed rows, no duplicated regexes. - manager/local/checks gives bench its real definition (unittest), so the self-hosted board shows a check that can actually run. - The default BOARD_AGENT_COMMANDS drops its pytest prefix: core no longer names any stack outside the shipped checks default, and a test walks manager/core to keep it that way. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
19 lines
914 B
Plaintext
19 lines
914 B
Plaintext
# Definition-of-done checks — the project half of the Focus view's
|
|
# CHECKS panel. One check per line:
|
|
#
|
|
# <label>: <regex matched against the commands agents run>
|
|
#
|
|
# The board never runs anything: the agent adapter classifies each
|
|
# command an agent runs against these patterns, and Focus shows the last
|
|
# matching run per row, judged pass/fail from the command's own output.
|
|
#
|
|
# Core ships this default; a file named `checks` in manager/local/
|
|
# replaces it WHOLESALE (same resolution as prompts — the local file
|
|
# wins by filename). The adapter and the browser read the same file, so
|
|
# a label edited here flows to classification and rendering alike; keep
|
|
# patterns in the regex dialect Python and JavaScript share. Read fresh
|
|
# on every event and request — edits apply without a restart.
|
|
pytest: \bpytest\b
|
|
lint-imports: \blint-imports\b
|
|
frontend: type-check|vue-tsc|\bnpm (run )?test\b|\bvitest\b
|