@surlymochan/evalid 0.5.12 → 0.5.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +19 -0
- package/README.md +61 -0
- package/RELEASE_NOTES.md +20 -0
- package/docs/launch-dossier.md +2 -2
- package/package.json +1 -1
- package/src/agent_team/atoms/phase-run-dispatch.js +0 -8
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,25 @@ All notable changes to this project are documented here. Detailed notes live in
|
|
|
5
5
|
|
|
6
6
|
## [Unreleased]
|
|
7
7
|
|
|
8
|
+
## [0.5.14] - 2026-11-09
|
|
9
|
+
|
|
10
|
+
### Added
|
|
11
|
+
- **PR comment ledger (#75)**: the proof-ledger workflow now posts the claim-vs-evidence ledger as a PR comment (`action/ledger-comment.mjs`, `.github/workflows/proof-ledger.yml`). A green proof gets a ✅ comment naming the verified change; a tampered proof fails the `ledger` check and gets a ❌ comment naming the exact break point, so a replay mismatch can no longer pass CI silently. Test evidence: 18 new tests in `test/github-action-ledger-comment.test.js` 18/18 pass; local full `npm test` 464 tests / 463 pass / 0 fail / 1 skipped (pre-existing); PR CI run 42505482112 success.
|
|
12
|
+
|
|
13
|
+
Milestone M1 "GitHub Action end-to-end" acceptance evidence (issue #73, comment 6724800077): ① green path — PR #75 merged af88e2da, proof-ledger run 42505482067 success, ✅ ledger comment 6724656930; ② red path — demo PR #76 (closed unmerged by plan) turned the `ledger` check red (run 42505769769) and the ❌ comment 6724768829 names the break point `green_tree_mismatch: test/demo-tamper.test.js`; ③ CI replay and local replay agree on both verdicts (`valid` green, `green_tree_mismatch` tampered) through the same validator entry.
|
|
14
|
+
|
|
15
|
+
Acceptance debt, stated plainly: the bench-number acceptance for P1-2 / P1-3 / P2-1 / P2-3 still awaits the MiniMax full-matrix batch (15 instances × 4 arms × reps 3), which is stopped on MiniMax Token Plan quota exhaustion. No bench numbers are claimed in this release.
|
|
16
|
+
|
|
17
|
+
## [0.5.13] - 2026-11-09
|
|
18
|
+
|
|
19
|
+
### Added
|
|
20
|
+
- **Proof-seal verification GitHub Action (#71)**: new JavaScript action (`action.yml`, node22) that runs the existing i6b seal validator for one change-id/phase/attempt and exits non-zero unless the seal verifies and the clean replay matches the claim. Inputs: change-id, phase, attempt, project-root, tdd-mode; outputs: ok, verdict. Test evidence: 6 new tests in `test/github-action-verify-proof.test.js` (valid sealed green proof verifies; tampered proof fails with `binding_mismatch`; test drift after the seal fails with `green_tree_mismatch`; missing proof fails with `missing`; CLI entry exit 0/1; action.yml declares inputs and entry) 6/6 pass; RED→GREEN verified (`ERR_MODULE_NOT_FOUND` before the entry existed); PR CI run 42494536803 success.
|
|
21
|
+
|
|
22
|
+
### Changed
|
|
23
|
+
- **Removed dead phase-run-dispatch atom wrapper (#68)**: `src/agent_team/atoms/phase-run-dispatch.js` had zero callers — repo-wide grep finds only its own definition site, it is absent from `atoms/registry.json` and from the public `src/index.js` surface, and registry entry `I2.phase_run.dispatch` points elsewhere. No runtime behaviour changed. Test evidence: local full `npm test` 440 tests / 439 pass / 0 fail / 1 skipped (pre-existing); PR CI run 42483989723 verify pass.
|
|
24
|
+
|
|
25
|
+
Acceptance debt, stated plainly: the bench-number acceptance for P1-2 / P1-3 / P2-1 / P2-3 still awaits the MiniMax full-matrix batch (15 instances × 4 arms × reps 3), which is stopped on MiniMax Token Plan quota exhaustion. No bench numbers are claimed in this release.
|
|
26
|
+
|
|
8
27
|
## [0.5.12] - 2026-11-08
|
|
9
28
|
|
|
10
29
|
### Added
|
package/README.md
CHANGED
|
@@ -149,6 +149,67 @@ node bin/xflow.js compare codex-goal
|
|
|
149
149
|
node bin/xflow.js launch copy
|
|
150
150
|
```
|
|
151
151
|
|
|
152
|
+
## GitHub Action: verify proofs in CI
|
|
153
|
+
|
|
154
|
+
evalid ships as a GitHub Action (`action.yml` at the repo root). Add it to a
|
|
155
|
+
workflow to verify a sealed TDD proof on every PR: a valid proof keeps the
|
|
156
|
+
check green, a broken seal (or a test edited after the seal) turns it red —
|
|
157
|
+
and the claim-vs-evidence ledger is posted as a PR comment either way, so
|
|
158
|
+
the reviewer sees the claim next to the replay evidence without opening
|
|
159
|
+
the workflow log.
|
|
160
|
+
|
|
161
|
+
```yaml
|
|
162
|
+
name: Proof ledger
|
|
163
|
+
on:
|
|
164
|
+
pull_request:
|
|
165
|
+
types: [opened, synchronize, reopened]
|
|
166
|
+
permissions:
|
|
167
|
+
contents: read
|
|
168
|
+
pull-requests: write
|
|
169
|
+
jobs:
|
|
170
|
+
ledger:
|
|
171
|
+
runs-on: ubuntu-24.04
|
|
172
|
+
steps:
|
|
173
|
+
- uses: actions/checkout@v7.0.1
|
|
174
|
+
with:
|
|
175
|
+
fetch-depth: 0 # replay materializes files from the recorded HEAD
|
|
176
|
+
- uses: actions/setup-node@v7.1.0
|
|
177
|
+
with:
|
|
178
|
+
node-version: '22'
|
|
179
|
+
- uses: surlymochan/evalid@main # or a release tag (see CHANGELOG)
|
|
180
|
+
with:
|
|
181
|
+
change-id: my-change
|
|
182
|
+
phase: green
|
|
183
|
+
github-token: ${{ secrets.GITHUB_TOKEN }}
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
Inputs: `change-id` (required), `phase` (`green`, default), `attempt` (`0`,
|
|
187
|
+
default), `project-root` (`.`, default), `tdd-mode` (auto-detect, default),
|
|
188
|
+
`post-comment` (`true`, default — set `false` to skip the comment),
|
|
189
|
+
`github-token` (defaults to `$GITHUB_TOKEN`), `pr-number` (auto-detects
|
|
190
|
+
from the event payload or ref when empty).
|
|
191
|
+
|
|
192
|
+
The comment is upserted on a stable marker
|
|
193
|
+
(`<!-- evalid-ledger: <change-id>/<phase>/<attempt> -->`), so re-runs
|
|
194
|
+
update the same comment instead of posting a new one per push. A failed
|
|
195
|
+
comment post never masks the verdict: the step still exits on the proof
|
|
196
|
+
result, and `comment_posted` / `comment_url` are exposed as outputs.
|
|
197
|
+
The check fails (exit 1) on `binding_mismatch`, `snapshot_mismatch`,
|
|
198
|
+
`green_tree_mismatch`, replay mismatches, or a missing proof; the comment
|
|
199
|
+
names the breakage point (for example the test files that drifted after
|
|
200
|
+
the seal).
|
|
201
|
+
|
|
202
|
+
Local equivalent of the CI replay — same validator, same entry:
|
|
203
|
+
|
|
204
|
+
```bash
|
|
205
|
+
node action/verify-proof.mjs --project-root . --change-id my-change --phase green
|
|
206
|
+
```
|
|
207
|
+
|
|
208
|
+
This repo dogfoods the Action on its own PRs via
|
|
209
|
+
`.github/workflows/proof-ledger.yml`: it discovers every sealed proof
|
|
210
|
+
added or changed by the PR (`specs/changes/*/tdd/*.json`) and verifies
|
|
211
|
+
each one.
|
|
212
|
+
|
|
152
213
|
## Commands
|
|
153
214
|
|
|
154
215
|
The installed binary is `xflow` (`npm install -g evalid` installs the `xflow` CLI). Every
|
package/RELEASE_NOTES.md
CHANGED
|
@@ -1,5 +1,25 @@
|
|
|
1
1
|
# Release Notes
|
|
2
2
|
|
|
3
|
+
## 0.5.14 - PR comment ledger (milestone M1 accepted)
|
|
4
|
+
|
|
5
|
+
Patch release. One new feature since 0.5.13, verified end to end in CI and locally.
|
|
6
|
+
|
|
7
|
+
**PR comment ledger (#75).** The proof-ledger workflow now posts the claim-vs-evidence ledger as a PR comment: a green proof gets a ✅ comment on the PR, and a tampered proof fails the `ledger` check and gets a ❌ comment naming the exact break point, so a replay mismatch can no longer pass CI silently. Test evidence: 18 new tests in `test/github-action-ledger-comment.test.js` 18/18 pass; local full `npm test` 464 tests / 463 pass / 0 fail / 1 skipped (pre-existing); PR CI run 42505482112 success.
|
|
8
|
+
|
|
9
|
+
**Milestone M1 "GitHub Action end-to-end" — accepted.** Evidence in issue #73, comment 6724800077: ① green path — PR #75 merged (af88e2da), proof-ledger run 42505482067 success, ✅ ledger comment 6724656930; ② red path — demo PR #76 (closed unmerged by plan) turned the `ledger` check red (run 42505769769) and the ❌ comment 6724768829 names the break point `green_tree_mismatch: test/demo-tamper.test.js`; ③ CI replay and local replay agree on both verdicts (`valid` green, `green_tree_mismatch` tampered) through the same validator entry.
|
|
10
|
+
|
|
11
|
+
Acceptance debt, stated plainly: the bench-number acceptance for P1-2, P1-3, P2-1 and P2-3 — the wall-clock/token/resolved lines from issue #5 — still awaits the MiniMax full-matrix batch (15 instances × 4 arms × reps 3), which is stopped on MiniMax Token Plan quota exhaustion. No bench numbers are claimed in this release.
|
|
12
|
+
|
|
13
|
+
## 0.5.13 - Proof-seal verification action
|
|
14
|
+
|
|
15
|
+
Patch release. One new feature and one dead-code removal since 0.5.12, both verified by the test suite.
|
|
16
|
+
|
|
17
|
+
**Proof-seal verification GitHub Action (#71).** A new JavaScript GitHub Action (`action.yml`, node22) runs the existing i6b seal validator for one change-id/phase/attempt and fails the check unless the seal verifies and the clean replay matches the claim, so a replay mismatch can no longer pass CI silently. Test evidence: 6 new tests in `test/github-action-verify-proof.test.js` 6/6 pass (valid sealed green proof verifies; tampered proof fails with `binding_mismatch`; test drift after the seal fails with `green_tree_mismatch`; missing proof fails with `missing`; CLI entry exit 0/1; action.yml declares inputs and entry); RED→GREEN verified; PR CI run 42494536803 success.
|
|
18
|
+
|
|
19
|
+
**Removed dead phase-run-dispatch atom wrapper (#68).** `src/agent_team/atoms/phase-run-dispatch.js` had zero callers and is absent from the atom registry and the public surface, so the wrapper is gone with no behaviour change. Test evidence: local full `npm test` 440 tests / 439 pass / 0 fail / 1 skipped (pre-existing); PR CI run 42483989723 verify pass.
|
|
20
|
+
|
|
21
|
+
Acceptance debt, stated plainly: the bench-number acceptance for P1-2, P1-3, P2-1 and P2-3 — the wall-clock/token/resolved lines from issue #5 — still awaits the MiniMax full-matrix batch (15 instances × 4 arms × reps 3), which is stopped on MiniMax Token Plan quota exhaustion. No bench numbers are claimed in this release.
|
|
22
|
+
|
|
3
23
|
## 0.5.12 - Policy resolve atom test coverage
|
|
4
24
|
|
|
5
25
|
Patch release. One test-coverage addition since 0.5.11, verified by the full test suite. No runtime behaviour changed.
|
package/docs/launch-dossier.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# evalid Launch Dossier
|
|
2
2
|
|
|
3
|
-
Generated: 2026-11-
|
|
3
|
+
Generated: 2026-11-09T01:50:00.000Z
|
|
4
4
|
Mode: post_publish
|
|
5
5
|
Verdict: conditionally ready: engine and adoption evidence are strong, registry publication remains required for a splash launch
|
|
6
6
|
Launch ready: not yet
|
|
@@ -117,7 +117,7 @@ Evidence:
|
|
|
117
117
|
- Adoption records: 1; status: pass
|
|
118
118
|
- Goal audit: pass; goal: Keep evalid credible as an open-source agent delivery runtime: repo-owned workflow contracts, executable verification gates, durable project context, and honest benchmark evidence.
|
|
119
119
|
- Package evidence: missing; source: registry_json
|
|
120
|
-
- Package name/version: @surlymochan/evalid@0.5.
|
|
120
|
+
- Package name/version: @surlymochan/evalid@0.5.14
|
|
121
121
|
|
|
122
122
|
## Passing Evidence
|
|
123
123
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@surlymochan/evalid",
|
|
3
|
-
"version": "0.5.
|
|
3
|
+
"version": "0.5.14",
|
|
4
4
|
"description": "Claimed != verified: a runtime verification layer for coding agents. It seals each test run and replays it from a clean snapshot, with a zero-judge gate pipeline (spec clarification, code review, TDD proof) and the xflow CLI.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"ai-agents",
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import { synthesizePhaseArtifact } from '../common.js';
|
|
2
|
-
|
|
3
|
-
export async function phaseRunDispatch(input = {}, context = {}) {
|
|
4
|
-
return synthesizePhaseArtifact(input, context, {
|
|
5
|
-
phase: input.phase || context.phase?.id || 'execute',
|
|
6
|
-
summary: 'Phase-run dispatch completed and execution evidence was recorded.',
|
|
7
|
-
});
|
|
8
|
-
}
|