Skip to content

Commit 514ed45

Browse files
spec: V19, structuring canonical proof confidence
Promotes ENGI to V19 after V18's generated positive proof closure by making reproducible canon, deterministic replay, and fail-closed promotion the canonical acceptance surface. Proof-source commit: 1f7ce4f V19 keeps V18's positive proof baseline closed and re-materializes it under V19 as generated structured artifacts: - proof-member semantic matrix: 720 / 720 passing cells - theorem-evidence matrix: 912 / 912 passing cells - state-machine matrix: 200 / 200 passing cells - total inherited positive proof surface: 1832 cells, all passing, no accepted exclusions This release adds reproducible-canon proof closure around that baseline: - deterministic replay report generation with two-run byte equality checks - explicit replay context for canonical generation, including fixed clean worktree state - volatility inventory over canonical proof artifacts with zero blocking findings - representative negative proof mutation matrix with 10 / 10 mutations rejected as expected - omitted mutation cross-product ledger with reopen conditions - generated V18-to-V19 contract-change ledger - committed generated JSON artifacts for all V19 matrix and report surfaces - canonical promotion command sequencing for future version bumps `ENGI_SPEC_V19_PROVEN.md` is generated from proof-source commit `1f7ce4f8c2151c44d1b60ed9ad6f27890f3d6532` using the established proof-source commit convention. The generated appendix records `worktreeState: clean`, `fullyProven: true`, `704` artifact digests, `1832` inherited positive matrix cells, `10` accepted mutation cells, `0` blocking volatility findings, and deterministic replay success. Implementation closes the V19 parity requirements: - adds V19 reproducible-canon builders and generated artifact materialization - extends the `_PROVEN_` generator with V19 replay, volatility, mutation, artifact, and ledger sections - adds deterministic replay, volatility inventory, negative mutation, and contract ledger tests - adds `promote:canon` as the canonical promotion entrypoint - makes canonical promotion use an explicit `--worktree-state clean` replay-context input so post-commit check mode remains byte-current - updates V19 spec, notes, and parity matrix to record completed promotion prep and generated-only appendix expectations - advances `ENGI_SPEC.txt` to `V19` Verification: - `npm run promote:canon -- --version V19 --commit HEAD` - unit tests pass 56 / 56 - integration tests pass 42 / 42 - E2E tests pass 15 / 15 - full aggregate suite passes 121 / 121 - targeted proof-member, theorem-evidence, state-machine, deterministic replay, volatility, negative mutation, and contract-ledger gates pass - `ENGI_SPEC_V19_PROVEN.md` passes generated check mode - `git diff --check`
1 parent 1f7ce4f commit 514ed45

8 files changed

Lines changed: 49 additions & 49 deletions

.engi/v19-contract-change-ledger.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@
4444
}
4545
],
4646
"fromVersion": "V18",
47-
"generatedAt": "2026-04-09T18:54:45-03:00",
47+
"generatedAt": "2026-04-09T20:29:44-03:00",
4848
"ledgerId": "v19-contract-change-ledger",
4949
"matrixDeltas": [
5050
{

.engi/v19-deterministic-replay-report.json

Lines changed: 21 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -4,57 +4,57 @@
44
"artifactPath": ".engi/v19-contract-change-ledger.json",
55
"byteEqual": true,
66
"byteLength": 3290,
7-
"firstDigest": "sha256:d5b38d719d91520489be025e3b57f642f87306564d21b7dcfcadc2a08d908afa",
8-
"secondDigest": "sha256:d5b38d719d91520489be025e3b57f642f87306564d21b7dcfcadc2a08d908afa"
7+
"firstDigest": "sha256:b157d1e2b6fbaee23dfd69e0a60c08e403d9340b4f7ce0320a61623730069274",
8+
"secondDigest": "sha256:b157d1e2b6fbaee23dfd69e0a60c08e403d9340b4f7ce0320a61623730069274"
99
},
1010
{
1111
"artifactPath": ".engi/v19-negative-proof-mutation-matrix.json",
1212
"byteEqual": true,
1313
"byteLength": 8049,
14-
"firstDigest": "sha256:be5b69cf4169b6d8dff43b7ff5e5120fda95dfce72e0ecdf927e5ac8d4189025",
15-
"secondDigest": "sha256:be5b69cf4169b6d8dff43b7ff5e5120fda95dfce72e0ecdf927e5ac8d4189025"
14+
"firstDigest": "sha256:0886f5159397fe1dd94823b7c58549ddb9ba31ad53bb91f61f15111b916dcc48",
15+
"secondDigest": "sha256:0886f5159397fe1dd94823b7c58549ddb9ba31ad53bb91f61f15111b916dcc48"
1616
},
1717
{
1818
"artifactPath": ".engi/v19-proof-member-semantic-matrix.json",
1919
"byteEqual": true,
2020
"byteLength": 1682034,
21-
"firstDigest": "sha256:a47d0cf1dcde5cb60c76fb2a5c68976f33704df222cce27a75829c82bcf6056b",
22-
"secondDigest": "sha256:a47d0cf1dcde5cb60c76fb2a5c68976f33704df222cce27a75829c82bcf6056b"
21+
"firstDigest": "sha256:72d570c80cc05092a5dcf1c1ac9ccf9555340f4c014ee8324f0ec6347d6e0d51",
22+
"secondDigest": "sha256:72d570c80cc05092a5dcf1c1ac9ccf9555340f4c014ee8324f0ec6347d6e0d51"
2323
},
2424
{
2525
"artifactPath": ".engi/v19-state-machine-matrix.json",
2626
"byteEqual": true,
2727
"byteLength": 154149,
28-
"firstDigest": "sha256:80509940bdce15f31d7b8a7cb5148093213e5fe483d5ab6abbfb9ee56d0df722",
29-
"secondDigest": "sha256:80509940bdce15f31d7b8a7cb5148093213e5fe483d5ab6abbfb9ee56d0df722"
28+
"firstDigest": "sha256:24796bbe7135eb54aa8dd8ebc92187eb8bcc90f811d1fd090812ce00ce9ea3a3",
29+
"secondDigest": "sha256:24796bbe7135eb54aa8dd8ebc92187eb8bcc90f811d1fd090812ce00ce9ea3a3"
3030
},
3131
{
3232
"artifactPath": ".engi/v19-theorem-evidence-matrix.json",
3333
"byteEqual": true,
3434
"byteLength": 2246792,
35-
"firstDigest": "sha256:715dec2e01857d30474ba0af8abc611f24d3cc3225079c75e34d914c93924d33",
36-
"secondDigest": "sha256:715dec2e01857d30474ba0af8abc611f24d3cc3225079c75e34d914c93924d33"
35+
"firstDigest": "sha256:e46643867142f49255a9ae56436cd1964d72d0ae91aa71a69b7d90319232618e",
36+
"secondDigest": "sha256:e46643867142f49255a9ae56436cd1964d72d0ae91aa71a69b7d90319232618e"
3737
},
3838
{
3939
"artifactPath": ".engi/v19-volatility-inventory.json",
4040
"byteEqual": true,
4141
"byteLength": 6197,
42-
"firstDigest": "sha256:93375ec01c7275f2f161b3b0f06016e96e69272a32b0f7f8a01fcda1edc991de",
43-
"secondDigest": "sha256:93375ec01c7275f2f161b3b0f06016e96e69272a32b0f7f8a01fcda1edc991de"
42+
"firstDigest": "sha256:9c6b453b167583244ae23ae45c54bf60ce3d6fa29fabbfb03de981eb25a5476d",
43+
"secondDigest": "sha256:9c6b453b167583244ae23ae45c54bf60ce3d6fa29fabbfb03de981eb25a5476d"
4444
},
4545
{
4646
"artifactPath": "ENGI_SPEC_V19_PROVEN.md",
4747
"byteEqual": true,
4848
"byteLength": 288033,
49-
"firstDigest": "sha256:fabeb0ea5ada1e811b885ee87e748fbbba94411b3c67e36424bfd0ae4a24aab2",
50-
"secondDigest": "sha256:fabeb0ea5ada1e811b885ee87e748fbbba94411b3c67e36424bfd0ae4a24aab2"
49+
"firstDigest": "sha256:11c96470bd17cbdd1494069488e072e89f0a6875a811cedd788a9b544b97af7f",
50+
"secondDigest": "sha256:11c96470bd17cbdd1494069488e072e89f0a6875a811cedd788a9b544b97af7f"
5151
}
5252
],
5353
"failureReason": "",
54-
"generatedAt": "2026-04-09T18:54:45-03:00",
54+
"generatedAt": "2026-04-09T20:29:44-03:00",
5555
"generatorId": "engi-demo.proven-generator.v1",
5656
"passed": true,
57-
"proofSourceCommit": "221e718ea34c904e3d4413dfc470feab38fca673",
57+
"proofSourceCommit": "1f7ce4f8c2151c44d1b60ed9ad6f27890f3d6532",
5858
"reportId": "v19-deterministic-replay-report",
5959
"runCount": 2,
6060
"version": "V19",
@@ -64,35 +64,35 @@
6464
"classification": "context-bound",
6565
"fieldPath": "canonicalCommitRecordedAt",
6666
"reason": "canonical commit timestamp is fixed by proof-source commit",
67-
"value": "2026-04-09T18:54:45-03:00"
67+
"value": "2026-04-09T20:29:44-03:00"
6868
},
6969
{
7070
"artifactPath": "_proven-data",
7171
"classification": "context-bound",
7272
"fieldPath": "generatedAt",
7373
"reason": "generatedAt is fixed by replay context",
74-
"value": "2026-04-09T18:54:45-03:00"
74+
"value": "2026-04-09T20:29:44-03:00"
7575
},
7676
{
7777
"artifactPath": ".engi/v19-proof-member-semantic-matrix.json",
7878
"classification": "context-bound",
7979
"fieldPath": "generatedAt",
8080
"reason": "generatedAt is fixed by replay context",
81-
"value": "2026-04-09T18:54:45-03:00"
81+
"value": "2026-04-09T20:29:44-03:00"
8282
},
8383
{
8484
"artifactPath": ".engi/v19-theorem-evidence-matrix.json",
8585
"classification": "context-bound",
8686
"fieldPath": "generatedAt",
8787
"reason": "generatedAt is fixed by replay context",
88-
"value": "2026-04-09T18:54:45-03:00"
88+
"value": "2026-04-09T20:29:44-03:00"
8989
},
9090
{
9191
"artifactPath": ".engi/v19-state-machine-matrix.json",
9292
"classification": "context-bound",
9393
"fieldPath": "generatedAt",
9494
"reason": "generatedAt is fixed by replay context",
95-
"value": "2026-04-09T18:54:45-03:00"
95+
"value": "2026-04-09T20:29:44-03:00"
9696
},
9797
{
9898
"artifactPath": "_proven-data",

.engi/v19-negative-proof-mutation-matrix.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -144,7 +144,7 @@
144144
}
145145
],
146146
"coverageMode": "representative-first-gate",
147-
"generatedAt": "2026-04-09T18:54:45-03:00",
147+
"generatedAt": "2026-04-09T20:29:44-03:00",
148148
"matrixId": "v19-negative-proof-mutation-matrix",
149149
"mutationClassCount": 10,
150150
"mutationClasses": [

.engi/v19-proof-member-semantic-matrix.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44436,7 +44436,7 @@
4443644436
}
4443744437
],
4443844438
"failedCells": [],
44439-
"generatedAt": "2026-04-09T18:54:45-03:00",
44439+
"generatedAt": "2026-04-09T20:29:44-03:00",
4444044440
"inheritedFromMatrixId": "v18-proof-member-semantic-matrix",
4444144441
"matrixId": "v19-proof-member-semantic-matrix",
4444244442
"passedCellCount": 720,

