Skip to content

Commit aa84375

Browse files
spec: V21, proper specifications requiring
Promotes V21 as the first-gate specifying-canon release for ENGI. Proof-source commit: `33f3a75734fd6c0213c95b48f2e373c72fb1b735` This promotion closes V21's first gate: - `ENGI_SPECIFYING.md` is now the one complete specifying standard, with `ENGI_SPEC_TEMPLATEGUIDE.md` reduced to compatibility-only status - V21+ hand-authored canonical spec family is now `SPEC`, `SPEC_DELTA`, and `SPEC_PARITY_MATRIX` - the main `SPEC` is now required to be full-system, re-implementable, and auditable current canon rather than a focus-only release note - full-canon totality is now enforced through appendix-grade derivability carriers rather than broad section headings alone - exact proof-family derivability is now required in `SPEC`, including exact family/member/theorem/replay inventories, member-closure criteria, theorem-by-theorem closure readings, minimum artifact/ replay binding sets, verdict carriers, generated/test bindings, and fail-closed conditions - generated canon is now treated as active canonical drafting input, not merely release output - canonical promotion now fails closed on stale hand-authored status truth, missing file-family members, and missing canonical generated inputs - V21 promotion now validates both `V20` pre-mutation canon and `V21` post-generation canon in one executable gate sequence - V21 adds the minimal version-local specifying artifact family: `.engi/v21-spec-family-report.json` and `.engi/v21-canonical-input-report.json` - V21 generates and checks `ENGI_SPEC_V21_PROVEN.md` as canonical generated appendix output - source-side specifying enforcement now exists in `scripts/check-engi-spec-family.mjs`, `scripts/check-engi-canonical-inputs.mjs`, promotion-time hand-authored status preparation, and V21-aware appendix generation - the generalized specifying checker now validates both active `V21` canon and `V20_PROPER` as a second strict full-canon validation surface - `V20_PROPER` hardens the specifying standard by proving the full-spec structure is reusable against an already-promoted version without future-truth import Validation completed through canonical promotion: - typecheck - unit, integration, and E2E suites - inherited V19 reproducible-canon gates - inherited V20 operator-quality gates - aggregate non-E2E suite - promotion-time hand-authored V21 status preparation - V21 `_PROVEN_` generation and check - post-generation canonical-input validation for pointed `V21` - promoted-mode V21 spec-family validation - `git diff --check` V21 accepts exact derivability carriers, not line-count parity with V16, as the first-gate density threshold. V21 intentionally adds no new runtime/proof/operator artifact family beyond the generated appendix and specifying report pair. `ENGI_SPEC_V22_NOTES.md` opens the next non-canonical notes surface without changing V21 canon.
1 parent 33f3a75 commit aa84375

15 files changed

Lines changed: 3372 additions & 133 deletions
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
{
2+
"reportId": "v21-canonical-input-report",
3+
"version": "V21",
4+
"proofSourceCommit": "33f3a75734fd6c0213c95b48f2e373c72fb1b735",
5+
"generatedAt": "2026-04-12T11:23:06-03:00",
6+
"generatorId": "engi-demo.proven-generator.v1",
7+
"worktreeState": "clean",
8+
"checkedTargetVersion": "V20",
9+
"pointerVersion": "V21",
10+
"passed": false,
11+
"failureCount": 1,
12+
"failures": [
13+
"ENGI_SPEC.txt points to V21 but expected V20."
14+
],
15+
"specPath": "ENGI_SPEC_V20.md",
16+
"provenPath": "ENGI_SPEC_V20_PROVEN.md",
17+
"parityPath": "ENGI_SPEC_V20_SYSTEM_PARITY_MATRIX.md",
18+
"requiredGeneratedArtifactPaths": [
19+
".engi/v20-operator-acceptance-transcript.json",
20+
".engi/v20-visual-regression-report.json",
21+
".engi/v20-accessibility-report.json",
22+
".engi/v20-performance-budget-report.json",
23+
".engi/v20-projection-quality-smoke-matrix.json",
24+
".engi/v20-quality-summary.json"
25+
],
26+
"requiredGeneratedArtifactCount": 6
27+
}

.engi/v21-spec-family-report.json

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
{
2+
"reportId": "v21-spec-family-report",
3+
"version": "V21",
4+
"proofSourceCommit": "33f3a75734fd6c0213c95b48f2e373c72fb1b735",
5+
"generatedAt": "2026-04-12T11:23:06-03:00",
6+
"generatorId": "engi-demo.proven-generator.v1",
7+
"worktreeState": "clean",
8+
"checkedVersion": "V21",
9+
"mode": "draft",
10+
"currentTarget": "V20",
11+
"pointerVersion": "V21",
12+
"passed": false,
13+
"failureCount": 4,
14+
"failures": [
15+
"ENGI_SPEC.txt points to V21 but expected V20.",
16+
"spec status block must declare Current canonical/latest target as V20.",
17+
"delta status block must declare Current canonical/latest target as V20.",
18+
"parity status block must declare Current canonical/latest target as V20."
19+
],
20+
"requiredFiles": [
21+
"ENGI_SPEC_V21.md",
22+
"ENGI_SPEC_V21_DELTA.md",
23+
"ENGI_SPEC_V21_PARITY_MATRIX.md"
24+
],
25+
"supportFiles": [
26+
"ENGI_SPECIFYING.md",
27+
"ENGI_SPEC_TEMPLATEGUIDE.md"
28+
],
29+
"requiredStatusLabelCount": 4,
30+
"requiredPromotedStatusLabelCount": 1,
31+
"requiredSpecSectionCount": 18,
32+
"requiredAppendixSectionCount": 14,
33+
"requiredProofFamilyCount": 9,
34+
"requiredGeneratedArtifactCatalogSectionCount": 9,
35+
"requiredGeneratedArtifactPathCount": 2,
36+
"requiredSubsystemCoverageCount": 18
37+
}

ENGI_SPEC.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
V20
1+
V21

ENGI_SPECIFYING.md

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -505,8 +505,14 @@ For V21+ those carriers must, at minimum, cover:
505505
- subsystem totality and derivability,
506506
- proof family closure,
507507
- an exact proof-family inventory matrix,
508+
- exact per-family member inventories,
509+
- exact per-family theorem inventories,
510+
- exact theorem-to-replay-step groupings,
511+
- current proof-object field carriers for each proof family,
508512
- generated artifact contracts,
509513
- an exact generated-artifact inventory matrix,
514+
- generated appendix rendered-content contract,
515+
- generated appendix regeneration and fail-closed posture,
510516
- validation gates,
511517
- current canonical source surfaces,
512518
- and accepted boundaries.
@@ -669,6 +675,22 @@ In addition to per-family prose, the appendix-grade proof carrier must include a
669675
- witness artifact paths,
670676
- and current source-bearing implementation basis.
671677

678+
The normalized minimum per-family detail block must make the following exact carriers directly recoverable from the main `SPEC`:
679+
- `proofArtifactPath`,
680+
- current source-bearing implementation basis,
681+
- exact member ids,
682+
- exact theorem ids,
683+
- exact replay step ids,
684+
- exact witness artifact paths,
685+
- current member closure criteria,
686+
- current member verdict shape,
687+
- current theorem-by-theorem closure reading,
688+
- current theorem-to-replay-step grouping,
689+
- minimum artifact/replay binding set,
690+
- current proof-object fields,
691+
- generated-artifact and validating-test bindings,
692+
- and fail-closed conditions.
693+
672694
## 7.1 Family Questions
673695

674696
Every proof-family section must answer:
@@ -687,8 +709,12 @@ Every proof-family section must answer:
687709
The normalized minimum per-family detail block should therefore make the following directly recoverable in the main `SPEC`:
688710
- what the family proves,
689711
- how current closure is carried in source and artifacts,
712+
- the current member closure criteria,
690713
- the current member verdict shape,
714+
- the current theorem-by-theorem closure reading,
691715
- the current theorem-to-replay-step grouping,
716+
- the minimum artifact/replay binding set,
717+
- the current proof-object fields that carry theorem/member/replay truth,
692718
- the generated-artifact and validating-test bindings,
693719
- and the fail-closed conditions that would reopen the family.
694720

@@ -775,6 +801,38 @@ It must render:
775801

776802
It must fail check mode when stale.
777803

804+
## 8.1.1 Minimum Generated Appendix Rendered Contents
805+
806+
For a current full canon, `_PROVEN_` is not complete when it only carries aggregate counts.
807+
808+
Its minimum rendered contents must make the following exact surfaces recoverable:
809+
- aggregate proof verdict,
810+
- exact proof-family inventory,
811+
- exact per-family member inventory,
812+
- exact per-family theorem inventory,
813+
- exact replay-step inventories and theorem bindings,
814+
- witness artifact inventories,
815+
- generated artifact inventories,
816+
- scenario and run coverage matrices,
817+
- run-detail truth needed to interpret proof execution,
818+
- disclosure classification relevant to proof artifacts,
819+
- and incomplete or failing verdicts when any exist.
820+
821+
## 8.1.2 Canonical Regeneration And Fail-Closed Posture
822+
823+
The generated appendix contract must also define:
824+
- which canonical promotion step regenerates `_PROVEN_`,
825+
- which check step proves the committed appendix is current,
826+
- which generated and proof-bearing surfaces the appendix materially depends on,
827+
- and which mismatch classes block promotion.
828+
829+
At minimum, the generator or its checker must fail closed when:
830+
- a required proof family is missing,
831+
- a required member/theorem/replay inventory cannot be rendered exactly,
832+
- a required witness or generated artifact inventory is missing,
833+
- the proof-source commit does not match the rendered appendix,
834+
- or the committed appendix diverges from generator output in check mode.
835+
778836
## 8.2 Structured `.engi` Artifacts
779837

780838
Every canonical generated JSON artifact must have:

0 commit comments

Comments
 (0)