diff --git a/AGENTS.md b/AGENTS.md index b6d5a82..73fe356 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -57,6 +57,7 @@ In `docs/decisions.md`: - Docs describe the release being built - Plan items rank by `rank_todo.py`'s goal weights, code health first - Posts announcing a release wait for its publish, and their drafts wait for the finished release +- A chunk ruled worse merges where a plan item of its release already restores that code's reading, and that item takes the ruling's places - No schema validation - The gate runs on Deno and Bun - The gate installs the tarball diff --git a/docs/decisions.md b/docs/decisions.md index c6e7932..4e26e1a 100644 --- a/docs/decisions.md +++ b/docs/decisions.md @@ -690,6 +690,19 @@ They then open issues saying a call did something else, which Goal 3 counts as a Drafts describe the finished release, so they wait for every item in it. Valid while a version bump on `main` publishes (§Publish on a version bump). +## A chunk ruled worse merges where a plan item of its release already restores that code's reading, and that item takes the ruling's places + +2026-10-30, the maintainer, merging PR #107 only because `todo.md` item 160 fixes exactly the +places its paired ruling voted worse. Serves code health. Valid while the comprehension check runs +once per chunk. + +The comprehension check runs once per chunk, after review. A restructure made after it goes +unmeasured, and past a pass's round cap it goes unreviewed. Where an item of the same release +reworks that code again, restructuring it inside the chunk does the work twice. Before the chunk +merges, that item's detail names every place the ruling voted worse. Until item 160 ships, the +places PR #106's and PR #107's rulings named read worse than their bases, so this entry works +against code health, and item 160 ends it. + ## No schema validation 2026-08-23, the mark refusal 2026-08-25, the maintainer. Goal 1. Valid while the site a document diff --git a/todo.md b/todo.md index 2999fb1..b85417c 100644 --- a/todo.md +++ b/todo.md @@ -13,7 +13,7 @@ | ID | Release | Blocked by | Exempt | Item | L | E | I | R | S | Moves | Score | |---|---|---|---|---|---|---|---|---|---|---|---| | 161 | 0.3.0 | | defect | **Write a line where em shares a delimiter run with strong in time linear in its mark runs, in `adfToLosslessMarkdown` and `adfToPortableMarkdown`.** | 4 | 1 | 2 | 5 | 5 | 9 by 3 | 7.8 | -| 160 | 0.3.0 | 161 | | **Make the block-text tree and the batched mark fallbacks read as easily as the code before items 33 and 109, and keep every switch only tests use out of production signatures.** | 3 | 1 | 2 | 4 | 5 | code health by 5 | 13.1 | +| 160 | 0.3.0 | 161 | decision | **Make the block-text tree and the batched mark fallbacks read as easily as the code before items 33, 109 and 158, and keep every switch only tests use out of production signatures.** | 3 | 1 | 2 | 4 | 6 | code health by 6 | 8.7 | | 150 | 0.3.0 | | decision | **Read `adfToHtml`'s HTML in `htmlToAdf` as a browser serializes it too — a raw `"` in text, ` `, `\r\n` line endings — so a page's `innerHTML` or a form post reads back.** | 2 | 2 | 2 | 4 | 4 | 6 by 5 | 5.0 | | 115 | 0.3.0 | | defect | **Build text holding no `border` mark in `losslessMarkdownToAdf`, and have `adfToLosslessMarkdown` carry text holding one.** | 2 | 1 | 2 | 3 | 3 | 4 by 3 | 4.6 | | 91 | 0.3.0 | | | **Spell an emphasis once across the code spans, an emphasis or link once across the hard breaks, dates, emoji, inline cards, mentions and statuses between two nodes it marks, and an emphasis across inline media, in both writers.** | 3 | 2 | 2 | 5 | 5 | 6 by 6 | 3.6 | @@ -87,7 +87,7 @@ kept strong on every `(`. `unspellableRuns` judges pair by pair, so it cannot pr without CommonMark's delimiter stack across passes. Dropping a doomed em before the strongs it holds may be linear and keep more marks, but it changes what the portable writer keeps: ask first. -### 160. Make the block-text tree and the batched mark fallbacks read as easily as the code before items 33 and 109, and keep every switch only tests use out of production signatures. +### 160. Make the block-text tree and the batched mark fallbacks read as easily as the code before items 33, 109 and 158, and keep every switch only tests use out of production signatures. PR #106's paired ruling read worse than c7bbb04: both seats ruled Locality and Shape worse, the maintainer chose to merge it and file this. Make each place they named easier to read: @@ -96,8 +96,20 @@ maintainer chose to merge it and file this. Make each place they named easier to `unspellableRuns`'s pair sweep in `line-escaping.ts`, which needs CommonMark's flanking rules open beside it, `takenThisPass` and `checkedCarry` in `inline-line.ts`, `tryListItemLines` reading `block-text.ts`'s measures, `holdsOnlyRuleCharacters` holding BlockText's rule in the grammar, and -`markerOpening` repeating the marker regexes' `[`. No output may change, and the timings the cost -entries under `CHANGELOG.md` → `## Unreleased` give for both writers must hold. +`markerOpening` repeating the marker regexes' `[`. + +PR #107's paired ruling read worse than 41fd106: both seats ruled Locality, Shape and +Self-sufficiency worse. The maintainer merged it only because this item fixes exactly the places +they named (`docs/decisions.md` §A chunk ruled worse merges): in `line-escaping.ts`, +`unspellableRuns`'s sweep over `PairSweep.fallen`, where each verdict reads those settled before +it; `fallsWithFirst`, whose calls run five levels deep, need CommonMark's delimiter-run rules beside +them, and rest on a property test for their rule; and `holdsAlike`, `holdsEarlier`, `spansAlike` +and `Standing`, defined only by comments. In `inline-reduction.ts` they named `spellableLine`, +which passes `dropsAlone` through four functions into the escaper's `RunFallback` and `merging`, +and `withoutMarks`, whose runs nest for a reason that lives in the sweep. + +No output may change, and the timings the cost entries under `CHANGELOG.md` → `## Unreleased` give +for both writers must hold. ### 150. Read `adfToHtml`'s HTML in `htmlToAdf` as a browser serializes it too — a raw `"` in text, ` `, `\r\n` line endings — so a page's `innerHTML` or a form post reads back.