chore: upgrade vendored worklog tooling 0.18.0 to 0.22.2 - #46
Merged
Conversation
…R5E1FXFX416RQ0G) Pulls in the plan-banner fix filed upstream as wiki_ticket_sdd#292, which shipped in worklog 0.20.0. All three completed plan pages announced themselves as "the latest status report"; they now read "completed plan", and the new upgrade plan correctly reads "plan not yet started". trace-check drops from 56 unlinked-evidence gaps to 24: 0.20.0 scoped it to released milestones and exempted kind:ops, which is what the release items were being flagged for. Three things the upgrade did not do for itself: 1. It rewrote hooks/pre-commit wholesale and silently deleted this repo's two local gate lines, added in v0.3.0 and v0.3.1. Restored, and now pinned by test_pre_commit_keeps_the_local_gates(), which CI runs directly rather than through the hook -- so it still fires in exactly the case where the hook itself has been clobbered. Verified by re-running init's overwrite against the suite: 25/26, exit 1. 2. init.sh does not copy doc_verify.py or provenance.py, yet pre-commit calls doc-verify behind a `[ ! -f bin/doc_verify.py ]` guard -- so the gate was installed, silent, and warning about nothing. Both modules vendored by hand; the doc-verify warning now appears in the gate output, which is the proof it was not running before. 3. The 0.19.0 upgrade note says to wire a SessionEnd hook at hooks/session-end.sh, a path init never creates and the plugin manifest does not wire. Vendored the script and added .claude/settings.json. doc-verify found four fabricated citations on its first run. One was in the live code walkthrough and is fixed; the other three are in frozen release documents and keep their errors, as frozen records do. Both were verified independently by resolving the symbol at each document's own stamped commit. The plugin's own surface is untouched: scripts/ has an empty diff, and the graph suite, curate suite and strict sample validation all pass unchanged. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01WMk8bhkMEUWfHi7VYzMzFX
…(01KZD823EG6R5E1FXFX416RQ0G) Adds working rule 9 to both host guides: merge PRs with a merge commit, not a squash. Frozen documents are stamped with the commit they were written against and doc-verify resolves their citations at that commit, so a squash keeps the authoring commit off the default branch and a fresh clone cannot resolve it. The rule names PRs #38-#45 as squashed-before-this-was-understood so they are not read as precedent. provenance-backfill stamps merged_in on 12 frozen documents. Filed two upstream issues from what this upgrade surfaced: wiki_ticket_sdd#344 (init.sh omits doc_verify.py, provenance.py and session-end.sh, each silently) and #345 (doc-verify --strict cannot pass once a frozen document carries a fabricated citation, which is true of upstream's own repo at 48 fabrications). Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01WMk8bhkMEUWfHi7VYzMzFX
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Epic
01KZD823EG6R5E1FXFX416RQ0G. Plan:docs/plans/2026-08-07-worklog-0-22-2-upgrade.md.Why
The backlog was empty and the only open thread was upstream
wiki_ticket_sdd#292— the plan-banner defect we filed rather than patchedlocally, because
bin/ia_render.pyis vendored andinit.shoverwrites it.That issue is now closed, fixed in worklog 0.20.0. Our vendored copy was on
0.18.0 against upstream 0.22.2, so collecting the fix meant upgrading.
The payoff, visible on the wiki
Before, all three completed plan pages read:
After:
And the new upgrade plan correctly reads plan not yet started — the state
distinction that did not exist before.
trace-checkalso drops 56 → 24 gaps. 0.20.0 scoped it to releasedmilestones and exempted
kind:ops, which is exactly what our release itemswere being flagged for.
Three things the upgrade did not do for itself
1. It deleted this repo's local pre-commit gates.
init.shrewriteshooks/pre-commitwholesale, which silently removed the two lines added inv0.3.0 and v0.3.1 gating the graph suite and the curate shell tests. CI still
ran them, so nothing was lost — but the local gate was gone and nothing said
so.
Restored, and now pinned by
test_pre_commit_keeps_the_local_gates(). Thereis no extension point in the vendored hook, so the loss cannot be prevented;
the test makes it loud instead. It lives in the suite CI runs directly,
not through the hook, so it still fires in exactly the case where the hook has
been clobbered. Verified by re-running init's overwrite against the suite:
25/26, exit 1.
This is the fourth gate-that-cannot-fire in this project's history, after the
okf-curate hook (v0.3.0) and the ungated curate shell test (v0.3.1).
2.
doc-verifywas installed, wired, and dead.init.shdoes not copydoc_verify.pyorprovenance.py, yetpre-commitcalls doc-verify behind[ ! -f bin/doc_verify.py ]— a guard that short-circuits to pass when thefile is missing. Vendored both by hand. The doc-verify warning now appears
in gate output, which is the proof it was not running before.
On its first real run it found 4 fabricated citations. One was in the live
code walkthrough (
test_mermaid_ids_are_unique_per_path(), lines 153–156,where the symbol spans 146–158 — the author cited the excerpt's lines, not the
symbol's) and is fixed. The other three are in frozen release documents and
keep their errors, as frozen records do.
I verified all of them independently rather than trusting the tool, resolving
the symbol at each document's own stamped commit: line 146 at
c9c6c99, line96 at
6bf5d65. The tool was right in every case.3. The documented SessionEnd step points at a file nothing creates. The
0.19.0 notes say to wire
hooks/session-end.sh;init.shcopies only thethree git hooks, and the plugin manifest wires four events but not
SessionEnd. Reachable by neither route. Vendored the script and added.claude/settings.json; smoke-tested inside and outside a worklog repo.All three are the same defect — a guard whose absence is indistinguishable
from a pass — and are filed upstream as wiki_ticket_sdd#344.
Merge style
Working rule 9 added to both host guides: merge commits, not squash. Frozen
documents are stamped with the commit they were written against and doc-verify
resolves citations at that commit; a squash keeps it off the default branch.
PRs #38–#45 were squashed before this was understood — the rule names them so
they are not read as precedent.
provenance-backfillstampedmerged_inon12 documents.
0 unresolvable, so the squashed history does still resolve; that waschecked rather than assumed.
Also filed upstream
wiki_ticket_sdd#345 —
doc-verify --strictcannot pass once any frozendocument carries a fabricated citation.
failing()exempts frozen docs fromdrift but not fabrication, while the freeze rule forbids the fix. Upstream's
own repo fails its own gate at 48 fabrications. Reported as a genuine
tension rather than with a proposed answer, since it is their policy call.
Blast radius
The plugin's own surface is untouched —
scripts/has an empty diff, andthe graph suite (26 cases), curate suite and
validate sample-okf --strictallpass unchanged. A tooling upgrade that moved
okf-graph.pybehaviour woulditself be a bug.
Gate exits 0. The doc-verify warning it prints is the frozen-document
situation above, warn-level by design.
🤖 Generated with Claude Code
https://claude.ai/code/session_01WMk8bhkMEUWfHi7VYzMzFX