Closed
jason.woltje
wants to merge 2 commits from
fix/installer-provider-gate-and-local-gateway-redis into main
pull from: fix/installer-provider-gate-and-local-gateway-redis
merge into: mosaicstack:main
mosaicstack:main
mosaicstack:next
mosaicstack:feat/federation-m3-verb-list
mosaicstack:fix/fleet-restart-tightloop-guard
mosaicstack:feat/federation-m3-scope-service
mosaicstack:feat/installer-dev-build-from-source
mosaicstack:fix/federation-tasks-prettier
mosaicstack:chore/fed-m3-dag-fix
mosaicstack:feat/federation-m3-verb-capabilities
mosaicstack:feat/federation-m3-query-source
mosaicstack:chore/fed-m3-backlog-sync
mosaicstack:release/mosaic-0.0.48
mosaicstack:fix/persona-class-pane-export
mosaicstack:feat/h3-fleet-provision
mosaicstack:fix/db-republish-backlog
mosaicstack:docs/north-star-per-agent-model-switch
mosaicstack:release/mosaic-0.0.46
mosaicstack:feat/a3a-agent-class-env
mosaicstack:feat/a3b-persona-contract
mosaicstack:feat/orchestrator-persona
mosaicstack:feat/h4-persona-overrides
mosaicstack:feat/h2-system-profiles
mosaicstack:feat/h1-persona-library
mosaicstack:feat/h-northstar-personas
mosaicstack:feat/a4-mosaic-backlog
mosaicstack:feat/a1-north-star
mosaicstack:feat/a2-role-registry
mosaicstack:release/mosaic-cli-0.0.45
mosaicstack:fix/h2-readiness-available
mosaicstack:release/mosaic-cli-0.0.44
mosaicstack:fix/fleet-pane-idle-activity
mosaicstack:release/mosaic-cli-0.0.43
mosaicstack:feat/h1-heartbeat-readiness
mosaicstack:release/mosaic-cli-0.0.42
mosaicstack:fix/fleet-claude-trust-gate-644
mosaicstack:fix/db-pglite-test-flake
mosaicstack:fix/framework-drift-reseed-642
mosaicstack:release/mosaic-cli-0.0.41
mosaicstack:chore/ci-base-node-24-alpine
mosaicstack:chore/ci-cache-phase1-prebaked-image
mosaicstack:feat/633-comms-block-runbook
mosaicstack:chore/ci-base-image
mosaicstack:feat/f3-m3-update-reseed
mosaicstack:feat/p6-docs-compliance-alpha
mosaicstack:release/mosaic-0.0.39
mosaicstack:feat/p5-overlay-composer
mosaicstack:release/mosaic-0.0.38
mosaicstack:feat/f3-m2-pi-harness
mosaicstack:feat/f3-watch-workdir
mosaicstack:feat/f3-hb-consistency
mosaicstack:release/mosaic-0.0.37b
mosaicstack:feat/fleet-mutable-add-remove
mosaicstack:feat/f3-pi-harness-hb
mosaicstack:feat/p4-1-comment-cleanup
mosaicstack:feat/fleet-presets-init
mosaicstack:feat/p4-upgrade-safe-migration
mosaicstack:feat/fleet-suite-prd
mosaicstack:release/mosaic-cli-0.0.37
mosaicstack:feat/fleet-ps-show-unmanaged
mosaicstack:release/mosaic-cli-0.0.36
mosaicstack:feat/fleet-heartbeat-sidecar
mosaicstack:feat/fleet-phase3-enablement
mosaicstack:release/mosaic-cli-0.0.35
mosaicstack:feat/fleet-launch-path
mosaicstack:feat/fleet-observability
mosaicstack:feat/p3-1-governance-gate-hardening
mosaicstack:feat/p3-constitution-extraction
mosaicstack:feat/p1p2-sanitization-gate
mosaicstack:feat/framework-constitution-alpha
mosaicstack:feat/p0-license-leak-sanitize
mosaicstack:docs/framework-agency-patterns
mosaicstack:fix/fleet-install-script-perms
mosaicstack:fix/fleet-preserve-agent-env
mosaicstack:release/mosaic-cli-0.0.32
mosaicstack:fix/fleet-release-hardening
mosaicstack:feat/fleet-cli-local-canary
mosaicstack:plan/tmux-fleet-durable-install
mosaicstack:fix/pi-skill-args-all-discover
mosaicstack:feat/pi-mosaic-tools-skill
mosaicstack:feat/tools-cheatsheet-salience
mosaicstack:fix/tooling-eval-injection-jq-json
mosaicstack:feat/us007-agent-registration
mosaicstack:docs/merge-authority-rule
mosaicstack:feat/mosaic-as-provisioning
mosaicstack:fix/pr-ci-wait-stdin-collision
mosaicstack:fix/t_301e4e3b-pr-merge-gitea-empty-uid
mosaicstack:ci/publish-appservice-image
mosaicstack:feat/mosaic-as-daemon
mosaicstack:feat/mosaic-as-m4a
mosaicstack:fix/pi-token-lean-skills
mosaicstack:fix/git-wrapper-rollup-20260526
mosaicstack:fix/git-wrapper-repo-detection
mosaicstack:fix/woodpecker-wrapper-legacy-mosaic
mosaicstack:fix/t-a292e96f-gitea-pr-metadata
mosaicstack:fix/gitea-pr-metadata-login-t-a292e96f
mosaicstack:fix/t_a292e96f-pr-metadata-gitea
mosaicstack:fix/t_3a368a52-gitea-usc-login
mosaicstack:fix/bootstrap-hotfix
mosaicstack:fix/populate-known-packages-list
mosaicstack:fix/idempotent-init
No Reviewers
No Label
Milestone
No items
No Milestone
Projects
Clear projects
No project
Assignees
jason.woltje
Clear assignees
No Assignees
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: mosaicstack/stack#676
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.
Delete Branch "fix/installer-provider-gate-and-local-gateway-redis"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Closes #675
Fixes two greenfield-test (0.0.48, fresh Debian 13) installer defects.
Bug #1 — quick-start provider gate (
packages/mosaic)Quick Start let the user skip the LLM provider/API key and then falsely reported "Mosaic is ready".
provider-setup.ts: interactive path now REQUIRES a provider select (Anthropic/OpenAI) + a validated key (rejects empty, wrong-prefix, andsk-ant-for OpenAI).quick-start.ts: belt-and-suspenders guard; headless/scripted installs warn-and-continue (no false-green — finalize gates the "ready" message).finalize.ts: emits a Provider status line and will not print "Mosaic is ready" without a configured provider.errors.ts:WizardCancelledErroraccepts an optional diagnostic message.mosaic configuresubcommand.Bug #2 — local-tier gateway Redis gate (
apps/gateway)On the
localstorage tier the gateway opened ioredis/BullMQ connections at bootstrap (ECONNREFUSED → never healthy), ignoring{ queue: { type: 'local' } }.Every Redis consumer is now tier-aware and degrades gracefully on local tier; Standalone/Federated unaffected:
queue.service.ts(enabled flag gates all BullMQ ops),gc.module.ts+session-gc.service.ts,commands.module.ts+command-executor.service.ts,preferences/system-override.service.ts(in-memory fallback),log/cron.service.ts,admin/admin-health.controller.ts.SystemOverrideServiceioredis handle leak (addedOnApplicationShutdown).Verification
provider-setup.spec.ts6/6,unified-wizard.test.ts3/3, gateway service specs 38/38fleet.spec.tsfailures (missingframework/fleet/examples/fixture) confirmed present without this diffMerge note
Per the dev-install plan, this branch is intended to be dev-installed off HEAD on the test VM and verified healthy before merge + the 0.0.49 release cut.
🤖 Generated with Claude Code
REVIEW-OF-RECORD — REQUEST CHANGES (#676). BLOCKER: the Redis/local-tier gateway behavior is source-changing bootstrap logic across QueueService, GCModule/SessionGCService, CommandsModule/CommandExecutorService, SystemOverrideService, CronService, and AdminHealthController, but this PR does not add/update gateway tests for the local-tier no-Redis contract. Existing command/preferences specs still pass, but they do not prove the bug fix: a local config with queue.type=local should not instantiate BullMQ/ioredis/createQueue, should report cache healthy, should no-op queue workers/repeatable jobs, and should preserve SystemOverrideService set/get/clear via the in-memory fallback. Please add focused tests that would fail on main for at least QueueService local disabled behavior plus one or more direct Redis consumers (admin health, GC/commands module factory, SystemOverrideService local fallback).
Also recommended: add a small installer test for the no-provider false-green path (finalize does not call outro "Mosaic is ready" when providerType is none / no key), since that is the explicit quick-start bug being fixed.
Reviewer evidence: provider setup + unified wizard scoped tests pass (9/9); existing gateway command/preferences scoped tests pass (66/66); gateway typecheck/lint pass; mosaic lint pass. Mosaic package typecheck could not be used as reviewer evidence in this worktree because of pre-existing fleet-backlog/@mosaicstack/db export errors unrelated to this diff. No implementation defect found in the reviewed local-tier guards themselves; the blocker is missing regression coverage for the main gateway Redis bug.
Closing as superseded / deferred — disposition per orchestrator coordination after the 0.0.49 RC blocker pass:
next(sha56787fab). That part of #676 is done.main, which is FROZEN at86e106fcpending jetrich's greenfield HEAD blessing — it cannot merge here regardless.No code is lost: the redis gate shipped via #689; the provider/quick-start work is captured in the 0.0.50 epic backlog. Closing to keep the queue clean. Reopen/rebuild against
nextwhen the 0.0.50 provider work is scheduled.Pull request closed