@exaudeus/workrail 3.27.0 → 3.29.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (160) hide show
  1. package/dist/console/assets/{index-FtTaDku8.js → index-BZ6HkxGf.js} +1 -1
  2. package/dist/console/index.html +1 -1
  3. package/dist/manifest.json +3 -3
  4. package/docs/README.md +57 -0
  5. package/docs/adrs/001-hybrid-storage-backend.md +38 -0
  6. package/docs/adrs/002-four-layer-context-classification.md +38 -0
  7. package/docs/adrs/003-checkpoint-trigger-strategy.md +35 -0
  8. package/docs/adrs/004-opt-in-encryption-strategy.md +36 -0
  9. package/docs/adrs/005-agent-first-workflow-execution-tokens.md +105 -0
  10. package/docs/adrs/006-append-only-session-run-event-log.md +76 -0
  11. package/docs/adrs/007-resume-and-checkpoint-only-sessions.md +51 -0
  12. package/docs/adrs/008-blocked-nodes-architectural-upgrade.md +178 -0
  13. package/docs/adrs/009-bridge-mode-single-instance-mcp.md +195 -0
  14. package/docs/adrs/010-release-pipeline.md +89 -0
  15. package/docs/architecture/README.md +7 -0
  16. package/docs/architecture/refactor-audit.md +364 -0
  17. package/docs/authoring-v2.md +527 -0
  18. package/docs/authoring.md +873 -0
  19. package/docs/changelog-recent.md +201 -0
  20. package/docs/configuration.md +505 -0
  21. package/docs/ctc-mcp-proposal.md +518 -0
  22. package/docs/design/README.md +22 -0
  23. package/docs/design/agent-cascade-protocol.md +96 -0
  24. package/docs/design/autonomous-console-design-candidates.md +253 -0
  25. package/docs/design/autonomous-console-design-review.md +111 -0
  26. package/docs/design/autonomous-platform-mvp-discovery.md +525 -0
  27. package/docs/design/claude-code-source-deep-dive.md +713 -0
  28. package/docs/design/console-cyberpunk-ui-discovery.md +504 -0
  29. package/docs/design/console-execution-trace-candidates-final.md +160 -0
  30. package/docs/design/console-execution-trace-candidates.md +211 -0
  31. package/docs/design/console-execution-trace-design-candidates-v2.md +113 -0
  32. package/docs/design/console-execution-trace-design-review.md +74 -0
  33. package/docs/design/console-execution-trace-discovery.md +394 -0
  34. package/docs/design/console-execution-trace-final-review.md +77 -0
  35. package/docs/design/console-execution-trace-review.md +92 -0
  36. package/docs/design/console-performance-discovery.md +415 -0
  37. package/docs/design/console-ui-backlog.md +280 -0
  38. package/docs/design/daemon-architecture-discovery.md +853 -0
  39. package/docs/design/daemon-design-candidates.md +318 -0
  40. package/docs/design/daemon-design-review-findings.md +119 -0
  41. package/docs/design/daemon-engine-design-candidates.md +210 -0
  42. package/docs/design/daemon-engine-design-review.md +131 -0
  43. package/docs/design/daemon-execution-engine-discovery.md +280 -0
  44. package/docs/design/daemon-gap-analysis.md +554 -0
  45. package/docs/design/daemon-owns-console-plan.md +168 -0
  46. package/docs/design/daemon-owns-console-review.md +91 -0
  47. package/docs/design/daemon-owns-console.md +195 -0
  48. package/docs/design/data-model-erd.md +11 -0
  49. package/docs/design/design-candidates-consolidate-dev-staleness.md +98 -0
  50. package/docs/design/design-candidates-walk-cache-depth-limit.md +80 -0
  51. package/docs/design/design-review-consolidate-dev-staleness.md +54 -0
  52. package/docs/design/design-review-walk-cache-depth-limit.md +48 -0
  53. package/docs/design/implementation-plan-consolidate-dev-staleness.md +142 -0
  54. package/docs/design/implementation-plan-walk-cache-depth-limit.md +141 -0
  55. package/docs/design/layer3b-ghost-nodes-design-candidates.md +229 -0
  56. package/docs/design/layer3b-ghost-nodes-design-review.md +93 -0
  57. package/docs/design/layer3b-ghost-nodes-implementation-plan.md +219 -0
  58. package/docs/design/list-workflows-latency-fix-plan.md +128 -0
  59. package/docs/design/list-workflows-latency-fix-review.md +55 -0
  60. package/docs/design/list-workflows-latency-fix.md +109 -0
  61. package/docs/design/native-context-management-api.md +11 -0
  62. package/docs/design/performance-sweep-2026-04.md +96 -0
  63. package/docs/design/routines-guide.md +219 -0
  64. package/docs/design/sequence-diagrams.md +11 -0
  65. package/docs/design/subagent-design-principles.md +220 -0
  66. package/docs/design/temporal-patterns-design-candidates.md +312 -0
  67. package/docs/design/temporal-patterns-design-review-findings.md +163 -0
  68. package/docs/design/test-isolation-from-config-file.md +335 -0
  69. package/docs/design/v2-core-design-locks.md +2746 -0
  70. package/docs/design/v2-lock-registry.json +734 -0
  71. package/docs/design/workflow-authoring-v2.md +1044 -0
  72. package/docs/design/workflow-docs-spec.md +218 -0
  73. package/docs/design/workflow-extension-points.md +687 -0
  74. package/docs/design/workrail-auto-trigger-system.md +359 -0
  75. package/docs/design/workrail-config-file-discovery.md +513 -0
  76. package/docs/docker.md +110 -0
  77. package/docs/generated/v2-lock-closure-plan.md +26 -0
  78. package/docs/generated/v2-lock-coverage.json +797 -0
  79. package/docs/generated/v2-lock-coverage.md +177 -0
  80. package/docs/ideas/backlog.md +3927 -0
  81. package/docs/ideas/design-candidates-mcp-resilience.md +208 -0
  82. package/docs/ideas/design-review-findings-mcp-resilience.md +119 -0
  83. package/docs/ideas/implementation_plan.md +249 -0
  84. package/docs/ideas/third-party-workflow-setup-design-thinking.md +1948 -0
  85. package/docs/implementation/02-architecture.md +316 -0
  86. package/docs/implementation/04-testing-strategy.md +124 -0
  87. package/docs/implementation/09-simple-workflow-guide.md +835 -0
  88. package/docs/implementation/13-advanced-validation-guide.md +874 -0
  89. package/docs/implementation/README.md +21 -0
  90. package/docs/integrations/claude-code.md +300 -0
  91. package/docs/integrations/firebender.md +315 -0
  92. package/docs/migration/v0.1.0.md +147 -0
  93. package/docs/naming-conventions.md +45 -0
  94. package/docs/planning/README.md +104 -0
  95. package/docs/planning/github-ticketing-playbook.md +195 -0
  96. package/docs/plans/README.md +24 -0
  97. package/docs/plans/agent-managed-ticketing-design.md +605 -0
  98. package/docs/plans/agentic-orchestration-roadmap.md +112 -0
  99. package/docs/plans/assessment-gates-engine-handoff.md +536 -0
  100. package/docs/plans/content-coherence-and-references.md +151 -0
  101. package/docs/plans/library-extraction-plan.md +340 -0
  102. package/docs/plans/mr-review-workflow-redesign.md +1451 -0
  103. package/docs/plans/native-context-management-epic.md +11 -0
  104. package/docs/plans/perf-fixes-design-candidates.md +225 -0
  105. package/docs/plans/perf-fixes-design-review-findings.md +61 -0
  106. package/docs/plans/perf-fixes-new-issues-candidates.md +264 -0
  107. package/docs/plans/perf-fixes-new-issues-review.md +110 -0
  108. package/docs/plans/prompt-fragments.md +53 -0
  109. package/docs/plans/ui-ux-workflow-design-candidates.md +120 -0
  110. package/docs/plans/ui-ux-workflow-discovery.md +100 -0
  111. package/docs/plans/ui-ux-workflow-review.md +48 -0
  112. package/docs/plans/v2-followup-enhancements.md +587 -0
  113. package/docs/plans/workflow-categories-candidates.md +105 -0
  114. package/docs/plans/workflow-categories-discovery.md +110 -0
  115. package/docs/plans/workflow-categories-review.md +51 -0
  116. package/docs/plans/workflow-discovery-model-candidates.md +94 -0
  117. package/docs/plans/workflow-discovery-model-discovery.md +74 -0
  118. package/docs/plans/workflow-discovery-model-review.md +48 -0
  119. package/docs/plans/workflow-source-setup-phase-1.md +245 -0
  120. package/docs/plans/workflow-source-setup-phase-2.md +361 -0
  121. package/docs/plans/workflow-staleness-detection-candidates.md +104 -0
  122. package/docs/plans/workflow-staleness-detection-review.md +58 -0
  123. package/docs/plans/workflow-staleness-detection.md +80 -0
  124. package/docs/plans/workflow-v2-design.md +69 -0
  125. package/docs/plans/workflow-v2-roadmap.md +74 -0
  126. package/docs/plans/workflow-validation-design.md +98 -0
  127. package/docs/plans/workflow-validation-roadmap.md +108 -0
  128. package/docs/plans/workrail-platform-vision.md +420 -0
  129. package/docs/reference/agent-context-cleaner-snippet.md +94 -0
  130. package/docs/reference/agent-context-guidance.md +140 -0
  131. package/docs/reference/context-optimization.md +284 -0
  132. package/docs/reference/example-workflow-repository-template/.github/workflows/validate.yml +125 -0
  133. package/docs/reference/example-workflow-repository-template/README.md +268 -0
  134. package/docs/reference/example-workflow-repository-template/workflows/example-workflow.json +80 -0
  135. package/docs/reference/external-workflow-repositories.md +916 -0
  136. package/docs/reference/feature-flags-architecture.md +472 -0
  137. package/docs/reference/feature-flags.md +349 -0
  138. package/docs/reference/god-tier-workflow-validation.md +272 -0
  139. package/docs/reference/loop-optimization.md +209 -0
  140. package/docs/reference/loop-validation.md +176 -0
  141. package/docs/reference/loops.md +465 -0
  142. package/docs/reference/mcp-platform-constraints.md +59 -0
  143. package/docs/reference/recovery.md +88 -0
  144. package/docs/reference/releases.md +177 -0
  145. package/docs/reference/troubleshooting.md +105 -0
  146. package/docs/reference/workflow-execution-contract.md +998 -0
  147. package/docs/roadmap/README.md +22 -0
  148. package/docs/roadmap/legacy-planning-status.md +103 -0
  149. package/docs/roadmap/now-next-later.md +70 -0
  150. package/docs/roadmap/open-work-inventory.md +389 -0
  151. package/docs/tickets/README.md +39 -0
  152. package/docs/tickets/next-up.md +76 -0
  153. package/docs/workflow-management.md +317 -0
  154. package/docs/workflow-templates.md +423 -0
  155. package/docs/workflow-validation.md +184 -0
  156. package/docs/workflows.md +254 -0
  157. package/package.json +3 -1
  158. package/spec/authoring-spec.json +61 -16
  159. package/workflows/workflow-for-workflows.json +252 -93
  160. package/workflows/workflow-for-workflows.v2.json +188 -77