.engi/v19-state-machine-matrix.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4388,7 +4388,7 @@
43884388
}
43894389
],
43904390
"failedCells": [],
4391-
"generatedAt": "2026-04-09T18:54:45-03:00",
4391+
"generatedAt": "2026-04-09T20:29:44-03:00",
43924392
"inheritedFromMatrixId": "v18-state-machine-matrix",
43934393
"matrixGroups": [
43944394
"repeated-run",

.engi/v19-theorem-evidence-matrix.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57300,7 +57300,7 @@
5730057300
}
5730157301
],
5730257302
"failedCells": [],
57303-
"generatedAt": "2026-04-09T18:54:45-03:00",
57303+
"generatedAt": "2026-04-09T20:29:44-03:00",
5730457304
"inheritedFromMatrixId": "v18-theorem-evidence-matrix",
5730557305
"matrixId": "v19-theorem-evidence-matrix",
5730657306
"passedCellCount": 912,

.engi/v19-volatility-inventory.json

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -13,35 +13,35 @@
1313
"classification": "context-bound",
1414
"fieldPath": "canonicalCommitRecordedAt",
1515
"reason": "canonical commit timestamp is fixed by proof-source commit",
16-
"value": "2026-04-09T18:54:45-03:00"
16+
"value": "2026-04-09T20:29:44-03:00"
1717
},
1818
{
1919
"artifactPath": "_proven-data",
2020
"classification": "context-bound",
2121
"fieldPath": "generatedAt",
2222
"reason": "generatedAt is fixed by replay context",
23-
"value": "2026-04-09T18:54:45-03:00"
23+
"value": "2026-04-09T20:29:44-03:00"
2424
},
2525
{
2626
"artifactPath": ".engi/v19-proof-member-semantic-matrix.json",
2727
"classification": "context-bound",
2828
"fieldPath": "generatedAt",
2929
"reason": "generatedAt is fixed by replay context",
30-
"value": "2026-04-09T18:54:45-03:00"
30+
"value": "2026-04-09T20:29:44-03:00"
3131
},
3232
{
3333
"artifactPath": ".engi/v19-theorem-evidence-matrix.json",
3434
"classification": "context-bound",
3535
"fieldPath": "generatedAt",
3636
"reason": "generatedAt is fixed by replay context",
37-
"value": "2026-04-09T18:54:45-03:00"
37+
"value": "2026-04-09T20:29:44-03:00"
3838
},
3939
{
4040
"artifactPath": ".engi/v19-state-machine-matrix.json",
4141
"classification": "context-bound",
4242
"fieldPath": "generatedAt",
4343
"reason": "generatedAt is fixed by replay context",
44-
"value": "2026-04-09T18:54:45-03:00"
44+
"value": "2026-04-09T20:29:44-03:00"
4545
},
4646
{
4747
"artifactPath": "_proven-data",
@@ -156,7 +156,7 @@
156156
"value": "sorted"
157157
}
158158
],
159-
"generatedAt": "2026-04-09T18:54:45-03:00",
159+
"generatedAt": "2026-04-09T20:29:44-03:00",
160160
"inventoryId": "v19-volatility-inventory",
161161
"passed": true,
162162
"scannedArtifactCount": 4,

