chore(sync): merge main → next (B1) — resolve 8 conflicts, restore next current #1039
Closed
Ghost
wants to merge 0 commits from
sync/b1-main-into-next into next
pull from: sync/b1-main-into-next
merge into: :next
:next
:refactor
:fix/1257-adopt-draft-transition
:docs/prd-rev1-ratification
:r4-helper-port
:docs/containerization-plan
:feat/m4-4b-enrollment-command
:feat/m4-4a-enrollment-schema
:feat/m4-4-0-enrollment-design
:feat/m4-3a-p1-stop-mission-task-status-writes
:docs/m4-3a0-p0-map-currency
:docs/c2-amendment1-company-crud
:config/minimal-subset
:feat/m4-1b-ii-hierarchy-commands
:mosaic-cli-p1-wrappers
:mosaic-cli-p1-dispatch
:docs/ruling-4b-company-visibility
:feat/m4-1b-hierarchy-gateway
:feat/m4-1a-hierarchy-schema
:feat/p6-e2e-ci-gate
:feat/p5-spa-cutover
:fix/1451-appservice-dockerfile-scripts
:contract/onboarding-wizard
:contract/custody-schema
:contract/api-artifacts
:fix/appservice-dockerfile-scripts
:docs/t78-cli-capability-migration
:contract/rollup-projection
:contract/hierarchy-schema
:fix/invariant-r-version-probe-retry
:contract/mode-conversion
:contract/tool-gateway-mapping
:contract/rbac-grants
:contract/identity-lifecycle
:chore/s1-docs-hygiene
:docs/ri-050-release-evidence
:feat/webui-p4-2-settings-admin
:fix/bootstrap-race
:fix/teams-enumeration-scope
:fix/1407-next-image-parity
:docs/prd-north-star-rewrite
:rescue/ms-gate-001-gatekeeper
:fix/1394-recover-token-headless
:fix/1390-uninstall-headless
:fix/1403-n1n2-followup
:fix/1391-validationpipe-boot-check
:archive/salvage-20260825/wp5b-consumer-compat
:wp5b-consumer-compat-2
:archive/salvage-20260825/t63-fix-2648
:archive/salvage-20260825/t63-fix-1389
:archive/salvage-20260825/i1380ff-fix
:i1380-guard
:fix/send-message-exact-target-pin
:t51p2wp0b
: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
:riv001-clean
:docs/1216-trunk-parameterization
: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
:archive/salvage-20260825/zane/doctor-greenfield-hint
:archive/salvage-20260825/fix/ri-050-registry-secrets
:archive/salvage-20260825/docs/ri-050-release-evidence
:docs/ri-050-forge-docs-fastfollow
:fix/ri-050-registry-secrets
:test/ri-050-publish-gate-negative
:archive/salvage-20260825/fix/ri-050-verify-pglite-path
:fix/ri-050-verify-pglite-path
:docs/ri-050-qr-probe-inventory
:archive/salvage-20260825/zane/doctor-brain-home
:feat/ri-050-web-stale-safety
:archive/salvage-20260825/pr-1298
:archive/salvage-20260825/zane/mosaic-home-support
: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
: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
:archive/salvage-20260825/fix/ci-prisma-generate
:archive/salvage-20260825/feat/ms-gate-001-gatekeeper-local
:archive/salvage-20260825/feat/ms-gate-001-gatekeeper
:archive/salvage-20260825/feat/ms24-ci-webhook
:archive/salvage-20260825/fix/mission-control-proxy-routes
:archive/salvage-20260825/fix/deploy-missing-env-and-networks
:archive/salvage-20260825/fix/mission-control-query-provider
:archive/salvage-20260825/test/ms23-p2
:archive/salvage-20260825/feat/ms23-p2-audit
:archive/salvage-20260825/feat/ms23-p2-roster
:archive/salvage-20260825/feat/ms23-p1-proxy
:archive/salvage-20260825/feat/ms23-p1-registry
:archive/salvage-20260825/feat/ms23-p1-internal-provider
:archive/salvage-20260825/feat/ms23-p1-interface
:archive/salvage-20260825/chore/ms23-tasks-p0-complete
:archive/salvage-20260825/test/ms23-p0
:archive/salvage-20260825/chore/ms23-tasks-p005-006
:archive/salvage-20260825/feat/ms23-p0-tree
:archive/salvage-20260825/chore/ms23-tasks-p004-005
:archive/salvage-20260825/feat/ms23-p0-controls
:archive/salvage-20260825/chore/ms23-tasks-p0-002-004
:archive/salvage-20260825/feat/ms23-p0-stream
:archive/salvage-20260825/fix/ms23-prisma-rm-symlink
:archive/salvage-20260825/fix/ms23-prisma-kaniko-symlink
:archive/salvage-20260825/fix/ms23-prisma-script-path
:archive/salvage-20260825/fix/ms23-prisma-docker-vs-ci
:archive/salvage-20260825/fix/ms23-prisma-schema-local
:archive/salvage-20260825/fix/ms23-prisma-api-pkg
:archive/salvage-20260825/fix/ms23-prisma-cli
:archive/salvage-20260825/fix/ms23-orchestrator-prisma-generate
:archive/salvage-20260825/feat/ms23-p0-ingestion
:archive/salvage-20260825/feat/ms23-p0-schema
:archive/salvage-20260825/fix/agent-template-auth-module
:archive/salvage-20260825/feat/ms22-p2-discord-router
:archive/salvage-20260825/test/ms22-p2-agent-tests
:archive/salvage-20260825/chore/ms22-p2-docs-update
:archive/salvage-20260825/feat/ms22-p2-agent-routing
:archive/salvage-20260825/chore/ms22-p2-update-docs
:archive/salvage-20260825/feat/ms22-p2-user-agents
:archive/salvage-20260825/feat/ms22-p2-agent-crud
:archive/salvage-20260825/fix/security-audit-multer
:archive/salvage-20260825/ci/portainer-deploy
:archive/salvage-20260825/fix/ms21-missing-user-auth-migration
:archive/salvage-20260825/infra/fix-mosaic-db-init-extensions
:archive/salvage-20260825/infra/migrate-to-openbrain-db
:archive/salvage-20260825/fix/flaky-queue-test
:archive/salvage-20260825/fix/deploy-service-names
:archive/salvage-20260825/fix/deploy-service-update
:archive/salvage-20260825/fix/deploy-user-v2
:archive/salvage-20260825/fix/deploy-user
:archive/salvage-20260825/fix/orchestrator-widget-endpoints
:archive/salvage-20260825/fix/dashboard-widget-mock-data
:archive/salvage-20260825/fix/ci-glibc-image
:archive/salvage-20260825/fix/dockerfile-npmrc
:archive/salvage-20260825/fix/matrix-native-binary
:archive/salvage-20260825/fix/kaniko-cache
:archive/salvage-20260825/fix/base-image-kaniko-v2
:archive/salvage-20260825/fix/base-image-kaniko
:archive/salvage-20260825/feat/custom-base-image
:archive/salvage-20260825/ci/pnpm-cache
:archive/salvage-20260825/fix/interceptor-tests
:archive/salvage-20260825/fix/kanban-tests
:archive/salvage-20260825/feat/wire-chat
:archive/salvage-20260825/feat/usage-widget
:archive/salvage-20260825/feat/usage-widget-review
:archive/salvage-20260825/fix/security-hardening
:archive/salvage-20260825/fix/project-domain-attach
:archive/salvage-20260825/fix/project-domain-v2
:archive/salvage-20260825/feat/kanban-add-task
:archive/salvage-20260825/fix/logs-page-clean
:archive/salvage-20260825/fix/logs-page
:archive/salvage-20260825/fix/workspace-members
:archive/salvage-20260825/fix/ci-lint-632
:archive/salvage-20260825/fix/lint-from-632
:archive/salvage-20260825/fix/file-manager-tags
:archive/salvage-20260825/fix/csrf-debug-log
:archive/salvage-20260825/fix/controller-type-imports
:archive/salvage-20260825/fix/system-admin-env
:archive/salvage-20260825/fix/gateway-cors-trusted-origins
:archive/salvage-20260825/fix/fleet-provider-form-dto-v2
:archive/salvage-20260825/fix/ms22-audit
:archive/salvage-20260825/fix/orchestrator-widgets
:archive/salvage-20260825/fix/fleet-provider-form-dto
:archive/salvage-20260825/fix/orchestrator-widgets-preexisting
:archive/salvage-20260825/fix/csrf-bearer-bypass
:archive/salvage-20260825/fix/ms22-missing-authmodule-imports
:archive/salvage-20260825/fix/container-lifecycle-config-module
:archive/salvage-20260825/fix/swarm-compose-ms22-vars
:archive/salvage-20260825/chore/ms22-p1-complete
:archive/salvage-20260825/feat/ms22-p1k-idle-reaper
:archive/salvage-20260825/feat/ms22-p1j-docker
:archive/salvage-20260825/feat/ms22-p1e-onboarding-api-work
:archive/salvage-20260825/feat/ms22-p1c-config-api
:archive/salvage-20260825/chore/ms22-prd-tracking
:archive/salvage-20260825/feat/ms22-p1b-crypto
:archive/salvage-20260825/docs/ms22-architecture
:archive/salvage-20260825/feat/ms22-openclaw-docker
:archive/salvage-20260825/feat/ms22-openclaw-gateway-module
:archive/salvage-20260825/chore/ms21-complete
:archive/salvage-20260825/chore/ms21-final-tasks-done
:archive/salvage-20260825/fix/ms21-ui-001-qa
:archive/salvage-20260825/feat/ms22-openclaw-docker-backup-20260301
:archive/salvage-20260825/chore/ms22-phase0-complete
:archive/salvage-20260825/feat/ms21-ui-teams-rbac-v3
:archive/salvage-20260825/test/ms22-integration
:archive/salvage-20260825/feat/ms22-ingest-clean
:archive/salvage-20260825/feat/ms21-ui-users-members
:archive/salvage-20260825/feat/ms22-ingest
:archive/salvage-20260825/feat/ms22-task-agent
:archive/salvage-20260825/chore/ms22-tasks-tracking
:archive/salvage-20260825/feat/ms21-ui-teams-rbac
:archive/salvage-20260825/fix/openbao-otel-cve
:archive/salvage-20260825/ci/unified-pipeline
:archive/salvage-20260825/feat/ms22-conversation-archive
:archive/salvage-20260825/feat/ms22-agent-memory
:archive/salvage-20260825/feat/ms22-findings
:archive/salvage-20260825/feat/ms22-knowledge-schema
:archive/salvage-20260825/chore/tasks-final
:archive/salvage-20260825/chore/tasks-update
:archive/salvage-20260825/feat/ms21-session-invalidation
:archive/salvage-20260825/feat/ms21-rbac-settings
:archive/salvage-20260825/feat/ms21-rbac
:archive/salvage-20260825/feat/ms21-ui-user-dialogs
:archive/salvage-20260825/feat/ms21-ui-workspace-members
:archive/salvage-20260825/feat/ms21-ui-teams
:archive/salvage-20260825/chore/ms21-tasks-ui-progress
:archive/salvage-20260825/feat/ms21-ui-workspaces
:archive/salvage-20260825/feat/ms21-ui-users
:archive/salvage-20260825/chore/ms21-tasks-schema-fix
:archive/salvage-20260825/feat/ms21-import-api
:archive/salvage-20260825/test/ms21-migration-tests
:archive/salvage-20260825/feat/ms21-teams-page
:archive/salvage-20260825/feat/ms21-users-page
:archive/salvage-20260825/chore/ms21-task-update-p1-p3
:archive/salvage-20260825/feat/ms21-admin-module
:archive/salvage-20260825/fix/websocket-reconnect
:archive/salvage-20260825/merge/develop-to-main
No labels
Milestone
No items
No Milestone
Projects
Clear projects
No projects
Assignees
code-be-01 (Mosaic fleet seat code-be-01)
code-be-02 (Mosaic fleet seat code-be-02)
code-dogfood-01 (Mosaic fleet seat code-dogfood-01)
code-infra-01 (Mosaic fleet seat code-infra-01)
darkwing (Mosaic fleet seat darkwing)
dewey (Mosaic fleet seat dewey)
fargo
filbert (Mosaic fleet seat filbert)
fred
gate-merge-01 (Mosaic fleet seat gate-merge-01)
happy
jason.woltje (Jason Woltje)
marcie
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)
orch-01 (Mosaic fleet seat orch-01)
pepper
resume
rev-code-01
rev-code-02
rev-security-01
rev-security-02
rev-security-03 (Mosaic fleet seat rev-security-03)
rocko (Mosaic fleet seat rocko)
sanity
scooby (Scooby)
scrappy
shaggy
tiny
topher (Mosaic fleet seat topher)
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#1039
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.
Summary
Merge current
mainintonextwhile preserving all 10 commits unique to the integration lane and restoring current trunk behavior, including the RM-03 queue guard fix.Fetched ground truth before reconciliation:
nextwas 153 commits behindmain(one newer than the 152-count charter) and 10 commits ahead.Conflict resolutions
package.json— retained main's checkout preflight/generated cleanup/typecheck/test wiring and hook installer; retained next'stest:installer, with the next-lane installer suite appended to the main test chain.packages/mosaic/package.jsoncarries main's released0.0.49version.apps/gateway/src/commands/command-executor.service.ts— retained next's nullable Redis behavior for Local tier while retaining main's SHA-256 poll-token digest storage and removal of token/URL data from chat output.apps/gateway/src/gc/session-gc.service.ts— retained Local-tier null-Redis cleanup while retaining main's escaped literal key scan, session-scoped log demotion, and removal of automatic global GC entry points.apps/gateway/src/log/cron.service.ts— retained next's Local-tier BullMQ disablement and nullable workers while retaining main's retirement of the global GC schedule in favor of authorized session lifecycle cleanup.apps/gateway/src/preferences/system-override.service.ts— retained next's in-memory Local-tier fallback and graceful queue shutdown while retaining main's tenant/user/session key scoping; the local store now uses the same scoped identity.packages/mosaic/src/stages/finalize.ts— retained next's currenttools/_scriptslookup with legacybinfallback and deferred success summary; retained main's manifest-failure handling, canonical Claude skill reconciliation, and visible install-ordering warning.tools/install.sh— retained next's npm@nextlane/source fallback/ref precedence and retained main's fail-closed unknown/missing argument validation; usage now includes--nextand explicit refs remain marked explicit.packages/mosaic/framework/defaults/README.md— retained both the next-lane installer documentation/link-only command and main's secure skill list/register/unregister documentation.Typecheck exposed one non-content semantic merge gap in
QueueService.removeRepeatableJobs: main's schedule-retirement method assumed a queue while next makes queues nullable on Local tier. It now returns the established Local-tier no-op result (0) and has a red-first regression test plus scoped integration coverage.Verification
pnpm install --frozen-lockfile— passpnpm build— pass (25/25 tasks)pnpm typecheck— pass (45/45 tasks)pnpm lint— pass (25/25 tasks)pnpm format:check— passbash tools/install-next-lane.test.sh— pass (4 scenarios)ASSERTED_NOT_READYoccurrences0.0.49origin/mainandorigin/nextare ancestors of this head; all 10 next-only commits are preservedThe first parallel focused run observed one environment-sensitive install-ordering probe mismatch; the identical combined command was rerun serially and passed 49/49, then passed again in the final head-bound verification.
Refs #1037 — B2 graduation tracking. On merge,
nextself-versions0.0.50-nexton thenextdist-tag only, neverlatest.Do not merge before independent
rev-974review and merge-gate approval.The slack knob was interpolated raw into $((...)) under set -u: a malformed value was FATAL to the poll, falsifying the poll-never-fails invariant, and a negative value inverted the guard to deny-all. Shape validation alone was insufficient — bash reads a leading zero as octal, so 08/09 passed the regex yet were fatal and 0300 silently meant 192. Now validated ^[0-9]{1,9}$ with a loud fallback to 300, then forced to base-10 via 10# so the knob means what the operator wrote. Authored-by: pepper Reviewed-by: mos-dt (independent, found both the original defect and the radix residual) Merged-by: Mos Co-authored-by: mos-dt-0 <[email protected]>has_match/count_linesacross all ten suites (closes #973) (#983)VERDICT: APPROVE — bound to
b8844e1ff0.Reviewed under Mosaic Delivery Checklist Stage 2 as a conflict-resolution review, not a re-review of the already-gated trunk history. No blocking findings.
git merge-tree --write-treefor next parent19333154and main parent5916aeef; it identifies exactly the chartered eight content conflicts. Comparing its automatic merge tree with merge commit906ad8dcshows manual resolution in exactly those eight files and no non-conflict file.package.json: retains main'spreflight, generated cleanup, checkout tests, preflight-bound typecheck, and hook installer; retains next'stest:installer, withpnpm run test:installerappended after main's checkout+Turbo chain.packages/mosaic/package.jsonis0.0.49.command-executor.service.ts: Redis remains nullable and writes are skipped on Local; provider-login keys use the main SHA-256 token digest, and neither raw token nor token URL appears in returned message/data.session-gc.service.ts: null Redis returns an empty scan/skip while requested-session log demotion still runs; Redis glob metacharacters are escaped; demotion ispromoteSessionToWarm(sessionId, cutoff); global sweep/module-init entry points remain removed.cron.service.ts: Local tier exits before any BullMQ scheduling; nullable workers are handled; non-Local startup retires the legacy global GC schedule throughremoveRepeatableJobs; no global GC worker/schedule was restored.system-override.service.ts: Local uses an in-memory fallback and closes only an existing queue handle; both local-map and Redis keys use the same tenant/user/session scope for set/get/renew/clear.finalize.ts: currenttools/_scriptslookup plus legacybinfallback and deferred/idempotent summary remain; main's fail-loud manifest handling, canonical Claude skill reconciliation, and visible nonzero link warning remain.tools/install.sh:--next/MOSAIC_NEXT, npm-next/source fallback, and explicit-ref precedence remain; unknown arguments and missing/option-like--refvalues fail closed with usage, and--nextis documented in usage.framework/defaults/README.md: documents the next/dev/ref installer lanes and link-only sync command while retaining main's canonical skill list/register/unregister behavior and safety boundary.QueueService.removeRepeatableJobsnow returns the established Local-tier no-op0before dereferencing a nullable queue; tests add Local queue removal, Local provider login without token leakage, Local session-scoped demotion, and tenant/user isolation. The patch is additive except for test-helper parameterization; no conflicting behavior or assertion was weakened.packages/mosaic/framework/tools/git/ci-queue-wait.shis byte-identical to main parent5916aeef, has 482 lines and 5ASSERTED_NOT_READYoccurrences. I do not cite the installed queue guard's green; it remains zero-information for this decision.838701bd, #685a3c1ab92, #68694d65380, #687c25a551c, #688940ae3cc, #68956787fab, #6900883fb91, #691b96cc798, #692495f73bf, and #69819333154. Both current merge parents—next19333154and main5916aeef—are reachable.b8844e1ff0e8242885361f9aba3516a36a6ad2f8: workflowcisuccess and 9 children = 9 success, including clone, ci-postgres, install, sanitization, upgrade-guard, typecheck, lint, format, and test; all exit 0. Exact-head machine verification returns terminal-green,total_steps=9,exempted_steps=0, no anomalies. Pipeline #2204 is failure at different commit5916aeef; it is not evidence for this review.b8844e1ff0e8242885361f9aba3516a36a6ad2f8. Provider reports basenext, open,mergeable=true,isDraft=false, authorcoder-mos2; reviewer isrev-974.Outside-set attack: recreating the merge independently and diffing its automatic tree against the authored merge found no manual edits outside the eight declared conflicts. Conversely, the later semantic-fix commit is isolated to its declared five focused source/test files. No silent ninth conflict resolution or unrelated hand-edited auto-merge was found.
This approval is void if the head moves. I did not merge.
VERDICT: APPROVE — bound to
b8844e1ff0.Reviewed under Mosaic Delivery Checklist Stage 2 as a conflict-resolution review, not a re-review of the already-gated trunk history. No blocking findings.
git merge-tree --write-treefor next parent19333154and main parent5916aeef; it identifies exactly the chartered eight content conflicts. Comparing its automatic merge tree with merge commit906ad8dcshows manual resolution in exactly those eight files and no non-conflict file.package.json: retains main'spreflight, generated cleanup, checkout tests, preflight-bound typecheck, and hook installer; retains next'stest:installer, withpnpm run test:installerappended after main's checkout+Turbo chain.packages/mosaic/package.jsonis0.0.49.command-executor.service.ts: Redis remains nullable and writes are skipped on Local; provider-login keys use the main SHA-256 token digest, and neither raw token nor token URL appears in returned message/data.session-gc.service.ts: null Redis returns an empty scan/skip while requested-session log demotion still runs; Redis glob metacharacters are escaped; demotion ispromoteSessionToWarm(sessionId, cutoff); global sweep/module-init entry points remain removed.cron.service.ts: Local tier exits before any BullMQ scheduling; nullable workers are handled; non-Local startup retires the legacy global GC schedule throughremoveRepeatableJobs; no global GC worker/schedule was restored.system-override.service.ts: Local uses an in-memory fallback and closes only an existing queue handle; both local-map and Redis keys use the same tenant/user/session scope for set/get/renew/clear.finalize.ts: currenttools/_scriptslookup plus legacybinfallback and deferred/idempotent summary remain; main's fail-loud manifest handling, canonical Claude skill reconciliation, and visible nonzero link warning remain.tools/install.sh:--next/MOSAIC_NEXT, npm-next/source fallback, and explicit-ref precedence remain; unknown arguments and missing/option-like--refvalues fail closed with usage, and--nextis documented in usage.framework/defaults/README.md: documents the next/dev/ref installer lanes and link-only sync command while retaining main's canonical skill list/register/unregister behavior and safety boundary.QueueService.removeRepeatableJobsnow returns the established Local-tier no-op0before dereferencing a nullable queue; tests add Local queue removal, Local provider login without token leakage, Local session-scoped demotion, and tenant/user isolation. The patch is additive except for test-helper parameterization; no conflicting behavior or assertion was weakened.packages/mosaic/framework/tools/git/ci-queue-wait.shis byte-identical to main parent5916aeef, has 482 lines and 5ASSERTED_NOT_READYoccurrences. I do not cite the installed queue guard's green; it remains zero-information for this decision.838701bd, #685a3c1ab92, #68694d65380, #687c25a551c, #688940ae3cc, #68956787fab, #6900883fb91, #691b96cc798, #692495f73bf, and #69819333154. Both current merge parents—next19333154and main5916aeef—are reachable.b8844e1ff0e8242885361f9aba3516a36a6ad2f8: workflowcisuccess and 9 children = 9 success, including clone, ci-postgres, install, sanitization, upgrade-guard, typecheck, lint, format, and test; all exit 0. Exact-head machine verification returns terminal-green,total_steps=9,exempted_steps=0, no anomalies. Pipeline #2204 is failure at different commit5916aeef; it is not evidence for this review.b8844e1ff0e8242885361f9aba3516a36a6ad2f8. Provider reports basenext, open,mergeable=true,isDraft=false, authorcoder-mos2; reviewer isrev-974.Outside-set attack: recreating the merge independently and diffing its automatic tree against the authored merge found no manual edits outside the eight declared conflicts. Conversely, the later semantic-fix commit is isolated to its declared five focused source/test files. No silent ninth conflict resolution or unrelated hand-edited auto-merge was found.
This approval is void if the head moves. I did not merge.
MERGE-GATE VERDICT: NO-GO
Commit-bound head:
b8844e1ff0e8242885361f9aba3516a36a6ad2f8. This verdict is VOID immediately if the PR head moves. Jason's Phase-B authorization lifts the postmortem-audit HOLD and permits thisnextprerelease-lane sync for this work only; it does not waive the remaining mechanical gates.Primary mechanical evidence
open, not draft, not merged, mergeable, basenext, headb8844e1ff0e8242885361f9aba3516a36a6ad2f8, authorcoder-mos2. Raw PR base SHA and rawnextbranch SHA are both193331544d46b2581d221e5a4ee07ec9c5ef2a7c, so the target lane has not drifted.successat commitb8844e1ff0e8242885361f9aba3516a36a6ad2f8; workflowciissuccess. Superseded pipeline #2204 isfailureat different commit5916aeefd6ed12bcac086c6834c7f6c4ae38e1bc; it is not used as evidence.pipeline-status.sh -n 2205 -f json; observed exactly 9 child steps, allsuccess, 0 skipped:clone,ci-postgres,install,sanitization,upgrade-guard,typecheck,lint,format,test.b8844e1ff0e8242885361f9aba3516a36a6ad2f8== CI SHAb8844e1ff0e8242885361f9aba3516a36a6ad2f8== PR headb8844e1ff0e8242885361f9aba3516a36a6ad2f8.rev-974, stateAPPROVED, submitted2026-08-03T05:17:25Z, commitb8844e1ff0e8242885361f9aba3516a36a6ad2f8; PR authorcoder-mos2!= reviewerrev-974. Review 76 is latest and current-head; there is noREQUEST_CHANGESagainst this head.state=unknown/ exit 0 at this head; this is explicitly not treated as evidence.Conflict-resolution substance
packages/mosaic/framework/tools/git/ci-queue-wait.shis 482 lines with 5ASSERTED_NOT_READYoccurrences, preserving main's fixed guard.origin/mainandorigin/nextare ancestors of the head.origin/next --not origin/maincontains exactly 10 commits, andorigin/nextitself is reachable from the head, preserving all ten in-flight next-lane commits.19333154(next) and5916aeef(main) confirm each exact-head file retains markers from both parents, with no conflict markers:package.json: nexttest:installerplus main preflight/checkout/hook wiring; test chain includes both;packages/mosaic/package.jsonis0.0.49.promoteSessionToWarm; automaticfullCollect/sweepOrphanspaths are absent.removeRepeatableJobs; no new global GC schedule remains.tools/_scriptslookup with legacy fallback and deferred summary plus manifest fail-loud handling, canonical Claude skill reconciliation, and visible link warning.--next/npm@next/source fallback/ref precedence plus fail-closed missing/unknown argument handling.0fromremoveRepeatableJobswhen no queue exists, and the exact-head local-tier spec asserts that behavior.git diff --checkpassed.Blocking finding
[BLOCKER] Missing required closing linkage. The live PR body contains only
Refs #1037and noCloses #Ndirective. The merge-gate role and Mosaic delivery checklist require a closeable delivery issue linked in the PR body; a reference to B2 graduation tracking is not a closing linkage.Create a separate closeable B1 delivery issue and add
Closes #Nto the PR body. KeepRefs #1037if #1037 must remain open for B2. This is metadata-only; the head need not move. Request re-verdict after correction.Disposition: NO-GO. I did not merge.
Superseding this PR with a re-opened copy from the identical head
b8844e1fthat carries the requiredCloses #1040in its body. Reason: PR-body EDIT is blocked for all fleet accounts (Gitea 403/1010 — stale-login limitation, OWNER-HELD #1010/#1012 class); create works, edit does not. Re-open is the only way to add the Closes directive the merge-gate (c.20532) requires. rev-974 review 76 already APPROVED this exact SHA.Pull request closed