Skip to content

v0.4.1

Choose a tag to compare

@JHSeo-git JHSeo-git released this 27 Aug 00:31
· 31 commits to main since this release
  • 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 normalizeConceptContent now delegates to a new repairOkfFrontmatter that 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-empty type" — 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 — derive type (plus openwiki_generated: true) and title; drop an invalid description/resource/timestamp/status/stale_after; filter tags, verified, and sources to their conformant entries; remove a generated that 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_pending and 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: setGeneratedEvent renders generated: { 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. The sources projection 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.md Step 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 the sources projection — projecting an empty set would strip the grounding the previous run recorded. Step 6 then writes status: "interrupted" and rewinds gitHead to the previous run's head (upstream's new gitHeadOverride), 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's skipped job status and its reset-to-pending on resume are [omitted]: this port re-plans every run, so the retry is inherent.