content: tree-wide block transforms (transform.sx) + 12 tests (586/586)
Some checks failed
Test, Build, and Deploy / test-build-deploy (push) Failing after 29s

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-06-07 03:56:05 +00:00
parent 53bb3e97b4
commit d9f2e7330e
6 changed files with 157 additions and 5 deletions

View File

@@ -19,7 +19,7 @@ injected adapter, not core.
## Status (rolling)
`bash lib/content/conformance.sh`**574/574** (Phases 14 COMPLETE + extensions: HTML/SX escaping, Markdown render + import/export incl. tables & frontmatter (full round-trip), CRDT replication, tree-aware validation, snapshot cache, doc metadata, plain-text render, nested block trees + deep tree editing, doc stats, table block, HTML page wrapper + SEO page, doc composition + id-remap, portable data + wire serialization, block query + TOC)
`bash lib/content/conformance.sh`**586/586** (Phases 14 COMPLETE + extensions: HTML/SX escaping, Markdown render + import/export incl. tables & frontmatter (full round-trip), CRDT replication, tree-aware validation, snapshot cache, doc metadata, plain-text render, nested block trees + deep tree editing, doc stats, table block, HTML page wrapper + SEO page, doc composition + id-remap, portable data + wire serialization, block query + TOC + transforms)
## Ground rules
@@ -95,11 +95,18 @@ lib/content/api.sx ── (content/edit) (content/render) (content/history) ─
- [x] deep tree editing (`tree-edit.sx`: doc-deep-update/replace/delete/insert-into)
- [x] id remapping / clone (`clone.sx`: content/remap-ids + prefix-ids, collision-free compose)
- [x] block query + TOC (`query.sx`: content/select/select-type/count-type/headings)
- [x] block transforms (`transform.sx`: content/map-blocks/map-type/set-field-on)
- [x] portable data serialization (`data.sx`: content/to-data + from-data, round-trips tree)
- [x] wire serialization (`wire.sx`: content/to-wire + from-wire, SX-text on the wire)
## Progress log
- 2026-06-07 — Extension: tree-wide block transforms (`transform.sx`). The write
counterpart to query: `content/map-blocks` (predicate) / `content/map-type` /
`content/set-field-on` apply a function to every matching block across the tree
(sections rebuilt), for bulk edits (cdn src rewrites, heading-level bumps, text
sanitisation). Inline tree rebuild (no section.sx dep); immutable. 12 tests;
suite 586/586.
- 2026-06-07 — Extension: block query + TOC (`query.sx`). `content/select`
(predicate) / `content/select-type` / `content/count-type` / `content/select-ids`
collect blocks across the whole tree (sections recurse); `content/headings`