ENGI_SPEC_V19_PROVEN.md

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
# ENGI Spec V19 Proven
22

33
- canonicalVersion: `V19`
4-
- canonicalCommit: `221e718ea34c904e3d4413dfc470feab38fca673`
5-
- canonicalCommitRecordedAt: `2026-04-09T18:54:45-03:00`
4+
- canonicalCommit: `1f7ce4f8c2151c44d1b60ed9ad6f27890f3d6532`
5+
- canonicalCommitRecordedAt: `2026-04-09T20:29:44-03:00`
66
- worktreeState: `clean`
77
- generatorId: `engi-demo.proven-generator.v1`
8-
- generatedAt: `2026-04-09T18:54:45-03:00`
8+
- generatedAt: `2026-04-09T20:29:44-03:00`
99
- outputPath: `ENGI_SPEC_V19_PROVEN.md`
1010
- scenarioIds: `auth-issuer-rollback`, `rust-validator-proof-gap`, `config-policy-precedence-incident`, `unsafe-patch-review-recovery`, `infra-deployment-mismatch`, `privacy-boundary-proof-export`, `polyglot-gateway-benchmark-remediation`, `auth-many-asset-normalization`
1111
- branchModes: `patch`, `context`
@@ -31,13 +31,13 @@
3131

3232
| artifactPath | digest | byteLength |
3333
| --- | --- | --- |
34-
| `.engi/v19-contract-change-ledger.json` | `sha256:d5b38d719d91520489be025e3b57f642f87306564d21b7dcfcadc2a08d908afa` | 3290 |
35-
| `.engi/v19-deterministic-replay-report.json` | `sha256:afa10cecc7b9bb76228aa1042ff1f352d7de23a75bf38498f14556c11891608e` | 8426 |
36-
| `.engi/v19-negative-proof-mutation-matrix.json` | `sha256:be5b69cf4169b6d8dff43b7ff5e5120fda95dfce72e0ecdf927e5ac8d4189025` | 8049 |
37-
| `.engi/v19-proof-member-semantic-matrix.json` | `sha256:a47d0cf1dcde5cb60c76fb2a5c68976f33704df222cce27a75829c82bcf6056b` | 1682034 |
38-
| `.engi/v19-state-machine-matrix.json` | `sha256:80509940bdce15f31d7b8a7cb5148093213e5fe483d5ab6abbfb9ee56d0df722` | 154149 |
39-
| `.engi/v19-theorem-evidence-matrix.json` | `sha256:715dec2e01857d30474ba0af8abc611f24d3cc3225079c75e34d914c93924d33` | 2246792 |
40-
| `.engi/v19-volatility-inventory.json` | `sha256:93375ec01c7275f2f161b3b0f06016e96e69272a32b0f7f8a01fcda1edc991de` | 6197 |
34+
| `.engi/v19-contract-change-ledger.json` | `sha256:b157d1e2b6fbaee23dfd69e0a60c08e403d9340b4f7ce0320a61623730069274` | 3290 |
35+
| `.engi/v19-deterministic-replay-report.json` | `sha256:756fc95cee3862f5031c9e575240aefc7f0a0d95c903e2d19b93e7cccf617df8` | 8426 |
36+
| `.engi/v19-negative-proof-mutation-matrix.json` | `sha256:0886f5159397fe1dd94823b7c58549ddb9ba31ad53bb91f61f15111b916dcc48` | 8049 |
37+
| `.engi/v19-proof-member-semantic-matrix.json` | `sha256:72d570c80cc05092a5dcf1c1ac9ccf9555340f4c014ee8324f0ec6347d6e0d51` | 1682034 |
38+
| `.engi/v19-state-machine-matrix.json` | `sha256:24796bbe7135eb54aa8dd8ebc92187eb8bcc90f811d1fd090812ce00ce9ea3a3` | 154149 |
39+
| `.engi/v19-theorem-evidence-matrix.json` | `sha256:e46643867142f49255a9ae56436cd1964d72d0ae91aa71a69b7d90319232618e` | 2246792 |
40+
| `.engi/v19-volatility-inventory.json` | `sha256:9c6b453b167583244ae23ae45c54bf60ce3d6fa29fabbfb03de981eb25a5476d` | 6197 |
4141

