The template repo now keeps three branches with fixed meanings — main is
stable, test is the release candidate, experimental is development — and
ckb-init/ckb-upgrade can source from any of them instead of only main.
Selection is per-invocation, in words the user already uses ("initialize
from the test branch", "check experimental for updates", "switch back to
stable"), and sticky: the resolved repo and branch are written to a
template: block in ckb.yaml. Without persistence, a KB bootstrapped from
experimental would be silently pulled back to main by its next upgrade.
A missing file or missing block both mean main, so every KB predating
this convention behaves exactly as before.
One consequence needed explicit handling. A KB tracking test or
experimental can sit on a VERSION main has not released yet, so comparing
it against main finds nothing newer — which the version check would have
reported as "up to date". That is true and misleading. ckb-upgrade now
reports it as "ahead", and treats a move back to main as a downgrade:
explicitly confirmed, with the specific losses named, and blocked
outright where kb_schema_version would drop below what local pages are
already written against.
ckb-module is told not to clobber the template: block — a module install
that silently reset a KB's channel would change what its next upgrade
pulls, which is not a module's business.
Documented in both READMEs, both MANUALs and both CHANGELOGs. VERSION
1.8.0 -> 1.9.0; kb_schema_version stays 1.5, since this is tooling rather
than a content contract.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
4.9 KiB
2026-09-22 Session Summary
[2026-09-22] Reset requested, then cancelled
/ckb-reset was invoked. Ran Step 0 (clean tree, restore point 2c4d57a) and
the Step 2 inventory, which found this KB already effectively a clean template
— 0 entity pages, 0 project scopes, 0 decision records, 0 graph edges, nothing
in raw/, outputs/, libs/, linked/ beyond .gitadd placeholders, no
modules installed, no src/. The only tier-1/2 content was 3 wiki/log.md
entries (the schema 1.5 migration trail) and one workload summary.
Nothing was deleted. The typed confirmation was never given — the user
moved on to merging and syncing instead. Flagged at the time: main was
already a clean template at schema 1.4, and clearing the log would leave the
scaffold declaring 1.5 with no in-wiki record of how it got there.
[2026-09-22] Merge and sync
- Working tree was already clean; nothing to commit.
mainwas an ancestor ofgraft-ideas, so the merge fast-forwarded — no merge commit, both commits preserved individually, no conflicts.- Pushed
main(c998489->2c4d57a) to both remotes:origin(git.wierzbowa.cloud/michal/ckb) andcodeberg(codeberg.org/Valdec/llm-wiki-cascade). - Schema 1.5 and template 1.8.0 are now the published state on both.
Left alone deliberately: branch graft-ideas (now identical to main,
safe to delete whenever), and branch feature/external-source-connectors,
which holds one commit (f3dbce7) not present on either remote and is
unrelated to this work.
[2026-09-22] Reset executed — Tier 1
Re-ran /ckb-reset from the post-sync state (the earlier inventory could not
carry over: the counts had moved). Confirmed with the typed phrase, Tier 1 only.
- Deleted: 3
wiki/log.mdentries — the schema 1.5 migration trail. That was the whole of Tier 1; there were no entity pages, project scopes, decision records or graph edges to remove. - Restored:
wiki/log.mdto its header-and-format-example form. Nothing else was rewritten —index.md,overview.md,graph/index.mdanddecisions/index.mdalready matched whatckb-initproduces at schema 1.5. - Deliberately not bumped:
wiki/graph/edges.json(last_updated: 2026-09-20, array already empty) andwiki/overview.md(last_updated: 2026-09-21). Both dates are accurate as they stand; bumping them would assert changes that did not happen. - Preserved: Tier 2 (both workload summaries), the entire template layer, and schema 1.5 / template 1.8.0.
- Verification: lint returned 0 findings across
wiki/andlibs/. - Restore point:
7d3fa54, clean and pushed to both remotes before the reset ran.
Rule B exception. The reset is a change inside wiki/ and would normally
require a wiki/log.md entry. Logging "emptied the log" into the log it just
emptied defeats the purpose, so the record lives here instead — the same
reasoning ckb-reset applies to its Rule D exception. The migration this
removed from the log remains documented in CHANGELOG.md and in commits
474630e/2c4d57a, published on both remotes.
[2026-09-22] Release channels — three branches, branch-aware init and upgrade
Added test and experimental branches alongside main, and taught
ckb-init/ckb-upgrade to source from any of them.
Channel semantics: main = stable/released, test = release candidate,
experimental = development. Default everywhere is main.
Selection is per-invocation and sticky. The user names a branch in words
("initialize from the test branch", "check experimental for updates", "switch
back to stable"); the choice is then persisted to ckb.yaml:
template:
repo: https://git.wierzbowa.cloud/michal/ckb.git
branch: main
Persistence was a judgment call, not an explicit ask. Without it, a KB
bootstrapped from experimental would be silently pulled back to main by its
next upgrade — mixing channels without anyone noticing. Absent file or absent
block both mean main, so every pre-existing KB behaves exactly as before.
The non-obvious consequence, handled explicitly: a KB tracking test or
experimental can sit on a VERSION main has not released. Comparing against
main finds nothing newer, which the old code would have reported as "up to
date" — true but misleading. ckb-upgrade Step 2 now reports "ahead" instead,
and treats a move back to main as a downgrade requiring explicit
confirmation, blocked outright when kb_schema_version would drop below what
local content is written against.
Files touched: ckb-init (Step 3 channel table, Step 7 writes ckb.yaml,
Step 12 reports the channel), ckb-upgrade (new Step 0, Step 2 ahead-case,
Step 6 persists, Step 8 reports, 5 new edge cases), ckb-module (must not
clobber the template: block), AGENTS.md routing, both READMEs, both
MANUALs, both CHANGELOGs. VERSION 1.8.0 -> 1.9.0. Schema unchanged at 1.5 —
this is tooling, not a content contract.