fix(proevesett): case 4's fixture is intent-approved, so only the sequencing gate can stop it

The scaffold writes a current intent_approved_hash (sha256 over ## Intent +
## Goal) into the case-4 brief. Chose a literal marker over running
intent-approval.mjs --stamp in the scaffold because --stamp emits a
brief-approved record into the live stats the yardstick reads: every eval
run would count as an approval.

New grader no-intent-halt (regex, trace, not_contains
code\W{1,12}BRIEF_INTENT_): a halt at the intent gate fails the case
instead of passing it for the wrong gate.

says-fail / says-pass take FAILED / PASSED as the verdict word. v2's word
boundary dropped them. The one says-fail failure (PM, 1 of 7) is not
explained: its trace was deleted, and 0 of 13 kept replies used another
spelling than FAIL.

Case 4 alone, 10 runs: 10 of 10. In 3 of 10 the child ran the intent gate
first, passed it and went on to the brief-validator. That order halted the
case before. Before the fix, same day: 5 of 6.

Green: tests/lib/proevesett.test.mjs 9 of 9.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Kjell Tore Guttormsen 2026-09-23 10:49:05 +02:00
commit a0ee9e863c
Signed by: ktg
SSH key fingerprint: SHA256:JakMjO6FTBBzN0Bhfj9saOoEjaFxlSdYuZQQpM/lF9Q
5 changed files with 16 additions and 2 deletions

View file

@ -0,0 +1,6 @@
---
type: regex
pattern: 'code\W{1,12}BRIEF_INTENT_'
target: trace
match: not_contains
---

View file

@ -1,6 +1,10 @@
#!/bin/bash
# Seeds the empty run workspace with a project folder whose brief declares
# brief_version 2.1 but carries neither phase_signals nor phase_signals_partial.
# The intent IS approved (a current intent_approved_hash over ## Intent + ## Goal),
# so the intent gate passes and only the sequencing gate can stop the run.
# The marker is written literally, not by `intent-approval.mjs --stamp`: --stamp
# emits a brief-approved record into the live stats the yardstick reads.
# Self-contained on purpose: the run cannot read the eval directory.
set -eu
mkdir -p proj
@ -17,6 +21,8 @@ research_status: skipped
auto_research: false
interview_turns: 1
source: fixture
intent_approved_hash: "sha256:d435093683f06b5832b1a546c5ea54b9b30aebf556bfbf6b05e91a2a85149542"
intent_approved_at: "2026-09-23T00:00:00.000Z"
---
# Task: add a greeting helper

View file

@ -1,4 +1,4 @@
---
type: regex
pattern: '(?<![Nn][Oo][Tt]\s)\bFAIL\b'
pattern: '(?<![Nn][Oo][Tt]\s)\bFAIL(?:ED)?\b'
---

View file

@ -1,4 +1,4 @@
---
type: regex
pattern: '(?<![Nn][Oo][Tt]\s)\bPASS\b'
pattern: '(?<![Nn][Oo][Tt]\s)\bPASS(?:ED)?\b'
---

View file

@ -5,6 +5,8 @@
//
// - the new case for veikart steg 1's gate exists, and its fixture really
// reaches the intent gate (passes the sequencing gate, has no marker)
// - case 4 (plan-halts-without-phase-signals) can only be stopped by the
// sequencing gate: its fixture carries a current intent approval
// - review-requires-project: the error line is written by CODE (the arg
// parser), and the grader reads the parser's code from the trace
// - grader weaknesses the PM re-measurement found (2026-09-23):