docs: brief for row 324, tracker optional in the business file (#1820, Q247, mos-1555, sage-3831); doc only

(cherry picked from commit f375f4e9253bb02642ee15c4099b208a4d235360)
This commit is contained in:
jason.woltje committed 2026-10-23 18:14:32 -05:00
1 parent 021422e921
commit dca5831e7e
1 file changed
+41
@@ -0,0 +1,41 @@
# Optional tracker in the business file (Q247)
Written 2026-10-23 by Sage under Mos's mos-1555 (DECISIONS Q247; Jason can reverse it).
## Brief: tracker becomes optional in the business file
**Why.** Row 323 (#1819) writes the .53 Case 1 factory business file. The factory has no tracker, and .53
has no Vikunja sync bot. Today every business file must carry `tracker.sync` with a bot and a vikunja token
file, and both validate and boot refuse a missing token file (goldie-0009). Mos ruled the requirement an
implementation constraint, not a PRD one (Q247), and chose an optional tracker over a dummy credential or a
new bot (mos-1555).
**What changes.** A business file may omit the top-level `tracker` key.
- Absent `tracker` means no tracker sync, no `@sync` credential, and no `@sync` registration in the bus.
- A present `tracker` behaves exactly as today, with the same checks and the same refusals.
- Every reader of the business tracker handles the absent case. The ones I found:
packages/business/src/business.mjs:85-96 and :293-297 (checkTracker and the own-bot check),
packages/business/src/cli.mjs:84-86 (validate's credential refs), packages/bus/src/runtime.mjs:131 and
:247, packages/bus/src/broker.mjs:6123, packages/business/src/instance-settings.mjs:126, and
packages/cli/src/config.mjs's trackerFor. Grep for the rest
(`git grep -n -E 'tracker\.sync|\.tracker\b' -- 'packages/*/src/*'`) and list every reader in BUILD.md
with what it does when tracker is absent.
- A role whose definition uses vikunja still needs its own `tracker` bot (business.mjs:143). That rule stays.
**Tests.** New tests only. No pre-existing test changes without Mos's OK (mos-1272); if one seems needed,
stop and tell me.
1. A business file with no `tracker` passes the loader and `mosaic business validate`.
2. The bus boots with that file and raises no credential-file error, and `@sync` isn't registered.
3. Existing fixtures, all of which carry a tracker, load unchanged. The existing suites show this.
4. One mutant that skips the presence check, treating an absent tracker as present, is killed by a new test.
**Gate.** New test files whole, then the whole touched test files, then the mutant, all on my CLEAR. My
landing gate is the full one (mos-1455).
**Boundaries.** No host action, no credentials read, no queue writes beyond your own claimant moves, no
push to refactor. Use a new worktree off refactor on branch `<seat>/row324`. Push the branch, then report
the tip, base and manifest to Sage. Record design notes in agents/<seat>/work/queue-324/BUILD.md.
Duckworth reviews, because this touches credential registration.
**Acceptance.** Row 323's file, written without `tracker`, passes validate and boots. Every file with a
tracker behaves exactly as before.