oxidecomputer / oxidecomputer/prettier-plugin-asciidoc

Delete the print-side line-start guards behind the reader's verdict and run the 626-pair gate

Open
#306 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

mechanism:reflow-join obligation:meaning-preservation tier-1
Dominant language
TypeScript
Stars
0
Forks
1
PR merge metrics
No merged PRs in 30d

Description

What this is

The block half of the reader-records-facts design (#195) landed its first three commits on Sep 7: the reader exports one line verdict (accepts(line, next, position) in the shared layer, both prose scans call it), every prose node records the context its lines were read in (parity family reading-record), and the packer asks the reader per output line with a whole-block replay fallback and an ordinal-0 check at the document-paragraph site. It closed #109 and #121 and emptied the prose-reads-as-marker reading family. It did NOT make the deletions the design record prices, because those rest on the print-side guards and the accept check was added on top of them: 0 of the 626 join-axis confluence pairs cleared, src grew +309 code lines, and #195 stays open. This issue is the retry.

What the retry does, in order

  1. Rulings first (posted on #195, defaults stated): the over-refusal criterion (reading stability, default) and whether the formatter may join a marker-shaped line into paragraph text where both programs read it as text (parser.rb l.36; default allow).
  2. The ordinal-0 arm at the three PREFIXED sites (marker line, admonition label, term line), built from each site's own recorded first-line verdict with the prefix bytes on the emitted line; today opensItsOwnLine is false there and the atom-level nets answer.
  3. Then the deletions, each with its cells: wrap's per-word isBlockSyntaxAtLineStart union (reflow.ts), block-start-hazard.ts's line-start half (packsIntoBlockSyntax, keepBlockStartBreak, the BlockStart first-word facts), and the thematic-break re-derivation family (list-hazard.ts, list.ts, text-edges.ts). isDangerousAtLineEnd and markerLineGuard's canonicalHead arm stay (they respell).
  4. The 626-pair gate (416 descriptionItemHeldBreak + 210 listContinuationJoin, plus #228's 316 OUTSIDE_DOMAIN pairs inside the domain): each CLEARED (identical bytes, row deleted) or CONVERTED (a render-relevance proof row); cleared must dominate converted on the population the check reaches; over-refusal under the ruled criterion at most 1% of the 210 and 5% of the 416; replays re-measured on the corpus and the depth-5 product (today 0 and 62 of 177,166).
  5. #119 via the reader's own fold-refusal deletion; #124's witnesses are fixed points on main already and its pin landed with fee39ccd.
  6. The reading-ledger families that remain (lone-plus-join 2,311 rows, continuation-dropped 1) are #43's and #17's, not this change's; #286 retires the ledger when they empty.

Constraints the landed subset established

  • The guard at the document-paragraph site refuses only where the source's own first line and the emitted one answer differently under the widest block-start reading (narrower than the reader's, never wider); measured 0 refusals on the corpus and the depth-5 product. Keep that shape at the prefixed sites.
  • A term-only description item's recorded reading is the PRINTED block's (dlistItem when the description joins the term line), never the source's; a REPARSE_LENS drop row for reading is the consumed-then-destroyed shape and is not accepted.
  • accepts at a continuation position is narrower than the deleted probe was: a paragraph swallows * item, ''', ---, <<<, image::a.png[], :name: value (Ruby verified). Deleting the probe widens what the formatter joins; that is the reference's reading.
  • Net src growth ceiling for the whole of #195 remains +350 code lines over 319451d6; the subset used 309, so this retry must be net negative by at least the guards it deletes.

Gate

As #195's pre-registered gate, with the rulings applied; every ledger delta two lists plus changed-in-place; deletion cells for every deleted symbol; #300 (blocked by #195) and #304 re-measured against the result.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with the design record and rulings in #195, then inspect the PREFIXED sites and the named guards in reflow.ts, block-start-hazard.ts, list-hazard.ts, list.ts, and text-edges.ts. Run the 626-pair gate and remeasure the corpus and depth-5 product. Done means the specified guards are removed, ledger deltas and deletion cells are recorded, and the cleared/converted and over-refusal thresholds pass.

Written by the indexing model from the issue text.

Assessment

Tech stack
typescript
Domain
tooling
Issue type
Refactor
Difficulty
5/5
Estimated time
Over a week
Activity status
Active
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.