Repository navigation
0.30.0
The release verdict (the 0.30 v2 gate)
GREEN at the release cut (tag v0.30.0 @ 6eafee1c — the fresh run of
unfreeze_gate.py --office-tests pass --gate-target 0.30 — exit 0, the
summary is committed in the lockstep PR #1141) and the FULL В34 form read
exit 0 on main @ 6d1aa26 (the branch-protection fact key landed after
the cut per the §5 recorded sequencing — the criterion machine-reads the
audit conclusion):
| Goal | Verdict | Evidence |
|---|---|---|
| parameterized share ≥ 5000 bp (OWNER-FIXED 2026-10-07, the В34 addendum form, ADR-0186 §5) | MET | 6043 bp — 55/91 = 60.43% (the three honest packages: №623 7 rows → №631 27 rows → №637 21 rows) |
| open High findings (server path) = 0 | MET | the release-block counter = 0 (machine-read, never hand-zeroed) |
| the domain quorum | MET | 0/8 groups carry duplicates vs the goal 1/3 |
| the serve-e2e inventory | MET | every state-accumulating declaration done |
| the branch-protection criterion (the В34 addendum Z-3): the LAST branch-protection-audit run GREEN | MET | the switches applied by the owner BEFORE the publication (the №646 request held): 25 required checks = the maintainers.md checklist verbatim, strict, enforce_admins, the PR requirement (approvals 0); the first GREEN audit run 37736590049 on fc856fb; gh#1000 closed manually 2026-10-08; the fact key fact_branch_protection_audit: GREEN landed WITH its checker (№525) in #1143 |
§4 (ADR-0177) GREEN across the board: types 309/516 (5988 bp floor), dedup 0
(mirrors 6/6), debt 11/0/15, the memory office-E2E evidence record GREEN.
The publication is the owner's act (docs/release-checklist.md, step 5 —
"the machine never publishes"): executed by the owner's PAT on the verbatim
chat verdict «публикуй» (2026-10-08), the v0.29.0 precedent.
Security
- №629 (gh#1096) — the VM comparison parity (the behavior change,
fail-closed; AFFECTS 0.29.0 AND EARLIER on the VM backend — all six
comparison operators, including!=; the audit guard scenario
if owner != current_user { … }withowner = UnitPASSED on the
VM — the X-1/Y-1/Q-1 silently-wrong-guard class): the VM's
==/!=/>/</>=/<=now mirror the TW matrix 1:1 — the
heterogeneous equality ("abc" == 5.0,"5" == 5.0), the ordering
on non-Float pairs ("b" > "a",true > false) and the
incomparable types (Struct/List/Html) REFUSE with the stable
[TYPE_MISMATCH]code on BOTH backends; the legacy VM answered a
silentfalse(andtruefor numeric strings) — the
silently-wrong class;Unit == Unitistrueon both now. Found by
the №621 fuzzer sweep the day it stopped being vacuous; the №479
+precedent. The fix landed on main 2026-10-07 (22d62fa — after
the v0.29.0 tag, 4be0f72: the published tag is affected; no re-tag
— the №620 precedent); the affected-release audit 2026-10-08 (the
unified audit of 4830170, the dispatch gh#1136, Q-1).
Changed
-
№630 (gh#1098) — the 0.30 release-gate §5 mechanical transition
(process, the owner-fixed merge):owner_fixed: truein
gate_030_goals.txt(ADR-0186), ADR-0186 Proposed → Accepted, the
DEFAULT gate target ofunfreeze_gate.py0.29 → 0.30; the 0.28
and 0.29 records stay verifiable explicit targets (--gate-target).
The typed parameter of the 0.30 gate = the parameterized share
(≥ 5000 bp, the owner's 2026-10-07 verdict); the machine read is
RED-loud until the movement completes — by design. -
№631 (gh#1099) — the parameterized movement 0.30 №2 (internal):
the second honest package of 27 verified rows — the registry-order
contour carriesList<T>/Struct<Name>spellings now (the
memory/todo/goal/profile/mood families; the polymorphic list ops stay
honestly coarse — the element type is the caller's). The parameter
share 7/91 = 769 bp → 34/91 = 3736 bp; the floors raised in the
same PR (the parameterized baseline 3736, the in-tree PARAM_FLOOR 31). -
№627 (gh#1110) — the field-label metadata (internal, the stage-2
preparation per ADR-0178): the registry specs may carry the
Struct<Name>{field:label,...}form; the labels live in the registry
side-table (BuiltinSpec.field_meta), theTypeenum stays erased;
a malformed section is a loudUnknown(fail-closed). The FOURTH
metric — the field-label share among the parameterized Struct rows
(3/20 = 1500 bp, the first honest package of 28 verified rows:
GeoLocation 9, Weather 13, LlmUsage 6) with the checked-in floor +
the in-tree lock. The parser mirrors (gen_metrics, gen_reference, the
two Rust pins) synced — the generated blocks regenerated. -
№633 (gh#1101) — the dead_code burn (internal): 33 → 15 (18
places removed or justified), the floor re-locked in the same PR. -
№634 (gh#1102) — the self-host lexer lane lifted green
(internal): the §5 test fixture had drifted behind the language
(let-mut, the no-entry flow, the newline in the quote class, the
stale keywords) — repaired; the №617 artifact documented-accepted
with the mutation-verified pin; the ignore floor 14 → 13. -
№635 (gh#1103) — the VM template_render lane lifted green
(internal): both vm_golden corpus sweeps 189/189 (the template gap
was closed by №250; the harness facts fixed — the env sidecars №385,
the candle-gated exclusion mirror, the browser-gated p88); the ignore
floor 13 → 11. -
№622 (gh#1085) —
returninside amatch/ifEXPRESSION arm is
captured as the arm's value on BOTH backends: the TW documented
contract (the expression channel carries values, not control signals)
now holds on the VM —let v = match x { "a" then { return 5.0 } }
binds5and runs the tail instead of terminating the pattern with
"5". The consumer scan (match arms / if-without-else / if-else /
MatchExpr — the implicit block value never becomes an early return;
sandbox/flow have no statement bodies in the grammar). -
№623 (gh#1086) — the parameterized signature vocabulary stage-0
(internal): the registry specs carryList<T>/Struct<Name>
spellings (the enum erases the parameter); the THIRD metric — the
parameterized share among the List/Struct rows (7/91 = 769 bp, the
first honest package of 7 verified rows; the general typed share 5988
bp, the precise share 4224 bp untouched per the Z-2 verdict). -
**№621 (gh#1084) — the differential fuzzer executes again (internal):
** the sweep was vacuously green (0/150 programs ran — the stale
builtin call, the undefined idents, the heterogeneous arithmetic); the
generator produces the №612 loop class (the bare-call bodies, the
mixtures, the tails, the nested shapes) and the permanent LIVENESS
ratchet pins the executability (≥ 60% of the sweep on both backends). -
№617 (gh#1075) — the semantic checker grows three compile-time
refusals (the gh#967 §3 lane): the variable-scope walk (the TW env
model verbatim — flat, never popped, the entities as globals, the
render/reflex_* name-reference slots exempt), the undefined-variable
read refusal (the runtime message verbatim + the stable
UNDEFINED_VARIABLEcode), the assignment-to-undefined refusal, and
the static opaque-concat check (the declared-fact twin of the runtime
guard —cannot concatenate opaque type …). The three#[ignore]d
gh#967 §3 tests lifted green; the debt floor 17 → 14; the №465 fuzzer
VM lane now carries the №523 semantic gate (the production order). -
№616 (gh#1077) — the PRECISE movement 0.30 №1: 61 registry rows
typed against the verified single-shape handler facts — the precise
share 3042 → 4224 bp (218/516), the general share 4670 →
5852 bp (302/516), TYPED_FLOOR 237 → 298; the floors raised in the
same PR (the №757 procedure); the 0.29 gate fact synced (the
machine-read rule). -
№615 (gh#1078) — the 0.30 gate DRAFT (Proposed, ADR-0186):
gate_030_goals.txtwithowner_fixed: false— the draft parameters
strictly above the live facts (typed 6100 > 5852, precise 4500 >
4224, the X-3 rule); the gate reads it honestly RED on the fixation
fact; the DEFAULT gate target stays 0.29 (the blocking CI never reads
a draft) — the fixation is the OWNER's gate. -
№618 (gh#1076) — the Камертон cycle closure report: the external
review report artifact (docs/audits/kamerton-report-v0.29.0.md) —
the SHA256 of the v0.29.0 assets re-run on the downloaded artifacts
(3/3 OK against the attached SHA256SUMS), the R1–R6 verdicts from real
runs of the repro corpus (scripts/repro_kamerton/, the t92
reconstruction) on the fixed main — every probe now behaves as its
contract demands (the mutation probe goes red:assert_eq failed: 3 != 999), the D1/D2 → PR/commits map, the affected releases
(v0.28.1, v0.28.2 — update to v0.29.0), and the honest protocol
corrections verbatim from t92. The forwarding to the external
reviewer is the owner's gate (the external channel).