feat(local): autoroll --acr — memex.localhost tracks every promoted build (modules + plugin content included) - #1682
Merged
Merged
Conversation
… 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>
Contributor
There was a problem hiding this comment.
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 upwith--acrto poll ACR’s promotedmaintag (throttled) and stage arm64 images onto the existing*-localmoving tags for the existing migrate-first rollout flow. - In
--acrmode, fast-forward the mounted Plugins checkout toorigin/mainonly when clean and onmain, and restart the portal to re-read plugin content when its SHA changes. - Add a
MeshWeaver.Hosting.AspNetCoreREADME 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.
…(review) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Why
memex.localhost had NO working pull path and sat 3 days stale:
SelfUpdateHostedServiceneeds ManagedIdentity/IMDS (169.254.169.254) — absent under Colima, every check fails atAcrTagLister;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 --acrarms the existing tick with a registry-tracking mode (plainupreturns to build-only for the dev loop). Throttled to one poll per 15 min, the tick: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*-localmoving tags so the existing migrate-first-then-roll phases apply them unchanged.modules/layout — covered by 1). The plugin content the local registry serves is the hostPath-mounted Plugins checkout — the tick fast-forwards it toorigin/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
maincurrently points at.Also carries the
MeshWeaver.Hosting.AspNetCoreREADME: the release-tag pack requires one per src project and CI never runsdotnet pack, so a missing README only detonates on the tag (the rc1 lesson) — pre-flight for rc3.Verified
bash -nclean;autoroll statusrenders the new mode/state lines; a_tickdry-run in build mode is a byte-for-byte no-op.--acron this machine must roll memex.localhost onto the first post-fix(modules): collision gate false-positives on published static assets — ci.3958 boot refusal #1680 promoted image (deliberately NOT armed before that promote —mainstill points at the boot-refusing ci.3958 set).What's New entry included (local-install feature).
🤖 Generated with Claude Code