@@ -0,0 +1,1948 @@
1
+ # Third-Party Workflow Setup Design Thinking
2
+
3
+ > This is the **design-thinking / exploration doc** for this topic.
4
+ >
5
+ > For the **canonical near-term plan/design**, prefer `docs/plans/workflow-source-setup-phase-1.md`.
6
+
7
+ ## Context / Problem
8
+
9
+ ### Current state
10
+
11
+ - WorkRail can load workflows from multiple source kinds:
12
+ - bundled workflows
13
+ - user workflows in `~/.workrail/workflows/`
14
+ - project workflows in `./workflows/`
15
+ - custom directories via `WORKFLOW_STORAGE_PATH`
16
+ - Git repositories via `WORKFLOW_GIT_REPOS` / `WORKFLOW_GIT_REPO_URL`
17
+ - remote registries via `WORKFLOW_REGISTRY_URL`
18
+ - plugin paths through plugin storage configuration
19
+ - The current user-facing setup experience is still fragmented and env-first.
20
+ - The current source model is stronger than the UX:
21
+ - `EnhancedMultiSourceWorkflowStorage` already unifies multiple source kinds internally
22
+ - graceful degradation and source precedence already exist
23
+ - auth resolution for Git hosts already exists
24
+ - Current v2 MCP workflow tools already accept `workspacePath`, but `list_workflows` and `inspect_workflow` do not currently require it.
25
+ - Current workspace resolution still falls back through:
26
+ - explicit `workspacePath`
27
+ - then MCP roots
28
+ - then server process cwd
29
+ - There is a mismatch between the current shipped setup UX and the future direction already described in `docs/plans/workrail-platform-vision.md`, which proposes:
30
+ - `.workrail/config.json`
31
+ - configured workspace roots
32
+ - auto-discovery of `.workrail/workflows/`
33
+ - setup prompts instead of manual env authoring
34
+ - The exact ownership of `.workrail/config.json` is still under-specified:
35
+ - planning docs use it as the likely home for remembered roots / source setup
36
+ - other repo artifacts already use it as a local environment / capability cache
37
+ - phase-1 design should avoid turning it into an overloaded catch-all without a clearer file-ownership model
38
+
39
+ ### User problem
40
+
41
+ - Hooking up third-party workflows currently feels like infrastructure wiring rather than product setup.
42
+ - The user has to understand multiple env vars, source kinds, auth conventions, and source precedence.
43
+ - Some current names are misleading:
44
+ - `WORKFLOW_GIT_REPOS` also accepts local paths and `file://` URLs
45
+ - source configuration is split across multiple variables that all conceptually mean "where should WorkRail find workflows?"
46
+ - The CLI helps only partially:
47
+ - `workrail init` initializes `~/.workrail/workflows/`
48
+ - `sources` only surfaces bundled, user, project, and custom path sources
49
+ - Git, remote registry, and plugin sources are not surfaced coherently in the current CLI UX
50
+ - MCP roots are not trustworthy enough to be the primary source of workspace identity for workflow discovery decisions.
51
+
52
+ ### Opportunity
53
+
54
+ - Make third-party workflow hookup feel like:
55
+ - installing a package
56
+ - adding a repo once
57
+ - importing a workflow from a URL or path
58
+ - or doing nothing because the right workflows are auto-discovered
59
+ - Let WorkRail help users set this up instead of forcing them to hand-edit MCP env config in their IDE.
60
+ - Let WorkRail silently remember relevant repos in user-level config so cross-repo workflows improve over time without requiring repo changes.
61
+
62
+ ## Persona
63
+
64
+ - **Primary persona**: developer or team lead who found a useful workflow collection and wants WorkRail to use it with minimal setup friction
65
+ - **Job-to-be-done**: "I found workflows I want. Make them available in WorkRail quickly, safely, and in a way that will keep working."
66
+ - **Secondary persona**: team maintaining shared workflows across repos or modules who wants teammates to get the workflows with near-zero manual setup
67
+
68
+ ## Persona card (primary)
69
+
70
+ - **Name**: Alex, the workflow adopter
71
+ - **Context**: Alex is using WorkRail through an MCP client / agentic IDE and has found a useful workflow repo, directory, or package that they want to make available quickly.
72
+ - **Goals**:
73
+ - get third-party workflows working with minimal setup
74
+ - avoid learning multiple configuration surfaces
75
+ - understand whether the setup is personal, team-shared, or repo-local
76
+ - trust that the resulting setup will keep working across sessions and teammates
77
+ - **Pains**:
78
+ - setup is fragmented across multiple env vars and concepts
79
+ - source kinds are exposed as implementation details
80
+ - some field names do not match actual behavior
81
+ - current tooling does not fully explain active sources or failures
82
+ - **Constraints**:
83
+ - may be using a hosted or local IDE with limited willingness to edit MCP config by hand
84
+ - may need to connect to private or self-hosted Git
85
+ - may need a setup that is either personal-only or team-shareable
86
+ - **Quotes/observations (from evidence we have)**:
87
+ - Observation: current source configuration is split across `WORKFLOW_STORAGE_PATH`, `WORKFLOW_GIT_REPOS`, `WORKFLOW_GIT_REPO_URL`, `WORKFLOW_REGISTRY_URL`, include flags, and auth env vars.
88
+ - Observation: `WORKFLOW_GIT_REPOS` accepts local paths and `file://` URLs in addition to true Git remotes.
89
+ - Observation: `workrail init` only initializes `~/.workrail/workflows/` with a sample workflow and does not help attach third-party sources.
90
+ - Observation: `sources.ts` only reports bundled, user, project, and custom sources, even though runtime storage supports git, remote, and plugin sources.
91
+ - Observation: `docs/plans/workrail-platform-vision.md` already proposes `.workrail/config.json`, configured workspace roots, recursive `.workrail/workflows/` discovery, and a setup prompt.
92
+
93
+ ## POV + HMW
94
+
95
+ ### Point of view
96
+
97
+ - Users want WorkRail to feel like it understands workflow sources as a product concern, not as a low-level server configuration problem.
98
+ - WorkRail already has enough storage architecture to support a much better experience, but the configuration surface and setup path lag behind that capability.
99
+
100
+ ### How might we
101
+
102
+ - How might we make connecting third-party workflows feel nearly automatic?
103
+ - How might we let WorkRail own the setup journey instead of outsourcing it to manual `firebender.json` edits?
104
+ - How might we support local folders, repos, self-hosted Git, registries, and shared team workflows without making users learn each source type separately?
105
+ - How might we preserve explicitness, safety, and debuggability while making the common path dramatically simpler?
106
+
107
+ ## POV (Point of View)
108
+
109
+ - **Alex, the workflow adopter** needs a way to share and connect workflows through a simple, guided, and inspectable setup flow because the current env-first model exposes storage and auth details too early and does not make the resulting source provenance easy enough to verify.
110
+
111
+ ## Problem statement (2–4 lines)
112
+
113
+ - WorkRail already supports multiple workflow source kinds, but the setup experience is fragmented, implementation-shaped, and too dependent on manual MCP/env configuration.
114
+ - This makes connecting third-party workflows feel like server wiring instead of a product capability.
115
+ - The result is unnecessary cognitive load for individuals and a weak sharing story for teams.
116
+
117
+ ## Alternative framings (2)
118
+
119
+ - **Alternative framing 1**: The real problem may be less about configuration shape and more about the absence of a first-class install/setup flow. In that framing, even messy underlying config could be acceptable if WorkRail reliably hides it behind guided setup.
120
+ - **Alternative framing 2**: The real problem may be workflow discovery and provenance, not connection itself. In that framing, users may tolerate setup complexity if WorkRail clearly shows what is available, where it came from, and why it is or is not working.
121
+
122
+ ## How might we… (3–7)
123
+
124
+ - How might we make "connect this workflow source" a single user intent regardless of whether the source is a local folder, Git repo, or registry?
125
+ - How might we move canonical workflow-source configuration into `.workrail/` so it feels like WorkRail configuration rather than MCP wiring?
126
+ - How might we let WorkRail guide setup for private and self-hosted Git without forcing users to learn hostname-derived token rules?
127
+ - How might we maximize team sharing through repo-local conventions and root registration rather than per-user MCP edits?
128
+ - How might we preserve explicit source provenance, precedence, and diagnostics while simplifying the common path?
129
+ - How might we make verification of “where these workflows came from” simple enough that users trust the result immediately after setup?
130
+ - How might we keep weaker models and mixed old/new docs on the preferred setup path instead of drifting back to legacy env-first advice?
131
+
132
+ ## Success criteria (measurable where possible)
133
+
134
+ - A user can connect a common third-party workflow source in **one primary flow** without reading env-var reference docs.
135
+ - Common cases fit within **1–3 deliberate user actions** after the user has the source URL/path.
136
+ - WorkRail can explain **all active workflow sources** with type, scope, provenance, and health.
137
+ - A repo-local team sharing pattern exists that does **not** require each teammate to hand-author multiple source env vars.
138
+ - When rooted-sharing and legacy env-based sources coexist, WorkRail can explain precedence clearly enough that users understand why a workflow is visible.
139
+ - `workspacePath` is always explicit and required for workflow discovery-sensitive tools, so WorkRail never silently anchors discovery to untrusted MCP roots or server cwd.
140
+ - Cross-repo workflows can surface from user-remembered repo roots without requiring the current repo to vendor or merge shared workflows.
141
+ - Self-hosted Git setup works through either:
142
+ - guided HTTPS auth setup, or
143
+ - SSH setup with no token ceremony
144
+ - Existing env-var configurations continue to work during migration.
145
+
146
+ ## Key tensions / tradeoffs
147
+
148
+ - **Convention vs explicit registration**: auto-discovery reduces setup but can make source provenance less obvious if overused.
149
+ - **Install/import vs live mount**: importing into `.workrail/` may simplify runtime behavior, while live sources preserve freshness and reduce duplication.
150
+ - **Project-local vs user-global config**: project config helps sharing; user config helps personal portability.
151
+ - **Automation vs portability**: WorkRail-managed setup can be great, but MCP client config is outside WorkRail’s full control in some environments.
152
+ - **Simplicity vs debuggability**: hiding complexity helps the happy path, but users still need a trustworthy mental model when something breaks.
153
+
154
+ ## Assumptions
155
+
156
+ - Users would prefer a WorkRail-owned setup flow over manual MCP env editing.
157
+ - The `.workrail/` namespace is an acceptable home for workflow-source configuration, but the exact split between user-global root memory, repo-local metadata, and other `.workrail/*` files still needs to be designed explicitly.
158
+ - Team-sharing is important enough to prioritize over a purely personal setup model.
159
+ - The existing internal source abstraction is sufficient foundation for a cleaner UX without a major storage rewrite.
160
+ - A guided setup flow can handle self-hosted/private Git well enough to materially reduce user confusion.
161
+
162
+ ## Riskiest assumption (pick one)
163
+
164
+ - **Riskiest assumption**: users want WorkRail itself to own setup and configuration of workflow sources, rather than preferring explicit manual control through their MCP client config.
165
+
166
+ ## What would change our mind?
167
+
168
+ - Evidence that most users already succeed with the current env-first setup and that their real pain is choosing, finding, or trusting workflows rather than connecting them.
169
+ - Evidence that users or teams strongly prefer explicit MCP-managed configuration and are uncomfortable with WorkRail-managed config under `.workrail/`.
170
+ - Technical constraints showing that WorkRail cannot provide a reliable cross-client guided setup experience without brittle IDE-specific behavior.
171
+
172
+ ## Out-of-scope
173
+
174
+ - Redesigning the workflow execution protocol itself
175
+ - Changing durable session/storage architecture unrelated to workflow source setup
176
+ - Solving trust/signing for all third-party workflow distribution in this pass
177
+ - Reworking the full workflow discovery taxonomy beyond what is necessary for setup and source visibility
178
+
179
+ ### Definition reflection
180
+
181
+ - **What would change our mind about the problem framing?**
182
+ - strong evidence that the main pain is discovery/trust rather than hookup
183
+ - strong evidence that users prefer explicit MCP-level control over WorkRail-managed setup
184
+ - **What is the riskiest assumption?**
185
+ - that WorkRail-owned setup is more desirable than explicit external configuration
186
+
187
+ ## Success criteria
188
+
189
+ - A new user can connect a third-party workflow source without reading detailed env-var documentation.
190
+ - Common setup paths are discoverable from within WorkRail itself.
191
+ - Team-sharing works through conventions and stable project-local config, not only personal IDE config.
192
+ - Self-hosted Git and auth remain possible without forcing users to understand hostname-to-env-var rules up front.
193
+ - The system keeps a clear, inspectable model of where workflows came from and why they are available.
194
+ - Existing env-var based setups remain backward compatible.
195
+ - Failure states are diagnosable and expressed in user language.
196
+
197
+ ## Journey map (lightweight)
198
+
199
+ - **Step**: Find a workflow source
200
+ - **Pain**: user has a URL/path/repo but no obvious "install" or "connect" entry point
201
+ - **Opportunity**: support a single user intent such as "install this workflow source"
202
+ - **Step**: Decide where config belongs
203
+ - **Pain**: unclear whether setup should live in IDE MCP config, repo config, user config, or env vars
204
+ - **Opportunity**: establish a canonical `.workrail/` config model with clear personal vs project scopes
205
+ - **Step**: Authenticate if private/self-hosted
206
+ - **Pain**: auth conventions are real but implicit; hostname-derived env var rules are not user-friendly
207
+ - **Opportunity**: let WorkRail infer auth needs and guide the user through the minimum required secret wiring
208
+ - **Step**: Verify discovery
209
+ - **Pain**: current source inspection is incomplete and does not reflect all runtime source kinds
210
+ - **Opportunity**: expose a full source inventory with provenance, health, and precedence
211
+ - **Step**: Share with team
212
+ - **Pain**: current model makes personal MCP config too central for something that often wants repo-level sharing
213
+ - **Opportunity**: favor repo-local `.workrail/` conventions and one-time root registration
214
+
215
+ ## Observations (5)
216
+
217
+ - **O1**: `EnhancedMultiSourceWorkflowStorage` already supports local directories, Git repositories, remote registries, and plugin sources behind one internal abstraction.
218
+ - **O2**: The public configuration surface is fragmented across multiple env vars, rather than one canonical source model.
219
+ - **O3**: `WORKFLOW_GIT_REPOS` is semantically overloaded; it accepts remote Git URLs, SSH Git URLs, `file://` URLs, and absolute local paths.
220
+ - **O4**: `workrail init` is currently narrow; it creates `~/.workrail/workflows/` and a sample workflow, but does not help connect external sources.
221
+ - **O5**: The repo’s platform vision already describes a simpler future centered on `.workrail/config.json`, workspace roots, recursive `.workrail/workflows/` discovery, and a setup prompt.
222
+
223
+ ## Insights (5)
224
+
225
+ - **I1**: The hardest part of setup is likely not missing storage capability but missing productized setup UX.
226
+ - **Evidence**: O1, O2, O4
227
+ - **I2**: The current configuration vocabulary leaks implementation details and creates unnecessary cognitive load.
228
+ - **Evidence**: O2, O3
229
+ - **I3**: WorkRail already contains the architectural seeds of a better experience, so the right move is probably evolutionary rather than inventing a net-new system.
230
+ - **Evidence**: O1, O5
231
+ - **I4**: Team workflow sharing likely wants repo-local convention and discovery more than personal IDE configuration.
232
+ - **Evidence**: O5, quote/observation about team-sharing desire in the Persona section
233
+ - **I5**: Source visibility and diagnostics are part of the setup experience, not a separate afterthought. If users cannot inspect active sources clearly, setup will still feel fragile even if connection succeeds.
234
+ - **Evidence**: O4, quote/observation about incomplete `sources.ts`, O2
235
+
236
+ ## Evidence
237
+
238
+ - **Facts we have**:
239
+ - runtime source kinds are first-class in `src/types/workflow-source.ts`
240
+ - current setup is env-first in `docs/configuration.md`
241
+ - runtime loading is unified in `src/infrastructure/storage/enhanced-multi-source-workflow-storage.ts`
242
+ - self-hosted Git auth resolution already exists in hostname-derived form
243
+ - current CLI setup and source inspection are narrower than runtime capabilities
244
+ - planning docs already point toward `.workrail/config.json` and auto-discovery
245
+ - **Evidence gaps**:
246
+ - we do not yet have direct user research or usage telemetry showing which setup paths are most common
247
+ - we do not yet know whether users prefer "install/import" semantics or "register source" semantics
248
+ - we do not yet know how much MCP client automation is realistically possible across IDEs without becoming brittle
249
+ - we do not yet know which failure modes are most frequent in practice
250
+
251
+ ## Constraints (environment/tooling/model)
252
+
253
+ - Must remain backward compatible with existing env-var based configuration.
254
+ - Must preserve current validation, security checks, and source precedence semantics unless intentionally changed.
255
+ - Must support local paths, repo-local sharing, remote Git, and self-hosted Git.
256
+ - Should not trust MCP roots enough to use them as the authoritative workspace identity for workflow discovery.
257
+ - Should not assume WorkRail can safely mutate every MCP client configuration automatically.
258
+ - Should align with existing `.workrail/` concepts already present in the repo, especially `.workrail/bindings.json` and planned `.workrail/config.json`.
259
+ - Should avoid overloading `.workrail/config.json` with unrelated responsibilities if user-level remembered roots and environment/capability state both need durable storage.
260
+ - The WorkRail process is not inherently tied to one repo, so repo context must come from explicit caller input and user-level remembered roots.
261
+
262
+ ## Observed pain themes (5–10)
263
+
264
+ - fragmented configuration surface
265
+ - source-type leakage into user setup
266
+ - misleading names for overloaded fields
267
+ - incomplete source inspection UX
268
+ - setup is personal-config centric instead of team-sharing centric
269
+ - auth rules are technically sound but ergonomically hidden
270
+ - current install/setup flow is too manual
271
+ - current UX makes users reason about storage internals too early
272
+
273
+ ## Unknowns (explicit list)
274
+
275
+ - Should the canonical user action be "install this workflow" or "add this workflow source"?
276
+ - Should remote Git remain a live runtime source, or should it primarily be an import/install mechanism into `.workrail/`?
277
+ - Should `.workrail/config.json` be user-global, project-local, or layered?
278
+ - Should user-level remembered roots and repo-local metadata live in the same config file or in separate `.workrail/*` files?
279
+ - How much auto-discovery is desirable before source provenance becomes confusing?
280
+ - Should public/community workflows be installed into user storage, mounted as sources, or both?
281
+ - What should the trust model be for auto-installing or auto-discovering third-party sources?
282
+ - What is the smallest migration bridge that keeps current `./workflows`, `~/.workrail/workflows/`, and env-based sources understandable while the preferred rooted-sharing path is introduced?
283
+
284
+ ## Interpretation risks (3)
285
+
286
+ - We may be over-reading env-var complexity as the main pain when the deeper pain could actually be lack of an install/setup flow.
287
+ - We may be over-generalizing from the platform vision docs, which could reflect desired future direction rather than validated user need.
288
+ - Some of what appears to be poor UX may be deliberate separation of concerns between MCP client config and WorkRail runtime config.
289
+
290
+ ### Reflection
291
+
292
+ - **Which pain themes are likely symptoms vs root causes?**
293
+ - likely symptoms:
294
+ - fragmented env vars
295
+ - incomplete source inspection
296
+ - hidden auth conventions
297
+ - likely root causes:
298
+ - no canonical setup model
299
+ - no productized install/setup flow
300
+ - config ownership split awkwardly between MCP client config and WorkRail runtime concerns
301
+ - **What would we need to observe to disprove our top 1–2 interpretations?**
302
+ - If users mostly succeed once they have docs and rarely ask for setup help, then setup complexity may be acceptable and the real issue may be discovery, not configuration.
303
+ - If teams strongly prefer explicit MCP env control and distrust WorkRail-managed config, then a `.workrail/config.json`-first solution may be less desirable than it appears.
304
+
305
+ ## Idea Backlog (append-only)
306
+
307
+ - DT-001: Replace fragmented env vars with a single canonical source model in `.workrail/config.json`.
308
+ - DT-002: Add setup/install flows so users can say "install this workflow source" and WorkRail handles the config.
309
+ - DT-003: Prefer convention and auto-discovery over explicit registration where possible.
310
+ - DT-004: Separate "install/import" from "runtime source resolution" if that reduces complexity.
311
+ - DT-005: Improve source introspection UX so users can see all active sources, their type, health, and precedence.
312
+
313
+ ### Idea Backlog (Round 1)
314
+
315
+ - **DT-001 — Canonical `.workrail/config.json`**
316
+ - **Category**: configuration model
317
+ - **Sketch**: Introduce a canonical layered config model under `.workrail/`, with user-level remembered roots / source state and any repo-local metadata split deliberately enough that env vars can become legacy overrides without `.workrail/config.json` turning into an overloaded catch-all.
318
+ - **Why it might help**: moves workflow-source configuration into WorkRail’s own domain and out of ad hoc MCP env wiring while leaving room for clearer file ownership.
319
+ - **Open question**: which data belongs in `~/.workrail/config.json`, which belongs in repo-local `.workrail/*`, and which should remain separate from environment / capability state?
320
+
321
+ - **DT-002 — `workrail install <url-or-path>`**
322
+ - **Category**: installation UX
323
+ - **Sketch**: Add a CLI / MCP-facing install action that accepts a URL or path and chooses the right setup path automatically.
324
+ - **Why it might help**: turns many source types into one user intent.
325
+ - **Open question**: should install create a live source or import files into a managed location?
326
+
327
+ - **DT-003 — Setup workflow for source hookup**
328
+ - **Category**: installation UX
329
+ - **Sketch**: Ship a dedicated WorkRail workflow that interviews the user, detects source type, explains scope options, and configures the source.
330
+ - **Why it might help**: WorkRail would demonstrate its own product philosophy while hiding setup complexity.
331
+ - **Open question**: how much can it automate across different MCP clients vs only guiding the user?
332
+
333
+ - **DT-004 — Auto-detect repo-local `.workrail/workflows/`**
334
+ - **Category**: discovery / convention
335
+ - **Sketch**: Auto-discover `.workrail/workflows/` inside configured workspace roots and ancestor repos.
336
+ - **Why it might help**: makes team sharing convention-based and almost zero-config after root registration.
337
+ - **Open question**: how aggressive should recursive scanning be?
338
+
339
+ - **DT-005 — One-time root registration**
340
+ - **Category**: sharing model
341
+ - **Sketch**: Let users register a repo or monorepo as a workspace root once, then discover `.workrail/workflows/` within it automatically.
342
+ - **Why it might help**: shifts from per-source setup to per-root setup.
343
+ - **Open question**: should WorkRail infer likely roots from the current workspace automatically?
344
+
345
+ - **DT-006 — Source doctor / diagnostics command**
346
+ - **Category**: diagnostics
347
+ - **Sketch**: Add `workrail sources --doctor` or equivalent MCP flow that validates every source, auth path, cache, and discovery decision.
348
+ - **Why it might help**: setup only feels simple if failures are easy to understand.
349
+ - **Open question**: what should the output contract be for agentic consumption?
350
+
351
+ - **DT-007 — Guided self-hosted Git auth helper**
352
+ - **Category**: auth UX
353
+ - **Sketch**: Ask for a self-hosted Git URL, derive the expected token env var name, and guide the user through HTTPS token or SSH setup.
354
+ - **Why it might help**: removes the need to memorize hostname-to-env-var rules.
355
+ - **Open question**: should WorkRail ever write secrets, or only tell the user exactly where to put them?
356
+
357
+ - **DT-008 — Live source vs imported copy mode**
358
+ - **Category**: installation model
359
+ - **Sketch**: Every install flow offers two modes:
360
+ - `mount`: keep a live external source
361
+ - `import`: copy or clone into managed `.workrail/` storage
362
+ - **Why it might help**: makes the tradeoff explicit and matches different trust/freshness needs.
363
+ - **Open question**: which mode should be default for which source types?
364
+
365
+ - **DT-009 — Source manifest per installed source**
366
+ - **Category**: provenance
367
+ - **Sketch**: Represent each connected source as a manifest file in `.workrail/sources/` with type, scope, origin, health, and install metadata.
368
+ - **Why it might help**: gives inspectable durable truth and avoids a single opaque mega-config.
369
+ - **Open question**: is one file per source better than a single aggregated config?
370
+
371
+ - **DT-010 — Human-friendly source names**
372
+ - **Category**: UX polish
373
+ - **Sketch**: Allow source aliases like `team-workflows`, `payments-module`, or `alex-private-library`.
374
+ - **Why it might help**: reduces raw URL/path exposure in day-to-day usage.
375
+ - **Open question**: how should aliases interact with source precedence and ambiguity?
376
+
377
+ - **DT-011 — Install from repository URL with smart defaults**
378
+ - **Category**: installation UX
379
+ - **Sketch**: If the user gives a Git URL, WorkRail infers branch `main`, chooses cache location, validates structure, and proposes the right scope.
380
+ - **Why it might help**: removes most Git-specific setup ceremony.
381
+ - **Open question**: how should fallback behavior work when `main` is missing?
382
+
383
+ - **DT-012 — Install from a workflow directory artifact**
384
+ - **Category**: packaging / distribution
385
+ - **Sketch**: Treat a workflow directory with co-located refs as a first-class install unit, not just single `.json` files.
386
+ - **Why it might help**: aligns with the platform vision’s portability story.
387
+ - **Open question**: how should references be validated and preserved on install?
388
+
389
+ - **DT-013 — Recommend likely sources in current workspace**
390
+ - **Category**: auto-detection
391
+ - **Sketch**: On first run or on demand, WorkRail scans the workspace for likely workflow folders or repos and offers to attach them.
392
+ - **Why it might help**: makes setup proactive instead of doc-driven.
393
+ - **Open question**: how do we avoid noisy or creepy-feeling suggestions?
394
+
395
+ - **DT-014 — Source visibility inside `list_workflows`**
396
+ - **Category**: discovery UX
397
+ - **Sketch**: Present workflows grouped by source and scope, with clear labels for built-in, user, repo-local, installed, imported, and external.
398
+ - **Why it might help**: users understand the outcome of setup immediately.
399
+ - **Open question**: how much source detail should be exposed without overwhelming agents?
400
+
401
+ - **DT-015 — Health states for sources**
402
+ - **Category**: diagnostics
403
+ - **Sketch**: Assign explicit states like `active`, `stale`, `auth-needed`, `missing`, `invalid`, `shadowed`.
404
+ - **Why it might help**: makes source issues explainable and scriptable.
405
+ - **Open question**: which states should block discovery vs degrade gracefully?
406
+
407
+ - **DT-016 — Project-scoped shareable config + user overrides**
408
+ - **Category**: config layering
409
+ - **Sketch**: Put team-default sources in repo `.workrail/config.json`, with user-private overrides in `~/.workrail/config.json`.
410
+ - **Why it might help**: balances team sharing and personal customization cleanly.
411
+ - **Open question**: what should the merge / precedence rules be?
412
+
413
+ - **DT-017 — “Make this repo a workflow library” helper**
414
+ - **Category**: sharing / authoring
415
+ - **Sketch**: Add a setup helper that prepares a repo for sharing workflows by creating `.workrail/workflows/`, optional refs layout, and config stubs.
416
+ - **Why it might help**: simplifies the producer side as well as the consumer side.
417
+ - **Open question**: should this be CLI-only, workflow-driven, or both?
418
+
419
+ - **DT-018 — Explicit trust / review gate for third-party installs**
420
+ - **Category**: trust model
421
+ - **Sketch**: Before enabling a third-party source, show its origin, files, permissions implications, and whether it is being mounted or imported.
422
+ - **Why it might help**: keeps simplification from becoming opaque or unsafe.
423
+ - **Open question**: how lightweight can the trust review be without becoming annoying?
424
+
425
+ - **DT-019 — Source lockfile / snapshot pinning**
426
+ - **Category**: reproducibility
427
+ - **Sketch**: Allow users or teams to pin external workflow sources to a commit, tag, or snapshot.
428
+ - **Why it might help**: makes team behavior stable and debuggable even when using external Git.
429
+ - **Open question**: should this be source-level or workflow-level?
430
+
431
+ - **DT-020 — “Just use this folder” ultra-simple mode**
432
+ - **Category**: simplest path
433
+ - **Sketch**: Support a dead-simple path where the user points WorkRail at a folder once and everything there is treated as a local workflow library.
434
+ - **Why it might help**: covers the most basic case with minimal ceremony.
435
+ - **Open question**: should this live as a shortcut on top of the richer source model or as a separate entry point?
436
+
437
+ ### Idea Backlog (Round 2)
438
+
439
+ - **DT-021 — Workflow source inbox**
440
+ - **Category**: analogy / logistics
441
+ - **Sketch**: Treat third-party workflow hookup like an inbox. Users drop URLs, paths, or artifacts into a queue, and WorkRail classifies, validates, and offers installation actions.
442
+ - **Why it might help**: separates “I found something” from “I know exactly how it should be wired.”
443
+ - **Open question**: should the inbox be explicit (`.workrail/inbox/`) or conversational only?
444
+
445
+ - **DT-022 — Package manager style channels**
446
+ - **Category**: analogy / package management
447
+ - **Sketch**: Users subscribe to channels like `built-in`, `team`, `community`, `private`, each with distinct trust and update defaults.
448
+ - **Why it might help**: simplifies mental models by grouping sources around intent rather than storage kind.
449
+ - **Open question**: how much source flexibility is lost if channels become the main UX?
450
+
451
+ - **DT-023 — Compiler-style source graph**
452
+ - **Category**: analogy / compilers
453
+ - **Sketch**: Model workflow sources as a resolved graph with layers, shadowing, diagnostics, and normalized provenance similar to an import/module graph.
454
+ - **Why it might help**: gives a precise, debuggable internal and user-facing model.
455
+ - **Open question**: can that power be exposed simply enough for users?
456
+
457
+ - **DT-024 — Aviation preflight checklist for source enablement**
458
+ - **Category**: analogy / aviation
459
+ - **Sketch**: Every new source goes through a short preflight: reachable, valid structure, auth OK, trust OK, precedence clear, refs resolvable.
460
+ - **Why it might help**: turns hidden failure modes into a consistent verification ritual.
461
+ - **Open question**: how do we keep the preflight lightweight for local/simple cases?
462
+
463
+ - **DT-025 — Healthcare intake form for setup**
464
+ - **Category**: analogy / healthcare
465
+ - **Sketch**: Ask a small number of triage questions first:
466
+ - where is the source?
467
+ - who should see it?
468
+ - how should it update?
469
+ - is it private?
470
+ - **Why it might help**: leads users to the right model without exposing implementation vocabulary.
471
+ - **Open question**: which questions are essential vs annoying?
472
+
473
+ - **DT-026 — Financial portfolio view for sources**
474
+ - **Category**: analogy / finance
475
+ - **Sketch**: Show a portfolio of workflow sources with risk/trust, freshness, scope, and contribution to the available workflow catalog.
476
+ - **Why it might help**: encourages an inspectable, managed relationship with sources rather than invisible background state.
477
+ - **Open question**: is this overkill for most users?
478
+
479
+ - **DT-027 — Root-only world (constraint: assume only files)**
480
+ - **Category**: constraint inversion
481
+ - **Sketch**: Assume there are no remote live sources at runtime. Everything must be files in discovered `.workrail/workflows/` directories under known roots.
482
+ - **How the constraint changes the solution**: pushes WorkRail to focus on import/install and root registration instead of runtime source heterogeneity.
483
+ - **Why it might help**: radically simplifies runtime behavior and provenance.
484
+ - **Open question**: does giving up live remote sources hurt freshness too much?
485
+
486
+ - **DT-028 — No JSON config (constraint: assume no JSON)**
487
+ - **Category**: constraint inversion
488
+ - **Sketch**: Assume there is no `.workrail/config.json`. Setup must be represented only by directory conventions, source manifests, or simple single-purpose files.
489
+ - **How the constraint changes the solution**: favors convention and per-source artifacts over centralized configuration.
490
+ - **Why it might help**: reduces config syntax burden and merge-conflict pain.
491
+ - **Open question**: when does convention become too implicit?
492
+
493
+ - **DT-029 — Stateless setup assistant (constraint: assume no state)**
494
+ - **Category**: constraint inversion
495
+ - **Sketch**: Assume WorkRail cannot retain setup wizard state between turns. The setup flow must be idempotent and infer everything from current files, roots, and user input each time.
496
+ - **How the constraint changes the solution**: favors deterministic re-scans and explicit manifests over hidden session state.
497
+ - **Why it might help**: improves resilience and debuggability.
498
+ - **Open question**: how much user convenience is lost without remembered partial setup state?
499
+
500
+ - **DT-030 — Event-only source setup (constraint: assume only events)**
501
+ - **Category**: constraint inversion
502
+ - **Sketch**: Treat source configuration changes as append-only setup events that project into the current effective source set.
503
+ - **How the constraint changes the solution**: creates a history of why a source was added, changed, disabled, or removed.
504
+ - **Why it might help**: setup becomes auditable and reversible.
505
+ - **Open question**: is this too heavy for user-facing configuration?
506
+
507
+ - **DT-031 — File-only setup terminal (constraint: assume only files)**
508
+ - **Category**: constraint inversion
509
+ - **Sketch**: Assume the only durable interface is file drops. Users connect sources by creating files in `.workrail/sources/` such as `team.repo`, `community.link`, `payments.local`.
510
+ - **How the constraint changes the solution**: each source becomes a tangible artifact instead of a field inside a config blob.
511
+ - **Why it might help**: makes source lifecycle inspectable and composable.
512
+ - **Open question**: what file format keeps this simple without inventing mini-languages?
513
+
514
+ - **DT-032 — Opposite of auto-detect: explicit attach only**
515
+ - **Category**: inversion
516
+ - **Sketch**: Assume auto-discovery is harmful. Users must explicitly attach every source, but WorkRail makes attachment highly guided and safe.
517
+ - **Why it might help**: maximum clarity and provenance.
518
+ - **Open question**: could very strong guided attach UX outperform noisier discovery-heavy systems?
519
+
520
+ - **DT-033 — Opposite of live sources: install snapshots only**
521
+ - **Category**: inversion
522
+ - **Sketch**: Never mount live external sources at runtime. Every install resolves to a local snapshot with explicit update actions.
523
+ - **Why it might help**: source behavior becomes reproducible and trust review becomes clearer.
524
+ - **Open question**: can manual updates stay light enough for users?
525
+
526
+ - **DT-034 — Game-style unlock progression**
527
+ - **Category**: analogy / game design
528
+ - **Sketch**: Expose setup in progressive layers:
529
+ - basic local folder
530
+ - repo sharing
531
+ - remote Git
532
+ - private/self-hosted
533
+ - advanced registries/plugins
534
+ - **Why it might help**: beginners aren’t overwhelmed by the full capability surface.
535
+ - **Open question**: how do we avoid making advanced users feel patronized?
536
+
537
+ - **DT-035 — Source recipes**
538
+ - **Category**: abstraction
539
+ - **Sketch**: Define a small set of user-facing recipes such as:
540
+ - `use this folder`
541
+ - `use this repo`
542
+ - `share workflows in this repo`
543
+ - `install this workflow pack`
544
+ - **Why it might help**: recipes may be the right user abstraction above raw source types.
545
+ - **Open question**: can recipes cover edge cases without re-exposing the underlying complexity?
546
+
547
+ - **DT-036 — Repo badge / self-describing workflow library**
548
+ - **Category**: producer UX
549
+ - **Sketch**: A repo declares itself as a workflow library with a tiny `.workrail/library.json` or marker file so consumers get better install hints.
550
+ - **Why it might help**: allows smarter detection and clearer trust/provenance.
551
+ - **Open question**: what is the minimum metadata needed?
552
+
553
+ - **DT-037 — Source compatibility report**
554
+ - **Category**: diagnostics / trust
555
+ - **Sketch**: Before or after install, WorkRail generates a compatibility report covering:
556
+ - schema validity
557
+ - references portability
558
+ - source freshness strategy
559
+ - likely client limitations
560
+ - **Why it might help**: avoids half-working setups.
561
+ - **Open question**: should this be a blocking gate or advisory?
562
+
563
+ - **DT-038 — Multi-root as the primary abstraction**
564
+ - **Category**: config model
565
+ - **Sketch**: Make workspace roots the main thing users configure; most other source paths become consequences of root membership and conventions.
566
+ - **Why it might help**: reduces the number of concepts users need to understand.
567
+ - **Open question**: how should purely personal, non-workspace sources fit into a root-first model?
568
+
569
+ - **DT-039 — Source sandbox tiers**
570
+ - **Category**: trust / safety
571
+ - **Sketch**: Assign tiers such as `trusted-team`, `personal`, `external-reviewed`, `external-unreviewed`, and vary defaults for update behavior and visibility.
572
+ - **Why it might help**: trust becomes first-class without requiring deep security knowledge.
573
+ - **Open question**: how much policy should WorkRail impose vs expose?
574
+
575
+ - **DT-040 — Setup as generated patch proposal**
576
+ - **Category**: agent collaboration
577
+ - **Sketch**: Rather than mutating config directly, WorkRail proposes concrete changes to `.workrail/` files and optionally MCP config, then asks the user to approve.
578
+ - **Why it might help**: balances automation with explicit user control.
579
+ - **Open question**: which files should WorkRail be allowed to patch automatically vs propose only?
580
+
581
+ ### Derived ideas (Round 3)
582
+
583
+ - **DT-041 — Source catalog primitive**
584
+ - **Category**: product primitive
585
+ - **Built from**: DT-009, DT-014, DT-015, DT-023
586
+ - **Sketch**: Introduce a canonical source catalog abstraction that normalizes every effective source into one inspectable record with provenance, scope, precedence, health, and effective workflows.
587
+ - **Why it might help**: many of the best ideas need a shared primitive that separates raw config from the effective runtime model.
588
+ - **Open question**: should the catalog be derived on demand or persisted?
589
+
590
+ - **DT-042 — Setup intent router**
591
+ - **Category**: product primitive
592
+ - **Built from**: DT-002, DT-003, DT-025, DT-035
593
+ - **Sketch**: Create a router that maps a small set of user intents (`use folder`, `use repo`, `share repo workflows`, `install pack`) into concrete setup plans.
594
+ - **Why it might help**: provides a stable user-facing language above heterogeneous source types.
595
+ - **Open question**: is the router a CLI command, MCP workflow, library primitive, or all three?
596
+
597
+ - **DT-043 — Root-first + repo-convention package**
598
+ - **Category**: combined concept
599
+ - **Built from**: DT-004, DT-005, DT-016, DT-038
600
+ - **Sketch**: Make root registration the main action and `.workrail/workflows/` the main convention for team sharing, with layered user overrides.
601
+ - **Why it might help**: could eliminate a large fraction of explicit source setup for real teams.
602
+ - **Open question**: what should happen when a repo contains multiple workflow subdomains?
603
+
604
+ - **DT-044 — Install flow with mode selection**
605
+ - **Category**: combined concept
606
+ - **Built from**: DT-002, DT-008, DT-011, DT-033
607
+ - **Sketch**: `install` becomes a first-class flow that resolves a source, preflights it, then asks the user to choose between `live source` and `local snapshot` when applicable.
608
+ - **Why it might help**: reduces ambiguity while preserving flexibility.
609
+ - **Open question**: when should WorkRail skip asking and choose a default confidently?
610
+
611
+ - **DT-045 — Guided trust-and-auth handshake**
612
+ - **Category**: missing enabling piece
613
+ - **Built from**: DT-007, DT-018, DT-024, DT-039
614
+ - **Sketch**: Add a reusable handshake primitive for any private or external source:
615
+ - identify trust tier
616
+ - select auth path
617
+ - verify access
618
+ - summarize implications
619
+ - **Why it might help**: several promising setup ideas fail without a good trust/auth moment.
620
+ - **Open question**: can this remain generic across Git, registries, and future source types?
621
+
622
+ - **DT-046 — Source change plan**
623
+ - **Category**: missing enabling piece
624
+ - **Built from**: DT-019, DT-030, DT-040
625
+ - **Sketch**: Represent source add/update/remove actions as explicit change plans before applying them.
626
+ - **Why it might help**: makes setup safer, reviewable, and potentially auditable.
627
+ - **Open question**: do users need history, or just preview + apply?
628
+
629
+ - **DT-047 — Install receipts**
630
+ - **Category**: missing enabling piece
631
+ - **Built from**: DT-009, DT-018, DT-033
632
+ - **Sketch**: After any install, create a durable receipt describing what was installed, from where, in what mode, at what revision, under what trust tier.
633
+ - **Why it might help**: bridges setup UX, provenance, diagnostics, and reproducibility.
634
+ - **Open question**: should receipts live with source manifests or separately?
635
+
636
+ - **DT-048 — Source capability descriptors**
637
+ - **Category**: product primitive
638
+ - **Built from**: DT-012, DT-036, DT-037
639
+ - **Sketch**: Let a source declare or derive a capability descriptor such as:
640
+ - portable refs
641
+ - requires auth
642
+ - supports live refresh
643
+ - trusted producer metadata
644
+ - **Why it might help**: setup decisions become data-driven instead of hard-coded by source kind.
645
+ - **Open question**: how much should be declared vs inferred?
646
+
647
+ - **DT-049 — Source package format**
648
+ - **Category**: combined concept
649
+ - **Built from**: DT-012, DT-021, DT-036
650
+ - **Sketch**: Define a loose “workflow pack” concept as a portable directory or archive with workflows, refs, and optional metadata markers.
651
+ - **Why it might help**: simplifies public/community distribution and install flows.
652
+ - **Open question**: does WorkRail need a formal package spec now, or just conventions?
653
+
654
+ - **DT-050 — Full-spectrum source inspector**
655
+ - **Category**: combined concept
656
+ - **Built from**: DT-006, DT-014, DT-015, DT-026, DT-041
657
+ - **Sketch**: Replace the current partial `sources` view with a complete inspector driven by the source catalog primitive.
658
+ - **Why it might help**: setup and debugging become one coherent experience.
659
+ - **Open question**: should inspection be read-only or offer repair actions inline?
660
+
661
+ - **DT-051 — Attach by proposal**
662
+ - **Category**: combined concept
663
+ - **Built from**: DT-003, DT-013, DT-040, DT-042
664
+ - **Sketch**: WorkRail detects likely sources or accepts user-provided ones, then generates a setup proposal the user can approve.
665
+ - **Why it might help**: gives proactive assistance without surprising mutation.
666
+ - **Open question**: how often should WorkRail initiate proposals vs wait for explicit user intent?
667
+
668
+ - **DT-052 — Minimal path: repo markers only**
669
+ - **Category**: simplicity shortcut
670
+ - **Built from**: DT-004, DT-017, DT-036
671
+ - **Sketch**: The simplest team-sharing path is just:
672
+ - add `.workrail/workflows/`
673
+ - optionally add repo marker metadata
674
+ - register the root once
675
+ - **Why it might help**: this may cover a very large percentage of team use cases with almost no product complexity.
676
+ - **Open question**: is this enough without an install command for cross-repo cases?
677
+
678
+ - **DT-053 — Source policy profiles**
679
+ - **Category**: missing enabling piece
680
+ - **Built from**: DT-019, DT-039, DT-045
681
+ - **Sketch**: Bundle trust, refresh, and reproducibility defaults into named profiles like `team-shared`, `personal-experimental`, `external-reviewed`, `snapshot-only`.
682
+ - **Why it might help**: reduces the number of knobs users must set.
683
+ - **Open question**: how many profiles are enough without becoming a second complexity layer?
684
+
685
+ - **DT-054 — Runtime-local resolution boundary**
686
+ - **Category**: architectural simplification
687
+ - **Built from**: DT-027, DT-033, DT-041
688
+ - **Sketch**: Introduce a clearer boundary where WorkRail runtime only resolves local effective sources; remote fetching becomes an install/sync concern.
689
+ - **Why it might help**: could simplify core discovery, validation, and provenance.
690
+ - **Open question**: what existing capabilities or expectations would this regress?
691
+
692
+ - **DT-055 — Setup readiness score**
693
+ - **Category**: diagnostics
694
+ - **Built from**: DT-024, DT-037, DT-050
695
+ - **Sketch**: Give candidate sources a readiness summary such as `ready`, `needs auth`, `needs import`, `not portable`, `conflicting IDs`.
696
+ - **Why it might help**: helps the user pick the right next action quickly.
697
+ - **Open question**: does scoring aid decisions or oversimplify nuanced conditions?
698
+
699
+ ### Additional ideas (Round 4)
700
+
701
+ - **DT-056 — Capability negotiation for source handlers**
702
+ - **Category**: capability negotiation
703
+ - **Sketch**: Each source handler exposes capabilities such as `supports-live-refresh`, `supports-auth-discovery`, `supports-portable-refs`, `supports-snapshot-pin`, and setup flows adapt accordingly.
704
+ - **Why it might help**: avoids hard-coding UX assumptions by source kind and creates a future-proof extension seam.
705
+ - **Open question**: how much capability complexity is worth exposing publicly?
706
+
707
+ - **DT-057 — Setup resumability**
708
+ - **Category**: resumption
709
+ - **Sketch**: Long or interrupted setup flows can be resumed safely with an explicit setup draft / pending proposal record.
710
+ - **Why it might help**: private/self-hosted setup often spans multiple steps and may need user-side secret work before completion.
711
+ - **Open question**: should resumability be session-scoped only, or durable across chats?
712
+
713
+ - **DT-058 — Authoring-side export for sharing**
714
+ - **Category**: authoring UX
715
+ - **Sketch**: Add a producer-oriented command/workflow that packages current workflows and refs into a shareable “workflow pack” or repo-ready structure.
716
+ - **Why it might help**: easier producer UX often improves consumer setup indirectly.
717
+ - **Open question**: should this target repo layouts, archives, or both?
718
+
719
+ - **DT-059 — Install-time validation tiers**
720
+ - **Category**: validation
721
+ - **Sketch**: Split validation into `structural`, `portability`, `compatibility`, and `policy` checks during setup.
722
+ - **Why it might help**: helps users understand whether a source is merely valid JSON vs truly usable in their environment.
723
+ - **Open question**: which tiers should block install vs warn only?
724
+
725
+ - **DT-060 — Dashboard/source observability panel**
726
+ - **Category**: dashboard / observability
727
+ - **Sketch**: Surface source inventory, health, last sync, trust tier, conflicts, and recent setup actions in the console/dashboard.
728
+ - **Why it might help**: gives WorkRail a durable home for source visibility beyond CLI or chat replies.
729
+ - **Open question**: should dashboard observability be phase 1 or follow once the source catalog exists?
730
+
731
+ - **DT-061 — Model-adaptive setup UX**
732
+ - **Category**: model variability
733
+ - **Sketch**: Tune setup prompts and defaults based on model capability / context budget so weaker models rely more on structured recipes and stronger models can handle richer diagnosis.
734
+ - **Why it might help**: keeps setup reliable across model variability instead of assuming all agents can improvise equally well.
735
+ - **Open question**: how do we keep the behavior predictable across clients?
736
+
737
+ - **DT-062 — Compatibility and migration assistant**
738
+ - **Category**: migration / compatibility
739
+ - **Sketch**: Detect current env-var configuration and propose migration into canonical `.workrail/` config or source manifests without breaking existing behavior.
740
+ - **Why it might help**: adoption will be much easier if current users can migrate incrementally.
741
+ - **Open question**: what migration format preserves comments, intent, and trust settings best?
742
+
743
+ - **DT-063 — Source testing harness**
744
+ - **Category**: testing strategy
745
+ - **Sketch**: Add a test harness for setup flows and source handlers using scenario fixtures (GitHub, self-hosted GitLab, broken auth, local folders, shadow conflicts, portable/non-portable refs).
746
+ - **Why it might help**: setup UX will be brittle without a strong scenario-driven test matrix.
747
+ - **Open question**: what should be unit-tested vs end-to-end?
748
+
749
+ - **DT-064 — Policy packs**
750
+ - **Category**: security / policy
751
+ - **Sketch**: Allow organizations to define allowed source origins, trust defaults, and install policies through shareable policy packs.
752
+ - **Why it might help**: teams may want simplicity without giving up governance.
753
+ - **Open question**: how much policy surface is needed before it becomes enterprise-only complexity?
754
+
755
+ - **DT-065 — Performance-aware source strategy**
756
+ - **Category**: performance
757
+ - **Sketch**: Setup chooses or recommends source modes based on likely scale:
758
+ - many repos → prefer roots + local discovery
759
+ - large remote sources → prefer snapshots or scheduled sync
760
+ - tiny local packs → direct import
761
+ - **Why it might help**: avoids a UX that looks simple but performs poorly at scale.
762
+ - **Open question**: how should WorkRail detect when to shift strategies?
763
+
764
+ - **DT-066 — Conflict rehearsal before attach**
765
+ - **Category**: compatibility / validation
766
+ - **Sketch**: Before enabling a source, simulate how its workflows would merge into the current catalog, including shadowing, ID conflicts, and bundled-protection rules.
767
+ - **Why it might help**: prevents confusing post-install surprises.
768
+ - **Open question**: what level of detail is most useful in the rehearsal output?
769
+
770
+ - **DT-067 — Reference portability contract**
771
+ - **Category**: packaging / validation
772
+ - **Sketch**: Add explicit setup-time analysis of whether workflows depend on `workspace`, `package`, or `workflow`-relative references and recommend fixes or install modes accordingly.
773
+ - **Why it might help**: many third-party workflows are only truly sharable if refs are portable.
774
+ - **Open question**: should non-portable refs block community installs by default?
775
+
776
+ - **DT-068 — Progressive setup fallback ladder**
777
+ - **Category**: resilience
778
+ - **Sketch**: If the ideal setup path fails, WorkRail falls back deliberately:
779
+ - live mount
780
+ - snapshot install
781
+ - local import
782
+ - manual instructions
783
+ - **Why it might help**: turns failure into graceful degradation instead of dead ends.
784
+ - **Open question**: how can fallback stay understandable rather than feeling magical?
785
+
786
+ - **DT-069 — Setup transcript artifact**
787
+ - **Category**: observability / learnability
788
+ - **Sketch**: Persist a structured transcript of setup decisions, evidence, chosen mode, and unresolved warnings so users and agents can revisit why the system is configured the way it is.
789
+ - **Why it might help**: improves learnability, debugging, and handoff across sessions.
790
+ - **Open question**: should this be file-based initially or a dashboard/session artifact?
791
+
792
+ ## Coverage map
793
+
794
+ - **Protocol / resumption** | medium | DT-030, DT-046, DT-057
795
+ - **Authoring UX** | medium | DT-017, DT-036, DT-058
796
+ - **Validation** | high | DT-024, DT-037, DT-059, DT-066, DT-067
797
+ - **Dashboard / observability** | medium | DT-026, DT-050, DT-060, DT-069
798
+ - **Model variability** | low | DT-061
799
+ - **External workflow packaging** | medium | DT-012, DT-049, DT-058, DT-067
800
+ - **Loops correctness / workflow semantics safety** | low | DT-059, DT-067 (indirect only)
801
+ - **Capability negotiation** | medium | DT-048, DT-056
802
+ - **Security / policy** | medium | DT-018, DT-039, DT-064
803
+ - **Performance** | low | DT-065
804
+ - **Compatibility / migration** | medium | DT-019, DT-062, DT-066
805
+ - **Testing strategy** | low | DT-063
806
+ - **Persona / journey quality** | high | Persona card, Journey map, Observations, Insights
807
+ - **POV clarity** | high | POV, Problem statement, HMW, Success criteria
808
+ - **Prototype learnability** | medium | Prototype Spec, DT-042, DT-051, DT-069
809
+ - **Falsifiability / testability** | medium | Evidence gaps, What would change our mind, Test Plan, DT-063
810
+
811
+ ## Smart signals and leverage points
812
+
813
+ ### High-value signals to exploit
814
+
815
+ - **Explicit `workspacePath`**
816
+ - authoritative per-request workspace identity
817
+ - replaces trust in MCP roots for discovery-sensitive decisions
818
+ - **Resolved git repo root from `workspacePath`**
819
+ - gives a stable cross-session unit for silent persistence and cross-repo grouping
820
+ - **Current path locality inside the repo**
821
+ - allows nearest-module / nearest-team discovery and ranking
822
+ - **Remembered repo roots in `~/.workrail/config.json`**
823
+ - enables cross-repo surfacing without requiring repo changes
824
+ - **Workflow usage history**
825
+ - enables “suggested here”, recency, and frequent-use ranking later
826
+ - **Source health / validation state**
827
+ - enables ranking healthy sources higher and making broken sources legible
828
+ - **Portable reference analysis**
829
+ - enables more intelligent guidance for shared vs import/install workflows
830
+
831
+ ### Product principle for smart behavior
832
+
833
+ - Use signals to **rank, suggest, explain, and remember**
834
+ - Avoid using signals to create opaque, silent behavior the user cannot later inspect
835
+
836
+ ## Remote repository UX direction
837
+
838
+ ### Core product stance
839
+
840
+ - For remote repositories, WorkRail should optimize for:
841
+ - one user intent
842
+ - managed local effective state
843
+ - minimal guided auth when needed
844
+ - clear provenance after install
845
+
846
+ ### Recommended default
847
+
848
+ - **Managed sync should be the default remote-repo mode**
849
+ - Remote repositories are the **acquisition and update source**
850
+ - WorkRail should still operate over a **local effective copy** for discovery, validation, and execution-time reasoning
851
+
852
+ ### Why managed sync by default
853
+
854
+ - keeps remote repos feeling low-friction and continuously useful
855
+ - avoids making users manually refresh every shared workflow repo
856
+ - still preserves a local effective state that is easier to debug than purely live remote resolution
857
+ - fits better with cross-repo remembered sources and future console management
858
+
859
+ ### Install / connection modes
860
+
861
+ - **Managed sync (default)**
862
+ - WorkRail clones or materializes a local effective copy
863
+ - WorkRail refreshes it on a managed cadence or on demand
864
+ - user experiences the source as “connected and kept current”
865
+ - **Pinned snapshot**
866
+ - for stronger reproducibility or lower-trust scenarios
867
+ - user updates explicitly
868
+ - **Live remote**
869
+ - not recommended as a default
870
+ - if ever supported, should be advanced-only
871
+
872
+ ### Mental model
873
+
874
+ - Users should think:
875
+ - “I’m adding a workflow repo”
876
+ - Not:
877
+ - “I’m choosing among Git storage modes”
878
+ - WorkRail decides the operational details and explains them simply:
879
+ - source repo
880
+ - local effective copy
881
+ - sync status
882
+ - last updated time
883
+
884
+ ### Public remote repos
885
+
886
+ - user provides a remote repo URL
887
+ - WorkRail:
888
+ - detects host/type
889
+ - connects it in managed-sync mode by default
890
+ - validates workflows
891
+ - remembers it in user config
892
+ - exposes it in grouped workflow discovery
893
+
894
+ ### Private / self-hosted remote repos
895
+
896
+ - user provides a remote repo URL
897
+ - WorkRail:
898
+ - detects likely auth path
899
+ - offers minimal auth guidance:
900
+ - SSH
901
+ - or HTTPS token
902
+ - connects it in managed-sync mode by default
903
+ - remembers it in user config
904
+ - exposes sync/provenance state clearly
905
+
906
+ ### Cross-repo behavior
907
+
908
+ - Remembered remote repos should surface alongside local remembered roots
909
+ - `list_workflows(workspacePath=...)` should still rank by relevance:
910
+ - nearby team/module workflows
911
+ - same repo workflows
912
+ - other remembered local roots
913
+ - remembered remote-synced repos
914
+ - built-in workflows
915
+
916
+ ### Console implications for remote repos
917
+
918
+ - console should eventually show:
919
+ - remote source URL
920
+ - sync mode
921
+ - last sync time
922
+ - sync health
923
+ - local effective state path / identity
924
+ - refresh / forget actions
925
+
926
+ ## Shared artifact / inbox UX direction
927
+
928
+ ### Core product stance
929
+
930
+ - Slack, email, chat, copy/paste, and similar channels should be treated as **delivery channels**, not durable source types
931
+ - WorkRail should classify what the user actually received, then route it into the correct setup path
932
+
933
+ ### Why this matters
934
+
935
+ - many workflows will be shared as:
936
+ - repo URLs pasted into chat
937
+ - single JSON files
938
+ - zipped workflow packs
939
+ - snippets pasted into Slack or an IDE
940
+ - these delivery paths create extra user pain around provenance, completeness, portability, and updates
941
+
942
+ ### Additional user difficulties
943
+
944
+ - **Provenance**
945
+ - users may not know who created the workflow or where it originally came from
946
+ - **Completeness**
947
+ - a shared JSON file may omit referenced prompts, schemas, or supporting assets
948
+ - **Portability**
949
+ - the workflow may assume the sender's repo layout or local files
950
+ - **Compatibility**
951
+ - the workflow may depend on newer WorkRail features or authoring contracts
952
+ - **Update path**
953
+ - file-based sharing often has no obvious refresh/sync story
954
+ - **Trust**
955
+ - users may not know whether the shared artifact is reviewed or safe
956
+ - **Conflict risk**
957
+ - imported workflows may collide with existing workflow IDs or names
958
+
959
+ ### Recommended UX
960
+
961
+ - expose a unified user intent such as:
962
+ - `use this workflow`
963
+ - `import this shared workflow`
964
+ - then classify the payload into one of:
965
+ - remote repo URL
966
+ - local repo / directory
967
+ - single workflow file
968
+ - workflow pack / zip
969
+ - pasted JSON snippet
970
+
971
+ ### Routing model
972
+
973
+ - **Repo URL shared in Slack/chat**
974
+ - route into the normal remote-repo flow
975
+ - default to managed sync
976
+ - **Single workflow JSON file**
977
+ - import as a personal/local workflow unless the user chooses a broader scope
978
+ - run portability and completeness checks first
979
+ - **Workflow pack / zip**
980
+ - unpack into managed local storage
981
+ - validate contents and refs before enabling
982
+ - **Pasted JSON snippet**
983
+ - validate and classify first
984
+ - if incomplete or malformed, explain what is missing before import
985
+
986
+ ### Smart behavior needed
987
+
988
+ - classification of the shared artifact
989
+ - preflight readiness checks:
990
+ - structural validity
991
+ - portability
992
+ - compatibility
993
+ - trust/provenance
994
+ - conflict rehearsal
995
+ - install-mode recommendation
996
+ - receipt/history explaining:
997
+ - where it came from
998
+ - how it was ingested
999
+ - what scope it was installed into
1000
+
1001
+ ### Mental model
1002
+
1003
+ - users should not have to think:
1004
+ - “Is Slack a source type?”
1005
+ - users should think:
1006
+ - “I received a workflow or workflow repo”
1007
+ - “WorkRail can figure out how to ingest it”
1008
+
1009
+ ### Console implications for shared artifacts
1010
+
1011
+ - console should eventually show:
1012
+ - imported/shared workflows and their origin channel
1013
+ - missing-assets or portability warnings
1014
+ - whether an imported artifact has an update path
1015
+ - receipts/history for imports from chat, Slack, email, or pasted content
1016
+
1017
+ ## Phased smart features
1018
+
1019
+ ### Phase 1 smarts
1020
+
1021
+ - require explicit `workspacePath`
1022
+ - silently remember repo roots in user-level `~/.workrail/config.json`
1023
+ - recursively discover team/module `.workrail/workflows/` under remembered roots
1024
+ - rank workflows by proximity:
1025
+ - current module/team
1026
+ - same repo
1027
+ - other remembered repos
1028
+ - built-in
1029
+ - show grouped source visibility and simple provenance explanations
1030
+ - explain precedence clearly when rooted-sharing and legacy sources coexist
1031
+
1032
+ ### Phase 2 smarts
1033
+
1034
+ - recency/frequency-based ranking
1035
+ - “suggested for this workspace” workflows
1036
+ - root suggestions based on repeated usage
1037
+ - health-aware ranking
1038
+ - conflict rehearsal before attach / enable
1039
+ - migration helper from env-based source setup
1040
+
1041
+ ### Phase 3 smarts
1042
+
1043
+ - cross-repo recommendations based on historical usage
1044
+ - trusted source tiers / policy profiles
1045
+ - portable workflow-pack install flows
1046
+ - install receipts / setup transcripts
1047
+ - richer org/team heuristics
1048
+ - more advanced guided install for remote and self-hosted sources
1049
+
1050
+ ## Console integration direction
1051
+
1052
+ ### Role of the console
1053
+
1054
+ - MCP/tools remain the **runtime entry point**
1055
+ - the console becomes the **control plane** for visibility, management, and trust
1056
+
1057
+ ### Why console matters
1058
+
1059
+ - silent persistence is good UX only if users can later inspect and manage what WorkRail remembered
1060
+ - grouped discovery becomes more trustworthy when users can inspect roots, sources, health, and precedence outside of chat/tool output
1061
+
1062
+ ### Console phase 1
1063
+
1064
+ - remembered roots view
1065
+ - discovered workflow folders by repo/module/team
1066
+ - grouped visible workflows
1067
+ - simple provenance:
1068
+ - why this workflow is visible
1069
+ - which remembered root or built-in source it came from
1070
+ - basic actions:
1071
+ - forget root
1072
+ - reindex root
1073
+ - inspect source grouping
1074
+
1075
+ ### Console phase 2
1076
+
1077
+ - source health dashboard
1078
+ - precedence inspector
1079
+ - cross-repo browser
1080
+ - recent / recommended workflows
1081
+ - migration visibility for old env-based setups vs remembered-root setups
1082
+
1083
+ ### Console phase 3
1084
+
1085
+ - install / attach UI
1086
+ - trust and policy management
1087
+ - ownership views by team/module
1088
+ - workflow pack management
1089
+ - usage analytics for discovery tuning
1090
+
1091
+ ### Architectural implication
1092
+
1093
+ - backend design should not assume chat-only consumption
1094
+ - phase-1 backend data should already be shaped so the console can later render:
1095
+ - remembered roots
1096
+ - discovered team/module workflow folders
1097
+ - grouped visible workflows
1098
+ - source provenance
1099
+ - precedence / health summaries
1100
+
1101
+ ### Ideation reflection (Round 4)
1102
+
1103
+ - **Where would we most likely regret not exploring further?**
1104
+ - migration / compatibility and setup testing strategy, because the best UX ideas could still fail badly in rollout without them
1105
+ - **What category did we avoid because it felt uncomfortable or "too big"?**
1106
+ - deeper policy/governance and cross-client automation boundaries
1107
+ - **What assumption seems to be driving most of our ideas?**
1108
+ - that WorkRail should graduate from a workflow runtime with env-based configuration into a more productized workflow platform with owned setup UX
1109
+
1110
+ ## Candidate concept packages (5)
1111
+
1112
+ - **Package name**: Rooted Team Sharing | **member DT-IDs**: DT-004, DT-005, DT-016, DT-043, DT-052 | **what it enables**: a near-zero-config team sharing path centered on repo-local conventions plus one-time root registration
1113
+ - **Package name**: Guided Install | **member DT-IDs**: DT-002, DT-003, DT-011, DT-044, DT-045, DT-051 | **what it enables**: a WorkRail-owned setup journey from URL/path to connected source with approval, auth help, and mode selection
1114
+ - **Package name**: Source Control Tower | **member DT-IDs**: DT-006, DT-014, DT-015, DT-041, DT-050, DT-055 | **what it enables**: full visibility into active and candidate sources, their health, precedence, and next actions
1115
+ - **Package name**: Portable Workflow Packs | **member DT-IDs**: DT-012, DT-021, DT-036, DT-049 | **what it enables**: a more distributable and installable unit for public/community or cross-repo workflow sharing
1116
+ - **Package name**: Local-First Runtime Boundary | **member DT-IDs**: DT-008, DT-033, DT-047, DT-053, DT-054 | **what it enables**: a simpler runtime that reasons over local effective sources while keeping source provenance, trust, and reproducibility explicit
1117
+
1118
+ ### Ideation reflection (Round 3)
1119
+
1120
+ - **What critical primitive seems to be missing for the best packages to work?**
1121
+ - a canonical **source catalog** / effective-source model that all setup, inspection, and diagnostics can target
1122
+ - **What is the simplest idea we are dismissing too quickly?**
1123
+ - rooted team sharing via `.workrail/workflows/` plus one-time root registration
1124
+ - **What assumption seems to be driving most of our ideas?**
1125
+ - that the best UX comes from shifting setup into WorkRail-owned flows and `.workrail/` artifacts rather than leaving MCP env config as the primary user-facing surface
1126
+
1127
+ ## Interesting analogies (3 bullets)
1128
+
1129
+ - **Compiler/module graph**: source hookup may benefit from being modeled like import resolution with shadowing, provenance, and diagnostics.
1130
+ - **Logistics inbox/intake**: users often know they found “something useful” before they know what kind of source it is or how it should be attached.
1131
+ - **Aviation preflight**: consistent, lightweight verification could turn setup from mysterious trial-and-error into a predictable safety check.
1132
+
1133
+ ### Ideation reflection (Round 2)
1134
+
1135
+ - **Which analogy created the most non-obvious leverage?**
1136
+ - the compiler/module graph analogy, because it suggests a strong internal and user-facing model for precedence, shadowing, provenance, and diagnostics
1137
+ - **What is the simplest idea we are dismissing too quickly?**
1138
+ - install snapshots only, because it may dramatically simplify user trust and runtime behavior
1139
+ - **What assumption seems to be driving most of our ideas?**
1140
+ - that the biggest UX win comes from WorkRail becoming the setup orchestrator rather than just documenting lower-level config
1141
+
1142
+ ## Emerging patterns (5 bullets)
1143
+
1144
+ - Many ideas converge on **WorkRail-owned setup flows** rather than better env-var docs.
1145
+ - `.workrail/` appears repeatedly as the right place for canonical config, manifests, and shared conventions.
1146
+ - A strong theme is **install/import vs live source** as a first-order design choice, not an implementation detail.
1147
+ - Discovery, provenance, and diagnostics keep showing up as inseparable from setup simplicity.
1148
+ - Team sharing likely benefits more from **root registration + repo-local conventions** than from per-user source registration.
1149
+
1150
+ ### Ideation reflection
1151
+
1152
+ - **Which idea categories are underrepresented so far?**
1153
+ - registry/package-specific ideas are lighter than Git and local-folder ideas
1154
+ - migration / backward-compatibility UX could use more attention later
1155
+ - **What is the simplest idea we are dismissing too quickly?**
1156
+ - “just use this folder” may solve a surprisingly large share of real cases
1157
+ - **What assumption seems to be driving most of our ideas?**
1158
+ - that users want WorkRail to own the setup journey instead of MCP client config being the main setup surface
1159
+
1160
+ ## Clusters (synthesized)
1161
+
1162
+ - **Cluster 1 — Canonical source model**
1163
+ - **Theme**: Move from fragmented env vars to a single WorkRail-owned source model
1164
+ - **Problem it addresses**: configuration sprawl and implementation-shaped setup
1165
+ - **Representative DT-IDs**: DT-001, DT-009, DT-016, DT-041, DT-048
1166
+ - **Tension**: central config vs per-source manifests
1167
+
1168
+ - **Cluster 2 — Guided setup / install**
1169
+ - **Theme**: Turn hookup into a product flow rather than documentation work
1170
+ - **Problem it addresses**: too many concepts exposed too early
1171
+ - **Representative DT-IDs**: DT-002, DT-003, DT-011, DT-042, DT-044, DT-051
1172
+ - **Tension**: automation vs user control
1173
+
1174
+ - **Cluster 3 — Rooted team sharing**
1175
+ - **Theme**: Use repo-local conventions and root registration as the main team-sharing path
1176
+ - **Problem it addresses**: today’s setup is too personal-config centric
1177
+ - **Representative DT-IDs**: DT-004, DT-005, DT-017, DT-043, DT-052
1178
+ - **Tension**: simplicity for teams vs completeness for public/external distribution
1179
+
1180
+ - **Cluster 4 — Trust, auth, and policy**
1181
+ - **Theme**: Make private/self-hosted/external setup understandable and governable
1182
+ - **Problem it addresses**: hidden auth rules and opaque trust boundaries
1183
+ - **Representative DT-IDs**: DT-007, DT-018, DT-039, DT-045, DT-064
1184
+ - **Tension**: easy onboarding vs explicit trust review
1185
+
1186
+ - **Cluster 5 — Source visibility and diagnostics**
1187
+ - **Theme**: Treat inspection and repair as part of setup, not afterthoughts
1188
+ - **Problem it addresses**: fragile-feeling setup and incomplete source introspection
1189
+ - **Representative DT-IDs**: DT-006, DT-014, DT-015, DT-041, DT-050, DT-055
1190
+ - **Tension**: rich visibility vs information overload
1191
+
1192
+ - **Cluster 6 — Packaging and portability**
1193
+ - **Theme**: Make workflows easier to share as portable units with refs and metadata
1194
+ - **Problem it addresses**: cross-repo/community setup and reference portability
1195
+ - **Representative DT-IDs**: DT-012, DT-036, DT-049, DT-058, DT-067
1196
+ - **Tension**: loose conventions vs formal packaging spec
1197
+
1198
+ - **Cluster 7 — Runtime boundary and sync model**
1199
+ - **Theme**: Decide whether runtime should mount heterogeneous external sources or mostly resolve local effective sources
1200
+ - **Problem it addresses**: complexity, reproducibility, and provenance drift
1201
+ - **Representative DT-IDs**: DT-008, DT-019, DT-033, DT-047, DT-053, DT-054, DT-068
1202
+ - **Tension**: freshness vs runtime simplicity
1203
+
1204
+ - **Cluster 8 — Migration, observability, and rollout safety**
1205
+ - **Theme**: Ensure a cleaner model can actually ship without breaking users
1206
+ - **Problem it addresses**: adoption risk, hidden regressions, and weak validation of setup UX
1207
+ - **Representative DT-IDs**: DT-057, DT-059, DT-060, DT-062, DT-063, DT-066, DT-069
1208
+ - **Tension**: future-first product cleanup vs migration smoothness
1209
+
1210
+ ## Candidate directions (top 5)
1211
+
1212
+ - **Direction 1 — Guided Install on top of a canonical source catalog**
1213
+ - **North Star (1–2 sentences)**: A user can say “use this repo/folder/pack” and WorkRail turns that into a guided, inspectable setup flow backed by a canonical effective-source catalog. The user no longer has to think in env vars or source-specific plumbing.
1214
+ - **Summary**: This best addresses the core JTBD now because it directly targets setup friction while preserving explicit provenance, diagnostics, and future extensibility. Main risks are migration complexity and overreaching into cross-client configuration territory. Migration cost is moderate because env vars can remain as compatibility inputs while new `.workrail/` artifacts become canonical.
1215
+ - **Scoring (1–5 with 1-line why)**:
1216
+ - **Impact: 5**: directly improves the common “I found a source, make it work” flow
1217
+ - **Confidence: 4**: strongly supported by current architecture and backlog synthesis, though not by direct user research yet
1218
+ - **Migration cost: 3**: requires new config/catalog/UX layers but can coexist with legacy env vars
1219
+ - **Model-robustness: 4**: recipe/routed setup can be made reliable across models if structured well
1220
+ - **Time-to-value: 4**: can likely deliver incremental wins before the full platform vision lands
1221
+
1222
+ - **Direction 2 — Rooted Team Sharing as the default collaboration model**
1223
+ - **North Star (1–2 sentences)**: Teams share workflows by putting them in team-owned or module-owned `.workrail/workflows/` directories under remembered repo roots, and WorkRail discovers them recursively. Most team workflow hookup disappears into convention, discovery, and grouped visibility rather than per-source configuration.
1224
+ - **Summary**: This is probably the cleanest internal-team story and aligns strongly with the repo’s platform vision, with one important refinement: it should not depend on MCP roots or on placing `.workrail/` at the main repo root. It is lower risk and simpler than solving all third-party installation at once, but it does less for public/community and ad hoc cross-repo adoption. Migration cost is relatively low because it adds a convention-based path rather than replacing everything.
1225
+ - **Scoring (1–5 with 1-line why)**:
1226
+ - **Impact: 4**: high for team/repo use cases, weaker for arbitrary public sources
1227
+ - **Confidence: 4**: strongly aligned with existing docs and current `.workrail/` direction
1228
+ - **Migration cost: 2**: mostly additive with limited disruption
1229
+ - **Model-robustness: 5**: conventions and root registration are simple for weaker models to follow
1230
+ - **Time-to-value: 5**: likely the fastest path to meaningful simplification
1231
+
1232
+ - **Direction 3 — Local-first runtime boundary with install/snapshot flows**
1233
+ - **North Star (1–2 sentences)**: Remote or heterogeneous sources are installed or synced into local effective sources, and runtime discovery operates mostly on local files. Setup becomes an import/sync problem; execution becomes a local resolution problem.
1234
+ - **Summary**: This is the cleanest architectural story for provenance, reproducibility, and debugging. It may reduce surprising runtime behavior and improve trust, but it risks losing the convenience of live sources and may feel heavier unless update flows are excellent. Migration cost is higher if current expectations lean toward live mounting.
1235
+ - **Scoring (1–5 with 1-line why)**:
1236
+ - **Impact: 4**: strong architectural and UX simplification if accepted
1237
+ - **Confidence: 3**: promising but more assumption-heavy and further from current user expectations
1238
+ - **Migration cost: 4**: could force behavioral changes for existing source setups
1239
+ - **Model-robustness: 4**: local-only runtime is easier for agents to reason about
1240
+ - **Time-to-value: 2**: more foundational work before users feel the benefit
1241
+
1242
+ - **Direction 4 — Source Control Tower first**
1243
+ - **North Star (1–2 sentences)**: Before fully reinventing setup, make source visibility, health, conflicts, and provenance crystal clear through a unified source inspector and diagnostics layer. Users and agents can see exactly what is happening today.
1244
+ - **Summary**: This is a safer, lower-regret direction if we believe discovery/provenance may be the real pain rather than hookup. It improves debuggability and can support later setup flows, but by itself it does not fully solve the “make this source work” JTBD. Migration cost is low because it mostly adds inspection capabilities.
1245
+ - **Scoring (1–5 with 1-line why)**:
1246
+ - **Impact: 3**: meaningful but less transformational than setup-first directions
1247
+ - **Confidence: 5**: strongly grounded in current gaps and low-risk to add
1248
+ - **Migration cost: 1**: mostly additive
1249
+ - **Model-robustness: 5**: inspection tools are easier to use reliably than mutating setup tools
1250
+ - **Time-to-value: 5**: likely fast to ship and immediately useful
1251
+
1252
+ - **Direction 5 — Portable Workflow Packs**
1253
+ - **North Star (1–2 sentences)**: Make the portable workflow directory or pack the main sharing unit for public/community and cross-repo distribution. WorkRail installs and validates packs with clear reference portability guarantees.
1254
+ - **Summary**: This direction is attractive for ecosystem growth and cleaner distribution, especially once `resolveFrom: workflow` style portability is mature. It is less directly useful for immediate internal-team simplicity and may require more packaging/formalization than the product needs right now. Migration cost is moderate and value is more medium-term.
1255
+ - **Scoring (1–5 with 1-line why)**:
1256
+ - **Impact: 3**: valuable, but narrower than setup and sharing fundamentals
1257
+ - **Confidence: 3**: conceptually strong, but packaging appetite is still uncertain
1258
+ - **Migration cost: 3**: additive, but could create new conventions/spec work
1259
+ - **Model-robustness: 4**: portable packs are easier to reason about than arbitrary repos
1260
+ - **Time-to-value: 2**: needs groundwork before it feels polished
1261
+
1262
+ ## Shortlist (3)
1263
+
1264
+ - **Shortlist 1 — Guided Install + Canonical Source Catalog**
1265
+ - best overall fit for the stated goal of making hookup as simple as possible across source types
1266
+ - **Shortlist 2 — Rooted Team Sharing**
1267
+ - strongest low-risk, high-time-to-value path for same-repo and internal team workflows
1268
+ - **Shortlist 3 — Source Control Tower**
1269
+ - best supporting direction and likely prerequisite for trustable setup UX, even if not the main product story
1270
+
1271
+ ### Updated shortlist emphasis after lightweight test
1272
+
1273
+ - **Operational phase-1 favorite — Rooted Team Sharing + minimal Source Control Tower**
1274
+ - refined interpretation: the phase-1 product is not just rooted sharing, but rooted sharing plus enough source visibility to verify and trust the result
1275
+ - iteration-2 refinement: migration clarity, precedence visibility, and weaker-model-safe guidance are part of phase-1, not rollout polish
1276
+ - latest refinement: phase 1 should require explicit `workspacePath`, silently remember repo roots in user config, recursively discover team/module workflow folders under those remembered roots, and make the preferred team path unmistakable while legacy setup paths still exist
1277
+ - **Longer-term north star — Guided Install + Canonical Source Catalog**
1278
+ - unchanged as the broader destination, but deprioritized as immediate phase-1 implementation work
1279
+
1280
+ ### Synthesis reflection
1281
+
1282
+ - **What would falsify the top direction?**
1283
+ - strong evidence that users are not blocked by setup itself, but instead by discovery/trust/visibility, in which case Source Control Tower or Rooted Team Sharing may be the higher-leverage first move
1284
+ - **What is the most dangerous second-order effect?**
1285
+ - WorkRail could become responsible for too much cross-client configuration behavior, creating brittle automation and new failure modes that are harder to debug than the current explicit env approach
1286
+
1287
+ ### Adversarial challenge
1288
+
1289
+ - **Argue that the top direction is wrong. What would a skeptic say?**
1290
+ - A skeptic would say Guided Install is too ambitious too early. It risks building a fancy setup wizard around unresolved questions about ownership, migration, and trust while obscuring a simple underlying truth: most team use cases could be solved by root registration plus repo-local `.workrail/workflows/` conventions. They would argue the product should first make current behavior visible and conventional before trying to automate everything.
1291
+ - **What is the strongest alternative direction and why might it win?**
1292
+ - **Rooted Team Sharing** is the strongest alternative. It aligns tightly with existing platform vision, is simpler to reason about, avoids deep MCP client automation, and likely delivers the fastest meaningful simplification for real teams with the least migration risk.
1293
+
1294
+ ### Decision Gate
1295
+
1296
+ - **Decision needed**: choose which direction to optimize first:
1297
+ - `Guided Install + Canonical Source Catalog`
1298
+ - `Rooted Team Sharing`
1299
+ - `Source Control Tower`
1300
+ - My current recommendation: **start with `Rooted Team Sharing` as phase 1 and design `Guided Install + Canonical Source Catalog` as the broader phase 2 path**. That sequence keeps the architecture honest, delivers value quickly, and avoids overcommitting to automation before the source model and visibility layer are mature.
1301
+
1302
+ ### Next Input checklist
1303
+
1304
+ - Confirm which direction you want to take forward.
1305
+ - Optional preference: whether phase 1 should prioritize:
1306
+ - **team/repo sharing**
1307
+ - **personal third-party install**
1308
+ - **observability/diagnostics foundation**
1309
+
1310
+ ## Synthesis Quality Gate
1311
+
1312
+ - ✅ **POV statement is present**
1313
+ - ✅ **3–7 HMW questions are present**
1314
+ - ✅ **Success criteria are present (measurable where possible)**
1315
+ - ✅ **Key tensions/tradeoffs are present**
1316
+ - ✅ **Idea Backlog has meaningful breadth (covers protocol/resumption/authoring/observability/reliability/tooling/packaging at least once each, if applicable)**
1317
+ - ✅ **Shortlist (2–3) exists with risks and migration cost noted**
1318
+ - ✅ **The top direction has at least one falsifiable learning question**
1319
+
1320
+ ## Pre-mortem & Falsification
1321
+
1322
+ ### Pre-mortem (top 5)
1323
+
1324
+ - **Failure mode**: Guided install becomes a thin wizard over the same fragmented config model | **Why it happens**: the UX layer ships before a real canonical source catalog / config boundary exists | **Mitigation**: make the source catalog and canonical `.workrail/` representation first-class before adding too much setup flow polish
1325
+ - **Failure mode**: Cross-client automation becomes brittle and causes confusing partial setup states | **Why it happens**: WorkRail tries to own MCP client configuration it cannot reliably control across environments | **Mitigation**: keep WorkRail-owned config in `.workrail/`, prefer proposal/approval flows, and treat external client mutation as optional guidance rather than a hard dependency
1326
+ - **Failure mode**: The system over-optimizes for generic third-party install while under-serving the highest-frequency team-sharing path | **Why it happens**: the product chases the broadest abstraction first instead of the simplest dominant use case | **Mitigation**: phase the work with `Rooted Team Sharing` first and validate actual demand for broader install flows
1327
+ - **Failure mode**: Users lose trust because setup hides important provenance/trust choices | **Why it happens**: simplification removes too much visibility around source origin, auth, update mode, and conflicts | **Mitigation**: ship the source inspector / control-tower layer alongside or before broad setup automation
1328
+ - **Failure mode**: Migration is painful and existing env-based users feel forced into a new model prematurely | **Why it happens**: canonical `.workrail/` config is introduced without a good migration assistant and compatibility bridge | **Mitigation**: support dual-read migration, generate explicit migration proposals, and keep env vars working throughout transition
1329
+ - **Failure mode**: `.workrail/config.json` becomes an overloaded catch-all and weakens the simplicity story | **Why it happens**: user-level remembered roots, repo-local metadata, and unrelated environment/capability state are all pushed into one file without a crisp ownership model | **Mitigation**: define config-file responsibilities explicitly before implementation planning and be willing to split concerns across multiple `.workrail/*` artifacts
1330
+
1331
+ ### Falsification criteria (1–3)
1332
+
1333
+ - **If** dogfood users still need to understand raw source kinds, env vars, or auth naming rules in the common setup path, **we will change direction** toward stronger recipe-based/root-based flows because the guided install layer would not be abstracting the real complexity.
1334
+ - **If** team users continue to prefer or succeed more often with simple repo-local convention plus root registration than with broader guided install flows, **we will pivot sequencing** to prioritize `Rooted Team Sharing` as the mainline path because the broader install story would be over-designed for the near-term problem.
1335
+ - **If** the source inspector and diagnostics layer cannot clearly explain effective sources, conflicts, update mode, and failure reasons after setup, **we will stop expanding automation** because a setup system that cannot explain itself will create more confusion than it removes.
1336
+
1337
+ ### Reflection
1338
+
1339
+ - **What is the most dangerous second-order effect?**
1340
+ - WorkRail could become a partially reliable configuration orchestrator that obscures state across `.workrail/`, MCP client config, caches, and external auth, making support and debugging harder than the current explicit approach.
1341
+ - **What would we regret not testing?**
1342
+ - Whether the simplest team-sharing path (`.workrail/workflows/` + root registration) actually solves most real needs before investing heavily in a generalized install platform.
1343
+
1344
+ ### Proceed to Prototype
1345
+
1346
+ - **Prototype gate**: ready to proceed, but the recommended sequence remains:
1347
+ 1. validate `Rooted Team Sharing` as the fast path
1348
+ 2. design/introduce the canonical source catalog
1349
+ 3. expand into broader guided install once visibility and migration are credible
1350
+
1351
+ ## Decision Log (append-only)
1352
+
1353
+ - DT-DEC-001: Use this document as the canonical design-thinking artifact for the session.
1354
+ - DT-DEC-002: Treat current code and docs as both evidence and design constraints; do not assume the public docs fully reflect runtime behavior.
1355
+
1356
+ ## Prototype Spec
1357
+
1358
+ ### Prototype goal
1359
+
1360
+ - Define the simplest believable end-to-end user experience for making third-party workflows available in WorkRail.
1361
+
1362
+ ### Candidate prototype areas
1363
+
1364
+ - user-level remembered roots under `.workrail/`
1365
+ - repo-local metadata under `.workrail/`
1366
+ - setup/install workflow invoked through WorkRail itself
1367
+ - auto-discovery of `.workrail/workflows/` under configured roots
1368
+ - unified source inspection and diagnostics
1369
+
1370
+ ### Prototype focus
1371
+
1372
+ - **Chosen learning question**: Does the simplest `Rooted Team Sharing` flow solve most real team-sharing hookup pain without requiring users to understand env vars or source kinds?
1373
+ - **Chosen prototype artifact**: Concierge script (manual end-to-end flow)
1374
+ - **Why this artifact**: it is the fastest low-fidelity way to test whether the proposed user journey is actually simpler before committing to schema or UI implementation.
1375
+
1376
+ ### Prototype scope
1377
+
1378
+ - In scope:
1379
+ - repo-local `.workrail/workflows/` convention
1380
+ - one-time root registration
1381
+ - basic source visibility after setup
1382
+ - explicit distinction between team-shared and personal scope
1383
+ - migration-aware explanation of how this relates to current env-first and `./workflows` behavior
1384
+ - basic explanation of source precedence when rooted-sharing and legacy sources overlap
1385
+ - Out of scope:
1386
+ - broad third-party install from arbitrary remote sources
1387
+ - full source catalog implementation
1388
+ - dashboard implementation
1389
+ - auto-auth for private/self-hosted sources
1390
+ - final decision on the long-term canonical `.workrail/config.json` ownership model
1391
+
1392
+ ### Falsification criteria (copied verbatim, then refined)
1393
+
1394
+ - **If** dogfood users still need to understand raw source kinds, env vars, or auth naming rules in the common setup path, **we will change direction** toward stronger recipe-based/root-based flows because the guided install layer would not be abstracting the real complexity.
1395
+ - **If** team users continue to prefer or succeed more often with simple repo-local convention plus root registration than with broader guided install flows, **we will pivot sequencing** to prioritize `Rooted Team Sharing` as the mainline path because the broader install story would be over-designed for the near-term problem.
1396
+ - **If** the source inspector and diagnostics layer cannot clearly explain effective sources, conflicts, update mode, and failure reasons after setup, **we will stop expanding automation** because a setup system that cannot explain itself will create more confusion than it removes.
1397
+
1398
+ ### Refined prototype-specific falsification
1399
+
1400
+ - If a user still needs explanation of more than two new concepts beyond “put workflows here” and “register this root,” the prototype is not simple enough.
1401
+ - If the post-setup explanation cannot show where workflows came from in one short source summary, the prototype is not trustable enough.
1402
+
1403
+ ### Success signal for this prototype
1404
+
1405
+ - A user can complete the team-sharing setup in 1–3 guided actions.
1406
+ - The user can explain the resulting model in plain language:
1407
+ - “these workflows live in the repo”
1408
+ - “this root is registered”
1409
+ - “WorkRail discovered them from there”
1410
+ - The user can also explain, in one short sentence, how the preferred rooted-sharing path coexists with older setup paths during migration.
1411
+
1412
+ ### Prototype artifact
1413
+
1414
+ #### Concierge script — Rooted Team Sharing
1415
+
1416
+ - **Panel 1 — trigger**
1417
+ - User says: “I want my team to share these workflows in this repo.”
1418
+ - WorkRail says: “The simplest path is to store team workflows in `.workrail/workflows/` inside the repo and register the repo as a workflow root once. I can guide that setup.”
1419
+
1420
+ - **Panel 2 — classify the scope**
1421
+ - WorkRail asks:
1422
+ - “Should these workflows be team-shared in the repo, or personal-only for you?”
1423
+ - Expected answer:
1424
+ - “Team-shared in the repo.”
1425
+ - Learning goal:
1426
+ - confirm that scope framing is understandable without mentioning source kinds
1427
+
1428
+ - **Panel 3 — establish the convention**
1429
+ - WorkRail says:
1430
+ - “Great. Team-shared workflows live in `.workrail/workflows/` in the repo.”
1431
+ - “If that folder doesn’t exist, create it. Put the workflow JSON files there.”
1432
+ - “Optional: add repo metadata later, but it isn’t required for the basic path.”
1433
+ - Learning goal:
1434
+ - test whether convention is enough without extra config
1435
+
1436
+ - **Panel 4 — register the root**
1437
+ - WorkRail says:
1438
+ - “Next, register this repo as a workflow root in your WorkRail config so it will scan `.workrail/workflows/` here.”
1439
+ - “This is a one-time action per repo.”
1440
+ - Low-fi assumed config shape:
1441
+
1442
+ ```json
1443
+ {
1444
+ "workspaceRoots": [
1445
+ "/path/to/this/repo"
1446
+ ]
1447
+ }
1448
+ ```
1449
+
1450
+ - Learning goal:
1451
+ - test whether “register the repo once” feels simpler than attaching sources one-by-one
1452
+
1453
+ - **Panel 5 — verify the result**
1454
+ - WorkRail says:
1455
+ - “Now let’s verify what WorkRail sees.”
1456
+ - “Expected result: your workflows appear under this repo’s source group.”
1457
+ - Low-fi expected output:
1458
+
1459
+ ```text
1460
+ Available Workflows
1461
+
1462
+ ## workrail (built-in)
1463
+ - coding-task-workflow-agentic
1464
+
1465
+ ## personal/workrail (repo root)
1466
+ - team-code-review
1467
+ - team-feature-implementation
1468
+ ```
1469
+
1470
+ - Learning goal:
1471
+ - test whether grouped source visibility gives enough trust and clarity
1472
+
1473
+ - **Panel 6 — explain the mental model**
1474
+ - WorkRail summarizes:
1475
+ - “These workflows are team-shared because they live in the repo.”
1476
+ - “This repo is registered as a workflow root.”
1477
+ - “WorkRail discovers `.workrail/workflows/` inside registered roots.”
1478
+ - “You don’t need to configure each workflow source individually.”
1479
+ - Learning goal:
1480
+ - test whether the user can restate the model in plain language
1481
+
1482
+ ### Smallest shippable slice
1483
+
1484
+ - explicit required `workspacePath` on discovery-sensitive workflow tools
1485
+ - repo-root memory stored in user-level `~/.workrail/config.json`
1486
+ - recursive discovery of team/module `.workrail/workflows/` under remembered repo roots
1487
+ - grouped listing / source visibility that shows repo-derived workflows distinctly
1488
+ - minimal precedence explanation when rooted-sharing and legacy sources overlap
1489
+ - migration-aware guidance that makes the preferred team path clear even while legacy setup paths still exist
1490
+ - no generalized install flow yet
1491
+
1492
+ ### Highest-risk assumption
1493
+
1494
+ - That the majority of near-term team-sharing pain can be eliminated with repo-local convention plus root registration, without needing a richer canonical source catalog immediately.
1495
+
1496
+ ### If falsification triggers
1497
+
1498
+ - **Next-best direction from the shortlist**: `Source Control Tower`
1499
+ - Reason: if rooted sharing is not clear or trustable enough, better visibility and diagnostics are the safest next move before broader automation
1500
+
1501
+ ### Prototype adjustment after lightweight test
1502
+
1503
+ - Treat **verification** as part of the prototype, not just a final check.
1504
+ - The prototype is now considered incomplete unless it shows:
1505
+ - where workflows were discovered from
1506
+ - what root made them visible
1507
+ - how the user can distinguish repo-shared workflows from built-in ones
1508
+
1509
+ ### Prototype adjustment after second lightweight test
1510
+
1511
+ - Treat **migration and precedence messaging** as part of the prototype narrative, not as documentation follow-up.
1512
+ - The prototype is now considered incomplete unless it also shows:
1513
+ - how the preferred rooted-sharing path coexists with legacy env-based sources
1514
+ - how precedence is explained when multiple sources can provide workflows
1515
+ - wording simple enough that weaker models are likely to stay on the intended path
1516
+ - how repo roots are remembered silently at the user level without requiring current-repo changes
1517
+
1518
+ ## Test Plan
1519
+
1520
+ - Validate the proposed UX against these scenarios:
1521
+ - add a local workflow folder
1522
+ - connect a GitHub repo
1523
+ - connect a self-hosted GitLab repo over HTTPS
1524
+ - connect a self-hosted GitLab repo over SSH
1525
+ - share workflows through a repo-local `.workrail/workflows/`
1526
+ - diagnose a broken or unauthorized source
1527
+ - For each scenario, measure:
1528
+ - number of manual steps
1529
+ - number of concepts the user must understand
1530
+ - whether WorkRail can guide or automate the setup
1531
+ - whether source provenance remains clear afterward
1532
+
1533
+ ### Prototype test plan
1534
+
1535
+ #### Test objective
1536
+
1537
+ - Determine whether the `Rooted Team Sharing` prototype is simple, understandable, and robust enough to serve as the first productized setup path for team-shared workflows.
1538
+
1539
+ #### Primary learning question
1540
+
1541
+ - Can users and agents complete team-sharing setup with repo-local convention plus one-time root registration, without needing to reason about env vars or heterogeneous source types?
1542
+
1543
+ #### Hypotheses
1544
+
1545
+ - **H1**: In the common team-sharing path, users can complete setup in 1–3 guided actions.
1546
+ - **H2**: After setup, users can explain the resulting model in plain language without mentioning source kinds or env-var details.
1547
+ - **H3**: The flow remains understandable across both stronger and weaker agents/models.
1548
+
1549
+ #### Prototype under test
1550
+
1551
+ - Artifact: `Rooted Team Sharing` concierge script in the Prototype Spec above
1552
+ - Core concepts under test:
1553
+ - repo-local `.workrail/workflows/`
1554
+ - one-time root registration
1555
+ - grouped workflow visibility after setup
1556
+
1557
+ #### Agents / models / IDEs to test
1558
+
1559
+ - **Claude** in an MCP-enabled IDE
1560
+ - **GPT** or **Gemini** in an MCP-enabled IDE as the weaker / less reliable comparison path
1561
+ - Optional stretch:
1562
+ - **Grok** if available in a comparable setup
1563
+ - IDE environments to sample:
1564
+ - Firebender
1565
+ - one non-Firebender MCP client if practical
1566
+
1567
+ #### Test participants / operators
1568
+
1569
+ - Primary: project owner or maintainer dogfooding the flow
1570
+ - Secondary: one collaborator who did not author the design, if available
1571
+ - Operator mode:
1572
+ - concierge/manual facilitation first
1573
+ - then replay with lighter facilitation to see whether the script still holds
1574
+
1575
+ #### Scenarios
1576
+
1577
+ - **Scenario 1 — happy path team repo**
1578
+ - repo already exists
1579
+ - user wants to share workflows with teammates
1580
+ - workflows are placed into `.workrail/workflows/`
1581
+ - root is registered once
1582
+
1583
+ - **Scenario 2 — existing repo, no `.workrail/` yet**
1584
+ - user starts from scratch
1585
+ - must understand where workflows belong
1586
+ - must understand what root registration means
1587
+
1588
+ - **Scenario 3 — user confuses personal vs team scope**
1589
+ - test whether the flow clarifies the distinction early enough
1590
+
1591
+ - **Scenario 4 — verification / trust moment**
1592
+ - after setup, ask the user to explain where the workflows came from and why they are visible
1593
+
1594
+ - **Scenario 5 — weaker-model replay**
1595
+ - run the same flow with a weaker model to see whether structured prompts are sufficient
1596
+
1597
+ #### Success metrics
1598
+
1599
+ - **Task completion**:
1600
+ - setup completed successfully: yes/no
1601
+ - **Action count**:
1602
+ - target: 1–3 deliberate user actions
1603
+ - **Concept count**:
1604
+ - target: user must internalize no more than 2 core concepts:
1605
+ - team workflows live in `.workrail/workflows/`
1606
+ - the repo is registered as a workflow root
1607
+ - **Explanation quality**:
1608
+ - target: user can accurately explain the model in plain language after setup
1609
+ - **Inspector clarity**:
1610
+ - target: user can identify the source group where the workflows came from
1611
+ - **Agent robustness**:
1612
+ - target: stronger and weaker model both keep the user on the same conceptual path
1613
+
1614
+ #### Observations to capture
1615
+
1616
+ - points of confusion
1617
+ - places where the facilitator had to translate implementation details
1618
+ - whether the user asks about env vars, source kinds, or auth during the rooted-sharing flow
1619
+ - whether the user expects per-workflow registration
1620
+ - whether verification output feels sufficient to trust the result
1621
+
1622
+ #### Failure conditions
1623
+
1624
+ - user needs explanation of env vars or source-type internals during the happy path
1625
+ - user cannot explain the resulting model after setup
1626
+ - weaker model drifts into old env-var/source-specific guidance
1627
+ - verification output does not make source provenance clear
1628
+
1629
+ #### Instrumentation / evidence collection
1630
+
1631
+ - record the exact prompt/script used
1632
+ - capture the assistant/model responses
1633
+ - note number of user actions
1634
+ - note every clarification needed from the facilitator
1635
+ - save resulting config/file layout and observed `list_workflows` / source output
1636
+
1637
+ #### Decision rules
1638
+
1639
+ - **If the test clearly succeeds**:
1640
+ - continue with `Rooted Team Sharing` as phase 1 and turn it into a concrete design / implementation plan
1641
+ - **If the test partially succeeds but needs stronger visibility**:
1642
+ - iterate by pulling `Source Control Tower` elements earlier into phase 1
1643
+ - **If the test fails because the model keeps leaking implementation details or users remain confused**:
1644
+ - pivot toward a stronger recipe-driven or inspector-first direction before broader setup automation
1645
+
1646
+ #### Risks in the test itself
1647
+
1648
+ - concierge facilitation may make the flow look better than a productized version would feel
1649
+ - stronger models may hide UX flaws that weaker models will expose
1650
+ - a repo/folder setup path may underrepresent later private/self-hosted Git complexity
1651
+
1652
+ #### Exit criteria
1653
+
1654
+ - We have enough evidence to answer:
1655
+ - whether rooted team sharing is a credible phase-1 simplification
1656
+ - whether source visibility must be built earlier
1657
+ - whether weaker models can follow the concept reliably
1658
+
1659
+ ### Test reflection
1660
+
1661
+ - **If the test fails, what would we do next (iterate, pivot, or stop)?**
1662
+ - likely **iterate first** if the failure is around explanation/visibility
1663
+ - **pivot** toward `Source Control Tower` if the failure is mainly trust and provenance clarity
1664
+ - **stop** only if the rooted-sharing concept proves fundamentally less useful than expected relative to broader install needs
1665
+
1666
+ ## Feedback Capture
1667
+
1668
+ ### Test mode
1669
+
1670
+ - **Type**: lightweight dogfood thought experiment + adversarial critique
1671
+ - **Prototype tested**: `Rooted Team Sharing` concierge script
1672
+ - **Lens used**:
1673
+ - current codebase reality
1674
+ - likely user interpretation
1675
+ - weaker-model robustness
1676
+
1677
+ ### What we simulated
1678
+
1679
+ - A user with an existing repo wants to share workflows with teammates.
1680
+ - The user is guided toward:
1681
+ - putting workflow JSON files in `.workrail/workflows/`
1682
+ - registering the repo as a workflow root
1683
+ - verifying that grouped workflow listing reflects the source
1684
+ - We then asked what would likely break or become confusing given the current WorkRail implementation and docs.
1685
+
1686
+ ### Observed positives
1687
+
1688
+ - The **team-sharing story is much easier to explain** than the current env-first setup.
1689
+ - The two core concepts are compact and memorable:
1690
+ - workflows live in `.workrail/workflows/`
1691
+ - the repo is registered as a root
1692
+ - This path aligns well with existing planning docs and broader `.workrail/` direction already present in the repo.
1693
+ - The flow avoids exposing source-type jargon early.
1694
+ - It feels compatible with a later generalized install system rather than competing with it.
1695
+
1696
+ ### Observed friction / concerns
1697
+
1698
+ - **Current implementation gap**: the shipped runtime still centers on `./workflows/`, `~/.workrail/workflows/`, custom paths, and env-driven Git/registry configuration. The prototype assumes a root-based `.workrail/workflows/` discovery model that is described in planning docs but not yet the primary current behavior.
1699
+ - **Visibility gap**: current source inspection UX is not strong enough yet to make the final “verify and trust” step fully convincing.
1700
+ - **Potential concept leak**: “register the repo as a root” is simpler than source-by-source config, but it is still a new concept that needs to be explained carefully.
1701
+ - **Cross-client gap**: it is unclear how much the root-registration action itself can be automated vs simply written into `.workrail/` config.
1702
+ - **Edge-case gap**: this flow says little about how purely personal, cross-repo, or private remote sources should relate to rooted sharing.
1703
+
1704
+ ### Adversarial critique
1705
+
1706
+ - A skeptical stakeholder might say:
1707
+ - “This is cleaner, but it only works because you narrowed to the team-sharing case.”
1708
+ - “You still haven’t removed configuration; you just renamed it to root registration.”
1709
+ - “Without a source inspector and migration bridge, users will still get confused when the behavior differs from current docs and current runtime.”
1710
+ - “This could create another partially-implemented setup story if `.workrail/config.json` and root discovery are not made truly canonical.”
1711
+
1712
+ ### What likely works well
1713
+
1714
+ - same-repo team sharing
1715
+ - monorepo / internal collaboration use cases
1716
+ - weaker models that benefit from a small number of concrete rules
1717
+
1718
+ ### What likely works less well
1719
+
1720
+ - arbitrary third-party source install from URLs
1721
+ - private/self-hosted Git onboarding
1722
+ - users who expect immediate automation rather than convention + one-time registration
1723
+
1724
+ ### Feedback summary
1725
+
1726
+ - **Overall verdict**: promising for phase 1, but only if paired with:
1727
+ - a credible root-registration mechanism
1728
+ - grouped source visibility / verification
1729
+ - a migration-aware explanation of how this relates to current env-based behavior
1730
+
1731
+ ### Decision impact
1732
+
1733
+ - This lightweight test **strengthens** the recommendation to use `Rooted Team Sharing` as phase 1.
1734
+ - It also **strengthens** the need to pull some `Source Control Tower` capabilities earlier, especially source visibility and verification.
1735
+ - It does **not** remove the need for `Guided Install + Canonical Source Catalog`; it just reinforces that those should probably come after the simpler rooted-sharing path is validated.
1736
+
1737
+ ### Recommended adjustments after lightweight test
1738
+
1739
+ - Narrow phase 1 further:
1740
+ - repo-local `.workrail/workflows/`
1741
+ - one-time root registration
1742
+ - grouped listing / source visibility
1743
+ - Explicitly defer:
1744
+ - generalized remote install
1745
+ - self-hosted auth automation
1746
+ - full canonical source catalog implementation
1747
+ - Add migration messaging early so current users understand how rooted sharing coexists with existing behavior
1748
+
1749
+ ### Next learning questions
1750
+
1751
+ - Can root registration be made simple enough to feel like a one-time setup rather than “new configuration burden”?
1752
+ - What is the minimum source inspector capability needed for users to trust the result?
1753
+ - Does this path still feel simplest when tested with a weaker model that cannot improvise as well?
1754
+
1755
+ ## Feedback Capture — Iteration 2
1756
+
1757
+ ### Test mode
1758
+
1759
+ - **Type**: lightweight stakeholder Q&A simulation + weaker-model thought experiment
1760
+ - **Prototype tested**: updated phase-1 concept:
1761
+ - `Rooted Team Sharing + minimal Source Control Tower`
1762
+ - **Focus of this pass**:
1763
+ - rollout/migration concerns
1764
+ - weaker-model robustness
1765
+ - skeptical stakeholder objections
1766
+
1767
+ ### What we simulated
1768
+
1769
+ - A skeptical maintainer asks:
1770
+ - “How is this different from just moving complexity around?”
1771
+ - “What happens while current env-first behavior still exists?”
1772
+ - “Will weaker models fall back to the old setup story and confuse users?”
1773
+ - A weaker-model replay is imagined where the assistant is more literal and less able to synthesize docs, code reality, and future direction.
1774
+
1775
+ ### Observed positives
1776
+
1777
+ - The updated phase-1 framing is stronger than the original rooted-sharing-only framing because it now explicitly includes verification/visibility.
1778
+ - The proposal remains relatively rollout-friendly because it can be additive:
1779
+ - repo-local convention can coexist with existing env-based sources
1780
+ - grouped visibility can help explain mixed old/new setups
1781
+ - The weaker-model path likely improves when the concept is reduced to:
1782
+ - put workflows in `.workrail/workflows/`
1783
+ - register the root
1784
+ - check grouped source output
1785
+
1786
+ ### Observed friction / concerns
1787
+
1788
+ - **Migration ambiguity remains a major risk**:
1789
+ - if old and new setup paths coexist, users may not know which one “won”
1790
+ - grouped visibility helps, but only if the source labeling is very clear
1791
+ - **Weaker-model drift is still plausible**:
1792
+ - a weaker agent might read current docs/code and tell the user to use `./workflows` or env vars instead of the new rooted-sharing path unless the product strongly privileges the new path
1793
+ - **Root registration still needs a crisp home**:
1794
+ - if it lives in a new config but the rest of current behavior still feels elsewhere, users may experience the system as split-brain
1795
+ - **Stakeholder skepticism is still valid**:
1796
+ - this does not yet remove configuration entirely
1797
+ - it removes per-source configuration in the common team case, which is a narrower but more honest claim
1798
+
1799
+ ### Stakeholder-style objections
1800
+
1801
+ - “This only works if the documentation and product language stop advertising the older setup as the default team path.”
1802
+ - “If current `./workflows` discovery and env-driven sources remain prominent, users will get two parallel mental models.”
1803
+ - “Without a migration assistant or explicit precedence explanations, support burden may go up before it goes down.”
1804
+
1805
+ ### Weaker-model robustness assessment
1806
+
1807
+ - **Likely to work if**:
1808
+ - the prompt/script is highly structured
1809
+ - the product names the phase-1 path clearly
1810
+ - source verification output is concrete and grouped
1811
+ - **Likely to fail if**:
1812
+ - the model is left to infer the preferred path from mixed old/new docs
1813
+ - the verification output is ambiguous
1814
+ - root registration is underexplained or spread across multiple config locations
1815
+
1816
+ ### Feedback summary
1817
+
1818
+ - **Overall verdict**: still promising, but rollout discipline now looks almost as important as the UX concept itself.
1819
+ - The second-pass test increases confidence in the **shape** of the phase-1 idea, while reducing confidence that it will land well without:
1820
+ - explicit migration guidance
1821
+ - strong precedence/source labeling
1822
+ - product/docs alignment around the preferred team path
1823
+
1824
+ ### Decision impact
1825
+
1826
+ - Keep the updated recommendation:
1827
+ - `Rooted Team Sharing + minimal Source Control Tower`
1828
+ - Raise migration and precedence clarity from “important” to **phase-1 launch requirements**
1829
+ - Treat weaker-model robustness as a design constraint, not just a test detail
1830
+
1831
+ ### Recommended adjustments after second lightweight test
1832
+
1833
+ - Make the preferred team path unmistakable in user-facing guidance
1834
+ - Add migration/compatibility messaging directly into the phase-1 design
1835
+ - Require grouped source output to make precedence and source origin obvious
1836
+ - Avoid shipping rooted sharing without at least minimal “why these workflows are visible” explanations
1837
+
1838
+ ### Next learning questions
1839
+
1840
+ - What is the minimal migration assistant needed so old and new paths can coexist safely?
1841
+ - How should precedence be displayed when repo-root workflows, built-ins, and legacy env-based sources overlap?
1842
+ - What exact wording keeps weaker models on the preferred rooted-sharing path instead of falling back to legacy advice?
1843
+
1844
+ ## Iteration 1: Updates
1845
+
1846
+ ### Changes made
1847
+
1848
+ - **POV**:
1849
+ - updated to emphasize not just setup simplicity, but also immediate source provenance verification after setup
1850
+ - **HMW**:
1851
+ - added a new HMW question focused explicitly on post-setup verification and trust:
1852
+ - “How might we make verification of ‘where these workflows came from’ simple enough that users trust the result immediately after setup?”
1853
+ - **Shortlist**:
1854
+ - kept the same three shortlist items
1855
+ - updated the emphasis so the phase-1 favorite is now:
1856
+ - `Rooted Team Sharing + minimal Source Control Tower`
1857
+ - kept `Guided Install + Canonical Source Catalog` as the longer-term north star
1858
+ - **Prototype spec/artifact**:
1859
+ - updated the smallest shippable slice to require grouped listing / source visibility
1860
+ - added a prototype adjustment stating that verification is part of the prototype, not an optional final step
1861
+
1862
+ ### Rationale
1863
+
1864
+ - The lightweight test suggested that the team-sharing concept is promising, but it does not stand on its own unless users can verify what happened afterward.
1865
+ - These changes tighten the phase-1 recommendation so it is less likely to under-deliver trust and clarity.
1866
+ - They also reduce the risk of building a setup path that feels simpler during guidance but confusing after completion.
1867
+
1868
+ ### Iteration reflection
1869
+
1870
+ - **What did we learn that surprised us?**
1871
+ - The simplest team-sharing path looked stronger than expected, but the need for source visibility turned out to be more central than initially framed.
1872
+ - **What did we previously believe that is now false?**
1873
+ - We previously treated source visibility as a supporting concern that could follow setup later; it now looks like a phase-1 requirement for trustable rooted sharing.
1874
+
1875
+ ## Iteration 2: Updates
1876
+
1877
+ ### Changes made
1878
+
1879
+ - **POV**:
1880
+ - no structural rewrite, but the surrounding artifacts now treat migration and precedence clarity as part of delivering the promised simple setup experience
1881
+ - **HMW**:
1882
+ - added a new HMW question focused on keeping weaker models and mixed old/new documentation on the preferred setup path instead of drifting back to legacy env-first advice
1883
+ - **Shortlist**:
1884
+ - kept the same updated phase-1 favorite
1885
+ - strengthened the wording so `Rooted Team Sharing + minimal Source Control Tower` now explicitly includes:
1886
+ - migration clarity
1887
+ - precedence visibility
1888
+ - weaker-model-safe guidance
1889
+ - **Prototype spec/artifact**:
1890
+ - expanded the smallest shippable slice to include minimal precedence explanation
1891
+ - added a second prototype adjustment requiring migration and precedence messaging in the prototype narrative
1892
+
1893
+ ### Rationale
1894
+
1895
+ - The second lightweight test showed that the concept itself is still strong, but rollout and model-drift risks are more central than previously assumed.
1896
+ - These updates make the phase-1 recommendation more honest and more likely to survive real rollout conditions.
1897
+ - They also reduce the chance of shipping a conceptually elegant path that collapses when old and new setup models coexist.
1898
+
1899
+ ### Iteration reflection
1900
+
1901
+ - **What did we learn that surprised us?**
1902
+ - rollout clarity and model guidance rose to near-equal importance with the core interaction design
1903
+ - **What did we previously believe that is now false?**
1904
+ - we previously treated migration and precedence messaging as adjacent concerns; they now look like core phase-1 requirements
1905
+
1906
+ ## Iteration 3: Explicit workspace identity and remembered roots
1907
+
1908
+ ### Changes made
1909
+
1910
+ - **POV**:
1911
+ - no core rewrite, but the surrounding design now assumes explicit workspace identity rather than inferred MCP roots
1912
+ - **HMW**:
1913
+ - no new HMW added in this pass
1914
+ - **Shortlist**:
1915
+ - kept the same phase-1 favorite
1916
+ - refined it further to include:
1917
+ - required explicit `workspacePath`
1918
+ - silent remembering of repo roots in `~/.workrail/config.json`
1919
+ - recursive discovery of team/module `.workrail/workflows/` under remembered roots
1920
+ - **Prototype spec/artifact**:
1921
+ - updated the smallest shippable slice so root memory is user-level and recursive module/team discovery is first-class
1922
+ - required the prototype narrative to show silent user-level remembering of repo roots
1923
+
1924
+ ### Rationale
1925
+
1926
+ - New feedback made two things explicit:
1927
+ - MCP roots are not trustworthy enough to anchor discovery
1928
+ - silent user-level persistence is desirable for cross-repo UX
1929
+ - These changes let WorkRail stay repo-aware without being tied to one repo, and without forcing `.workrail/` into the main repo root.
1930
+
1931
+ ### Iteration reflection
1932
+
1933
+ - **What did we learn that surprised us?**
1934
+ - user-level remembered roots appear to be a better cross-repo primitive than trying to make repo-local setup do all the work
1935
+ - **What did we previously believe that is now false?**
1936
+ - we previously treated MCP roots as a plausible fallback for workspace identity; that is no longer acceptable for this design
1937
+
1938
+ ## Iteration Notes
1939
+
1940
+ - Initial framing completed from direct inspection of current code and planning docs.
1941
+ - Strongest design seam discovered so far:
1942
+ - current shipping model is env-first
1943
+ - platform vision already points to `.workrail/config.json` plus auto-discovery and setup prompts
1944
+ - Empathy phase grounded primarily in code/document evidence rather than user interviews, so several behavioral interpretations remain assumptions to validate later.
1945
+
1946
+ ## Counters (DT IDs)
1947
+
1948
+ - Next DT ID: DT-070