feat(mosaic): add per-estate repository-backed brain #1061
Closed
Ghost
wants to merge 16 commits from
feat/1051-mosaic-brain-installer into main
pull from: feat/1051-mosaic-brain-installer
merge into: :main
: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 Reviewers
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#1061
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
Implements the repository-backed, per-estate Mosaic brain for #1051: target-derived estate selection, MC-CRED-mediated validation, provider-verified durable ownership, private local storage, fail-closed diagnostics, exact-snapshot migration controls, and append-only push-on-write publication.
Current source head:
e91c8c06a5d49ac3443c02bafd53ec6259be5114(16 commits / 25 files againstmainat85d2108e4ed15c744ad3b87a5b629e7b2d39405a; all commits authored and committed bybe-coder-07).Hard dependency and verification scope
#1061 remains merge-ordered behind #1059 (MC-CRED), but a fresh checkout now tracks the provider-fetched canonical estate-registry seam and its DTO dependencies instead of relying on an untracked scaffold. History confirms the imports were intentional: commit
2451c2fintroduced both consumers, while the contemporaneous seam report explicitly marked the local 32-line parser as disposable and required MC-CRED's canonical implementation.Three DTO files are byte-identical to #1059 head
fbff4ffa. Author review found that the canonical parser accepted a trailing-slash origin which MB-BRAIN consumers concatenate into double-slash URLs; this branch adds a RED-first rejection control and requires the configured value to equalURL.origin. That hardening must be propagated to #1059 before dependency convergence.Full merged-system re-verification remains required after #1059 merges and MB-BRAIN rebases onto it. Reviewers remain held until then.
Evidence
/home/hermes/agent-work/be-coder-07/MB-BRAIN-REBASE-PATCH-ID-BEFORE.txtand/home/hermes/agent-work/be-coder-07/MB-BRAIN-REBASE-PATCH-ID-AFTER.txt/home/hermes/agent-work/be-coder-07/MB-BRAIN-REBASE-TRAILERS.log/home/hermes/agent-work/be-coder-07/REPORT-MB-BRAIN-FROZEN-HEAD.md/home/hermes/agent-work/be-coder-07/REPORT-MB-BRAIN-SECURITY-CONVERGENCE.md/home/hermes/agent-work/be-coder-07/MB-BRAIN-NULLABLE-MEASUREMENT-SWEEP.logAdvisory disposition
FIXED
.gitignore.0700are enforced and diagnosed.DEFERRED
rev-974/rev-security-02review remain held until the real MC-CRED dependency is tracked on the rebased branch.Delivery status
Refs #1051. Status remains believed-fixed, pending jarvis validation. The issue remains open through merge, and the source branch is preserved while deferred integration and validation remain outstanding.
Exact-head CI dependency remediation
Pipeline
#2222ata50b5a6bran the only pull-request-eligible workflow (ci, 1/3 defined workflows) and failedtypecheckwith twoTS2307errors before lint, format, or tests ran. Base pipeline#2221ran the byte-identicalci/typecheckworkflow at85d2108eand passed 45/45 tasks, proving the failure was introduced by #1061 rather than pre-existing.RED-first root typecheck reproduced the two missing-module errors. Tracking the canonical module returned typecheck to 45/45 tasks. R7 deleting the module returned RED with three missing-module errors; restoration returned GREEN. Author review's trailing-slash finding was separately RED-first and remediated. Final author advisories: code
approve, zero findings; security risknone, zero findings.With typecheck no longer suppressing downstream execution:
This is a second independent instance of the
#1068suppression class: an early integrity failure prevented all downstream stages carrying behavioral evidence while the aggregate workflow still looked like a completed check. Workflow ordering is not changed here; that remains #1068 scope.5b1717ac57toa50b5a6b4dClosing as superseded / architecturally stranded (disposition delegated by Jason to the PR-cleanup effort, 2026-08-11). Evidence:
packages/mosaic/src/credentials/estate-registry.ts, shared with #1059, closed on the same evidence). The harness-homes program (epic #1155, Jason-approved 2026-08-11, REV3 frozen at2ef725ffe) and the P3 plan carry the auth-bundle architecture instead; no "estate" concept exists anywhere in #1155–#1162 or the P3 plan.brain-installer-integration.spec.ts), which depend on #1054's P0-P9 installer state machine — unmerged, conflicted, and itself blocked pending reconciliation with the harness-homes root split (see comment on #1054).main;nextis the sole active line. Per-agent durable state on the active line is the harness-homes~/.mosaicroot split + profile.json composition.The repository-backed private brain concept (approved-blob binding, private checkout enforcement) is not itself covered by #1155–#1162 — if wanted, it should be re-proposed against the harness-homes topology rather than the estate model.
Pull request closed