Files
stack/docs/fleet/operations/systemd-tmux-troubleshooting.md
T
veronica f0d2dd9920 docs(W4): stamp kind and status front matter on 104 live documents
Applies the document contract from
docs/plans/2026-08-20_stack-docs-flatten-and-alignment.md section 3, partially:
`kind` and `status` only. `parent` is deliberately held until the flatten in
section 4 lands, so that 127 documents do not have to be re-pointed by hand
when docs/fleet/NORTH_STAR.yaml moves to docs/NORTH_STAR.yaml.

Scope, measured on origin/next at 63069149:

  127 live docs   = all *.md under docs/ minus docs/archive/ minus docs/_old_structure/
  104 stamped     here
   19 held        operator judgement (plan section 9), worklist in the same PR
    3 held        the SUPERSEDED TASKS.md stamps, which cite the moving path
    1 untouched   docs/fleet/FLEET-DOCTRINE.md, already stamped in W1

Kinds applied: 54 guide, 34 record, 9 spec, 6 tracking, 1 projection.
Every row carries a confidence and a one-line rationale in the worklist.

Two collisions with the existing state, both flagged rather than resolved:

1. docs/README.md:150-160 already documents a front-matter convention
   (title/type/audience/status/source_of_truth) with its own allowed values.
   It is applied to 4 of 127 files. Its `status` vocabulary is
   current|draft|deprecated|historical; the new contract's is active|superseded-by.
   The key collides. This commit lets the new contract win and rewrites
   `status: current` to `status: active` on those 4 files, keeping their other
   legacy keys untouched. No code reads any of them: `git grep source_of_truth`
   outside docs/ returns nothing. docs/README.md still prescribes the old
   convention and is an operator row, so it is not edited here.

2. Two of the plan's 20 operator rows are YAML files, not markdown
   (docs/fleet/examples/roster-v2.yaml, docs/openapi-tess.yaml), and the
   contract's front-matter form has no defined meaning for a .yaml document.
   That gap also applies to docs/fleet/NORTH_STAR.yaml, the source of truth
   itself. Raised in the worklist.

A third row from the plan, docs/fleet/north-star.md, no longer exists: W1
renamed it to docs/fleet/FLEET-DOCTRINE.md.

Verification: 104/104 parse with the expected kind and status in front matter;
the check was shown to reject a wrong kind before it was trusted. The diff
removes 4 lines total, all of them `status: current`.
2026-08-20 19:30:25 -05:00

3.5 KiB

kind, status
kind status
guide active

Systemd and tmux Troubleshooting

Start with read-only mosaic fleet status, doctor, and verify. Do not manually adopt, rename, terminate, or recreate sessions while ownership is ambiguous.

Decision table

Finding Meaning Safe next step
Empty roster tmux.socket_name Literal default tmux server Do not substitute the named mosaic-fleet socket. Use roster-derived commands only.
Non-empty socket Exact named socket Never target another socket or infer a per-agent socket.
holder: missing Required exact holder absent Inspect installation/projection readiness; do not create an unproven holder manually.
ownership-mismatch Holder identity or global environment differs Stop. Verify private install identity and managed paths before retry.
missing-session Desired-running roster agent lacks exact session Check service/runtime preconditions; review apply dry-run.
unexpected-session Desired-stopped roster agent still has exact session Confirm ownership; only reconciler may target the exact proven roster member.
disabled-running Disabled roster member is observed running Inspect and reconcile only after ownership proof.
unmanagedSessions Unknown session exists on configured named socket Report and investigate separately. Reconciler will not kill or adopt it.
stale/concurrent generation Desired state changed since plan Reload roster/generation and recompute the plan.
stale or ambiguous lock Prior writer/cleanup cannot be proven Inspect ownership; do not blindly remove the lock.
projection failure Derived files incomplete Keep roster as authority and regenerate projections.
lifecycle failure Projections complete, runtime convergence incomplete Inspect the exact owned resource, then rerun with current generation.

Systemd state, tmux state, heartbeat, and generated files are observations/projections, not alternate desired state. Explicit apply/reconcile honors stopped/disabled intent, but current unit enablement and launcher projections do not yet prove lifecycle-safe reboot; inspect unit enablement before reboot and treat stopped/disabled boot preservation as an FCM-M3-002 hold. Current roster-v2 status commands also do not read heartbeat files. Executable gates do not provide site cutover/rollback or package asset-revision repair.

Errors and troubleshooting output never print legacy sensitive values, credential contents, or privileged command text. Use stable codes, key names/hashes, exact roster identities, and bounded recovery actions. See status and drift and reconcile and recover.