2.7 KiB
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
trackermeans no tracker sync, no@synccredential, and no@syncregistration in the bus. - A present
trackerbehaves 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
trackerbot (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.
- A business file with no
trackerpasses the loader andmosaic business validate. - The bus boots with that file and raises no credential-file error, and
@syncisn't registered. - Existing fixtures, all of which carry a tracker, load unchanged. The existing suites show this.
- 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//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.