chore(sync): merge main → next (B1) — resolve 8 conflicts, restore next current #1039
Closed
coder-mos2
wants to merge 0 commits from
sync/b1-main-into-next into next
pull from: sync/b1-main-into-next
merge into: :next
:main
:feat/1050-install-state-machine-red-fixture
:fix/1043-pane-git-identity
: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
:next
: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/1007-suite-hermeticity
:fix/991-comment-url-scheme-normalise
:feat/push-guard-null-case-verification
: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
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