Repository navigation
v0.4.1
-
Upstream sync: bump pin
27d835c→8e5175b(upstream v0.4.1). Two ports, both about a run surviving trouble instead of aborting. Out of scope: the visualizer overlay/reader fix (#724), upstream's own wiki updates (#733/#736), and the version-packages chore (#729). -
OKF metadata repair replaces OKF metadata rejection (#728, #730). Upstream's
normalizeConceptContentnow delegates to a newrepairOkfFrontmatterthat works field by field instead of rebuilding: a page that passes full validation is left byte-for-byte alone (a stricter test than 0.4.0's "parses and has a non-emptytype" — junk optional fields are no longer tolerated, they are repaired), a parseable block is repaired in place with every producer extension kept, and only an unusable block falls back to the minimal derived block. Both wiki skills' Step 2 now carries the per-field rules — derivetype(plusopenwiki_generated: true) andtitle; drop an invaliddescription/resource/timestamp/status/stale_after; filtertags,verified, andsourcesto their conformant entries; remove ageneratedthat is not a valid{by, at?}event, because a trust assertion that cannot be proven conformant must not be rewritten into a false one. Upstream deleted both carry-across lists (PRESERVED_EXTENSION_FIELDS,PRESERVED_STRUCTURED_FIELDS) since the in-place path preserves the original block; the skills drop them too and state the consequence — on the unparseable-YAML fallback,openwiki_translation_pendingand the code-owned families are lost, because they cannot be read back from a block that does not parse. -
Three byte-level details from the same PRs that matter for interoperability, now reflected in both skills:
setGeneratedEventrendersgenerated: { by, at }with spaces inside the braces (was{by, at}); a page whose body changed this run has its trailing line endings canonicalized to exactly one LF and nothing else (#730), while an unchanged page never passes through that normalization; and provenance restoration compares the existing event by meaning first, so an older{by: …}spelling on a page nobody touched is left as-is rather than reformatted. Thesourcesprojection likewise repairs front matter before and after projecting and compares the final bytes, so a repair alone justifies a write and a no-op projection does not. -
Provenance and the per-write check stopped being fatal (#728). The provenance pass skips a page it cannot read and skips a write that fails, leaving the already-persisted page as the deterministic fallback rather than discarding the rest of a finalized wiki; both skills now say so and ask for the skipped pages to be reported. The per-write front-matter check repairs deterministically instead of only warning, and warns only when the repaired bytes cannot be persisted — so
prompt-page.md's submission gate is now "repair, then validate", failing only on a shape no deterministic repair can fix. -
A page worker that cannot finish is skipped, not fatal (#732) — new to
skills/openwiki/SKILL.mdStep 4. Snapshot a page's exact current Markdown before working it; if it cannot be completed, restore the snapshot (or delete the page when it did not exist), mark the job skipped, say which page and why, and continue the queue. Step 5 restores skipped pages once more before finalizing and excludes them from thesourcesprojection — projecting an empty set would strip the grounding the previous run recorded. Step 6 then writesstatus: "interrupted"and rewindsgitHeadto the previous run's head (upstream's newgitHeadOverride), because recording the current head would make the skipped page invisible to every future update. A submission failure that is not a correctable input problem still aborts. Upstream'sskippedjob status and its reset-to-pending on resume are[omitted]: this port re-plans every run, so the retry is inherent.