Skip to content

feat(local): autoroll --acr — memex.localhost tracks every promoted build (modules + plugin content included) - #1682

Merged
rbuergi merged 2 commits into
mainfrom
feat/local-autoroll-acr
Aug 16, 2026
Merged

feat(local): autoroll --acr — memex.localhost tracks every promoted build (modules + plugin content included)#1682
rbuergi merged 2 commits into
mainfrom
feat/local-autoroll-acr

Conversation

@rbuergi

@rbuergi rbuergi commented Aug 16, 2026

Copy link
Copy Markdown
Contributor

Why

memex.localhost had NO working pull path and sat 3 days stale:

  • the in-pod SelfUpdateHostedService needs ManagedIdentity/IMDS (169.254.169.254) — absent under Colima, every check fails at AcrTagLister;
  • the autoroll launchd tick only watched the local docker store, i.e. it reacted to hand-built images and nothing else.

Multi-arch (arm64) images just started shipping (#1675/#1676), so the registry is finally consumable on the local arm64 VM — this closes the loop.

What

memex-local autoroll up --acr arms the existing tick with a registry-tracking mode (plain up returns to build-only for the dev loop). Throttled to one poll per 15 min, the tick:

  1. Images: compares the manifest digest of memex-portal-ai:main (the tag CD's all-or-nothing promote advances); on change pulls portal + migration (arm64), refuses a wrong-arch image (amd64 runs emulated and NREs at startup — the crash that originally forced local source builds), and stages onto the *-local moving tags so the existing migrate-first-then-roll phases apply them unchanged.
  2. Modules + plugin content: platform modules and module bundles ride the image itself (modules/ layout — covered by 1). The plugin content the local registry serves is the hostPath-mounted Plugins checkout — the tick fast-forwards it to origin/main (ONLY when parked on main with a clean tree; a dirty/branched checkout is somebody's workspace and is never touched) and restarts the portal when its SHA moves, so the registry re-reads it. Restart-as-fan-out — the same contract as prod (feat(modules): bundle build + Store funnel + auto-update — #1664 Slices B+C #1673's boot reconcile).

State files advance only after a successful stage/restart — failed polls retry instead of getting lost. A (re-)arm clears the staged-digest state so the first tick converges to whatever main currently points at.

Also carries the MeshWeaver.Hosting.AspNetCore README: the release-tag pack requires one per src project and CI never runs dotnet pack, so a missing README only detonates on the tag (the rc1 lesson) — pre-flight for rc3.

Verified

What's New entry included (local-install feature).

🤖 Generated with Claude Code

… build, modules and plugin content included

The local install had no working pull path: the in-pod self-updater needs
ManagedIdentity/IMDS (absent under Colima — every check fails at
AcrTagLister), and the autoroll tick only watched the local docker store, so
memex.localhost sat on whatever was last built by hand. Now that CD publishes
multi-arch (arm64) images, the registry is finally consumable locally.

"autoroll up --acr" records source=acr; the tick then, throttled to one
registry poll per 15 min:
- compares the manifest digest of memex-portal-ai:main (the tag CD's
  all-or-nothing promote advances), pulls portal + migration arm64 on change,
  REFUSES a wrong-arch image (amd64 runs emulated and NREs at startup — the
  crash that forced source builds before multi-arch), and stages onto the
  *-local moving tags so the existing migrate-first-then-roll phases apply
  them unchanged;
- fast-forwards the hostPath-mounted Plugins checkout to origin/main — only
  when parked on main with a clean tree; a dirty or branched checkout is
  somebody's workspace and is never touched — and restarts the portal when
  its SHA moves, so the local registry re-reads it (restart-as-fan-out, the
  prod contract). Platform modules and module bundles ride the image itself.

Plain "up" returns to build-only for the dev loop. State advances only after
a successful stage/restart, so failed polls retry instead of getting lost.

Also: README for MeshWeaver.Hosting.AspNetCore — the tag-time pack requires
one per src project (PackageReadmeFile), and CI never runs pack, so a missing
README only detonates on the release tag (the rc1 lesson).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Copilot AI lite review requested due to automatic review settings August 16, 2026 15:57

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.

Pull request overview

Adds an ACR-tracking mode to the memex-local autoroll workflow so a Colima/k3s local install can automatically follow promoted main builds (images/modules) and keep the hostPath-mounted Plugins checkout fast-forwarded to origin/main when safe, closing the “local portal stays stale” gap when in-pod Managed Identity isn’t available.

Changes:

  • Extend memex-local autoroll up with --acr to poll ACR’s promoted main tag (throttled) and stage arm64 images onto the existing *-local moving tags for the existing migrate-first rollout flow.
  • In --acr mode, fast-forward the mounted Plugins checkout to origin/main only when clean and on main, and restart the portal to re-read plugin content when its SHA changes.
  • Add a MeshWeaver.Hosting.AspNetCore README and a What’s New entry documenting the feature.

Reviewed changes

Copilot reviewed 2 out of 3 changed files in this pull request and generated 1 comment.

File Description
src/MeshWeaver.Hosting.AspNetCore/README.md Adds package-level documentation for the module endpoint contribution hook and collision behavior.
src/MeshWeaver.Documentation/Data/WhatsNew/2026-08-16-local-autoroll-acr.md Documents the new local autoroll ACR mode in What’s New format.
deploy/homebrew/bin/memex-local Implements autoroll up --acr (registry polling + plugin repo fast-forward + restart orchestration).

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

Comment thread src/MeshWeaver.Documentation/Data/WhatsNew/2026-08-16-local-autoroll-acr.md Outdated
@github-actions

github-actions Bot commented Aug 16, 2026

Copy link
Copy Markdown

Test Results (shard 0)

919 tests  ±0   918 ✅ ±0   10m 31s ⏱️ -13s
 10 suites ±0     1 💤 ±0 
 10 files   ±0     0 ❌ ±0 

Results for commit 77e8ea8. ± Comparison against base commit 3690cba.

♻️ This comment has been updated with latest results.

@github-actions

github-actions Bot commented Aug 16, 2026

Copy link
Copy Markdown

Test Results (shard 5)

1 371 tests  ±0   1 370 ✅ ±0   5m 40s ⏱️ -29s
   11 suites ±0       1 💤 ±0 
   11 files   ±0       0 ❌ ±0 

Results for commit 77e8ea8. ± Comparison against base commit 3690cba.

♻️ This comment has been updated with latest results.

@github-actions

github-actions Bot commented Aug 16, 2026

Copy link
Copy Markdown

Test Results (shard 3)

   11 files  ±0     11 suites  ±0   5m 59s ⏱️ -2s
2 197 tests ±0  2 006 ✅ ±0  191 💤 ±0  0 ❌ ±0 
2 564 runs  +1  2 373 ✅ +1  191 💤 ±0  0 ❌ ±0 

Results for commit 77e8ea8. ± Comparison against base commit 3690cba.

♻️ This comment has been updated with latest results.

@github-actions

github-actions Bot commented Aug 16, 2026

Copy link
Copy Markdown

Test Results (shard 4)

1 604 tests  ±0   1 598 ✅ ±0   6m 10s ⏱️ - 1m 6s
   11 suites ±0       6 💤 ±0 
   11 files   ±0       0 ❌ ±0 

Results for commit 77e8ea8. ± Comparison against base commit 3690cba.

♻️ This comment has been updated with latest results.

@github-actions

github-actions Bot commented Aug 16, 2026

Copy link
Copy Markdown

Test Results (shard 2)

2 398 tests  ±0   2 394 ✅ ±0   6m 39s ⏱️ -8s
   11 suites ±0       4 💤 ±0 
   11 files   ±0       0 ❌ ±0 

Results for commit 77e8ea8. ± Comparison against base commit 3690cba.

♻️ This comment has been updated with latest results.

@github-actions

github-actions Bot commented Aug 16, 2026

Copy link
Copy Markdown

Test Results (shard 1)

2 201 tests  ±0   2 098 ✅ ±0   8m 30s ⏱️ +15s
   11 suites ±0     103 💤 ±0 
   11 files   ±0       0 ❌ ±0 

Results for commit 77e8ea8. ± Comparison against base commit 3690cba.

♻️ This comment has been updated with latest results.

@github-actions

github-actions Bot commented Aug 16, 2026

Copy link
Copy Markdown

Test Results

    65 files  ±0      65 suites  ±0   43m 32s ⏱️ - 1m 42s
10 690 tests ±0  10 384 ✅ ±0  306 💤 ±0  0 ❌ ±0 
11 057 runs  +1  10 751 ✅ +1  306 💤 ±0  0 ❌ ±0 

Results for commit 77e8ea8. ± Comparison against base commit 3690cba.

♻️ This comment has been updated with latest results.

…(review)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@rbuergi
rbuergi merged commit 1d8aaf1 into main Aug 16, 2026
22 checks passed
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.

2 participants