4242
### V19 Inherited Positive Matrix Summaries
4343

@@ -56,13 +56,13 @@
5656

5757
| artifactPath | firstDigest | secondDigest | byteEqual |
5858
| --- | --- | --- | --- |
59-
| `.engi/v19-contract-change-ledger.json` | `sha256:d5b38d719d91520489be025e3b57f642f87306564d21b7dcfcadc2a08d908afa` | `sha256:d5b38d719d91520489be025e3b57f642f87306564d21b7dcfcadc2a08d908afa` | `true` |
60-
| `.engi/v19-negative-proof-mutation-matrix.json` | `sha256:be5b69cf4169b6d8dff43b7ff5e5120fda95dfce72e0ecdf927e5ac8d4189025` | `sha256:be5b69cf4169b6d8dff43b7ff5e5120fda95dfce72e0ecdf927e5ac8d4189025` | `true` |
61-
| `.engi/v19-proof-member-semantic-matrix.json` | `sha256:a47d0cf1dcde5cb60c76fb2a5c68976f33704df222cce27a75829c82bcf6056b` | `sha256:a47d0cf1dcde5cb60c76fb2a5c68976f33704df222cce27a75829c82bcf6056b` | `true` |
62-
| `.engi/v19-state-machine-matrix.json` | `sha256:80509940bdce15f31d7b8a7cb5148093213e5fe483d5ab6abbfb9ee56d0df722` | `sha256:80509940bdce15f31d7b8a7cb5148093213e5fe483d5ab6abbfb9ee56d0df722` | `true` |
63-
| `.engi/v19-theorem-evidence-matrix.json` | `sha256:715dec2e01857d30474ba0af8abc611f24d3cc3225079c75e34d914c93924d33` | `sha256:715dec2e01857d30474ba0af8abc611f24d3cc3225079c75e34d914c93924d33` | `true` |
64-
| `.engi/v19-volatility-inventory.json` | `sha256:93375ec01c7275f2f161b3b0f06016e96e69272a32b0f7f8a01fcda1edc991de` | `sha256:93375ec01c7275f2f161b3b0f06016e96e69272a32b0f7f8a01fcda1edc991de` | `true` |
65-
| `ENGI_SPEC_V19_PROVEN.md` | `sha256:fabeb0ea5ada1e811b885ee87e748fbbba94411b3c67e36424bfd0ae4a24aab2` | `sha256:fabeb0ea5ada1e811b885ee87e748fbbba94411b3c67e36424bfd0ae4a24aab2` | `true` |
59+
| `.engi/v19-contract-change-ledger.json` | `sha256:b157d1e2b6fbaee23dfd69e0a60c08e403d9340b4f7ce0320a61623730069274` | `sha256:b157d1e2b6fbaee23dfd69e0a60c08e403d9340b4f7ce0320a61623730069274` | `true` |
60+
| `.engi/v19-negative-proof-mutation-matrix.json` | `sha256:0886f5159397fe1dd94823b7c58549ddb9ba31ad53bb91f61f15111b916dcc48` | `sha256:0886f5159397fe1dd94823b7c58549ddb9ba31ad53bb91f61f15111b916dcc48` | `true` |
61+
| `.engi/v19-proof-member-semantic-matrix.json` | `sha256:72d570c80cc05092a5dcf1c1ac9ccf9555340f4c014ee8324f0ec6347d6e0d51` | `sha256:72d570c80cc05092a5dcf1c1ac9ccf9555340f4c014ee8324f0ec6347d6e0d51` | `true` |
62+
| `.engi/v19-state-machine-matrix.json` | `sha256:24796bbe7135eb54aa8dd8ebc92187eb8bcc90f811d1fd090812ce00ce9ea3a3` | `sha256:24796bbe7135eb54aa8dd8ebc92187eb8bcc90f811d1fd090812ce00ce9ea3a3` | `true` |
63+
| `.engi/v19-theorem-evidence-matrix.json` | `sha256:e46643867142f49255a9ae56436cd1964d72d0ae91aa71a69b7d90319232618e` | `sha256:e46643867142f49255a9ae56436cd1964d72d0ae91aa71a69b7d90319232618e` | `true` |
64+
| `.engi/v19-volatility-inventory.json` | `sha256:9c6b453b167583244ae23ae45c54bf60ce3d6fa29fabbfb03de981eb25a5476d` | `sha256:9c6b453b167583244ae23ae45c54bf60ce3d6fa29fabbfb03de981eb25a5476d` | `true` |
65+
| `ENGI_SPEC_V19_PROVEN.md` | `sha256:11c96470bd17cbdd1494069488e072e89f0a6875a811cedd788a9b544b97af7f` | `sha256:11c96470bd17cbdd1494069488e072e89f0a6875a811cedd788a9b544b97af7f` | `true` |
6666

6767
### V19 Volatility Inventory
6868

0 commit comments

Comments
 (0)