Skip to content

Date: 2026-07-10 Task: Mega-Project Sub-Project Management (SMTM extension) Dept: Processes / KB-OS Status: Complete


Sub-project convention for mega ongoing projects — ratified and documented. When an Ongoing Project hosts multiple folders each with its own backlog, deployment target, and independent lifecycle, it becomes a mega project.

Threshold test (all three required for sub-project status):

  1. Independent backlog (2+ distinct work items)
  2. Own deployment target (separate URL or artifact)
  3. Actively developed or concretely planned

SSOT pattern: each qualifying sub-project folder → STATUS.md (state + backlog); root STATUS.md → index table; KB portal → “Sub-projects” table.

Registry: parent stays one row (sub-projects are implementation detail, not top-level entries).

Task convention: one rolling thread note per active sub-project, named <project>-<subproject>-<descriptor>; archives on clean milestone; new note on next phase.

subproject: frontmatter: optional field — add only when task is scoped to a specific sub-project; enables Bases query grouping.


FileChange
SMTM_System.mdNew ### Sub-projects within Mega Ongoing Projects subsection under Ongoing Projects (Third Construct)
Ongoing-Projects.mdThird convention block added (mega-project / sub-project rule); registry stays 7-row pure index
~/.claude/skills/setup-ongoing-project/SKILL.md## Sub-project mode section added: detects sub-folders, creates STATUS.md, updates parent index + portal
SMTM Task — Smart.md (template)tR = "" first line (blank line fix); # subproject: YAML comment in projectFields; Problem + Done whenBackground + Tasks; all 3 task types consistent
~/projects/monorepo/sites/mbr/STATUS.mdCreated (backfill) — MBR site state + backlog
~/projects/monorepo/apps/sd-app/STATUS.mdCreated (backfill) — sd-app state + backlog
~/projects/monorepo/STATUS.mdSub-projects index updated: mbr + sd-app cells show paths (was “pending”)
Core/IT/Projects/monorepo.mdPortal sub-projects table updated: mbr + sd-app show ✓
~/ai-config/claude/settings.wsl.json + ~/.claude/settings.jsonPermissions fix: Edit(*)Edit (bare); 30+ missing tools added (EnterPlanMode, ExitPlanMode, Agent, Task*, MCP tools, etc.)

Sweep (all clean, no changes needed):

  • task-start / task-continue / task-prep / task-complete: Core/*/Tasks/ glob already covers repo-backed tasks ✅
  • .obsidian/plugins/templater-obsidian/data.json: regex .*/Tasks/.* — path-pattern ✅
  • Core/DASHBOARD.md: file.path.contains("/Tasks/") — path-pattern ✅

  • Templater blank line — the \n between frontmatter closing --- and # Title renders as an empty paragraph in Obsidian reading view. Fix: no gap between --- and # Title.
  • Edit(*) glob* in glob semantics doesn’t cross /, so Edit(*) never matched absolute paths. Use bare tool names in permissions.allow.
  • Plan mode enforcement — denying ExitPlanMode leaves plan mode active; its system enforcement then intercepts every Edit call. Don’t use EnterPlanMode for process/KB tasks — present plan as text instead.