A snapshot: read at commit 707a04c7ce8 on 2026-10-18T00:06:01Z by majordomus 0.29.0. Nothing on this page is read again. See it live
I2135
The trust root is read from the default branch, not from whatever the checkout holds
Where it stands
devtask.issue- Readiness
- complete completion is recorded and every required evidence token is present
- Status
- DONE
- Can start
- not now
- Milestone
- Milestone status
- ACTIVE
- Wave
0- Waiting on
- none
- Holds back
- none
- Behind it in all
0- Evidence
2of2
Moves
plan.transitionWhat it is
- Objective
- Let a working tree narrow the mesh's trust and never widen it: obey the working tree's declaration with every widening of the trunk's committed copy removed, report each ignored line, and refuse a committed declaration that trusts on first use.
- Why
- The server reads .ai/repo/mesh/ from the checkout's working tree once at start (apps/majordomus-cli/src/shared.rs:34-48,164-174). A branch, or an uncommitted edit, can add a key to trust.allow, add seeds or rendezvous.endpoints that make the runtime post its card and envelope to a host of the branch author's choosing, or set policy tofu, and that checkout's runtime obeys it (threat T12); peers judge by their own file, so the damage is local to that checkout, which is the one a reviewer runs a contributor's branch in. docs/MESH.md:365,382-399 and ADR 0050 rule 6 say the declaration is committed; ADR 0059 records this class of incident. No CI gate refuses a committed tofu declaration (enforcement table, 'no unknown remote auto-trust': unit tests only, apps/majordomus-cli/src/mesh/trust.rs:25-35, apps/majordomus-cli/src/mesh/config.rs:397). Baseline audit of 2026-10-09 at master 1fb8d6be44, mesh gap 10 and drift 12.
- Now
- Delivered by 4816d7c8ad and 11472da40d: mesh::root::resolve narrows the working tree's declaration to the trunk's committed copy (the trunk is the local branch the repository names as its trunk; a stale local trunk is older trust, the safe direction), every reader asks it, mesh doctor names each ignored line, and scripts/ci/mesh-check refuses a committed tofu, which case 301 now drives.
- Wanted
- mesh::root::resolve holds the working tree's declaration against the trunk's committed copy: enabled only if both are, a policy no looser than the trunk's, keys, endpoints, seeds and networks only as the trunk lists them (loopback endpoints and seeds admitted); with no trunk copy, tofu is refused. Every reader of the declaration asks it. mesh doctor's trust-root check names every ignored line; mesh-check refuses a committed tofu. Reading only the trunk was rejected: it broke loopback-worktree discovery and every fixture that declares a mesh, for no security gain over narrowing.
- Done when
- unknown: the record declares no `completion`
- Risk
- unknown: the record declares no `risk`
Acceptance
- A working-tree edit that adds a key to trust.allow does not admit that key, and mesh doctor names the difference
- A branch that adds a rendezvous endpoint does not make its runtime post to it until the change is on the default branch
- A committed declaration with policy tofu fails scripts/ci/mesh-check
- Validation
bin/majordomus plan validatecargo test --test meshMJ_TEST_JOBS=4 bash test/run.sh 301_the_mesh_stays_one_subsystem 494_the_mesh_is_declared_and_held- Evidence required
working_tree_trust_edit_ignored_testtofu_declaration_refused_case- Evidence present
working_tree_trust_edit_ignored_testtofu_declaration_refused_case
Scope
- Touches
apps/majordomus-cli/src/shared.rsapps/majordomus-cli/src/mesh/config.rsapps/majordomus-cli/src/mesh/doctor.rsscripts/ci/mesh-checkapps/majordomus-cli/src/mesh/root.rsapps/majordomus-cli/src/capability/builtin/mesh.rsapps/majordomus-cli/tests/mesh.rsapps/majordomus-cli/tests/mesh_trust_root.rstest/casesdocs/MESH.md- Not
- unknown: the record declares no `non_scope`
- Depends on
- none
- Priority
- p0
- Profile
- implementation
- Parallel safe
- false
- Owner
- unknown: the record declares no `owner`
The work so far
- Branches
- none
- Merged
- none
- Commits
0- Trunk
- master
- Sessions
- none
- Created
- 2026-10-09
- Updated
- 2026-10-15T01:28:23Z
- Started
- 2026-10-15T01:28:05Z
- Verified
- 2026-10-15T01:28:17Z
- Completed
- 2026-10-15T01:28:23Z
Synchronisation
- Adapter
scripts/github-sync- Repository
- unknown: the derived plan's header carries no repository
- External issue
- unknown: a live GitHub state; this executable makes no network call, so only `scripts/github-sync --check` can answer it
- State there
- unknown: a live GitHub state; this executable makes no network call, so only `scripts/github-sync --check` can answer it
Findings
Nothing is wrong with these records.