Alex V.
1a46109b97
enhance(#1579): deterministic gsd-tools query eval.score verb (#1583)
* feat(#1579): deterministic gsd-tools query eval.score verb
Split C of #1573 (pure code, lowest risk). Adds an eval.score query verb
(coverage*0.6 + infra*0.4; bands 80/60/40) mirroring the verify.* chain;
gsd-eval-auditor consumes it instead of doing weighted arithmetic in-prompt.
Non-breaking — additive only.
arXiv: 2601.15130 (Plausibility Trap/DPDM), 2507.10281 (Table Agent), 2508.15754 (TIR).
* fix(#1579): address review — domain guard, property test, glossary, SKIP_ROOT, inventory/baseline
- C3 input-domain: reject out-of-domain eval.score (require 0<=covered<=total; was emitting overall_score>100 / negatives)
- C1 property test: add tests/eval.property.test.cjs (fast-check) — determinism, band monotonicity, [0,100] bounds, never-throws
- C2 glossary: CONTEXT.md "Eval Scoring Module" entry (source-of-truth path + interface)
- C4: add `eval` to SKIP_ROOT_RESOLUTION (pure arithmetic; no .planning/ access)
- inventory: register generated eval.cjs/eval-command-router.cjs (INVENTORY-MANIFEST.json + INVENTORY.md rows)
- size: regen agent-size baseline for gsd-eval-auditor (reused gsd_run shim + eval.score step)
- eslint: ignore generated eval*.cjs (ADR-457 bin/lib migration coverage)
* fix(#1579): register eval family in alias-drift gates
Add EVAL_COMMAND_ALIASES/EVAL_SUBCOMMANDS to scripts/check-alias-drift.cjs
families and to familyArrayKeys in the manifest-coverage test, so the eval
family lands under the same drift guard as every sibling family
(state/verify/init/phase/phases/validate/roadmap). Addresses trek-e review.
check:alias-drift ok; feat-3251 coverage 9/9; eval suites 10/10.
* docs(#1579): use half-open verdict band ranges in CLI-TOOLS
overall_score is fractional and thresholds are >=80/>=60/>=40, so a score
in [79,80) is correctly NEEDS WORK despite the old '60-79' label. Relabel
bands as 60-<80 / 40-<60 / 0-<40 to match the code. Addresses trek-e nit.
* fix(#1579): validate eval.score CLI inputs
Reject unknown infra tokens and fractional counts, and pin the 80-point verdict boundary including rounding-before-banding behavior.
2026-06-24 17:16:13 -04:00
..
2026-06-09 12:51:15 -04:00
2026-06-02 11:45:01 -04:00
2026-06-14 20:52:56 -04:00
2026-06-21 22:55:22 -04:00
2026-06-15 16:18:54 -04:00
2026-06-15 18:50:46 -04:00
2026-06-02 11:45:01 -04:00
2026-06-23 23:21:06 -04:00
2026-06-17 20:14:12 -04:00
2026-06-16 02:38:47 -04:00
2026-06-20 01:59:03 -04:00
2026-06-20 01:59:03 -04:00
2026-06-23 21:49:43 -04:00
2026-06-20 03:24:47 -04:00
2026-06-20 01:59:03 -04:00
2026-06-20 10:50:12 -04:00
2026-06-20 01:59:03 -04:00
2026-06-20 01:59:03 -04:00
2026-06-19 12:02:36 -04:00
2026-06-17 14:32:43 -04:00
2026-06-23 23:21:06 -04:00
2026-06-10 10:40:12 -04:00
2026-06-02 11:45:01 -04:00
2026-06-14 02:09:10 -04:00
2026-06-02 11:45:01 -04:00
2026-06-24 17:16:13 -04:00
2026-06-02 11:45:01 -04:00
2026-06-13 10:27:12 -04:00
2026-06-23 22:47:57 -04:00
2026-06-22 00:59:41 -04:00
2026-06-21 22:46:34 -04:00
2026-06-23 16:10:34 -04:00
2026-06-15 18:50:46 -04:00
2026-06-23 16:10:34 -04:00
2026-06-08 22:51:43 -04:00
2026-06-02 11:45:01 -04:00
2026-06-08 13:29:13 -04:00
2026-06-22 23:43:22 -04:00
2026-06-24 13:26:25 -04:00
2026-06-15 16:40:48 -04:00
2026-06-02 11:45:01 -04:00
2026-06-14 21:44:21 -04:00
2026-06-24 17:16:13 -04:00
2026-06-24 17:16:13 -04:00
2026-06-11 11:36:50 -04:00
2026-06-08 23:37:41 -04:00
2026-06-24 13:39:17 -04:00
2026-06-18 21:59:10 -04:00
2026-06-15 18:50:46 -04:00
2026-06-23 23:21:06 -04:00
2026-06-15 23:19:21 -04:00
2026-06-15 16:18:54 -04:00
2026-06-06 23:56:53 -04:00
2026-06-24 13:19:10 -04:00
2026-06-21 11:21:52 -07:00
2026-06-04 13:44:05 -04:00
2026-06-14 09:37:41 -04:00
2026-06-04 13:44:05 -04:00
2026-06-23 23:21:06 -04:00
2026-06-16 00:12:54 -04:00
2026-06-24 13:19:10 -04:00
2026-06-15 16:18:54 -04:00
2026-06-20 01:59:03 -04:00
2026-06-17 11:14:17 -04:00
2026-06-20 13:37:16 -04:00
2026-06-02 18:35:29 -04:00
2026-06-02 11:45:01 -04:00
2026-06-15 18:50:46 -04:00
2026-06-02 11:45:01 -04:00
2026-06-05 17:58:48 -04:00
2026-06-20 13:37:22 -04:00
2026-06-20 18:45:41 -04:00
2026-06-20 13:37:32 -04:00
2026-06-15 18:50:46 -04:00
2026-06-24 13:19:10 -04:00
2026-06-02 11:45:01 -04:00
2026-06-14 20:52:36 -04:00
2026-06-24 13:19:10 -04:00
2026-06-21 23:22:17 -04:00
2026-06-21 10:44:48 -04:00
2026-06-22 09:56:15 -04:00
2026-06-08 14:04:26 -04:00
2026-06-21 10:44:48 -04:00
2026-06-20 13:37:16 -04:00
2026-06-02 11:45:01 -04:00
2026-06-06 11:24:48 -04:00
2026-06-05 17:58:48 -04:00
2026-06-18 07:44:52 -04:00
2026-06-02 11:45:01 -04:00
2026-06-21 23:04:34 -04:00
2026-06-20 18:45:41 -04:00
2026-06-21 23:21:39 -04:00
2026-06-21 23:30:27 -04:00
2026-06-23 14:38:38 -04:00
2026-06-21 21:55:29 -04:00
2026-06-23 10:21:06 -04:00
2026-06-13 01:49:25 -04:00
2026-06-18 21:47:18 -04:00
2026-06-23 19:17:03 -04:00
2026-06-23 12:10:21 -04:00
2026-06-11 12:37:25 -04:00
2026-06-02 11:45:01 -04:00
2026-06-02 11:45:01 -04:00
2026-06-07 01:06:41 -04:00
2026-06-18 14:41:20 -04:00
2026-06-21 23:14:43 -04:00
2026-06-12 22:27:02 -04:00
2026-06-20 13:37:32 -04:00
2026-06-24 14:41:45 -04:00
2026-06-23 14:52:32 -04:00
2026-06-15 16:18:54 -04:00
2026-06-17 08:52:23 -04:00
2026-06-15 17:03:22 -04:00
2026-06-24 13:19:10 -04:00
2026-06-17 15:44:11 -04:00
2026-06-02 18:35:29 -04:00
2026-06-23 12:10:21 -04:00
2026-06-02 11:45:01 -04:00
2026-06-20 18:45:41 -04:00
2026-06-07 01:26:56 -04:00
2026-06-24 13:19:10 -04:00
2026-06-02 11:45:01 -04:00
2026-06-24 17:03:01 -04:00
2026-06-02 11:45:01 -04:00
2026-06-15 16:18:54 -04:00
2026-06-02 11:45:01 -04:00
2026-06-15 16:40:48 -04:00
2026-06-11 11:36:30 -04:00
2026-06-21 15:38:44 -04:00