Skip to content

fold(B3): contracts / ONT / PVL / docs onto main — replaces #4317 - #4431

Open
noahgift wants to merge 20 commits into
mainfrom
fold/b3-onto-main
Open

noahgift wants to merge 20 commits into
mainfrom
fold/b3-onto-main

Conversation

@noahgift

@noahgift noahgift commented Sep 25, 2026 •

Copy link
Copy Markdown
Contributor

Replaces #4317 (cop ruling 2026-09-25 16:15Z: no main-merges into a PR; a fresh branch from main instead).

One squashed commit on main a5efa14 carrying fold/b3-contracts-ont-docs @88885740d (263 commits, 63 merges). Conflicts with the B4 fold (#4312) were resolved to B3, which is a superset: 22 lint gates, NAMED_GATES [&str;14], sigma ReservedEntityType beside VocabularyMalformed. roadmap.yaml was re-aggregated, and census + README counts were regenerated with the pv built from this tree. Local results: fmt clean; aprender-contracts --lib 2001 passed; ont6_lint_verdict 7 passed; roadmap-fragment and readme-claims guards PASS. #4317's original body follows.

Emergency fold B3 (contracts / ONT / docs), operator 2026-09-24: "We FIRST RIGHT NOW, emergency merge all 80 into 4 batches., the enforce 10 max rule going forward."

Folded sources (each merged --no-ff, history kept)

Closes #4191
Closes #4207
Closes #4108
Closes #4112
Closes #3177
Closes #4081
Closes #4080
Closes #4198
Closes #4071
Closes #4074
Closes #4122
Closes #4075
Refs #4102
Refs #4175
Refs #4070
Refs #4139
Refs #3997
Refs #4002
Refs #3994
Refs #4000
Refs #3999
Refs #4001
Refs #4201
Refs #4202

Parked (branch kept; re-enters via the next like-batch)

Batch resolution

Local evidence (on this head)

  • make contracts: rc 0; aprender-contracts lib 1904 passed.
  • cargo test -p aprender-contracts-cli: rc 0. cargo clippy -p aprender-contracts -p aprender-contracts-cli --all-targets -D warnings: rc 0.
  • cargo fmt --all --check 0 · cargo deny check advisories 0.
  • Guards rc 0: check_ont_ratchet, check_roadmap_sorted, check_tree_reader_tests, check_dogfood_coverage, check_readme_claims.

Workflow change: #4150, #4163 and #4196 edit .github/workflows/, so this batch needs a 3/3 quorum and the cop merges it.

keep-open: #3994 #3997 #3999 #4000 #4001 #4002 (epics, Refs only)
ont-delta: resolves ONT-2c + ONT-4d + ONT-4e + ONT-5 land together; the PVL-001 EV-2/3/5a/6a/6c/7b/8a/10/11 gates land.

Folded: #3142 PVL-F7 advisory con-leche nightly (9ef6d39, merge of fd06d80)

Fixes #4199

🤖 Generated with Claude Code

Closes #4238
Closes #4355 #4357 #4358 #4359

🤖 Generated with Claude Code

Squashed cherry-pick of fold/b3-contracts-ont-docs (8888574: 263 commits, 63 merges)
onto main a5efa14, per the cop's ruling: no main-merges into a PR.
Conflicts vs main's B4 fold (#4312, ONT-7 valid-under) resolved to B3, a superset:
lint gates 14-22, NAMED_GATES [&str;14], sigma ReservedEntityType kept beside
VocabularyMalformed; roadmap.yaml re-aggregated; census + README counts regenerated
with the pv built from this tree.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@noahgift

Copy link
Copy Markdown
Contributor Author

Quorum receipt (degraded: same-family; author claude-opus-5-5; lanes claude-sonnet-5 + claude-haiku-4-5, headless plan mode, read-only whitelist) @ cf038d3. Scope: the resolutions vs #4317's head 8888574 (sigma.rs union, B3-superset files, README/census regen). Main's B4 content was already reviewed in #4312. sonnet PASS: NAMED_GATES 5→14 keeps valid-under, gate assert 13→22, the ratchet generalizes main's allowlist, README 1851 == census n_files. Its one asserted finding (no local build) is covered by the author's measured cargo test -p aprender-contracts --lib: 2001 passed. haiku PASS, 0 findings.

@noahgift
noahgift enabled auto-merge September 25, 2026 14:45
@github-actions

github-actions Bot commented Sep 25, 2026 •

Copy link
Copy Markdown

§13.11 rung 1 — quorum shadow verdict

S13-SHADOW pr=4431 head=ebf21c83d4948d6eb8785d31667dcd76844ff22e verdict=REFUSE class=Q1 arm_rc=1

Shadow mode: this records a verdict and merges nothing. A refusal
to arm is not a block (§13 adds zero rows to §7) — the pull request is
exactly as green as it was.

…eview-experiment rows were missing

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… (SEC011, DET001) — the ratchet went 6 -> 8

${WORK:?} guards the trap's rm -rf; each case dir comes from mktemp -d, not $RANDOM.
The script's cases and mutants all still pass; the ratchet is back to 6.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
noahgift and others added 7 commits September 25, 2026 20:03
…7) and the retitle plan (#4438)

epics.yaml carries id, issue, train, budget, successor and absorbs per §2. The GitHub half (13 retitles, new bodies with an empty ## Parked, prior body kept verbatim, +epic on #2870) is plan-A1.json and waits for the cop's OK. Milestones stay for A5, absorbed-epic closes for A4.

Pmat-Ticket: PMAT-4438

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Pmat-Ticket: PMAT-4438

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Pmat-Ticket: PMAT-4438

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… vs 14:16Z snapshot (#4432)

Pmat-Ticket: PMAT-4432

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…4438)

Pmat-Ticket: PMAT-4438

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ody (#4438)

The planned bodies predate the v1.5 park/collapse runs, so a wholesale replace would erase their ## Parked and ## Collapsed rows sections. Header-merge keeps the live body verbatim under ## Prior body. Read-back: 13/13; FLOW-014 checked=49 lost=0.

Pmat-Ticket: PMAT-4438

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…update check

Measured by git grep on each origin default branch; the cop creates the
issues where an epic has budget (APR-EPIC-001 v1.3 §4b).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
noahgift and others added 3 commits September 25, 2026 20:41
…SP technique (closes #2530)

7 of rmedia's 8 real #[kani::proof] harnesses are a fixed window of symbolic f32,
each element finite and magnitude-bounded, with real transcendentals. No variant
named that, so `strategy: bounded_float` failed to parse, and every harness in the
file became invisible to `pv validate`.

- types.rs: add BoundedFloat, which displays as `bounded_float`. Per the issue,
  there is one variant and no `bounded_array`.
- kani_gen: generate_bounded_float_body emits Vec<f32> with
  `x.is_finite() && x.abs() <= MAG` and no stubs.
- scoring: weighted 0.9, the same as bounded_int. Both discharge real arithmetic
  over a bounded domain.
- explain: add a one-line description.

Test generate_bounded_float_harness: the YAML parses, codegen emits the finite
f32 body, and none of the stub_float wording appears. Before the variant existed,
the parse fails. aprender-contracts --lib passes 2002/2002, and clippy -D warnings
is clean.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…olved, RED tests for pub(super), wrong module, missing ticket (#4072)

ONT-001 row ONT-3a's probe reads `.pc_extract=="fired" and .unresolved==0 and
.crates_scanned>1`; the gate emitted pc_resolver/ghosts, so the probe could
never pass. Adds both under the spec's names (unresolved = unallowlisted ghosts)
and the RED rows the gate lacked: a pub(super) fn resolves, a fn bound under the
wrong module is a ghost, an allowlist entry with no ticket is PV-ONT-030.

Probe on the repo corpus: checked 254, resolved 253, allowlisted 1,
unresolved 0, crates_scanned 7, pc_extract fired -> PASS. F-4: outside a
workspace, exit 2 + "decline:".

Refs #4072

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…mpleted (#4072)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
noahgift and others added 2 commits September 25, 2026 21:46
…red — VS-COUNT-001 (closes #2648)

313 of the 667 contracts that carry a verification_summary stated an
obligation count that their proof_obligations list did not have (apr-dogfood-
coverage-v1: 16 declared, 9 present; ci-infra-v1: 6 declared, 0 present).
No reader checked the number, so it drifted from the moment it was typed.

validate_contract now derives the count and flags any other value (rule
VS-COUNT-001). It is an Error for kernel contracts and a Warning for
kind: schema, whose 296 contracts/work/ tickets carry a template summary.
The 17 top-level contracts with a drifted count are re-measured, and
apr-cli-safety-v1's l2_property_tested (4 against 1 obligation) is capped at 1.

Case table vs_count_001_case_table: equal→None, over/under/empty→Error,
schema drift→Warning, schema equal→None.
Measured: aprender-contracts --lib 2003 passed; --test validate_contracts
10 passed (validate_all_contracts asserts 0 Error over contracts/*.yaml);
0 non-schema drifts in contracts/**; clippy -D warnings clean.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@noahgift

Copy link
Copy Markdown
Contributor Author

Pre-merge finding: ONT-3a's spec probe will stay false after this merges, because the bindings report emits pc_resolver/ghosts and the probe reads pc_extract/unresolved. Details: #4454. Rows 2c, 4e, 5 and 9 are clean at ae1887d except for merged.

🤖 Generated with Claude Code

noahgift and others added 2 commits September 25, 2026 22:57
# Conflicts:
#	docs/roadmaps/roadmap.yaml
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
noahgift added a commit that referenced this pull request Sep 25, 2026
…rom the #4431 receipt; owner 0d

no-issue: findings ledger row per APR-EPIC-001 rule 17

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment