install.sh can reseed ~/.config/mosaic from any checkout's branch, regressing next-only fixes (stale credential helper deployed 2026-08-21) #1368
Open
opened 2026-08-22 03:31:46 +00:00 by code-infra-01
·
1 comment
No Branch/Tag Specified
next
archive/ms24-fork
fix/ci-queue-wait-no-ci-merge-path
fix/credentials-gitea-seat-slots
feat/onboarding-scripts-framework
pr-1367
fix/1357-issue-view-comments
fix/1356-tea-login-fail-closed
fix/1362-harness-aware-delivery-confirm
fix/gitea-guessed-login-credential
docs/w4-document-contract
fix/d29-lease-revoke-noop
peggy/agent-send-unverified-label
fix/pr-merge-fork-ci-status
docs/ri-050-release-evidence
riv001-clean
docs/1216-trunk-parameterization
fix/1257-adopt-draft-transition
fix/1256-fleet-pane-path-node
fix/1017-enumeration-guard-population
fix/1182-fail-closed-launch
fix/1327-setuppath-idempotency
merge/main-into-next
ci/push-ci-comment-model
ci/pin-ci-base-image
fix/ci-queue-wait-no-status
fred/code-review-pinned-tool-rules
fred/guides-seat-identity-fleet-comms
fred/credential-fail-closed-seat-slots
fix/fleet-greenfield-blockers
feat/ri-050-qr-evaluator
docs/ri-050-forge-docs-fastfollow
fix/ri-050-registry-secrets
test/ri-050-publish-gate-negative
fix/ri-050-verify-pglite-path
docs/ri-050-qr-probe-inventory
feat/ri-050-web-stale-safety
docs/ri-050-mission-bootstrap
fix/ri-050-forge-fail-closed
feat/ri-050-publish-gate
fleet/continuation-record-2026-08-17
feat/ri-050-prd-authority
fix/ri-050-macp-fail-closed
fix/1280-identity-first-resolution
feat/w-f4-store
fix/1264-fleet-unattended-first-start
fix/1269-ci-chain-unblock
fix/1256-fleet-runtime-preflight
fix/1257-e7-draft-transition
fix/1240-fleet-transport-check
fix/1017-wire-start-agent-session
e2e-compose
fix/1241-launch-failure-visible
fix/1237-fleet-v2-dispatch
fix/1236-installer-dir-modes
fix/installer-path-and-node
feat/wf-fleet-mvp
fix/installer-provisions-node
fix/lease-test-env-isolation
release/0.0.50-integration
feat/wf5-main-merge
feat/wf5-securestorage
feat/1216-trunk-resolver
docs/1214-branch-process
docs/ia-merge-current
fix/869-lease-probe-timeout
main
feat/workspace-hygiene-tool-enforcement
feat/1080-pr-edit
fix/1179-required-security-di
feat/p3-slice0-task5-chat-runtime-router-shaggy
feat/p3-slice0-task5-chat-runtime-router
feat/wf1-composition
feat/p3-slice0-task4-web-catalog-selection
feat/lease-promotion-and-harness-isolation
ci/provision-pi-runtime
feat/p3-slice0-task3-catalog-selection
feat/p3-slice0-task2-harness-registry
adopt/965-mos-ste-writing-standard
fix/991-comment-url-scheme-normalise
feat/wf2-bundle-migration
feat/wf4-plugin-acquisition
feat/wf5-refresh-safety
fix/1145-coord-di-compiled-boot
feat/p3-slice0-task1-harness-contracts
docs/webui-phase-p-structure
feat/1150-pi-goal-extension
feat/webui-p3-chat
fix/1146-ci-queue-purpose
fix/1138-conditional-federation
feat/webui-p2-data-auth
fix/gateway-runner-image
feat/webui-p1-vite-skeleton
fix/break-c-hooks-and-web-image
docs/webui-fleet-claude-bridge-plan
fix/wizard-gateway-failure
fix/next-node-gate
fix/mosaic-init-rce
greenfield/fomo-lin
fix/1099-pipefail-wake
fix/1099-pipefail-tests
fix/1099-pipefail-sweep
fix/framework-shell-portability
fix/1043-pane-git-identity
fix/1081-issue-close-silent-comment-failure
fix/1090-enrollment-wallclock-tolerance
feat/1082-tea-stale-token-diagnostic
fix/detect-platform-silent-128-outside-repo
feat/1050-install-state-machine-red-fixture
fix/pr-merge-message-field
feat/1051-mosaic-brain-installer
feat/1045-mosaic-cred
remediation/state
fix/1056-upgrade-rollback-control-race
fix/1019-ci-queue-timeout-harness
feat/rm-02-gate-registry
fix/rm-01-reproducible-checkout
remediation/mission-setup
fix/hygiene-inert-format-gate
fix/1019-queue-guard-stdin
feat/mos-ste-writing-standard
fix/1017-enumeration-guard
fix/1007-suite-hermeticity
feat/push-guard-null-case-verification
feat/wake-preimage-provenance
mos-comms-live
docs/heartbeat-framework-layering-ms-lead
feat/869-c4-version-coupling
feat/869-c2-install-ordering-guard
feat/869-c5-doctor-activation-check
feat/per-agent-gitea-identity
fix/875-belongs-case-insensitive-slug
fix/ci-queue-wait-404-branch-absent
feat/869-c1-activation-probe
feat/869-c3-broker-supervisor
fix/865-tea-cli-comment-invocation
feat/glpi-skills
fix/860-deflake-mutator-lease-gate
fix/850-detect-platform-port-normalization
fix/856-worktree-deps-preflight
fix/835-pr-review-approve-reject-comment-flag
fix/848-truthful-evidence
fix/812-pr-review-comment
fix/849-recovery-runtime-fixture-race
docs/758-ledger-m5-001-sync
feat/834-tc-server-side-doc
feat/833-constrained-recovery-command
feat/827-gate0-probe
governance/gate0-probe3-amendment
fix/795-codex-pr-diff
fix/795-ci-base-jq
fix/795-ci-base-git
feat/791-pr3-fleet-regen
feat/791-pr2-snapshot-restore
fix/807-glpi-206
fix/808-agent-send-false-sender
feat/791-upgrade-config-protection
feat/790-mosaic-yolo-claudex-pr2
feat/790-mosaic-yolo-claudex
feat/758-v1-v2-migrator
fix/766-exact-fleet-comms
test/758-reconciler-lifecycle-gates
docs/771-kbn101-db-role-split
test/758-example-profile-dispositions
feat/758-shared-role-resolution
feat/mos-logical-identity-fencing
feat/769-kbn100-unified-schema
docs/753-kbn010-threat-gate
feat/758-roster-v2-compiler
feat/756-official-discord-plugin
docs/758-fleet-config-management
fix/mos-option2-qualification-format
docs/issue-758-m0
docs/mos-option2-qualification
mos-comms
feat/tess-interaction-agent
fix/tess-docs-format
draft/mosaic-platform-prd
fix/installer-provider-gate-and-local-gateway-redis
release/mosaic-cli-0.0.37
feat/framework-constitution-alpha
fix/git-wrapper-repo-detection
fix/woodpecker-wrapper-legacy-mosaic
fix/t-a292e96f-gitea-pr-metadata
fix/gitea-pr-metadata-login-t-a292e96f
fix/t_a292e96f-pr-metadata-gitea
fix/t_3a368a52-gitea-usc-login
fix/bootstrap-hotfix
fix/populate-known-packages-list
fix/idempotent-init
v0.0.39-alpha
mosaic-v0.0.31
fed-v0.2.0-m2
fed-v0.1.0-m1
mosaic-v0.0.29
mosaic-v0.0.28
mosaic-v0.0.27
mosaic-v0.0.26
mosaic-v0.0.25
mosaic-v0.0.24
v0.2.0
v0.1.0
v0.0.8
v0.0.7
v0.0.6
v0.0.5
v0.0.4
archive/ms24-fork-20260823
No labels
Milestone
No items
No Milestone
Projects
Clear projects
No projects
Assignees
code-be-01 (Mosaic fleet seat code-be-01)
code-infra-01 (Mosaic fleet seat code-infra-01)
fargo
fred
gate-merge-01 (Mosaic fleet seat gate-merge-01)
happy
jason.woltje (Jason Woltje)
merge-gate
ops-01 (Mosaic fleet seat ops-01)
ops-02 (Mosaic fleet seat ops-02)
ops-03 (Mosaic fleet seat ops-03)
ops-ci-01 (Mosaic fleet seat ops-ci-01)
ops-deploy-01 (Mosaic fleet seat ops-deploy-01)
pepper
rev-code-01
rev-code-02
rev-security-01
rev-security-02
rev-security-03 (Mosaic fleet seat rev-security-03)
sanity
scooby (Scooby)
scrappy
shaggy
tiny
velma
veronica (Mosaic fleet seat veronica)
vision
woodpecker
Clear assignees
No Assignees
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: mosaicstack/stack#1368
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Defect
~/.config/mosaic(the deployed, upgrade-managed framework tree) was overwritten at 2026-08-21 19:28 on sb-it-1-dt with content from a main-lineage source, regressing next-only fixes. Measured victim:tools/git/git-credential-mosaicregressed from the seat-slot-aware build (landed onnextin3d2b7123, 2026-08-18) to the pre-fix build (d1f71c2f..., service-store only). Every seat's push to the brain repo then failed auth because both shared-store tokens are revoked and seat slots are the only live path, which the regressed helper cannot read. Also regressed:pr-merge.sh(lost #1280's identity-first resolution and #1334's fork-PR base-repo fix),issue-comment.sh,detect-platform.sh.Measurements (sb-it-1-dt, 2026-08-21/22)
~/.config/mosaic/tools/git/hashes match origin/main tip (7102ccb9) exactly across four independent files:git-credential-mosaicd1f71c2f = main tip (last changed on main by #873, 07-23); = npmlatest0.0.49; ≠next(4907b85a since3d2b7123).pr-merge.sh023580d4 = main tip; ≠ 0.0.49 tarball (3fe21875); ≠ next (ad3e816f at836ec3cb).issue-comment.sh6d4de792 anddetect-platform.sh98d69e36 = main tip, all four mtimes 19:28:24.0.0.50-next.2612(package dir mtime 19:26:53; cacache fetch of the 2612 tarballs at 19:26:51), whoseframework/tree carries the FIXED helper (4907b85a).cmpdeployed vs package: differ), so a package reseed would have written 4907b85a;install.sh(MOSAIC_SYNC_ONLY=1, fresh target) writes 4907b85a;runFrameworkReseedresolvesresolveBundledFrameworkRoot()= the package's framework dir.~/.config/mosaic/.install-manifest.jsonwas rewritten at 19:28:59 withcliVersion 0.0.50-next.2612, but no code in the 2612 package writes that file (only uninstall reads it); the writer had to be other code reading the global CLI version.checkFrameworkDriftcompares integerframeworkVersion(3 on both branches), so a main-over-next regression is invisible;.framework-versionstayed 3.Root cause (mechanism)
Nothing ties a
~/.config/mosaicsync to the installed package. Any checkout'spackages/mosaic/framework/install.shwill "upgrade" the deployed tree with whatever branch it has checked out. The seat-slot helper fix landed onnextand was never merged tomain, so any main-lineage checkout run regresses it. The stable npm channel (latest= 0.0.49) is also main-based and ships the pre-fix helper, so registry-resolved installs have the same exposure.Fix directions (for triage)
--from-checkoutoverride that prints a loud warning).installed < bundledcan detect regressions, not just old-vs-new integers that alias across branches.3d2b7123) tomainso the stable channel stops shipping the regressed helper.Host-side remediation is tracked separately by fred (per-repo credential.helper override); this issue is the upstream mechanism.
FLEET-WIDE EXPOSURE, not a local incident (fred ruling 2026-08-22):
npm view @mosaicstack/mosaic dist.tarballresolves to 0.0.49 today, which is main-based and ships the pre-fix helper (md5 d1f71c2f, service-store only, no fleet/agents resolution). Any host that installs or reinstalls from the stable channel gets this outage with no guard able to see it: the integer frameworkVersion is 3 on both branches, so checkFrameworkDrift is structurally blind to a main-over-next regression, and the 0.0.49 manifest/pr-merge bytes differ from what the 19:28 writer deployed, meaning BOTH the stable channel and any main-lineage checkout run are independently sufficient to regress a host. This host is the first detection, not a special case. Triage implication: fix direction 3 (merge3d2b7123to main) closes the stable-channel exposure immediately and independently of the source-verification work, and is arguably the highest-leverage of the three directions.