Author the ten bundled template boards
The pathfinder's catalog transcribed verbatim as real board folders — lane titles, icons, palette colors, board icons, and blurbs read straight from its BoardTemplate.all, every color already in the palette, no invented fields, no starter cards it never had. Basic had drifted from the source in the engine card's version: it carried icon/iconColor keys the pathfinder's key-less Basic never wrote (visually identical via the fallback, byte-level wrong) and a rewritten blurb — both restored. Orders run 100 to 1000 in inventory order, Basic first; fresh lane UUIDs, gapped ranks, one consistent timestamp; the discovery test now pins all ten slugs, lane counts, Basic's primacy, and distinct ascending orders through the real loader. Claude-Session: https://claude.ai/code/session_01SR4XGjmBE16ZUYWpfFHXwY
This commit is contained in:
@@ -26,7 +26,33 @@ struct BoardTemplateTests {
|
||||
Issue.record("bundled template \(folder.lastPathComponent) failed to load: \(error.description)")
|
||||
}
|
||||
}
|
||||
#expect(TemplateEngine.bundledTemplates().count == folders.count)
|
||||
let templates = TemplateEngine.bundledTemplates()
|
||||
#expect(templates.count == folders.count)
|
||||
|
||||
// 09-templates.md ▸ Inventory: all ten pathfinder templates, each carrying over its own lane
|
||||
// count — the definitive check that the bundle is the full set, not just "some folders load".
|
||||
let expectedLaneCounts: [String: Int] = [
|
||||
"basic": 2,
|
||||
"classic-kanban": 3,
|
||||
"software-project": 5,
|
||||
"content-pipeline": 5,
|
||||
"job-hunt": 5,
|
||||
"sales-pipeline": 5,
|
||||
"weekly-planner": 4,
|
||||
"roadmap": 4,
|
||||
"event-planning": 5,
|
||||
"bug-tracker": 5,
|
||||
]
|
||||
#expect(Set(templates.map(\.slug)) == Set(expectedLaneCounts.keys), "all ten bundled slugs are present")
|
||||
for template in templates {
|
||||
#expect(template.lanes.count == expectedLaneCounts[template.slug], "\(template.slug) lane count")
|
||||
}
|
||||
|
||||
#expect(templates.first?.slug == "basic", "Basic carries the lowest template.order")
|
||||
let orders = templates.compactMap(\.order)
|
||||
#expect(orders.count == templates.count, "every bundled template carries a template.order")
|
||||
#expect(Set(orders).count == orders.count, "bundled template.order values are distinct")
|
||||
#expect(orders == orders.sorted(), "bundledTemplates() lists templates in ascending template.order")
|
||||
}
|
||||
|
||||
@Test("Basic is bundled, first, and the plain To Do / Done scaffold")
|
||||
@@ -47,9 +73,13 @@ struct BoardTemplateTests {
|
||||
#expect(basic.name == basic.model.title.value)
|
||||
#expect(!basic.blurb.isEmpty, "the body is the picker blurb and the new board's description")
|
||||
#expect(basic.blurb == basic.model.document.body.trimmingCharacters(in: .whitespacesAndNewlines))
|
||||
#expect(basic.icon == basic.model.icon.value)
|
||||
#expect(basic.iconColor == basic.model.iconColor.value)
|
||||
#expect(basic.order == 100, "template: {order: 100} is the chooser position")
|
||||
|
||||
// Basic carries no icon key at all — the pathfinder's plain scaffold, inherited verbatim —
|
||||
// so the pass-through half of this check needs a template that actually sets one.
|
||||
let classicKanban = try #require(TemplateEngine.bundledTemplates().first { $0.slug == "classic-kanban" })
|
||||
#expect(classicKanban.icon == classicKanban.model.icon.value)
|
||||
}
|
||||
|
||||
@Test("An icon the running system cannot draw falls back to the board default")
|
||||
|
||||
@@ -1,10 +1,8 @@
|
||||
---
|
||||
schema: 1
|
||||
title: Basic
|
||||
icon: rectangle.split.3x1
|
||||
iconColor: deep-sky-blue
|
||||
template: {order: 100}
|
||||
created: 2026-01-15T09:00:00Z
|
||||
modified: 2026-01-15T09:00:00Z
|
||||
---
|
||||
Two lanes to move work through — the plain scaffold.
|
||||
A simple two-step board: things to do, things done.
|
||||
|
||||
@@ -0,0 +1,9 @@
|
||||
---
|
||||
schema: 1
|
||||
title: Verifying
|
||||
order: 4096
|
||||
icon: magnifyingglass
|
||||
iconColor: pale-violet
|
||||
created: 2026-01-15T09:00:00Z
|
||||
modified: 2026-01-15T09:00:00Z
|
||||
---
|
||||
@@ -0,0 +1,9 @@
|
||||
---
|
||||
schema: 1
|
||||
title: Closed
|
||||
order: 5120
|
||||
icon: checkmark.seal
|
||||
iconColor: fern
|
||||
created: 2026-01-15T09:00:00Z
|
||||
modified: 2026-01-15T09:00:00Z
|
||||
---
|
||||
@@ -0,0 +1,9 @@
|
||||
---
|
||||
schema: 1
|
||||
title: Confirmed
|
||||
order: 2048
|
||||
icon: ant
|
||||
iconColor: smokey-tangerine
|
||||
created: 2026-01-15T09:00:00Z
|
||||
modified: 2026-01-15T09:00:00Z
|
||||
---
|
||||
@@ -0,0 +1,9 @@
|
||||
---
|
||||
schema: 1
|
||||
title: Fixing
|
||||
order: 3072
|
||||
icon: wrench.and.screwdriver
|
||||
iconColor: deep-sky-blue
|
||||
created: 2026-01-15T09:00:00Z
|
||||
modified: 2026-01-15T09:00:00Z
|
||||
---
|
||||
@@ -0,0 +1,9 @@
|
||||
---
|
||||
schema: 1
|
||||
title: Reported
|
||||
order: 1024
|
||||
icon: exclamationmark.bubble
|
||||
iconColor: carnation
|
||||
created: 2026-01-15T09:00:00Z
|
||||
modified: 2026-01-15T09:00:00Z
|
||||
---
|
||||
@@ -0,0 +1,10 @@
|
||||
---
|
||||
schema: 1
|
||||
title: Bug Tracker
|
||||
icon: ant
|
||||
iconColor: carnation
|
||||
template: {order: 1000}
|
||||
created: 2026-01-15T09:00:00Z
|
||||
modified: 2026-01-15T09:00:00Z
|
||||
---
|
||||
Chase bugs from first report to verified fix.
|
||||
@@ -0,0 +1,9 @@
|
||||
---
|
||||
schema: 1
|
||||
title: To Do
|
||||
order: 1024
|
||||
icon: tray.full
|
||||
iconColor: deep-sky-blue
|
||||
created: 2026-01-15T09:00:00Z
|
||||
modified: 2026-01-15T09:00:00Z
|
||||
---
|
||||
@@ -0,0 +1,9 @@
|
||||
---
|
||||
schema: 1
|
||||
title: In Progress
|
||||
order: 2048
|
||||
icon: play.circle
|
||||
iconColor: smokey-tangerine
|
||||
created: 2026-01-15T09:00:00Z
|
||||
modified: 2026-01-15T09:00:00Z
|
||||
---
|
||||
@@ -0,0 +1,9 @@
|
||||
---
|
||||
schema: 1
|
||||
title: Done
|
||||
order: 3072
|
||||
icon: checkmark.circle
|
||||
iconColor: fern
|
||||
created: 2026-01-15T09:00:00Z
|
||||
modified: 2026-01-15T09:00:00Z
|
||||
---
|
||||
@@ -0,0 +1,10 @@
|
||||
---
|
||||
schema: 1
|
||||
title: Classic Kanban
|
||||
icon: rectangle.split.3x1
|
||||
iconColor: deep-sky-blue
|
||||
template: {order: 200}
|
||||
created: 2026-01-15T09:00:00Z
|
||||
modified: 2026-01-15T09:00:00Z
|
||||
---
|
||||
The three-step classic: pull work into progress only when there's room.
|
||||
@@ -0,0 +1,9 @@
|
||||
---
|
||||
schema: 1
|
||||
title: Drafting
|
||||
order: 2048
|
||||
icon: pencil
|
||||
iconColor: deep-sky-blue
|
||||
created: 2026-01-15T09:00:00Z
|
||||
modified: 2026-01-15T09:00:00Z
|
||||
---
|
||||
@@ -0,0 +1,9 @@
|
||||
---
|
||||
schema: 1
|
||||
title: Ready
|
||||
order: 4096
|
||||
icon: paperplane
|
||||
iconColor: light-teal
|
||||
created: 2026-01-15T09:00:00Z
|
||||
modified: 2026-01-15T09:00:00Z
|
||||
---
|
||||
@@ -0,0 +1,9 @@
|
||||
---
|
||||
schema: 1
|
||||
title: Ideas
|
||||
order: 1024
|
||||
icon: lightbulb
|
||||
iconColor: smokey-tangerine
|
||||
created: 2026-01-15T09:00:00Z
|
||||
modified: 2026-01-15T09:00:00Z
|
||||
---
|
||||
@@ -0,0 +1,9 @@
|
||||
---
|
||||
schema: 1
|
||||
title: Published
|
||||
order: 5120
|
||||
icon: megaphone
|
||||
iconColor: fern
|
||||
created: 2026-01-15T09:00:00Z
|
||||
modified: 2026-01-15T09:00:00Z
|
||||
---
|
||||
@@ -0,0 +1,9 @@
|
||||
---
|
||||
schema: 1
|
||||
title: Editing
|
||||
order: 3072
|
||||
icon: scissors
|
||||
iconColor: pale-violet
|
||||
created: 2026-01-15T09:00:00Z
|
||||
modified: 2026-01-15T09:00:00Z
|
||||
---
|
||||
@@ -0,0 +1,10 @@
|
||||
---
|
||||
schema: 1
|
||||
title: Content Pipeline
|
||||
icon: pencil.and.outline
|
||||
iconColor: rich-grapefruit
|
||||
template: {order: 400}
|
||||
created: 2026-01-15T09:00:00Z
|
||||
modified: 2026-01-15T09:00:00Z
|
||||
---
|
||||
Take ideas from first draft to published.
|
||||
@@ -0,0 +1,9 @@
|
||||
---
|
||||
schema: 1
|
||||
title: Wrapped Up
|
||||
order: 5120
|
||||
icon: checkmark.circle
|
||||
iconColor: fern
|
||||
created: 2026-01-15T09:00:00Z
|
||||
modified: 2026-01-15T09:00:00Z
|
||||
---
|
||||
@@ -0,0 +1,9 @@
|
||||
---
|
||||
schema: 1
|
||||
title: Ideas
|
||||
order: 1024
|
||||
icon: lightbulb
|
||||
iconColor: smokey-tangerine
|
||||
created: 2026-01-15T09:00:00Z
|
||||
modified: 2026-01-15T09:00:00Z
|
||||
---
|
||||
@@ -0,0 +1,9 @@
|
||||
---
|
||||
schema: 1
|
||||
title: Day Of
|
||||
order: 4096
|
||||
icon: flag
|
||||
iconColor: carnation
|
||||
created: 2026-01-15T09:00:00Z
|
||||
modified: 2026-01-15T09:00:00Z
|
||||
---
|
||||
@@ -0,0 +1,9 @@
|
||||
---
|
||||
schema: 1
|
||||
title: To Arrange
|
||||
order: 2048
|
||||
icon: checklist
|
||||
iconColor: deep-sky-blue
|
||||
created: 2026-01-15T09:00:00Z
|
||||
modified: 2026-01-15T09:00:00Z
|
||||
---
|
||||
@@ -0,0 +1,9 @@
|
||||
---
|
||||
schema: 1
|
||||
title: Booked
|
||||
order: 3072
|
||||
icon: checkmark.seal
|
||||
iconColor: light-teal
|
||||
created: 2026-01-15T09:00:00Z
|
||||
modified: 2026-01-15T09:00:00Z
|
||||
---
|
||||
@@ -0,0 +1,10 @@
|
||||
---
|
||||
schema: 1
|
||||
title: Event Planning
|
||||
icon: party.popper
|
||||
iconColor: carnation
|
||||
template: {order: 900}
|
||||
created: 2026-01-15T09:00:00Z
|
||||
modified: 2026-01-15T09:00:00Z
|
||||
---
|
||||
From idea to booked to wrapped up, nothing forgotten.
|
||||
@@ -0,0 +1,9 @@
|
||||
---
|
||||
schema: 1
|
||||
title: Offer
|
||||
order: 4096
|
||||
icon: gift
|
||||
iconColor: fern
|
||||
created: 2026-01-15T09:00:00Z
|
||||
modified: 2026-01-15T09:00:00Z
|
||||
---
|
||||
@@ -0,0 +1,9 @@
|
||||
---
|
||||
schema: 1
|
||||
title: Interviewing
|
||||
order: 3072
|
||||
icon: person.2
|
||||
iconColor: pale-violet
|
||||
created: 2026-01-15T09:00:00Z
|
||||
modified: 2026-01-15T09:00:00Z
|
||||
---
|
||||
@@ -0,0 +1,9 @@
|
||||
---
|
||||
schema: 1
|
||||
title: Applied
|
||||
order: 2048
|
||||
icon: paperplane
|
||||
iconColor: deep-sky-blue
|
||||
created: 2026-01-15T09:00:00Z
|
||||
modified: 2026-01-15T09:00:00Z
|
||||
---
|
||||
@@ -0,0 +1,9 @@
|
||||
---
|
||||
schema: 1
|
||||
title: Archived
|
||||
order: 5120
|
||||
icon: archivebox
|
||||
iconColor: aluminum
|
||||
created: 2026-01-15T09:00:00Z
|
||||
modified: 2026-01-15T09:00:00Z
|
||||
---
|
||||
@@ -0,0 +1,9 @@
|
||||
---
|
||||
schema: 1
|
||||
title: Wishlist
|
||||
order: 1024
|
||||
icon: star
|
||||
iconColor: smokey-tangerine
|
||||
created: 2026-01-15T09:00:00Z
|
||||
modified: 2026-01-15T09:00:00Z
|
||||
---
|
||||
@@ -0,0 +1,10 @@
|
||||
---
|
||||
schema: 1
|
||||
title: Job Hunt
|
||||
icon: briefcase
|
||||
iconColor: deep-cool-granite
|
||||
template: {order: 500}
|
||||
created: 2026-01-15T09:00:00Z
|
||||
modified: 2026-01-15T09:00:00Z
|
||||
---
|
||||
Keep every application moving from wishlist to offer.
|
||||
@@ -0,0 +1,9 @@
|
||||
---
|
||||
schema: 1
|
||||
title: Next
|
||||
order: 2048
|
||||
icon: forward
|
||||
iconColor: smokey-tangerine
|
||||
created: 2026-01-15T09:00:00Z
|
||||
modified: 2026-01-15T09:00:00Z
|
||||
---
|
||||
@@ -0,0 +1,9 @@
|
||||
---
|
||||
schema: 1
|
||||
title: Now
|
||||
order: 1024
|
||||
icon: flame
|
||||
iconColor: carnation
|
||||
created: 2026-01-15T09:00:00Z
|
||||
modified: 2026-01-15T09:00:00Z
|
||||
---
|
||||
@@ -0,0 +1,9 @@
|
||||
---
|
||||
schema: 1
|
||||
title: Shipped
|
||||
order: 4096
|
||||
icon: shippingbox
|
||||
iconColor: fern
|
||||
created: 2026-01-15T09:00:00Z
|
||||
modified: 2026-01-15T09:00:00Z
|
||||
---
|
||||
@@ -0,0 +1,9 @@
|
||||
---
|
||||
schema: 1
|
||||
title: Later
|
||||
order: 3072
|
||||
icon: clock
|
||||
iconColor: deep-sky-blue
|
||||
created: 2026-01-15T09:00:00Z
|
||||
modified: 2026-01-15T09:00:00Z
|
||||
---
|
||||
@@ -0,0 +1,10 @@
|
||||
---
|
||||
schema: 1
|
||||
title: Roadmap
|
||||
icon: map
|
||||
iconColor: pale-violet
|
||||
template: {order: 800}
|
||||
created: 2026-01-15T09:00:00Z
|
||||
modified: 2026-01-15T09:00:00Z
|
||||
---
|
||||
Plan by horizon: now, next, later — and what already shipped.
|
||||
@@ -0,0 +1,9 @@
|
||||
---
|
||||
schema: 1
|
||||
title: Won
|
||||
order: 4096
|
||||
icon: trophy
|
||||
iconColor: fern
|
||||
created: 2026-01-15T09:00:00Z
|
||||
modified: 2026-01-15T09:00:00Z
|
||||
---
|
||||
@@ -0,0 +1,9 @@
|
||||
---
|
||||
schema: 1
|
||||
title: Lost
|
||||
order: 5120
|
||||
icon: xmark.circle
|
||||
iconColor: carnation
|
||||
created: 2026-01-15T09:00:00Z
|
||||
modified: 2026-01-15T09:00:00Z
|
||||
---
|
||||
@@ -0,0 +1,9 @@
|
||||
---
|
||||
schema: 1
|
||||
title: Leads
|
||||
order: 1024
|
||||
icon: person.crop.circle.badge.plus
|
||||
iconColor: deep-sky-blue
|
||||
created: 2026-01-15T09:00:00Z
|
||||
modified: 2026-01-15T09:00:00Z
|
||||
---
|
||||
@@ -0,0 +1,9 @@
|
||||
---
|
||||
schema: 1
|
||||
title: Contacted
|
||||
order: 2048
|
||||
icon: phone
|
||||
iconColor: light-teal
|
||||
created: 2026-01-15T09:00:00Z
|
||||
modified: 2026-01-15T09:00:00Z
|
||||
---
|
||||
@@ -0,0 +1,9 @@
|
||||
---
|
||||
schema: 1
|
||||
title: Proposal
|
||||
order: 3072
|
||||
icon: doc.text
|
||||
iconColor: smokey-tangerine
|
||||
created: 2026-01-15T09:00:00Z
|
||||
modified: 2026-01-15T09:00:00Z
|
||||
---
|
||||
@@ -0,0 +1,10 @@
|
||||
---
|
||||
schema: 1
|
||||
title: Sales Pipeline
|
||||
icon: chart.line.uptrend.xyaxis
|
||||
iconColor: fern
|
||||
template: {order: 600}
|
||||
created: 2026-01-15T09:00:00Z
|
||||
modified: 2026-01-15T09:00:00Z
|
||||
---
|
||||
Move leads through contact and proposal to closed.
|
||||
@@ -0,0 +1,9 @@
|
||||
---
|
||||
schema: 1
|
||||
title: Done
|
||||
order: 5120
|
||||
icon: checkmark.seal
|
||||
iconColor: fern
|
||||
created: 2026-01-15T09:00:00Z
|
||||
modified: 2026-01-15T09:00:00Z
|
||||
---
|
||||
@@ -0,0 +1,9 @@
|
||||
---
|
||||
schema: 1
|
||||
title: In Progress
|
||||
order: 3072
|
||||
icon: hammer
|
||||
iconColor: smokey-tangerine
|
||||
created: 2026-01-15T09:00:00Z
|
||||
modified: 2026-01-15T09:00:00Z
|
||||
---
|
||||
@@ -0,0 +1,9 @@
|
||||
---
|
||||
schema: 1
|
||||
title: Backlog
|
||||
order: 1024
|
||||
icon: tray.2
|
||||
iconColor: deep-cool-granite
|
||||
created: 2026-01-15T09:00:00Z
|
||||
modified: 2026-01-15T09:00:00Z
|
||||
---
|
||||
@@ -0,0 +1,9 @@
|
||||
---
|
||||
schema: 1
|
||||
title: Ready
|
||||
order: 2048
|
||||
icon: checklist
|
||||
iconColor: deep-sky-blue
|
||||
created: 2026-01-15T09:00:00Z
|
||||
modified: 2026-01-15T09:00:00Z
|
||||
---
|
||||
@@ -0,0 +1,9 @@
|
||||
---
|
||||
schema: 1
|
||||
title: Review
|
||||
order: 4096
|
||||
icon: eye
|
||||
iconColor: pale-violet
|
||||
created: 2026-01-15T09:00:00Z
|
||||
modified: 2026-01-15T09:00:00Z
|
||||
---
|
||||
@@ -0,0 +1,10 @@
|
||||
---
|
||||
schema: 1
|
||||
title: Software Project
|
||||
icon: chevron.left.forwardslash.chevron.right
|
||||
iconColor: deep-sky-blue
|
||||
template: {order: 300}
|
||||
created: 2026-01-15T09:00:00Z
|
||||
modified: 2026-01-15T09:00:00Z
|
||||
---
|
||||
Track features from backlog through review to shipped.
|
||||
@@ -0,0 +1,9 @@
|
||||
---
|
||||
schema: 1
|
||||
title: Inbox
|
||||
order: 1024
|
||||
icon: tray
|
||||
iconColor: deep-cool-granite
|
||||
created: 2026-01-15T09:00:00Z
|
||||
modified: 2026-01-15T09:00:00Z
|
||||
---
|
||||
@@ -0,0 +1,9 @@
|
||||
---
|
||||
schema: 1
|
||||
title: Today
|
||||
order: 3072
|
||||
icon: sun.max
|
||||
iconColor: smokey-tangerine
|
||||
created: 2026-01-15T09:00:00Z
|
||||
modified: 2026-01-15T09:00:00Z
|
||||
---
|
||||
@@ -0,0 +1,9 @@
|
||||
---
|
||||
schema: 1
|
||||
title: Done
|
||||
order: 4096
|
||||
icon: checkmark.circle
|
||||
iconColor: fern
|
||||
created: 2026-01-15T09:00:00Z
|
||||
modified: 2026-01-15T09:00:00Z
|
||||
---
|
||||
@@ -0,0 +1,9 @@
|
||||
---
|
||||
schema: 1
|
||||
title: This Week
|
||||
order: 2048
|
||||
icon: calendar
|
||||
iconColor: deep-sky-blue
|
||||
created: 2026-01-15T09:00:00Z
|
||||
modified: 2026-01-15T09:00:00Z
|
||||
---
|
||||
@@ -0,0 +1,10 @@
|
||||
---
|
||||
schema: 1
|
||||
title: Weekly Planner
|
||||
icon: calendar
|
||||
iconColor: carnation
|
||||
template: {order: 700}
|
||||
created: 2026-01-15T09:00:00Z
|
||||
modified: 2026-01-15T09:00:00Z
|
||||
---
|
||||
Sort the week: what's coming, what's today, what's finished.
|
||||
Reference in New Issue
Block a user