Skip to content

The generated whitespace battery as a standing gate, with three perturbation populations, a diff-derived deletion gate and an address-count script #239

Description

@mergeconflict

What this is

Standing instruments only; no src/ change. Each item either lands a measurement that a later change's gate cites, or retires a hand-maintained instrument that the measurement replaces.

Deliverables

  1. The generated whitespace battery as a standing gate under scripts/: the cross-product generator (92 templates, 198 whitespace slots, perturbed in LENGTH, TAB and NEWLINE) renders every case through Asciidoctor Ruby 2.0.26 unconditionally and through @asciidoctor/core 4.0.11 as the cheap check, under the exact conformance lens of tests/helpers.ts (the fold is proved equal to the TypeScript one, not re-implemented loosely). Its derived table is the source of the whitespace binding rows. Runs at batched integration points alongside Measure the instrument against the reference: render the corpus through Asciidoctor Ruby 2.0.26 and @asciidoctor/core 4.0.11 and pin the disagreements #235's reference diff. The prototype and its output are in the local design record (sp2-battery-v2.md and the battery2/ generator).
  2. Two more perturbation populations over the same alphabet: the tracker's issue witnesses (every reflow-hazard issue's repro), and the registry deep grid's own shapes, the one population nobody wrote by hand.
  3. Templates the roster lacks: the implicit menu "File > New" under :experimental: (rx.rb:570), the bare-URL left boundary (rx.rb:526), and the three hyphen-fused-to-reference shapes (-{h}, measured by hand so far).
  4. A deletion gate derived from a diff, not from a brief: a script that lists the symbols a change deletes and requires, for each, the closed issue whose fix it was, that issue's witness verbatim, the binding row that makes the witness a fixed point, the test that reddens under a mutant of that row (the fact's arm flipped, scoped to one file), the direction of the change (wider or narrower than today) and any cross-change hold.
  5. The parse-to-print address count as a script over crossings-registry.json and graph.ts: four addresses today; the target after the reader-records-facts changes is three plus one shared module.
  6. Measure the instrument against the reference: render the corpus through Asciidoctor Ruby 2.0.26 and @asciidoctor/core 4.0.11 and pin the disagreements #235 lands here, with the seam-window census retirement it names (720 lines out; one instrument in, one out).
  7. The instrument's anchor: reftext transcription bug (its regex reads reftext across a newline where the Ruby does not) is recorded as an instrument-fidelity row in Measure the instrument against the reference: render the corpus through Asciidoctor Ruby 2.0.26 and @asciidoctor/core 4.0.11 and pin the disagreements #235's ledger. Nothing is reported to any other repository.

Gate

bun run gates green; the battery at zero mismatches between the two programs except the rows #235's ledger pins; the census retirement's 720 lines deleted in the same push. Expected 6 to 8 files.

Sequencing: nothing blocks this. The link-macro conversion (#219) waits for the battery run over its domain; the whitespace-fact change cites the battery's table but does not wait for the gate to land.

From solution-proposal-v3.md section 4.7 item 1 (local design record).

Activity

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    harnessVerification infrastructuremechanism:instrumentbug or gap in a harness, census, sweep, or CI gate itselfobligation:meaning-preservationformatting changes what the document renders as

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions