Skip to content

Proofline v4.5h: PL-CRIT01 and PL-NEXT2 (0.2.0-next.2) - #46

Merged
mgillr merged 5 commits into
mainfrom
pl-crit01
Oct 21, 2026
Merged

mgillr merged 5 commits into
mainfrom
pl-crit01

Conversation

@mgillr

@mgillr mgillr commented Oct 21, 2026

Copy link
Copy Markdown
Collaborator

I land contract v4.5h (owner-signed, canonical sha256 9d33ec9beee1bd22eb6bcf9975afdd7e2dbde742ec040b1877d117c3210ed334), PL-CRIT01 (crit: claims, leading (?i)/(?s)/(?m) grep flags) and PL-NEXT2 (version 0.2.0-next.2).

The approved proposal bytes replace proofline.json: two tasks (PL-CRIT01: crit:<id> claims and leading (?i)/(?s)/(?m) grep flags; PL-NEXT2: version 0.2.0-next.2) and one sentence in the notes. No other task changes. File sha256 59f854a31a2d2e4c46d7ce5d4c2dc03b12e19f272fb07ba80eb0bf46cc3ec819. proofline.json.sig is my owner signature over the canonical hash 9d33ec9beee1bd22eb6bcf9975afdd7e2dbde742ec040b1877d117c3210ed334.

Signed-off-by: mgillr <[email protected]>
…grep pattern may start with (?i) or (?s)

An intake or measurement task adds no test file. Its proof is a command the gate runs, so the tests column had nothing the repository lookup could find, and "-", "n/a" and "none" count as naming no test. I made the tests column take crit:<criterion id>. It holds only when the id is a criterion of the claimed task, it ran in this gate, it is a command, metric, test_red_green or docs check, and it passed. An unknown id, another task's criterion, a grep, file_exists, scope or wiring check, or a criterion that did not pass is a claim mismatch with that reason. Any other name is still looked up in the repository. The gate hands checkClaim the id, type and status of each criterion it ran.

The grep verifier built new RegExp(pattern, flags), and JavaScript refuses a leading (?i) or (?s), the way the Python verifier in x402-conformance's CI writes flags, as an invalid group. Those criteria crashed here and the gate was BLOCKED for a contract that passes there. A leading (?i), (?s) or (?m) now becomes flags added to the criterion's own. A pattern without one is unchanged and stays case-sensitive.

test/claims_crit.test.mjs and test/grep_inline_flags.test.mjs fail on the parent and pass here.

Signed-off-by: mgillr <[email protected]>
I moved the version to 0.2.0-next.2 in package.json and package-lock.json and put the Unreleased changelog entries under a dated 0.2.0-next.2 heading, so the version on npm carries PL-CRIT01. 0.2.0-next.1, the current latest and next, predates it.

Signed-off-by: mgillr <[email protected]>
The approvals entry names the exact approved bytes (file sha256 59f854a31a2d2e4c46d7ce5d4c2dc03b12e19f272fb07ba80eb0bf46cc3ec819), so the self-gate sees the owner approval in CI and not only on the signing machine.

Signed-off-by: mgillr <[email protected]>
The self-gate reads .proofline/config.json to find the approvals directory; an absolute machine path does not exist in CI, so the tracked config points at the repo-relative directory that holds the marker.

Signed-off-by: mgillr <[email protected]>
@mgillr
mgillr merged commit efaaca1 into main Oct 21, 2026
1 check passed
@mgillr
mgillr deleted the pl-crit01 branch October 21, 2026 04:31
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant