Skip to content

Changelog and Versioning

Mikhail Deynekin edited this page Oct 14, 2026 · 1 revision

Changelog and Versioning

The subject's version history and the mechanics of versioning a repository that has no git tags and no releases: versions live in CHANGELOG.md and commit messages, pinning means commit SHAs, and every release entry doubles as a verification report. Compiled from the changelog and git history at 7e17a11 (8 commits, all dated 2026-10-14), with the claims cross-checked against this run's tests where testable.

Contents


How versioning works here

Property State at 7e17a11 Consequence
Git tags 0 (verified: git tag empty; repo_scan.py brief prints "NO TAGS: versioning is by file marker") no git checkout v1.2.1; pin by SHA
GitHub releases none no release assets; the repository clone is the distribution
Version record CHANGELOG.md (1.0.0 → 1.2.1) + conventional-commit-style messages (feat:, fix:) the changelog is the authoritative timeline
Per-file version markers none in tool code (the scan's version-marker sweep finds markers in examples quoting other projects) cite SHAs, not file versions
Commit history 8 commits, 4 fix / 2 feat / 2 other, all 2026-10-14 a young, intensively iterated repository

For a wiki run this shape is a documented fact, not a gap to paper over: the footer's trust line pins to a commit SHA ("verified against the source at commit 7e17a11"), which is stronger than a version label that no tag enforces.

Commit timeline

SHA Message (abridged)
cf0be53 Initial commit
b60bb84 feat: github-wiki-llm-writer 1.0.0
db9c2e5 fix: 1.0.1 — publication-readiness fixes (ban loader, CI coverage, docs, publish flow)
44f68f8 fix: make examples/research/facts.json valid JSON; add PUBLISHING.md; widen CI JSON check
493b0d6 Merge github-wiki-llm-writer 1.0.1 into the repository
92f1ce5 fix: 1.0.2 — make the --ban/--terms and documented-paths CI steps actually runnable
f9030ee feat: 1.2.1 — new tools into CI, restore the runnable gate, stop templates banning their own keys
7e17a11 fix: make lib/evidence.py self-test platform-independent

1.0.0 — initial public release

Extracted from the completed MD.Viewer run (22 files, 73,013 words, 0 QA errors). Shipped: SKILL.md (agent entry point), AGENTS.md (phase→tool map), PROMPT.md (paste-ready prompt), bootstrap.sh, PITFALLS.md, repo_scan.py, req.py, serve.py, webapp_probe.py, qa_wiki.py, new_page.py, publish.sh, templates, examples, and the CI workflow.

The release notes record nine defects found in the tools during extraction — all caught by running them, not reading them, which is the kit's thesis applied to itself:

  1. the auditor compared every page against the previous page's text (a tuple-assignment bug — 235 phantom errors);
  2. code-block bodies were never accumulated, so mermaid/shell checks ran vacuously;
  3. the bracket-in-label check fired on quoted labels and the mermaid cylinder shape;
  4. subgraph/end balancing was applied to sequence diagrams, where end closes other blocks;
  5. an over-strict lead-paragraph regex produced false warnings;
  6. scaffold templates hardcoded page names in _Footer.md/Home.md — site-wide dead links for any other page list;
  7. publish.sh broke on a relative wiki dir after its internal cd;
  8. an interactive read prompt aborted in terminal-less sandboxes, and a filename heuristic blocked legitimate hyphenated titles;
  9. two over-broad avoid-patterns fired on correct prose.

It also records three corrections the Phase-4 re-run found in the delivered wiki: a fabricated code quote replaced with verbatim source; a normaliser documented as path-only that also rewrites query strings (verified by request); and a README-transcribed force-flag propagation claim the code did not implement.

1.0.1 / 1.0.2 — publication readiness

1.0.1: ban-loader fixes, CI coverage, docs and publish-flow corrections; PUBLISHING.md added (the unrelated-histories merge and the .gitignore lib/ trap); the shipped examples/research/facts.json — described in four docs as the machine-readable fact base — turned out to be a Markdown document with a fenced JSON block inside, so the CI JSON check widened to every tracked .json. PITFALLS was recounted and reordered (B8 moved back into group B). 1.0.2 made the --ban/--terms and documented-paths CI steps actually runnable (they had been asserting nothing).

1.1.0 — field-report hardening (P0)

Trigger: an independent field report from a full run against MD.Scribe 3.1.0 (23 pages, 41,623 words, 0 QA errors, 249 empirical checks, 14 verified doc-vs-code discrepancies). Landed:

Item What shipped
P0-1 qa/fix_toc.py — block-scoped TOC rebuilder with the accident fixture as its self-test (8/8)
P0-2 lib/session.py — cookie-jar client + csrf_from_html; live self-test 8/8 on PHP 8.2.34
P0-3 setup/snapshot.sh + templates/REWORK-STATE.md.tmpl
§E PITFALLS grew by five traps (B9–B11, C8, D8) to 31 total
Docs all four new files listed in the README/SKILL/AGENTS tool tables

1.2.0 — the remaining field items (P1-4 … P2-11)

Completed the plan in REWORK-PLAN.md (kept in the tree as the specification and evidence trail). Headline: P1-5, the highest-value fix — a field run had produced 10 QA errors and zero real problems (a ban phrase inside a negation, a refuted quote, a verbatim 404 string, an anchor slug, a probe filename, two domain terms). The auditor now matches on a scrubbed view (code, links, anchors, filenames blanked, offsets preserved), downgrades negated ban hits to warnings (never suppresses), and supports exemptions/fluff_exemptions reported as INFO. The self-test grew from 15 to 22 detections — verified 22/22 in this run (T1).

Also landed: setup/check_runtime.py + bootstrap.sh --subject/--with-composer (P1-4; reproduced exactly in this run, T12); sidebar grouping via --groups/--progress (P1-6, verified 0 QA errors across four paths); publish.sh writing PUBLISH.md instead of only printing (P1-7 — "stdout is gone after a context loss, a file is not"); qa/verify_commands.py (P2-8, scored 19/19 in its originating run and caught real manifest drift); the multi-layout/stateful-probing section of AGENTS.md (P2-9); examples/run2-mdscribe/ (P2-10); lib/evidence.py (P2-11, self-test 3/3 — T3).

1.2.1 — restore the runnable gate, stop templates banning themselves

Two intertwined regressions, both now covered by checks verified to fail when the defect is reintroduced:

  • The --ban/--terms CI step had become vacuous: its banned fixture phrase sat inside inline code, which the new scrubbing (correctly) blanks — so the command that must fail exited 0. The step now asserts both halves: a prose phrase fires, an inline-code phrase stays silent, and an all-meta ban file warns.
  • templates/ban.json banned its own structural keys: the loader treated exemptions/fluff_exemptions as phrases, so any wiki explaining those features got banned claim 'exemptions' with a raw list as the reason — the same defect class as 1.0.1's _comment bug, one level out. Values are now phrases only when the key is neither _-prefixed, nor structural, nor a list.
  • Restored: the .gitignore lib/ fix lost in a merge; the documented-paths step split so grep's exit-1-on-no-match under pipefail cannot abort it; six tools (fix_toc, session, evidence, verify_commands, check_runtime, snapshot) added to CI after shipping documented-but-unexercised.
  • Added: the workspace-refusal CI step + .gitignore patterns (v3.*/, uploads/, incoming/, workspace-fallback/) after a 184-file / 4.4 MB run workspace sat one git add -A from being published.
  • Fixed: evidence.py --self-test used /proc/definitely-not-writable, which resolves to a creatable C:\proc\… on Windows — the self-test failed for every Windows user while CI (ubuntu) stayed green; the fixture is now a path whose parent is a regular file, unwritable everywhere (this is the 7e17a11 commit).

The release's "Verified" section is itself a model: all eleven steps re-run on a real host under three shells, with five named negative controls each proven to make their step fail.

Versioning guidance for kit-built wikis

  • Pin the wiki's trust line to the subject's commit SHA (the scaffold's _Footer.md slot) — not to a version label.
  • Document the subject's versioning as it is: if the scan reports zero tags, say versioning is changelog-driven; if per-file markers carry versions (the reference subject had eleven), tabulate them.
  • When the subject later tags releases, that changes the Changelog page's contract — re-run the scan; repo_scan.py prints tag counts precisely so this fact is never guessed.

See also

Clone this wiki locally