Skip to content

docs: chart ownership and the runner pool become state of record (#2923, #2926) - #3025

Merged
rbuergi merged 2 commits into
mainfrom
docs/2923-2926-chart-and-runners
Sep 2, 2026
Merged

rbuergi merged 2 commits into
mainfrom
docs/2923-2926-chart-and-runners

Conversation

@rbuergi

@rbuergi rbuergi commented Sep 1, 2026

Copy link
Copy Markdown
Contributor

Closes #2923, closes #2926 — converting both to a committed state-of-record page, per the maintainer's disposition for the programs bucket.

(Note the keyword repetition: Closes #A, #B only parses the first, which is how #2193/#2550/#2802 stayed open after #3015 and had to be closed by hand.)

Measured, not restated

🚨 The cheap interim is unsafe, and the page says so rather than recommending it

#2923 offers path-filtering the PR-triggered chart jobs as an optional interim. Not while Chart Gate is a required context. A SKIPPED or absent required context counts as SATISFIED here, so a filter makes "the chart gate did not need to run" and "the chart gate did not run" the same green tick.

And the reasoning that makes a filter look safe — "a chart that didn't change cannot newly break" — does not hold: the gate asserts a cross-file property, so a change to a template can break an unchanged values file, which is exactly the class the filter would stop watching.

The runner pool, with the trade stated

Recorded so it can be picked up rather than re-derived — ARC on a dedicated node pool, a PV carrying a bare git mirror per repo (delta fetch → git worktree add → worktree deleted at job end), a warm layer store via a pre-pull DaemonSet, runner labels for per-repo opt-in — along with the constraints (private cluster, config in the private deployments repo, changes routed through the operator).

And the honest half: it converts a variable per-job cost into a fixed standing one — a node pool that exists whether or not CI runs, a controller to keep alive, and the failure mode of a stateful mirror (a diverged mirror fails every job at once, where a fresh checkout fails none). Worth doing when CI volume makes the per-job seconds dominate; until then the caching already in place is most of the benefit for none of the standing cost.

Verification

Full project, not a filter: MeshWeaver.Documentation.Test 171 passed, 0 failed, including DocumentationLinkIntegrityTest. dotnet build -c Release -warnaserror: 0 Warning(s), 0 Error(s).

🤖 Generated with Claude Code

https://claude.ai/code/session_01SD7aiLSo59xng2TzU32xEa

…, #2926)

Two questions raised during the 2026-08-31 CI overhaul, both larger than they
look, neither belonging in an issue thread.

Measured, not restated from the issues:

  * Chart Gate triggers on pull_request with NO paths: filter, so every core PR
    renders every values combination — including PRs that cannot touch the
    chart. Chart Drift is schedule-only and costs nothing per PR.
  * The relocation checklist is seven consumers, each of which breaks silently
    if left behind — including homebrew.yml, which PATH-FILTERS on
    deploy/helm/** so a chart change is what triggers a tap rebuild, and the
    hosting operator, which carries its own baked copy at a pinned path.
  * A drift already exists independent of any move: the self-updater and its
    RBAC target memex-migration-deployment, a workload the chart does not
    render — helm template emits a Job. That is the #1788 shape.

🚨 The cheap interim is UNSAFE and the page says so. Path-filtering the chart
jobs while Chart Gate is a required context makes "did not need to run" and
"did not run" the same green tick, because a SKIPPED or absent required context
counts as SATISFIED here. And the gate asserts a CROSS-FILE property — a
template change can break an unchanged values file — so the reasoning that
makes a filter look safe does not hold either.

The runner pool is recorded with an honest trade rather than as a plan: it
converts a variable per-job cost into a fixed standing one, and until CI volume
makes the per-job seconds dominate, the caching already in place is most of the
benefit for none of the standing cost.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01SD7aiLSo59xng2TzU32xEa
Copilot AI lite review requested due to automatic review settings September 1, 2026 23:48

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟢 Approval recommended

Documentation-only change with consistent front matter and valid internal doc links, and no functional code impact.

Pull request overview

Adds a new architecture “state-of-record” documentation page capturing the measured rationale for why the Helm chart gate currently lives in core (and what must move together if relocated), and records the proposed self-hosted runner pool shape and tradeoffs; then links it from the Architecture catalog so it’s discoverable.

Changes:

  • Added a new architecture doc page: Chart Ownership and the Runner Pool.
  • Extended the Architecture index to include the new page under Deployment & ops.
File summaries
File Description
src/MeshWeaver.Documentation/Data/Architecture/ChartOwnershipAndRunnerPool.md New architecture page documenting measured chart-gate ownership rationale, relocation checklist, and runner-pool proposal/tradeoffs.
src/MeshWeaver.Documentation/Data/Architecture.md Adds the new page to the Architecture catalog under Deployment & ops for discoverability.
Review details
  • Files reviewed: 2/2 changed files
  • Comments generated: 0
  • Review effort level: Lite

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

@github-actions

github-actions Bot commented Sep 1, 2026 •

Copy link
Copy Markdown
Contributor

Test Results (shard 2)

534 tests   532 ✅  1m 31s ⏱️
  4 suites    2 💤
  4 files      0 ❌

Results for commit 40055d5.

♻️ This comment has been updated with latest results.

@github-actions

github-actions Bot commented Sep 1, 2026 •

Copy link
Copy Markdown
Contributor

Test Results (shard 5)

    3 files      3 suites   1m 6s ⏱️
1 220 tests 1 028 ✅ 192 💤 0 ❌
1 221 runs  1 029 ✅ 192 💤 0 ❌

Results for commit 40055d5.

♻️ This comment has been updated with latest results.

@github-actions

github-actions Bot commented Sep 1, 2026 •

Copy link
Copy Markdown
Contributor

Test Results (shard 0)

222 tests   222 ✅  2m 57s ⏱️
  1 suites    0 💤
  1 files      0 ❌

Results for commit 40055d5.

♻️ This comment has been updated with latest results.

@github-actions

github-actions Bot commented Sep 1, 2026 •

Copy link
Copy Markdown
Contributor

Test Results (shard 3)

586 tests   586 ✅  55s ⏱️
  2 suites    0 💤
  2 files      0 ❌

Results for commit 40055d5.

♻️ This comment has been updated with latest results.

@github-actions

github-actions Bot commented Sep 1, 2026 •

Copy link
Copy Markdown
Contributor

Test Results (shard 1)

420 tests   420 ✅  1m 25s ⏱️
  1 suites    0 💤
  1 files      0 ❌

Results for commit 40055d5.

♻️ This comment has been updated with latest results.

@github-actions

github-actions Bot commented Sep 1, 2026 •

Copy link
Copy Markdown
Contributor

Test Results (shard 4)

1 735 tests   1 735 ✅  1m 51s ⏱️
    3 suites      0 💤
    3 files        0 ❌

Results for commit 40055d5.

♻️ This comment has been updated with latest results.

@github-actions

github-actions Bot commented Sep 1, 2026 •

Copy link
Copy Markdown
Contributor

Test Results

   14 files     14 suites   9m 48s ⏱️
4 717 tests 4 523 ✅ 194 💤 0 ❌
4 718 runs  4 524 ✅ 194 💤 0 ❌

Results for commit 40055d5.

♻️ This comment has been updated with latest results.

…and-runners

# Conflicts:
#	src/MeshWeaver.Documentation/Data/Architecture.md
@rbuergi
rbuergi merged commit 6e9ec2f into main Sep 2, 2026
25 of 26 checks passed
@rbuergi
rbuergi deleted the docs/2923-2926-chart-and-runners branch October 10, 2026 13:09
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

2 participants