3
0
mirror of https://github.com/larvit/adf-codec.git synced 2026-11-12 11:48:29 +01:00

Answer prose round 1: 0 🔴, 3 🟡 (0 misread); reword the comment and item 175

This commit is contained in:
2026-11-09 05:13:30 +01:00
committed by Lillem4n
parent 796f520990
commit fe7fabb7ab
2 changed files with 9 additions and 8 deletions
+1 -1
View File
@@ -40,7 +40,7 @@ function headed(head: string): (body: BlockText) => BlockText {
function tryTaskList(node: AdfNode, path: ConvertErrorPath, depth: number, writing: Writing): Result<EmittedBlock> {
const items: PlacedBlock[][] = []
// The portable reduction leaves a task list opening with a task, so `item` is set before any child nests in it.
// The portable reduction opens every task list with a task, so this empty array is replaced before any block is pushed to it.
let item: PlacedBlock[] = []
// A child other than a task nests in the task before it.
for (const [index, child] of nodeContent(node).entries()) {
+8 -7
View File
@@ -13,7 +13,7 @@
| ID | Release | Blocked by | Exempt | Item | L | E | I | R | S | Moves | Score |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 153 | 0.4.0 | | question | **Decide whether `src/markdown/` root may import `emit/`, `parse/` or `portable/`, and hold the answer in `.oxlintrc.json` and §The source parts by ADF and format.** | 1 | 2 | 2 | 3 | 2 | code health by 3 | 26.2 |
| 175 | 0.4.0 | | | **Delete the `'a task holds blocks no list item spells'` failure and the child paths in `tryTaskList`, once `spelledList` yields a list the portable reduction can never refuse.** | 1 | 1 | 1 | 1 | 2 | code health by 2 | 17.4 |
| 175 | 0.4.0 | | | **Delete the `'a task holds blocks no list item spells'` failure and the `path` arguments in `tryTaskList`, once `spelledList` can't return `undefined` for a portable task list.** | 1 | 1 | 1 | 1 | 2 | code health by 2 | 17.4 |
| 176 | 0.4.0 | | | **Delete `runEdge`'s `standing === 'moves'` give-up, and any code only it needs, once a test or an argument shows `runEdge` never reaches it, or else pin the case with a hand-worked line.** | 1 | 1 | 2 | 2 | 2 | code health by 2 | 17.4 |
| 45 | 0.4.0 | | defect | **Replace `isAdfDocument` with a reader returning `Result<AdfDocument>`.** | 2 | 1 | 3 | 4 | 3 | 1 by 2 | 13.1 |
| 127 | 0.4.0 | | principle | **Hold what `entity-references.test.ts`, `json-text.test.ts` and `result.test.ts` check by asserting outcomes, so none reads source text.** | 2 | 2 | 1 | 3 | 3 | code health by 2 | 13.1 |
@@ -72,13 +72,14 @@ a paragraph opening with a spellable `!adf:link` (§Nothing recurses unbounded).
`src/markdown/**` bans only `html/`; banning `emit/`, `parse/` and `portable/` for the root's own
files, with its `ci.sh` probe, extends the decision.
### 175. Delete the `'a task holds blocks no list item spells'` failure and the child paths in `tryTaskList`, once `spelledList` yields a list the portable reduction can never refuse.
### 175. Delete the `'a task holds blocks no list item spells'` failure and the `path` arguments in `tryTaskList`, once `spelledList` can't return `undefined` for a portable task list.
`reduceToPortable` runs first, so `adfToPortableMarkdown` never reaches `tryTaskList`'s
(`portable/block-spelling.ts`) failure; no test reaches it either. It stays because `spelledList`
returns `undefined` for the blocks a list item cannot hold, and the type has no cast to drop it.
The `path` it passes to `taskBlocks` and `placedBlock` changes no output, since the nesting
refusal's path comes from `reduceToPortable`. Found by mutation testing for item 128, 2026-11-08.
`reduceToPortable` runs first, so `adfToPortableMarkdown` never reaches the failure in `tryTaskList`
(`portable/block-spelling.ts`), and no test reaches it. The failure stays because `spelledList`
returns `undefined` for blocks a list item cannot hold, and the code rules ban the cast that would
drop that case. The `path` arguments to `taskBlocks` and `placedBlock` don't change any output:
`reduceToPortable` refuses a document nested past `largestNesting` and names the path itself.
Found by mutation testing for item 128, 2026-11-08.
### 176. Delete `runEdge`'s `standing === 'moves'` give-up, and any code only it needs, once a test or an argument shows `runEdge` never reaches it, or else pin the case with a hand-worked line.