Skip to content

Gotchas, failed approaches, process decisions.

  • Windows .lnk shortcuts no separate “Arguments” field — Properties dialog: target + arguments one string, Target box. Chromium browser already running singleton (e.g. Comet, autostart own shortcut): launching comet.exe --app=<url> from second shortcut opens new window, not retarget existing pinned tab. No shortcut-level way switch tabs in running instance. Browser autostarts own shortcut → don’t add second shortcut retarget it — fix inside browser (pin right tab), not Windows Startup.
  • Chromium “On startup → Open a specific page” replaces whole session — discards every previously-open tab, not just adds one. Goal “always show page X and keep other tabs” → answer: “Continue where you left off” + pin page X — pinned tabs restore part of session-restore, both needs met, no startup-page override.
  • Obsidian embeds (!Note) for SSOT transclusion — use link vs !embed deliberately. Plain wikilink still leaves referencing note duplicate text — SSOT violation persists, just link bolted on. Embed transcludes actual content — one place edit. Standing convention: Core/Processes/Projects/KB-OS/KB-OS-Usage.md → Conventions table.
  • Heading-scoped section extraction must treat “next heading equal-or-higher level” correctly — nested headings silently leak through. Resolving !Note build time (sites/{mbr,sdc}/src/utils/load-focus-content.ts), section boundary = “stop at next heading level ≤ target heading’s level.” Subsection nested one level deeper (e.g. ### Foo under ## Statement) NOT boundary — still inside section, gets pulled in. SDC/Strategy/Identity/Mission.md had stale ### Mission Reminders right after ## Statement’s content, no intervening ## — nested deeper not sibling, leaked into embed first pass. Fix: promote to ## Mission Reminders (explicit sibling) so boundary regex correctly stopped. Adding new heading-scoped embed target: check actual heading levels source note, not visual position file — also strip stray markdown horizontal-rule (---) lines landed inside extracted section, not heading boundaries either. Discovered: Mission-SSOT task, 2026-07-30.
  • Ecco-style per-item columns and notepad views in Obsidian — which query form does what. Fields live on the list item as inline [key:: value]; read back via TABLE ... FLATTEN file.lists AS item. Item text echoes its own fields in the cell — strip with regexreplace(item.text, "\s*\[\w+::[^\]]*\]", ""). Then, by query form: TABLE filters correctly, flat, but one level of ancestry can be computed back as a Parent column (roots render -). LIST filters correctly, flattens — matches render flush left, tree gone. TASK nests but does NOT filter — it matches top-level items only, drags every descendant along regardless of their fields (three thisWeek items rendered inside a today view), and ignores fields on subtasks entirely, so a query matching only a deep item returns “No results to show”. Filtered AND nested = dataviewjs only — walk the outline, keep matches plus their ancestor chain, italicise the ancestors. Bases is one row per file, never per bullet (Obsidian docs: “each row is a file, and each column is a property of that file”) — its cells ARE editable and write back to frontmatter, but file-per-item flattens hierarchy to a parent: property, so it is not an outline route. Verify tree logic in a Node/Python harness first — Obsidian has no headless render. Discovered: ecco-replacement-research, 2026-08-20; proofs at Focus/proofs/.