Repository navigation
#92 BS-06: LexLeanBoot.RustPrint, the Rust printer as language-1.2 source (draft: register row and failing test) - #253
Conversation
…ling case for the Rust printer R3: the row `BS-06` (level build, suite bootstrap), its row in the §31 table (444 rows), the scenario in features/suites/bootstrap.feature, the bdd part `bootstrap-print` and its vv row, and `conformance_bs_06`, which fails with "no bootstrap case is wired for BS-06". CONFORMANCE.md by validate-model --write. The statement carries no counts yet: they are the case's own report and are written when measured. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0163mCfJeketviuEBiXJ1sQY
…e for the Buffer member R3 for the stdlib member the print root writes through: row `SL-05` (level build, suite stdlib), its row in §31 (445 rows), the scenario, and `conformance_sl_05`, which fails with "no stdlib case is wired for SL-05". The measurement behind it: a chain of `append_bytes` of one byte is quadratic (the work counter quadruples as n doubles), so the member keeps sealed chunks and one pending chunk. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0163mCfJeketviuEBiXJ1sQY
…ential `LexLeanStd.Buffer`: a buffer of a given capacity written in order (new, writeBytes, writeByte, writeDecimal, length, finish), kept as sealed chunks of at least 256 bytes and one pending chunk, joined once by pairwise merging; a write past the capacity is a refusal at `finish`. Three production roots (writeAll, writeEach, writeNumbers) are held to Rust's concatenation under the evaluator and under rustc, the work of one-byte writes is held to grow in proportion to their number, and two planted defects are detected (a boundary that refuses at the capacity; a buffer that never seals, which is the chain of appends). The chunk size is measured on the largest committed library (256,713 bytes). Records bound to identities (locks, the stdlib export) are not part of this commit. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0163mCfJeketviuEBiXJ1sQY
…o far
`RustAst` carries the payloads the validator's AST forgets (literal values,
the ordering of a pattern, the width of a machine call); `RustPrint` writes
the closed AST into a `Buffer` of a given capacity (printCrate, printExpr).
The case holds both roots to ast::{print, print_expr}: committed crates and
packages, hand-built crates and expressions, seeded mutants, twelve plants,
the export. Not yet run end to end: the certificate and the first full run
are in progress. Locks and records are not part of this commit.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0163mCfJeketviuEBiXJ1sQY
…untime header The header before the items is the runtime of the committed export, which the regeneration of the records moves with the runtime (#248); the items are what the printer decides, so the case holds the committed libraries to them and holds the header to the vectors that give the roots the oracle's own header. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0163mCfJeketviuEBiXJ1sQY
The separator text occurs at three sites of the source; the plant now names the one that precedes the `0x` of a byte. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0163mCfJeketviuEBiXJ1sQY
…6 records The statement of BS-06 carries the counts the case reports and asserts (2,535 vectors on every host; 539 + 1,937 under the evaluator, 400 + 399 seeded mutants, 2,984 more under rustc; twelve plants), SPEC.md §17.23 states the sixth component, VERIFICATION.md records the append measurement, the chunk size, the twelve plants with their first disagreements, and the stack bounds measured for the two packages (7,077,888 and 4,259,840 bytes in a debug build), and the CHANGELOG and READMEs name the rows. Locks, the stack rows, and the export of the project are the maintainer's. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0163mCfJeketviuEBiXJ1sQY
|
Maintainer review of 7bea806 (read-only; Blocking
Round
Nits (carry in the same push)
I will re-verify the round by reading the diff; please do not merge anything into the branch. Generated by Claude Code |
…onical layout The bootstrap application lists printCrate and printExpr; the SL-05 statement drops "contiguous" and names `writeBytes` (byte-equal in the register row, §31, and the scenario); §17.22 says `writeDecimal` is the decimal of a Nat; bootstrap/README.md no longer lists RustAst among the importers of Text; RustAst and RustPrint are in the canonical layout of `lexlean fmt`; the case asserts every count before its first leg. The counts on the tree with the five packages (BS-05 and BS-06) follow in the next commit. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0163mCfJeketviuEBiXJ1sQY
…ll five packages The corpus committed() and packaged() walk includes the three Buffer packages of SL-05, so the landed tree has 255 manifests and packages, 172 programs and 231 crates. BS-06 states and asserts 604 + 1,955 vectors (462 distinct committed crates), 541 + 1,955 under the evaluator; BS-05 asserts 255/172/231 and 451 + 314 vectors (the rest of its counts follow once measured). Buffer is in the canonical layout of `lexlean fmt`. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0163mCfJeketviuEBiXJ1sQY
201 crates of at most 400 expressions and 421 + 284 vectors; the seeded figures follow once measured. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0163mCfJeketviuEBiXJ1sQY
…n the tree with all five packages 255 manifests, 172 programs, 231 crates, 451 validateCrate and 314 correspondCrate vectors (195 and 82 refused, as before), 201 crates and 421 + 284 vectors under the evaluator; the seeded counts held. Measured by `conformance_bs_05` on the tree with the packages of BS-06 and SL-05 present: every leg passes up to the comparison with the committed packages. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0163mCfJeketviuEBiXJ1sQY
The review round of #253 (roots, statements, counts of the tree with five packages); the register keeps BS-07 after BS-06. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0163mCfJeketviuEBiXJ1sQY
|
Maintainer: the round at 1ddd494 is accepted (read-only re-verification; Lands after #248, #254 and #255 with its own regeneration (five packages, locks, stack-bound rows, bootstrap records). Generated by Claude Code |
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0163mCfJeketviuEBiXJ1sQY
The merge of release/v0.4 into #253, carried through. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0163mCfJeketviuEBiXJ1sQY
|
A read of What checked out:
1. 2. The register total will merge silently wrong. The head and 3. 4. The PR body's figures are older than the head. The body says 2,535 vectors, 539 + 1,937 evaluator runs, and 252 / 169 / 228 / 252 manifests, programs, crates and packages. The code, SPEC and VERIFICATION at the head say 2,559, 541 + 1,955, and 255 / 172 / 231 / 255. Minor, for the record:
|
…he register count, the stack rows, and the SL-05 case on a sized thread The five production packages of the printer and the buffer roots, the locks and goldens of the bootstrap and standard-library projects, the fixtures and the generated claim documents are regenerated on the merged tree; the compiler-semantics identity does not move. The register is 447 after the merge with the runtime-syntax landing, so the §31 total and the two counting gates say so. The PD-08 rows of `print_crate` and `print_expr` are the measured bounds the PR reports. The SL-05 case recurses deeper than a test thread's stack when it evaluates the chunked buffer, so it runs on a thread sized as the differential's interpreter thread is. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_013QppGKetUURseXowZun9KY
…he standard library and the bootstrap The sweep verified every project but the Atlas on the merged tree; only the standard library's and the bootstrap's records moved, with the two print roots and the three buffer roots. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_013QppGKetUURseXowZun9KY
|
Maintainer: the landing regeneration is pushed (baadfef merges release/v0.4 at f057b83; e99ee47 the five packages, locks, goldens, the stack rows Generated by Claude Code |
…r the merge Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_013QppGKetUURseXowZun9KY
Retargets BS-07 slice 1 (#258) onto release/v0.4 now that its old base, claude/issue-92-rust-print (BS-06, #253), has landed at 902d7de. Conflicts were the register count only: README.md, SPEC.md "Total required capability IDs", crates/conformance/src/cases/repository.rs and xtask/src/spec_links.rs take 450 (the line's 449 plus BS-07); CHANGELOG keeps both sides, the line's BS-06 entry first (447 IDs at its landing), then the BS-07 entry, now 450 IDs. model/ids.toml and the SPEC.md §31 table merged without conflict. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
BS-06 (#92 step 4c) and SL-05: the Rust printer
calculus::rust::ast::{print, print_expr}as language-1.2 source inbootstrap/(RustAst,RustPrint), and the standard library'sBufferit writes through. Plan and decisions: #92 (comment). Stacked on #248; draft.What
stdlib/src/Buffer.lex.tex(SL-05):new,writeBytes,writeByte,writeDecimal,length,finish; a write past the capacity is a refusal atfinish. Chunked (256 bytes) over today's primitives because a chain ofappendis quadratic (measured; VERIFICATION.md). RootswriteAll,writeEach,writeNumbers; the added roots are intests/production-export/stdlib/roots.json.bootstrap/src/RustAst.lex.tex,RustPrint.lex.tex(BS-06):printCrate (capacity) (header) (krate)andprintExpr (capacity) (expr), bothrust-std, effectsallocation, overflow, recursion.SL-05,BS-06), SPEC §31, §17.22, §17.23, scenarios,conformance_sl_05,conformance_bs_06(R3 order: the rows and the failing tests are the first two commits).Measured (this host, 4 cores, debug build)
conformance_bs_06: 1,658 s end to end, Lean export included. Every-host part (rustc, 42 harness binaries, 2,535 vectors): 504 s. Evaluator 539 + 1,937 vectors and 400 + 399 seeded mutants; 2,984 further mutants under rustc (79 s); twelve plants, each detected (first disagreements in VERIFICATION.md).production buildof the two print roots 15 min 57 s; certificate parts are within the cap (no split needed for the printer).conformance_sl_05: chunk size by measurement on 256,713 bytes (table in VERIFICATION.md); the work of one-byte writes is linear (551k, 2.24M, 9.08M units at 4,096, 16,384, 65,536 bytes); the planted buffer that never seals is caught (8.4M and 134M units).print_crate7,077,888 bytes,print_expr4,259,840.Not in this PR (the maintainer's records)
Locks,
bootstrap/expected,tests/production-export/{bootstrap,stdlib}/packages,tests/stack-bounds.jsonrows. I relocked locally and copied the two print packages and the two stack rows locally to run the cases; none is committed. Both cases pass every leg up to the comparison with the committed packages. The counts the case asserts (252 manifests, 169 programs, 228 crates, 252 packages) are those of the tree with the two print packages committed.Boundary and findings
bit_andonNatis refused;idandfirstare reserved) are in VERIFICATION.md.https://claude.ai/code/session_0163mCfJeketviuEBiXJ1sQY
Generated by Claude Code