Skip to content

docs: regenerate the site at marketplace 76b8c06 and fix the kubernetes engine mapping - #178

Merged
github-actions[bot] merged 2 commits into
mainfrom
feat/engine-word-docs-wave
Oct 23, 2026
Merged

github-actions[bot] merged 2 commits into
mainfrom
feat/engine-word-docs-wave

Conversation

@aitrawog

@aitrawog aitrawog commented Oct 23, 2026 •

Copy link
Copy Markdown
Contributor

Summary

The published site still carried the retired engine word and a false kind-provider mapping. Two things fix it:

  • marketplace gitlink 1c15651 → 76b8c06 (v2026.296.1903) — the corpus main that contains this wave's marketplace merges: layer-nerdctl v2026.296.1649 (#561) and the layer-kind / direct-plugin-kube pins (#563).
  • Regenerated src/content/docs with the deploy workflow's exact inputs, and guides/kubernetes.md (hand-authored) corrected: the engine word maps to kind's KIND_EXPERIMENTAL_PROVIDER through the engine capability data (podman → podman, docker → docker, containerd → nerdctl) and is refused outside the vocabulary — not "1:1" — and the third bed is rootless containerd (the entity name keeps kind's nerdctl provider word).

Concurrent corpus advance, resolved by regeneration. While this leg was in review, another session's docs#176 advanced the vendored pin to 1c15651 and regenerated the pages that pin moves. 1c15651 is an ancestor of the corpus pinned here, so the overlapping generated pages were resolved by REGENERATION, not by hand: the committed tree is the 76b8c06 projection (which contains #176's pages plus this wave's three corpus deltas), and the gitlink keeps the advance. gh pr update-branch was refused because of those conflicts; the resolution is a local merge commit plus the regeneration, pushed as a fast-forward — no rebase, no force-push.

Diff vs origin/main: 6 files changed, 44 insertions(+), 34 deletions(-); head dcf4b6991fcb566db1724d2dfbce1e8c9f2fbda9, tree b9474c1ebf6a155661054d0f21b0d5b6e1a3166c.

How tested

The generator and pins are the deploy workflow's own (read from .github/workflows/deploy.yml on this head):

$ /home/atrawog/.cache/docs-wave/plugin-docs-bin generate \
    --root /tmp/docs-wave/charly-docs \
    --narrative /tmp/docs-wave/umbrella-docs \
    --plugins <worktree>/marketplace \
    --out <worktree>/src/content/docs
charly docs: 395 recipe pages, 194 plugin pages (205 provider words), 79 cli pages, 801 candy pages, 201 box pages (1676 generated pages cleared before regeneration)
$ echo $?
0

Roots: charly at bafd8dbc (the CI-time commit), umbrella at e631aacf (the narrative checkout), plugin-docs at v2026.289.0814, and the docs-corpus wiring candy built by python3 .github/docs-corpus/build_wiring.py .github/docs-corpus/pins.tsv.

Before (origin/main, the retired word and the guide's claim):

$ git grep -n -i -E 'engine: ?nerdctl|nerdctl engine|rootless nerdctl|podman/docker/nerdctl|docker/podman/nerdctl|docker-podman-nerdctl' origin/main -- src/content/docs
origin/main:src/content/docs/guides/kubernetes.md:39:engines — podman (`check-kindcluster`), docker (`check-kindcluster-docker`) and rootless nerdctl
origin/main:src/content/docs/guides/kubernetes.md:72:| `check-kindcluster-nerdctl` | kind on the rootless nerdctl engine |
origin/main:src/content/docs/recipes/distros/layer-nerdctl.md:13:stack, as ONE candy. Composed by a box that wants the opt-in `engine: nerdctl`
origin/main:src/content/docs/recipes/distros/layer-nerdctl.md:86:The `engine: nerdctl` word is served by `opencharly/plugin-nerdctl`
origin/main:src/content/docs/recipes/distros/layer-nerdctl.md:109:Working with the nerdctl engine, the layer-nerdctl candy, the rootless
origin/main:src/content/docs/recipes/distros/layer-nerdctl.md:110:containerd/buildkit checklist, or an `engine: nerdctl` deploy.
origin/main:src/content/docs/recipes/kubernetes/check-k8s.md:30:operator's own engine (docker / rootless podman / rootless nerdctl) instead of
$ echo $?
0

After (this head, same scope):

$ git grep -n -i -E 'engine: ?nerdctl|nerdctl engine|rootless nerdctl|podman/docker/nerdctl|docker/podman/nerdctl|docker-podman-nerdctl' -- src/content/docs
$ echo $?
1

The remaining nerdctl mentions are the CLI binary and the capability mapping (for example containerd → nerdctl), not engine names.

The drift gate's real PASS — a second regeneration on the COMMITTED tree is a no-op:

$ /home/atrawog/.cache/docs-wave/plugin-docs-bin generate --root /tmp/docs-wave/charly-docs --narrative /tmp/docs-wave/umbrella-docs --plugins <worktree>/marketplace --out <worktree>/src/content/docs
$ echo $?
0
$ git status --porcelain
$ echo $?
0

The site builds from the committed content (the deploy workflow's npm ci + npm run build):

$ npm ci --no-audit --no-fund
added 391 packages in 10s
$ echo $?
0
$ npm run build
21:52:12 [@astrojs/sitemap] `sitemap-index.xml` created at `dist`
21:52:12 [build] 1699 page(s) built in 2m 24s
21:52:12 [build] Complete!
$ echo $?
0

The diff is audited per file — every file gains at least as many lines as it loses, and the sum matches the headline:

$ git diff --numstat origin/main...HEAD
1	1	marketplace
9	6	src/content/docs/guides/kubernetes.md
9	5	src/content/docs/recipes/distros/layer-nerdctl.md
5	4	src/content/docs/recipes/kubernetes/check-k8s.md
6	4	src/content/docs/recipes/kubernetes/kind.md
14	14	src/content/docs/recipes/kubernetes/kubernetes.md
$ git diff --numstat origin/main...HEAD | awk '{a+=$1; d+=$2} END {print a" "d}'
44 34
$ git diff --shortstat origin/main...HEAD
 6 files changed, 44 insertions(+), 34 deletions(-)

kubernetes/skills/kubernetes.md moves forward to the repo's CURRENT body (charly deploy vocabulary), not a revert: the old corpus pin predates the charly fleet → charly deploy rename.

Rulebook compliance

  • R0 — loaded /charly-build:docs, /charly-tools:docs-site, /charly-internals:git-workflow, :marketplace, :skills, :cutover-policy, :strict-policy and this repo's guidance before any edit.
  • R1 — the stale mirror is RCA'd on opencharly/docs#177 (manual pin advance; the gate reports, never blocks). The concurrent #176 overlap is disclosed above and resolved by regeneration.
  • R2 — no generated file is hand-edited; regeneration is the only writer. The guide is hand-authored and edited as such.
  • R3 — no workaround; the deploy workflow's documented inputs are used verbatim.
  • R4 — the guide's false "1:1" claim is corrected to the product's capability mapping, and the bed's engine is named correctly.
  • R5 — the classified sweep is pasted before and after; zero engine-word hits remain.
  • R6 — git status was stated; worktree off origin/main c556831; the submodule pointer was staged and verified; the #176 conflict was resolved by a local merge + regeneration and pushed as a fast-forward — no rebase, no force-push, no direct push to main.
  • R7 — emitted artifacts are validated at their boundary: the generated tree (second-run no-op on the committed tree) and the built site (1699 pages).
  • R8 — the generator fetched the pinned public repos; no service is mocked.
  • R9 — the generator is the CI-pinned plugin-docs v2026.289.0814; the charly source is the CI-time commit, not a shared install.
  • R10 — generated content + a submodule pin + one hand-authored guide; the deploy workflow's gate (regeneration no-op) passed on the final tree, and the site build completed.

Change classification

Generated content + a submodule pin + one hand-authored guide: fully tested and validated — the deploy workflow's drift gate is a no-op on the final tree and the Astro build completed (1699 pages).

Filed issues

  • opencharly/docs#177 — this PR's issue (filed and CLAIMed before branching).
  • opencharly/opencharly#589 — the tracker.

Closes #177

Agent: containerd-crabbox-program/docs-wave · session 8b1c01cf-7f79-4a75-bff8-240415a06208
Assisted-by: Claude Code deepseek-v4.1-flash:cloud (fully tested and validated)

…es engine mapping (#177)

The marketplace gitlink sat at b879d711 (about twenty corpus commits behind), so
the published pages still carried the retired engine word and the pre-rename
`charly fleet` vocabulary. Advanced to 76b8c06 (v2026.296.1903) and regenerated
with the deploy workflow's exact inputs: charly bafd8dbc, narrative umbrella
e631aacf, plugin-docs v2026.289.0814, and the docs-corpus wiring candy built from
pins.tsv.

guides/kubernetes.md is hand-authored: the engine word maps to kind's
KIND_EXPERIMENTAL_PROVIDER through the engine capability data (containerd ->
nerdctl), not 1:1, and the third bed is rootless containerd (the entity name
keeps kind's nerdctl provider word).

38 generated pages change, including one new page
(recipes/check/clawsweeper-review.md). Five pages lose net lines; each is a
faithful projection of its current source (page lines = source lines + 1), and
the dropped text is absent from the corpus. A second regeneration is a no-op.

Assisted-by: Claude Code deepseek-v4.1-flash:cloud (fully tested and validated)
@aitrawog

Copy link
Copy Markdown
Contributor Author

STATUS — opencharly/docs#178 is open.

  • Head 82d2301435d70d8541216f2f57b7e09bb174fce9, tree 3c5f7a8a910740200e748b4d0b872e590d57b9de
  • Issue #177, tracker opencharly/opencharly#589
  • Diff: marketplace gitlink b879d711 → 76b8c06, 38 regenerated pages (incl. one NEW page), and the hand-authored guides/kubernetes.md mapping/bed fix; 39 files, +1086/−425
  • Evidence in the body: the retired-word grep is rc=1 after; a second regeneration is a no-op on the committed tree; the Astro build produced 1699 pages; the five net-loss pages are page=source+1 with the dropped text absent from the corpus

Next: read the validator verdict in full. After this merges, the umbrella gitlinks for docs/marketplace/layer-kind/plugin-kube are pin-advance candidates for the pins leg.

Agent: containerd-crabbox-program/docs-wave · session 8b1c01cf-7f79-4a75-bff8-240415a06208
Assisted-by: Claude Code deepseek-v4.1-flash:cloud (fully tested and validated)

@aitrawog

Copy link
Copy Markdown
Contributor Author

WAITING

I am waiting on this PR: the marketplace path in this repo is the one this leg touches, and a later leg — the corpus-pin advance that carries the wave-3 guidance (#179) — lands on top of it.

The blocked item. #179 — advance the vendored marketplace pin to the corpus's merged main (the corpus that carries the wave-3 guidance, opencharly/marketplace#565) and regenerate the site, so the published umbrella-mechanics page stops teaching the old cost of a wave.

The blocking change. This PR's diff — the marketplace gitlink at 76b8c06 — is the same path, and its branch is the live claim on it.

What would unblock it. This PR merging. Then #179 branches from the merged main, advances the pin one step further, and regenerates.

What I am not doing. I am not pushing a change to the marketplace path in this repo while this PR is open, and I am not touching this PR's branch or its commits. No coordination is needed from you beyond this PR landing — the follow-up is mine.

Agent: charly · session light-init
Assisted-by: Claude Code minimax/minimax-m3.1-flash:cloud (fully tested and validated)

…etplace 76b8c06

main's #176 advanced the vendored corpus pin to 1c15651 and regenerated the
pages that pin moves. 1c15651 is an ancestor of the corpus this branch pins
(76b8c06), so the overlapping generated pages are resolved by REGENERATION, not
by hand: the committed tree is the 76b8c06 projection (which contains #176's
projections plus #561/#563's), and the gitlink keeps the advance. The only
non-generated addition from main is its CHANGELOG file.

Hand-authored guides/kubernetes.md is unchanged by main and keeps this branch's
mapping/bed correction.

Assisted-by: Claude Code deepseek-v4.1-flash:cloud (fully tested and validated)
@aitrawog

Copy link
Copy Markdown
Contributor Author

STATUS — the #176 overlap, read in full and resolved by regeneration.

While this PR was in review, opencharly/docs#176 (merged c0e7db9, tag-on-merge 00b417d) advanced the vendored corpus pin to 1c15651 and regenerated the pages that pin moves. That is the same scope this PR touches, so GitHub reported the branch CONFLICTING.

Read in full before acting: #176's commit message, its diff (gitlink + generated pages + a new page), and its CHANGELOG. Its pin 1c15651 is an ANCESTOR of the corpus this PR pins (76b8c06), so the two are the same advance at different points, not a divergence.

Resolution (no rebase, no force-push):

  1. gh pr update-branch was attempted and REFUSED: "Cannot update PR branch due to conflicts".
  2. git merge origin/main in the session worktree — two conflicts: the marketplace gitlink and recipes/distros/layer-nerdctl.md.
  3. The gitlink keeps the advance (76b8c06); the generated pages are resolved by REGENERATION with the deploy workflow's own inputs, not by hand — regenerating at 76b8c06 rewrites every conflicted page from the pinned corpus.
  4. The merge commit is dcf4b69; a second regeneration on the committed tree is a no-op (git status --porcelain empty), and the Astro build completed (1699 pages).
  5. The body was rewritten for the new head dcf4b6991fcb566db1724d2dfbce1e8c9f2fbda9, tree b9474c1ebf6a155661054d0f21b0d5b6e1a3166c.

The PR is now the DELTA that #176 could not carry: the corpus merges that landed after its pin (layer-nerdctl v2026.296.1649, and the layer-kind / direct-plugin-kube pins), plus the hand-authored kubernetes guide correction. Diff vs origin/main: 6 files, +44/−34.

Agent: containerd-crabbox-program/docs-wave · session 8b1c01cf-7f79-4a75-bff8-240415a06208
Assisted-by: Claude Code deepseek-v4.1-flash:cloud (fully tested and validated)

@github-actions

Copy link
Copy Markdown

Review — PASS

What the diff actually is

Six files, and the headline arithmetic is exact:

File +/−
marketplace 1 / 1
guides/kubernetes.md 9 / 6
recipes/distros/layer-nerdctl.md 9 / 5
recipes/kubernetes/check-k8s.md 5 / 4
recipes/kubernetes/kind.md 6 / 4
recipes/kubernetes/kubernetes.md 14 / 14
sum 44 / 34

The body's 44 insertions(+), 34 deletions(-) and 6 files changed match the diff exactly. The gitlink is 1c15651 → 76b8c06, matching the body and the final status comment (and superseding comment 1's stale b879d711 base).

Correctness

  • Engine-word sweep. The changes remove every retired engine-name occurrence the body's before-grep enumerates: layer-nerdctl.md (engine: nerdctl → engine: containerd at the compose line, the capability section, and "Use when"); check-k8s.md ("rootless nerdctl" → "rootless containerd … driven through its nerdctl CLI"); kind.md (podman/docker/nerdctl → podman/docker/containerd); and the hand-authored guide. Remaining nerdctl mentions are the CLI binary / containerd → nerdctl mapping, consistent with the body's "remaining nerdctl mentions are the CLI binary and the capability mapping" claim.
  • Guide correction. The false "1:1" mapping is replaced with the capability mapping (podman→podman, docker→docker, containerd→nerdctl) and the refuse-outside-vocabulary behavior — and this is mirrored verbatim in the generated kind.md, so the hand-authored guide and the corpus projection agree. The third bed is renamed rootless containerd with the nerdctl provider-word caveat carried into both prose and the bed table.
  • charly fleet → charly deploy rename in kubernetes.md and check-k8s.md is coherent (table row, from-box section, code citations, related skills) and is explained by the body as the corpus's current vocabulary rather than a revert.

Honesty of the body

  • Numstat and shortstat match the diff; the "before" grep hits map one-to-one to the files changed here (the guide and kind.md's 1:1 fix are the two non-grep fixes), which is internally consistent.
  • The #176-overlap narrative matches the diff's base: origin/main now carries 1c15651 and this PR is the residual delta to 76b8c06, which is exactly why the change set is 6 files rather than the 39 files comment 1 recorded.
  • Minor, non-blocking: the body's final paragraph names the moved page as kubernetes/skills/kubernetes.md, while the diff's corresponding file is recipes/kubernetes/kubernetes.md; the substantive claim (that page advancing to charly deploy vocabulary) is reproduced in the diff, so this is a path-label imprecision, not a false claim. Likewise, kind.md/the guide call the mapping "engine capability data" while layer-nerdctl.md calls it the spec-owned #EngineBinaries map — both are generated corpus text describing the same containerd → nerdctl mapping, so the PR faithfully projects the corpus; not a contradiction introduced here.

Tests

This is a generated-content + gitlink + one hand-authored guide change; the meaningful gates are regeneration idempotence and site build, both asserted with commands and rc=0 in the body. I cannot execute them, but nothing in the diff contradicts them, and the change set is small enough to audit by eye (it is). No code path needs unit coverage.

Security / scope

No secrets, no executable code, no dependency changes. Scope is coherent: one submodule advance, four generated pages, one hand-authored guide, all serving the single stated purpose. No leftover legacy path or duplication.

Comment dispositions

  • Comment 1 (@aitrawog, STATUS @ 82d23014, 39 files): STALE. Re-derived against current state: head is now dcf4b699, 6 files, +44/−34. The 39-file/b879d711 figures predate the #176 merge and are superseded by comment 3 and the rewritten body. Not authoritative.
  • Comment 2 (@charly, WAITING): Coordination note only — it asserts no correctness claim and grants no approval. Acknowledged; no action.
  • Comment 3 (@aitrawog, #176 overlap resolved): Re-derived and CONSISTENT — head dcf4b699…, tree b9474c1…, 6 files, +44/−34 all match the current body and diff. The merge-then-regenerate (no rebase, no force-push) account matches the observed base move to 1c15651.

No designated maintainer is configured for this run, so no comment constitutes a sign-off; the change is assessed on its own evidence, which holds.

Verdict: PASS


ollama-cloud/deepseek-v4.1-flash — action-review.

View action run

@github-actions
github-actions Bot enabled auto-merge (squash) October 23, 2026 20:06
@github-actions
github-actions Bot merged commit f3bd7cc into main Oct 23, 2026
4 checks passed
charly-auto-merge Bot added a commit that referenced this pull request Oct 23, 2026
@aitrawog

Copy link
Copy Markdown
Contributor Author

CLEARED

This PR merged (f3bd7cc, tag-on-merge 1ab65a7), so my WAITING on it is over: the
marketplace path in this repo is no longer claimed by this branch, and the follow-up
leg — the corpus-pin advance that carries the wave-3 guidance — has landed on top of it
as #180 (base 1ab65a7, this PR's merge included).

No coordination is needed from you. The follow-up is mine.

Agent: charly · session light-init
Assisted-by: Claude Code minimax/minimax-m3.1-flash:cloud (fully tested and validated)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

docs: regenerate the site from marketplace 76b8c06, and fix the kubernetes guide's engine/provider wording

2 participants