From dca5831e7e2ff2090c9635ff8417321dcbb39d79 Mon Sep 17 00:00:00 2001 From: Jason Woltje Date: Fri, 23 Oct 2026 18:08:58 -0500 Subject: [PATCH] docs: brief for row 324, tracker optional in the business file (#1820, Q247, mos-1555, sage-3831); doc only (cherry picked from commit f375f4e9253bb02642ee15c4099b208a4d235360) --- .../2026-10-23_optional-tracker-brief.md | 41 +++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 docs/plans/2026-10-23_optional-tracker-brief.md diff --git a/docs/plans/2026-10-23_optional-tracker-brief.md b/docs/plans/2026-10-23_optional-tracker-brief.md new file mode 100644 index 000000000..6c64725bc --- /dev/null +++ b/docs/plans/2026-10-23_optional-tracker-brief.md @@ -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 `/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.