@midhunxavier/code-flow 0.0.0-stage → 0.1.0-preview.1

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 (284) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +122 -2
  3. package/bin/codeflow.mjs +8 -0
  4. package/bin/launcher.mjs +127 -0
  5. package/dist/remote-host.json +1 -0
  6. package/licenses/inter.txt +92 -0
  7. package/licenses/preact.txt +21 -0
  8. package/licenses/signals-core.txt +21 -0
  9. package/licenses/signals.txt +21 -0
  10. package/licenses/typescript-notices.txt +193 -0
  11. package/licenses/typescript.txt +55 -0
  12. package/licenses/uqr.txt +22 -0
  13. package/licenses/xterm-fit.txt +19 -0
  14. package/licenses/xterm.txt +21 -0
  15. package/package.json +34 -4
  16. package/public/assets/browser-7XI52A6V.js +8 -0
  17. package/public/assets/changes-EYFPASEI.js +1 -0
  18. package/public/assets/chunk-7H3ZLTKA.js +2 -0
  19. package/public/assets/chunk-L7TUCIYF.js +1 -0
  20. package/public/assets/chunk-LLMQG23J.js +163 -0
  21. package/public/assets/main-KIRM2OEK.js +1 -0
  22. package/public/assets/settings-QJZVW22Y.js +9 -0
  23. package/public/assets/styles-615EBB20.css +32 -0
  24. package/public/assets/terminal-A2FI2NAX.js +62 -0
  25. package/public/assets.json +1 -0
  26. package/public/bundle-meta.json +1 -0
  27. package/public/docs/.nojekyll +0 -0
  28. package/public/docs/accessibility.html +19 -0
  29. package/public/docs/acp-agents.html +117 -0
  30. package/public/docs/agent-containers.html +79 -0
  31. package/public/docs/api.html +1130 -0
  32. package/public/docs/app.js +342 -0
  33. package/public/docs/application-improvements.html +275 -0
  34. package/public/docs/architecture-explorer.html +19 -0
  35. package/public/docs/architecture.html +149 -0
  36. package/public/docs/auto-team.html +142 -0
  37. package/public/docs/automations.html +109 -0
  38. package/public/docs/checkpoint-review.html +37 -0
  39. package/public/docs/code-hosts.html +35 -0
  40. package/public/docs/code-intelligence.html +35 -0
  41. package/public/docs/configuration.html +346 -0
  42. package/public/docs/context-inspection.html +23 -0
  43. package/public/docs/coordinated-changes.html +28 -0
  44. package/public/docs/deferred-runs.html +25 -0
  45. package/public/docs/dependency-discovery.html +19 -0
  46. package/public/docs/documentation.html +84 -0
  47. package/public/docs/dynamic-teams-evaluation.html +174 -0
  48. package/public/docs/dynamic-teams-implementation-plan.html +882 -0
  49. package/public/docs/dynamic-teams-implementation-review-1.html +141 -0
  50. package/public/docs/dynamic-teams-plan-review-0.html +204 -0
  51. package/public/docs/extensions.html +42 -0
  52. package/public/docs/external-sources.html +96 -0
  53. package/public/docs/filesystem-policy.html +26 -0
  54. package/public/docs/filtered-tasks.html +44 -0
  55. package/public/docs/font-license.txt +92 -0
  56. package/public/docs/getting-started.html +118 -0
  57. package/public/docs/github-review-threads.html +26 -0
  58. package/public/docs/github.html +157 -0
  59. package/public/docs/help.html +69 -0
  60. package/public/docs/index.html +77 -0
  61. package/public/docs/installation.html +74 -0
  62. package/public/docs/launch-profiles.html +48 -0
  63. package/public/docs/maintenance.html +60 -0
  64. package/public/docs/memory-claims.html +31 -0
  65. package/public/docs/memory-storage.html +58 -0
  66. package/public/docs/notifications.html +39 -0
  67. package/public/docs/patterns.html +195 -0
  68. package/public/docs/performance-results.html +210 -0
  69. package/public/docs/performance.html +166 -0
  70. package/public/docs/project-conventions.html +22 -0
  71. package/public/docs/project-first-navigation-plan.html +587 -0
  72. package/public/docs/project-teams-implementation-plan.html +772 -0
  73. package/public/docs/project-teams.html +99 -0
  74. package/public/docs/provider-compatibility.html +20 -0
  75. package/public/docs/releasing.html +61 -0
  76. package/public/docs/remote-workers.html +64 -0
  77. package/public/docs/review-inbox.html +26 -0
  78. package/public/docs/run-storage.html +23 -0
  79. package/public/docs/runs.html +141 -0
  80. package/public/docs/search.json +1 -0
  81. package/public/docs/security.html +133 -0
  82. package/public/docs/shared-projects.html +31 -0
  83. package/public/docs/ssh-projects.html +60 -0
  84. package/public/docs/style.css +768 -0
  85. package/public/docs/task-reruns.html +30 -0
  86. package/public/docs/team-collaboration.html +379 -0
  87. package/public/docs/verification.html +22 -0
  88. package/public/docs/vscode.html +53 -0
  89. package/public/docs/worker-permission-verification.html +122 -0
  90. package/public/index.html +17 -0
  91. package/scripts/check-node.mjs +7 -0
  92. package/scripts/codeflow.mjs +55 -0
  93. package/scripts/pty.py +273 -0
  94. package/src/acp-connections.js +110 -0
  95. package/src/adapters/acp-presets.js +37 -0
  96. package/src/adapters/acp-types.js +0 -0
  97. package/src/adapters/acp.js +328 -0
  98. package/src/adapters/agy-auth.js +67 -0
  99. package/src/adapters/agy-isolation.js +223 -0
  100. package/src/adapters/agy.js +297 -0
  101. package/src/adapters/claude.js +220 -0
  102. package/src/adapters/codex-app-server.js +518 -0
  103. package/src/adapters/codex.js +299 -0
  104. package/src/adapters/errors.js +57 -0
  105. package/src/adapters/index.js +91 -0
  106. package/src/adapters/managed-permissions.js +37 -0
  107. package/src/adapters/model-discovery.js +100 -0
  108. package/src/adapters/process.js +418 -0
  109. package/src/adapters/team-tools.js +102 -0
  110. package/src/adapters/types.js +0 -0
  111. package/src/agent-container.js +155 -0
  112. package/src/approvals.js +121 -0
  113. package/src/architecture.js +456 -0
  114. package/src/assets.js +44 -0
  115. package/src/automation.js +901 -0
  116. package/src/certificate-renewal.js +75 -0
  117. package/src/chat-handoff.js +55 -0
  118. package/src/checkpoint-review.js +72 -0
  119. package/src/checks.js +303 -0
  120. package/src/code-host-git.js +102 -0
  121. package/src/code-hosts-api.js +99 -0
  122. package/src/code-hosts.js +482 -0
  123. package/src/code-intelligence-worker.mjs +452 -0
  124. package/src/code-intelligence.js +141 -0
  125. package/src/collab/api.js +365 -0
  126. package/src/collab/checkpoints.js +198 -0
  127. package/src/collab/connections.js +139 -0
  128. package/src/collab/host-execution.js +347 -0
  129. package/src/collab/hub-client.js +210 -0
  130. package/src/collab/link-api.js +229 -0
  131. package/src/collab/link.js +595 -0
  132. package/src/collab/model.js +496 -0
  133. package/src/collab/runner.js +1014 -0
  134. package/src/collab/store.js +1452 -0
  135. package/src/collab/terminals.js +361 -0
  136. package/src/collaboration-reviews.js +116 -0
  137. package/src/config.js +48 -0
  138. package/src/context-budget.js +14 -0
  139. package/src/context-inspection.js +204 -0
  140. package/src/context.js +154 -0
  141. package/src/conventions.js +283 -0
  142. package/src/coordinated-api.js +247 -0
  143. package/src/deferred-launch.js +82 -0
  144. package/src/deferred-runs.js +515 -0
  145. package/src/dependency-health.js +35 -0
  146. package/src/diff.js +43 -0
  147. package/src/docs-help.js +316 -0
  148. package/src/doctor.js +232 -0
  149. package/src/engine.js +4366 -0
  150. package/src/env.js +44 -0
  151. package/src/experience.js +50 -0
  152. package/src/extensions.js +144 -0
  153. package/src/filesystem-access.js +107 -0
  154. package/src/filesystem-policy.js +238 -0
  155. package/src/filtered-task-limits.js +93 -0
  156. package/src/filtered-tasks-api.js +53 -0
  157. package/src/filtered-tasks.js +576 -0
  158. package/src/fs.js +57 -0
  159. package/src/git.js +626 -0
  160. package/src/github-review-threads.js +181 -0
  161. package/src/github.js +538 -0
  162. package/src/http.js +69 -0
  163. package/src/improve-settings.js +38 -0
  164. package/src/improve.js +187 -0
  165. package/src/integrations.js +373 -0
  166. package/src/integrity.js +259 -0
  167. package/src/journey-api.js +77 -0
  168. package/src/journey-replay.js +65 -0
  169. package/src/journey-store.js +97 -0
  170. package/src/journeys.js +60 -0
  171. package/src/json.js +81 -0
  172. package/src/launch-profiles.js +292 -0
  173. package/src/learnings.js +80 -0
  174. package/src/log.js +39 -0
  175. package/src/maintenance.js +335 -0
  176. package/src/memory-analysis.js +182 -0
  177. package/src/memory-claims.js +153 -0
  178. package/src/memory-sqlite.js +236 -0
  179. package/src/memory.js +552 -0
  180. package/src/merge-validation.js +58 -0
  181. package/src/model-catalog.js +238 -0
  182. package/src/model-research.js +91 -0
  183. package/src/notes.js +176 -0
  184. package/src/notifications.js +413 -0
  185. package/src/patterns/auto-team-model.js +212 -0
  186. package/src/patterns/auto-team.js +659 -0
  187. package/src/patterns/council.js +199 -0
  188. package/src/patterns/debate.js +188 -0
  189. package/src/patterns/findings.js +141 -0
  190. package/src/patterns/index.js +19 -0
  191. package/src/patterns/loop.js +158 -0
  192. package/src/patterns/pipeline.js +125 -0
  193. package/src/patterns/prompts.js +181 -0
  194. package/src/patterns/race.js +147 -0
  195. package/src/patterns/schemas.js +40 -0
  196. package/src/patterns/solo.js +49 -0
  197. package/src/patterns/supervisor.js +235 -0
  198. package/src/patterns/task-draft.js +29 -0
  199. package/src/patterns/tdd.js +231 -0
  200. package/src/patterns/team-strategies.js +67 -0
  201. package/src/performance.js +43 -0
  202. package/src/persistence-status.js +35 -0
  203. package/src/phone-sessions.js +96 -0
  204. package/src/preview-overlay.js +383 -0
  205. package/src/preview.js +219 -0
  206. package/src/privacy.js +23 -0
  207. package/src/project-report.js +22 -0
  208. package/src/project-team-model.js +178 -0
  209. package/src/project-team-policy.js +42 -0
  210. package/src/project-team-store.js +213 -0
  211. package/src/project-teams-api.js +36 -0
  212. package/src/project-teams.js +551 -0
  213. package/src/projects.js +286 -0
  214. package/src/provider-eligibility.js +9 -0
  215. package/src/readiness.js +98 -0
  216. package/src/remote-tls.js +66 -0
  217. package/src/remote-workers/bundles.js +198 -0
  218. package/src/remote-workers/client.js +332 -0
  219. package/src/remote-workers/durability.js +37 -0
  220. package/src/remote-workers/protocol.js +68 -0
  221. package/src/remote-workers/stdio.js +138 -0
  222. package/src/remote-workers/worker.js +304 -0
  223. package/src/remote.js +204 -0
  224. package/src/repo-config.js +201 -0
  225. package/src/repo-coordination.js +732 -0
  226. package/src/repo-tree.js +106 -0
  227. package/src/retention-policy.js +466 -0
  228. package/src/review-inbox.js +38 -0
  229. package/src/routing.js +49 -0
  230. package/src/run-analysis.js +111 -0
  231. package/src/run-cold-store.js +231 -0
  232. package/src/run-environment.js +15 -0
  233. package/src/run-history.js +91 -0
  234. package/src/run-log.js +160 -0
  235. package/src/run-permissions.js +110 -0
  236. package/src/run-projection.js +75 -0
  237. package/src/run-recovery.js +53 -0
  238. package/src/run-status.js +54 -0
  239. package/src/serve.js +138 -0
  240. package/src/server.js +2738 -0
  241. package/src/shared-access.js +103 -0
  242. package/src/shared-accounts.js +301 -0
  243. package/src/shared-api.js +239 -0
  244. package/src/shell.js +346 -0
  245. package/src/ship.js +344 -0
  246. package/src/slots.js +74 -0
  247. package/src/snapshot.js +388 -0
  248. package/src/source-context.js +17 -0
  249. package/src/sse-writer.js +70 -0
  250. package/src/ssh-projects/bootstrap.mjs +95 -0
  251. package/src/ssh-projects/config.js +45 -0
  252. package/src/ssh-projects/gateway.js +143 -0
  253. package/src/ssh-projects/manager.js +320 -0
  254. package/src/ssh-projects/team-autostart.mjs +93 -0
  255. package/src/ssh-projects/team-remove.mjs +69 -0
  256. package/src/ssh-projects/team-status.mjs +39 -0
  257. package/src/ssh-projects/transport.js +116 -0
  258. package/src/stats.js +139 -0
  259. package/src/store.js +544 -0
  260. package/src/stream.js +91 -0
  261. package/src/sweeps.js +241 -0
  262. package/src/tailscale.js +101 -0
  263. package/src/task-draft.js +23 -0
  264. package/src/team-evaluation.js +242 -0
  265. package/src/team-mailbox.js +160 -0
  266. package/src/team-memory.js +84 -0
  267. package/src/team-rerun-graph.js +15 -0
  268. package/src/team-reruns.js +130 -0
  269. package/src/team-scheduler.js +121 -0
  270. package/src/team-template-store.js +98 -0
  271. package/src/team-templates.js +117 -0
  272. package/src/team-tool-client.mjs +79 -0
  273. package/src/team-tools.js +176 -0
  274. package/src/teams.js +0 -0
  275. package/src/templates.js +62 -0
  276. package/src/transcript.js +134 -0
  277. package/src/verification-integrity.js +27 -0
  278. package/src/verification.js +183 -0
  279. package/src/watch.js +195 -0
  280. package/src/work-queue.js +47 -0
  281. package/src/workflow-control.js +83 -0
  282. package/src/workspace-api.js +207 -0
  283. package/src/workspace-changes.js +61 -0
  284. package/src/workspace.js +146 -0
@@ -0,0 +1,587 @@
1
+ <!doctype html>
2
+ <html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><meta name="description" content="Project navigation review and implementation plan — code-flow guides and reference"><title>Project navigation review and implementation plan · code-flow</title><link rel="icon" href="data:image/png;base64,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"><link rel="stylesheet" href="style.css"><script src="app.js" defer></script></head>
3
+ <body data-page="project-first-navigation-plan"><a class="skip-link" href="#content">Skip to content</a>
4
+ <header class="topbar"><a class="brand" href="index.html"><img src="data:image/png;base64,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" width="30" height="30" alt=""><strong>Code Flow</strong><span>Docs</span></a><button class="search-trigger" id="open-search">Search documentation <kbd>⌘ K</kbd></button><div class="top-actions"><a href="https://github.com/midhunxavier/code-flow">GitHub ↗</a><button id="theme" aria-label="Change color theme">Theme</button><button id="open-help" class="primary" hidden aria-expanded="false" aria-controls="help-panel">Ask code-flow</button><button id="menu" aria-label="Toggle documentation navigation" aria-expanded="false" aria-controls="sidebar">☰</button></div></header>
5
+ <div class="layout"><nav class="sidebar" id="sidebar" aria-label="Documentation"><section><h2>Get started</h2><a href="index.html" >Overview</a><a href="installation.html" >Install Code Flow preview</a><a href="getting-started.html" >Getting started</a><a href="patterns.html" >Team patterns</a><a href="acp-agents.html" >ACP coding agents</a><a href="help.html" >Ask code-flow</a></section><section><h2>Work with agents</h2><a href="runs.html" >Runs and workspace</a><a href="auto-team.html" >Auto team</a><a href="project-teams.html" >Project missions (preview)</a><a href="review-inbox.html" >Review inbox</a><a href="verification.html" >Verification and review</a><a href="github.html" >GitHub, review and shipping</a><a href="github-review-threads.html" >GitHub review threads</a><a href="task-reruns.html" >Selective task reruns</a><a href="deferred-runs.html" >Deferred runs</a></section><section><h2>Your workspace</h2><a href="configuration.html" >Configuration</a><a href="context-inspection.html" >Context and budgets</a><a href="project-conventions.html" >Versioned project conventions</a><a href="checkpoint-review.html" >Checkpoints and reversions</a><a href="launch-profiles.html" >Service launch profiles</a><a href="code-intelligence.html" >Code intelligence</a><a href="architecture-explorer.html" >Architecture explorer</a><a href="memory-storage.html" >Project memory</a><a href="memory-claims.html" >Semantic claim review</a><a href="coordinated-changes.html" >Coordinated changes</a></section><section><h2>Connect and collaborate</h2><a href="team-collaboration.html" >Team collaboration</a><a href="shared-projects.html" >Shared project accounts</a><a href="ssh-projects.html" >SSH projects</a><a href="remote-workers.html" >Remote agent workers</a><a href="code-hosts.html" >GitLab and Bitbucket code workflows</a><a href="external-sources.html" >Read-only external sources</a><a href="automations.html" >Automations and away mode</a><a href="notifications.html" >Outbound notifications</a></section><section><h2>Operate safely</h2><a href="security.html" >Security, subscriptions and caveats</a><a href="filesystem-policy.html" >Project filesystem policy</a><a href="agent-containers.html" >Agent containers</a><a href="filtered-tasks.html" >Filtered Docker tasks</a><a href="dependency-discovery.html" >Dependency discovery</a><a href="maintenance.html" >Backup and maintenance</a></section><section><h2>Build and extend</h2><a href="architecture.html" >Architecture and development</a><a href="api.html" >Local API and command-line client</a><a href="extensions.html" >Provider and workflow extensions</a><a href="provider-compatibility.html" >Provider compatibility</a><a href="accessibility.html" >Accessibility acceptance</a><a href="performance.html" >Performance</a><a href="run-storage.html" >Run storage</a><a href="documentation.html" >Documentation and GitHub Pages</a><a href="releasing.html" >Preparing a preview release</a><a href="vscode.html" >Code Flow for VS Code</a></section><section><h2>Engineering records</h2><a href="application-improvements.html" >Application improvement program</a><a href="project-first-navigation-plan.html" aria-current="page">Project navigation review and implementation plan</a><a href="dynamic-teams-evaluation.html" >Dynamic teams: implementation evidence and rollout decision</a><a href="dynamic-teams-implementation-plan.html" >Dynamic teams, workflows, messaging, and memory</a><a href="dynamic-teams-implementation-review-1.html" >Review 1: the dynamic teams implementation</a><a href="worker-permission-verification.html" >Live worker permission verification</a><a href="dynamic-teams-plan-review-0.html" >Review 0: Dynamic teams implementation plan</a><a href="project-teams-implementation-plan.html" >Standing project teams implementation plan</a><a href="performance-results.html" >Measured performance: 19 October 2026</a></section><a class="app-link" id="back-app" hidden href="/">← Back to app</a></nav>
6
+ <main id="content" tabindex="-1"><div class="breadcrumb">Documentation <span>/</span> Engineering records</div><article><h1 id="project-navigation-review-and-implementation-plan">Project navigation review and implementation plan</h1>
7
+ <p>Status: Phases 1–5 implemented on 21 October 2026. Phase 6 software validation is complete; the participant pilot remains an external release activity. Original review baseline: <code>d82a2e1</code>.</p>
8
+ <p>Make <strong>Project</strong> the main place to start, follow and review work. Repositories, runs, shared boards, people and scheduled work should have predictable places inside that project. Show the computer that owns the project and, where relevant, the computer that executes the work.</p>
9
+ <p>The initial experience should be: <strong>Open a project → describe the task → start a run → review the result.</strong> A person using one repository on one computer should not have to configure a workspace, a team or a connection first.</p>
10
+ <h2 id="implemented-navigation-contract">Implemented navigation contract</h2>
11
+ <p>The owner experience uses <strong>Project</strong> for a group of repositories, drafts and runs; <strong>Repository</strong> for a Git root; <strong>Run</strong> for an execution and its evidence; and <strong>Computer</strong> for the host that owns files and project records. <strong>Repository tools</strong> replaces Workspace in the owner navigation. Board contains shared tasks; People contains membership and access. Shared dashboards retain independent safe projections. Project Automation and global Scheduling use the existing schedule, backlog and mission operations.</p>
12
+ <div class="table-scroll" tabindex="0"><table>
13
+ <thead>
14
+ <tr>
15
+ <th>Destination / visible label</th>
16
+ <th>Address and source identity</th>
17
+ <th>Access and compatibility</th>
18
+ </tr>
19
+ </thead>
20
+ <tbody><tr>
21
+ <td>New run / project draft</td>
22
+ <td><code>#/project/:id/new</code>; current computer + project ID</td>
23
+ <td>Owner; legacy <code>#/</code> and <code>#/new</code> resume the last draft; <code>#/new/unassigned</code> opens the unassigned draft.</td>
24
+ </tr>
25
+ <tr>
26
+ <td>Overview</td>
27
+ <td><code>#/project/:id</code></td>
28
+ <td>Owner projection from that computer&#39;s projects and runs.</td>
29
+ </tr>
30
+ <tr>
31
+ <td>Runs</td>
32
+ <td><code>#/project/:id/runs</code></td>
33
+ <td>Owner; independent project query, archived option and pagination.</td>
34
+ </tr>
35
+ <tr>
36
+ <td>Repositories / Repository tools</td>
37
+ <td><code>#/project/:id/repositories/:encodedPath/:tool</code></td>
38
+ <td>Owner; only project roots and known project run worktrees. Full path stays visible.</td>
39
+ </tr>
40
+ <tr>
41
+ <td>Project settings</td>
42
+ <td><code>#/project/:id/settings</code></td>
43
+ <td>Owner; project editing, outcomes and scenarios. Missions live in Automation.</td>
44
+ </tr>
45
+ <tr>
46
+ <td>Legacy repository tools</td>
47
+ <td><code>#/workspace</code>, <code>#/settings/workspace</code>, <code>#/project/:id/workspace</code></td>
48
+ <td>Global bookmarks retain composer repository context; project bookmarks render Repositories with their project context.</td>
49
+ </tr>
50
+ <tr>
51
+ <td>Run / result review</td>
52
+ <td><code>#/run/:id</code>, <code>#/review/:id/:branch</code></td>
53
+ <td>Existing run identity, branch decoding and review permissions.</td>
54
+ </tr>
55
+ <tr>
56
+ <td>Inbox / Insights</td>
57
+ <td><code>#/inbox</code>, <code>#/insights</code> (including settings aliases)</td>
58
+ <td>Existing global filters. Filtering cannot alter a composer destination.</td>
59
+ </tr>
60
+ <tr>
61
+ <td>Project Board / People</td>
62
+ <td><code>#/project/:id/board</code>, <code>#/project/:id/people</code></td>
63
+ <td>Owning computer’s board only (<code>team=local</code>). Switching from a linked board replaces the document before rendering collaboration controls.</td>
64
+ </tr>
65
+ <tr>
66
+ <td>Linked Board / People</td>
67
+ <td><code>?team=:connection#/team/project/:id</code>, <code>#/team/people/:id</code></td>
68
+ <td>Connection pinned per document; server-authorized membership and repository keys. Account/grant administration remains owner-only.</td>
69
+ </tr>
70
+ <tr>
71
+ <td>Project Automation</td>
72
+ <td><code>#/project/:id/automation/:kind</code></td>
73
+ <td>Explicit project and repository; independent of sidebar filters and the previously open composer draft.</td>
74
+ </tr>
75
+ <tr>
76
+ <td>Scheduling</td>
77
+ <td><code>#/automations/:kind</code></td>
78
+ <td>Current computer and existing saved schedule identity. The global project filter controls the list; choose a project/repository here before configuring new work.</td>
79
+ </tr>
80
+ <tr>
81
+ <td>Settings / Connections</td>
82
+ <td><code>#/settings/:section</code>, connection groups</td>
83
+ <td>Existing owner settings. Old SSH, remote-access and team settings aliases remain supported.</td>
84
+ </tr>
85
+ <tr>
86
+ <td>Board / task</td>
87
+ <td><code>#/team</code>, <code>#/team/project/:id</code>, <code>#/team/task/:id</code></td>
88
+ <td>Existing selected collaboration connection + board ID. No local-project identity inferred from matching names or IDs.</td>
89
+ </tr>
90
+ <tr>
91
+ <td>Detached side panel</td>
92
+ <td><code>#/side/:tab/:scope</code></td>
93
+ <td>Existing run/project/repository pin; target remains independent of composer navigation.</td>
94
+ </tr>
95
+ <tr>
96
+ <td>Another computer</td>
97
+ <td><code>/computer/:computer/</code> plus these routes</td>
98
+ <td>Existing server request prefix and browser-storage namespace. No local fallback when disconnected.</td>
99
+ </tr>
100
+ <tr>
101
+ <td>Shared-user dashboard</td>
102
+ <td>Existing shared-account entry and projections</td>
103
+ <td>Existing grants and safe APIs; owner pages are not rendered for shared accounts.</td>
104
+ </tr>
105
+ <tr>
106
+ <td>Invalid/unavailable target</td>
107
+ <td>Malformed project route, missing project or removed repository</td>
108
+ <td>Explicit recovery state. Retain draft; block a new launch into an invalid destination.</td>
109
+ </tr>
110
+ </tbody></table>
111
+ </div><p>Screen sketches used for this slice:</p>
112
+ <pre><code class="language-text">First visit Project Overview Project composer
113
+ Computer: This computer Project · Computer Project · repository
114
+ Open repository Overview | Runs | Repos Task + context
115
+ Join shared project Describe task / Continue Workflow + run options
116
+ On another computer Needs you · Running Computer / Project / Repo
117
+ Recent results Start run
118
+
119
+ Multiple repositories Shared board (retained)
120
+ Project · Computer Collaboration connection
121
+ Repository cards + paths Board / task details
122
+ Selected root or worktree Existing membership/grants
123
+ Repository tool selector No inferred local mapping
124
+ </code></pre>
125
+ <p>There is one task editor. Overview opens the existing composer rather than maintaining a second task field. Only the visible project section mounts its specialized panels.</p>
126
+ <p>Draft storage is versioned IndexedDB, scoped by computer and project, with a retained legacy backup and an unassigned destination for ambiguous migration. Text, attachments, selected paths, workflow roles/models, checks, limits, approvals, source, scenario, context budget and execution options travel together. The current implementation maintains one saved draft per project in this browser; simultaneous editing of the same project&#39;s draft in multiple tabs has last-writer behavior.</p>
127
+ <p>New UI launches send an explicit-selection marker. The server verifies that the project exists and the canonical repository remains a member before preparation and again at placement. Adding a repository is an explicit API operation. Existing API/automation callers retain their placement behavior unless they request strict selection.</p>
128
+ <p>The automated scenario baseline covers route aliases, computer namespaces, delayed repository responses, draft switching and launch placement. No human completion-time or wrong-turn baseline was collected in this implementation session. The participant pilot and before/after measurements remain required release validation in Phase 6; automated tests do not establish usability improvement.</p>
129
+ <h2 id="phases-46-implementation-and-validation">Phases 4–6 implementation and validation</h2>
130
+ <p>Phase 4 reuses the existing board API, account CAS updates, repository-key editor and explicit host-execution/terminal grants. Owner projects embed only their own computer’s board. Linked boards remain connection-scoped; there is no inferred remote-to-local relationship. URLs retain <code>team</code> identity, requests/downloads and subscriptions stay pinned to that document, and a source switch reloads the document. An unavailable project does not expand to all projects. Refused board/task reads clear stale content and controls. Shared People uses only authorized board projections and never mounts owner account controls.</p>
131
+ <p>Phase 5 adds Automation with Run once later, Repeat, Process a backlog and Pursue a mission. Project lists ignore the global filter. Repository selection is explicit; opening backlog items waits for the chosen project’s saved agent workflow to restore and retains its destination. Missions move from settings to Automation; actionable opportunities link there from Overview and Inbox. More and command search always expose specialized destinations. Saved collaboration, schedules and missions remain discoverable when the optional Board shortcut is off.</p>
132
+ <p>No rollout flag is needed for this implementation: it uses additive routes, existing permissions/APIs and the compatible draft format from phases 1–3. No execution records, repository keys, roles, schedules or mission history are migrated. Legacy routes and search aliases remain available. No deployment or user-data reset was performed.</p>
133
+ <p>Validation record (21 October 2026):</p>
134
+ <ul>
135
+ <li>Full unit suite: 1,212 tests, 1,204 passed, eight opt-in integration checks skipped, zero failures.</li>
136
+ <li>Project-navigation browser suite: all ten scenarios pass, including colliding linked project IDs, access refusal, project-specific scheduling/backlogs and mobile light/dark accessibility.</li>
137
+ <li>Shared collaboration/account browser suites: all 24 scenarios pass, including an empty shared project with repository keys and no server clone, maintainer People access without owner requests, live revocation, host execution and terminal grants.</li>
138
+ <li>Existing mission, experience and scheduling browser scenarios pass after moving mission navigation. An initialization race found by the new backlog scenario was fixed: an unsuccessful draft restore cannot open the picker with the prior repository.</li>
139
+ <li>Build, TypeScript and 12 documentation checks pass. The documentation capture script now produces project Overview and Automation screenshots with disposable demo data. Mobile screenshots were inspected; More, project tabs and scheduling controls fit at 390 pixels.</li>
140
+ <li>Final full browser suite: all 153 scenarios pass, zero failures. The earlier full run found six failures. Fixes preserve Auto team answer drafts when a question moves into the attention card, keep the mobile computer header within the viewport while reconnecting, remove duplicate global scheduling filters, and update tests to wait for explicit project selection and use the current repository/backlog controls.</li>
141
+ <li>Final full unit rerun: 1,204 passed, eight opt-in skips, zero failures. All 52 focused collaboration/API/UI checks also pass after the final visibility and terminology updates.</li>
142
+ <li>Additional integrations: VS Code extension-host acceptance passes; the opt-in Rust reader test and both real loopback SSH tests pass. After recovering Docker Desktop from stale backend processes, <code>npm run test:containers</code> passes all five real Docker checks with zero failures or skips: read/write isolation, host-secret and Git-metadata protection, cancellation, hard timeout, and filtered edit import. Together these runs cover all eight integration checks skipped by the default unit command. Live provider-usage tests were not invoked.</li>
143
+ <li>Final build, typecheck, documentation checks and whitespace validation pass. Documentation screenshots were regenerated and inspected after the UI fixes.</li>
144
+ </ul>
145
+ <p>PR integration against <code>main</code> at <code>0968718</code> preserves complete project history counts and the newer editable-retry behavior. Retry identity, custom verification and execution options now travel with each project draft, including when projects share a repository. The retry action waits for draft initialization. The full unit rerun passes 1,231 of 1,239 checks with zero failures and eight opt-in skips; all five Docker checks pass separately. The full browser run exercised 165 scenarios: 160 passed, four retry-navigation checks failed, and one reconnect test raced the expected page reload. After fixing those issues, the complete 11-scenario daily-workflow suite (including a new initialization regression) and seven-scenario Tailscale suite pass with zero failures. This verifies 166 distinct browser scenarios across the full run and focused reruns. Final build, typecheck, all 12 documentation checks and whitespace validation pass; refreshed project screenshots were visually inspected.</p>
146
+ <p>The automated scenario matrix is exercised by the project-navigation, team/shared-projects, SSH/computer, automation, mission, workspace and accessibility suites. Automated keyboard/axe checks support validation but do not establish human usability improvement. No participant pilot or completion-time comparison was conducted. The original five-person pilot and its wrong-destination threshold remain an external release gate; no pilot results are claimed.</p>
147
+ <h2 id="review-of-the-idea">Review of the idea</h2>
148
+ <p>The direction is sound, but changing labels alone will not resolve the confusion. The app has overlapping navigation destinations, implicit project selection and several legitimate meanings of workspace and team. Those need consistent behavior as well as consistent names.</p>
149
+ <p>The current implementation already provides a useful foundation:</p>
150
+ <div class="table-scroll" tabindex="0"><table>
151
+ <thead>
152
+ <tr>
153
+ <th>Finding</th>
154
+ <th>Evidence</th>
155
+ <th>Design consequence</th>
156
+ </tr>
157
+ </thead>
158
+ <tbody><tr>
159
+ <td>Projects already group repositories, runs and workflow defaults. A repository can occur in more than one project.</td>
160
+ <td><a href="https://github.com/midhunxavier/code-flow/blob/main/src/projects.ts">Project model</a></td>
161
+ <td>Build on the existing project entity; avoid a new organizational layer or assuming exclusive repository ownership.</td>
162
+ </tr>
163
+ <tr>
164
+ <td>Starting a run can create a project or add a repository to one. The composer can change the active project after a repository choice.</td>
165
+ <td><a href="https://github.com/midhunxavier/code-flow/blob/main/ui/state.ts">Selection state</a>, <a href="https://github.com/midhunxavier/code-flow/blob/main/src/projects.ts">project placement</a></td>
166
+ <td>Make the destination understandable before launch and make membership changes explicit.</td>
167
+ </tr>
168
+ <tr>
169
+ <td>The project page has a task box, metrics, scenarios, missions, results, repository details and automations together.</td>
170
+ <td><a href="https://github.com/midhunxavier/code-flow/blob/main/ui/project.tsx">Project page</a></td>
171
+ <td>Give immediate work priority and move configuration and specialized workflows to predictable destinations.</td>
172
+ </tr>
173
+ <tr>
174
+ <td>Human collaboration is partly called People, but its main destination is a task board.</td>
175
+ <td><a href="https://github.com/midhunxavier/code-flow/blob/main/ui/app.tsx">Application breadcrumbs</a>, <a href="https://github.com/midhunxavier/code-flow/blob/main/ui/collab-board.tsx">board</a></td>
176
+ <td>Call the task board Board; reserve People for membership and access.</td>
177
+ </tr>
178
+ <tr>
179
+ <td>Repository tools opens a page called Repository workspace or the project&#39;s workspace.</td>
180
+ <td><a href="https://github.com/midhunxavier/code-flow/blob/main/ui/project.tsx">Project page</a>, <a href="https://github.com/midhunxavier/code-flow/blob/main/ui/activity.tsx">activity page</a></td>
181
+ <td>Use Repositories for the destination and Repository tools for actions inside it.</td>
182
+ </tr>
183
+ <tr>
184
+ <td>SSH computers have separate API paths, browser state and drafts. The sidebar already lists projects by computer.</td>
185
+ <td><a href="https://github.com/midhunxavier/code-flow/blob/main/ui/lib.ts">Client routing</a>, <a href="https://github.com/midhunxavier/code-flow/blob/main/ui/connected-projects.tsx">connected projects</a>, <a href="https://github.com/midhunxavier/code-flow/blob/main/test/workspace-routing.test.ts">routing regression</a></td>
186
+ <td>Keep computer identity visible and preserve those boundaries.</td>
187
+ </tr>
188
+ <tr>
189
+ <td>A selected collaboration connection can address a different server from the current computer&#39;s project store. Shared repositories use keys mapped to local clones.</td>
190
+ <td><a href="https://github.com/midhunxavier/code-flow/blob/main/src/collab/connections.ts">Collaboration connections</a>, <a href="https://github.com/midhunxavier/code-flow/blob/main/ui/collab-state.ts">collaboration state</a></td>
191
+ <td>A project name or ID alone cannot identify a board across connections.</td>
192
+ </tr>
193
+ <tr>
194
+ <td>Connections, optional People controls and purpose-based Scheduling already exist.</td>
195
+ <td><a href="https://github.com/midhunxavier/code-flow/blob/main/ui/connections.tsx">Connections</a>, <a href="https://github.com/midhunxavier/code-flow/blob/main/ui/scheduling.tsx">Scheduling</a>, <a href="https://github.com/midhunxavier/code-flow/blob/main/test/e2e/simplification.e2e.ts">existing acceptance tests</a></td>
196
+ <td>Extend the simplification already in progress and retain its useful workflows.</td>
197
+ </tr>
198
+ </tbody></table>
199
+ </div><p>Three refinements are necessary to the original proposal:</p>
200
+ <ol>
201
+ <li><strong>Computer remains visible context.</strong> Removing workspace as a navigation concept must not obscure where files, CLIs, terminals and settings live. Delegating an agent turn to a worker is a different operation from opening a project on another computer.</li>
202
+ <li><strong>Runs and board tasks retain distinct meanings.</strong> A run is an execution with results and evidence. A board task records ownership, discussion, reviews and execution attempts. A combined task system would require a separate product and data-model decision.</li>
203
+ <li><strong>Project organization must feel optional for a simple start.</strong> Opening a repository should suggest a project name automatically. Users should not complete an administrative form before describing their task.</li>
204
+ </ol>
205
+ <p>The expected benefit is fewer decisions and fewer context switches. That remains a usability hypothesis until the proposed flows are tested with users.</p>
206
+ <h2 id="terminology-contract">Terminology contract</h2>
207
+ <div class="table-scroll" tabindex="0"><table>
208
+ <thead>
209
+ <tr>
210
+ <th>Term</th>
211
+ <th>Meaning and placement</th>
212
+ </tr>
213
+ </thead>
214
+ <tbody><tr>
215
+ <td>Project</td>
216
+ <td>The main navigation destination for related work. Its identity includes the source that owns it.</td>
217
+ </tr>
218
+ <tr>
219
+ <td>Repository</td>
220
+ <td>Code attached to a project. A single repository is selected automatically; multiple repositories require a visible selection.</td>
221
+ </tr>
222
+ <tr>
223
+ <td>Run</td>
224
+ <td>One execution of a requested task. Keep New run, Start run, run history and review terminology consistent.</td>
225
+ </tr>
226
+ <tr>
227
+ <td>Board</td>
228
+ <td>Optional shared task management within a project. Board cards open task details and their linked attempts or runs.</td>
229
+ </tr>
230
+ <tr>
231
+ <td>People</td>
232
+ <td>Members, project roles and access. Administrative account creation remains subject to owner authority.</td>
233
+ </tr>
234
+ <tr>
235
+ <td>Agents</td>
236
+ <td>Providers and roles performing a run. Use Agent workflow for their configuration.</td>
237
+ </tr>
238
+ <tr>
239
+ <td>Computer</td>
240
+ <td>The location of project files and the Code Flow instance serving them. A run can additionally name an execution worker.</td>
241
+ </tr>
242
+ <tr>
243
+ <td>Automation</td>
244
+ <td>Scheduled, deferred or triggered work within a project. Keep existing distinctions between repeat tasks, backlogs and missions.</td>
245
+ </tr>
246
+ <tr>
247
+ <td>Mission</td>
248
+ <td>An optional ongoing goal under Automation. Retain preview eligibility and existing review controls.</td>
249
+ </tr>
250
+ <tr>
251
+ <td>Workspace</td>
252
+ <td>Acceptable descriptive prose for the app as a whole; remove it from competing primary destinations and ambiguous context labels.</td>
253
+ </tr>
254
+ </tbody></table>
255
+ </div><p>Keep established workflow names such as Auto team during this change. Explain them under Agent workflow. Renaming every public workflow, internal class, API and storage key would broaden the change without improving navigation.</p>
256
+ <p>Use the same display terms in visible labels, accessible names, breadcrumbs, command search, empty states and documentation. Old words remain search aliases so existing users can find relocated features.</p>
257
+ <h2 id="proposed-navigation">Proposed navigation</h2>
258
+ <p>The navigation for the common local-owner case should look like this:</p>
259
+ <pre><code class="language-text">New run
260
+ Inbox
261
+
262
+ Projects
263
+ Code Flow
264
+ Storefront
265
+ Add project
266
+
267
+ Application menu
268
+ Scheduling across projects
269
+ Insights
270
+ Connections
271
+ Settings
272
+ Help
273
+ </code></pre>
274
+ <p>Projects remain expandable to recent runs, preserving fast access from the sidebar. Show computer groups only when multiple computers are configured. Keep an unobtrusive computer label in the project header, including on a single-computer installation. On a hosted session, use the server&#39;s available name or Remote server rather than calling the browser&#39;s device This computer.</p>
275
+ <p>Within a project:</p>
276
+ <pre><code class="language-text">Storefront Computer: Development VM
277
+ Overview Runs Repositories More
278
+
279
+ More
280
+ Board
281
+ People
282
+ Automation
283
+ Project settings
284
+ </code></pre>
285
+ <p>Overview, Runs and Repositories are the owner view&#39;s primary destinations. Board becomes a visible tab when collaboration is configured; Automation can become visible when the project has active scheduled work. Keep their positions stable for that project rather than changing tabs on every transient response. People stays an access-management destination. Shared users receive destinations allowed by their existing access, such as Board and Results; they do not receive owner tools merely because the shell is shared.</p>
286
+ <p>Overview shows the task entry point, items requiring a decision, active work and recent results. Put usage summaries, scenario libraries and detailed mission configuration behind their relevant destinations. Existing mission decisions still appear in the overview and Inbox when actionable.</p>
287
+ <p>Keep the global Inbox and Scheduling views as cross-project tools on the current computer. Label their scope. They must not imply that they aggregate every connected computer or collaboration server. Cross-server aggregation is outside the initial release.</p>
288
+ <h2 id="user-flows">User flows</h2>
289
+ <h3 id="first-project-and-first-run">First project and first run</h3>
290
+ <ol>
291
+ <li>The empty state offers <strong>Open repository</strong> and <strong>Join shared project</strong>. Remote setup is available through <strong>On another computer</strong> in the repository flow.</li>
292
+ <li>Open repository validates the selected repository and suggests its folder name as the project name. Reuse an unambiguous existing project; if several contain it, show their names and require a choice.</li>
293
+ <li>Create or open the project through the existing project API. Keep the name editable. Creating the project succeeds independently of launching an agent.</li>
294
+ <li>Open the composer with the project and repository already set. Present a recommended installed agent/workflow using existing defaults and availability rules.</li>
295
+ <li>The user describes the task, reviews the compact summary and selects Start run. The summary includes repository, branch, execution computer, agents, checks and limits.</li>
296
+ </ol>
297
+ <p>Advanced run options remain available. Preserve current permission, check and approval defaults; reduced visual complexity must not silently change execution behavior.</p>
298
+ <h3 id="returning-to-a-project">Returning to a project</h3>
299
+ <p>Open its Overview from the sidebar. Its task box and New run action lead to the same composer with explicit project context. A global New run action reuses the current valid project, or offers a lightweight project choice when none is selected. An existing unsent draft is restored rather than overwritten by a navigation action.</p>
300
+ <p>Use one canonical composer for both entry points. Avoid two independent prompt forms with different defaults, attachment behavior or launch validation.</p>
301
+ <h3 id="working-with-multiple-repositories">Working with multiple repositories</h3>
302
+ <p>Show the selected repository in the composer summary even when there is only one. For multiple repositories, use the last valid selection for that project and computer; show a selector before launch. Repositories displays the full list with paths and branch context sufficient to distinguish identical folder names.</p>
303
+ <p>Choosing a repository outside the current project offers explicit <strong>Open its project</strong> or <strong>Add to this project</strong> actions. Adding uses the project&#39;s membership operation and reports success before launch. Canceling leaves the current project and draft intact. The server revalidates project membership at launch, including if another tab removed the repository.</p>
304
+ <h3 id="working-on-another-computer">Working on another computer</h3>
305
+ <p>Open the remote project directly from the existing computer-grouped sidebar. Preserve the owning computer in the URL, API routing, drafts and settings. A disconnected project shows a reconnect action and its computer name; execution stays unavailable until the intended connection is restored.</p>
306
+ <p>Switching the computer opens that computer&#39;s project context. It does not move a project, copy repository files or reuse a local path on the remote machine. The run summary names a delegated worker separately when configured.</p>
307
+ <h3 id="collaborating-with-people">Collaborating with people</h3>
308
+ <p>An owner opens Project → People to view members and roles. Existing owner administration supplies account creation and access grants. A maintainer sees only actions the existing API authorizes.</p>
309
+ <p>Project → Board shows shared task ownership and progress. Join shared project reuses the existing connection flow, then lists authorized projects and maps shared repository keys to local clones when execution requires them. Joining must not create an unrelated local project with the same name and imply that it is the shared project.</p>
310
+ <p>For a linked server, a board link carries its connection identity as well as its project identity. A local project may show a linked board shortcut only when the relationship has been explicitly established; matching names, paths or IDs is insufficient. Keep the existing connection-scoped board entry available until that relationship is supported reliably.</p>
311
+ <h3 id="scheduling-and-ongoing-missions">Scheduling and ongoing missions</h3>
312
+ <p>Project → Automation opens the existing Scheduling purposes scoped to that project. Each purpose obtains its repository from the project context rather than directing users to New run just to select one. Keep Run once later, Repeat, Process a backlog and Pursue a mission as distinct choices.</p>
313
+ <p>Global Scheduling can filter across projects on the current computer. Managed mission schedules remain controlled by mission settings; moving their navigation does not grant generic automation controls authority to edit them.</p>
314
+ <h2 id="context-and-routing-design">Context and routing design</h2>
315
+ <h3 id="resolve-context-explicitly">Resolve context explicitly</h3>
316
+ <p>Introduce a small UI context module that derives the current project, source, repository and available capabilities. Separate the project being viewed, the composer draft&#39;s destination and the filter used by global lists. Today these purposes share parts of the active-project state, which makes unrelated screens influence one another.</p>
317
+ <p>An owner project reference needs the computer identity and project ID. A linked shared project reference additionally needs the collaboration connection and its project ID, qualified by the computer holding that connection. Run and board-task references likewise retain their source. These are client routing identities, not new organization records or replacements for server authorization.</p>
318
+ <p>The context module should implement these rules:</p>
319
+ <ul>
320
+ <li>A valid project route determines the page&#39;s project. Global filters cannot silently override it.</li>
321
+ <li>Explicit draft choices take precedence over remembered defaults. Defaults apply only to unset fields or an intentional reset.</li>
322
+ <li>An empty project has no runnable repository. It still has a useful add-repository or board-setup state.</li>
323
+ <li>Drafts and selected repositories are isolated by source and project. A repository removed from membership becomes an explicit unresolved destination; it must not silently redirect the draft elsewhere.</li>
324
+ <li>Reads, subscriptions and async selection responses are scoped and invalidated when context changes. A late response cannot overwrite a later choice.</li>
325
+ <li>The composer, side panel, repository tools and launch summary use the same resolved destination unless the side panel is explicitly pinned. A pin remains clearly labeled with its actual scope.</li>
326
+ <li>Unavailable or unauthorized sources stop resolution; they never fall back to a different computer or project for a mutation.</li>
327
+ </ul>
328
+ <p>Keep server-side identity, permission, membership and checkout validation authoritative. A project ID accepted by a UI component is not evidence of access.</p>
329
+ <h3 id="add-project-destinations-without-breaking-links">Add project destinations without breaking links</h3>
330
+ <p>Extend the project route with a validated section and optional repository/tool selection. Build links centrally rather than concatenating them in every component. Persist repository/tool context needed to reopen a deep link; do not depend on whatever the composer last selected.</p>
331
+ <div class="table-scroll" tabindex="0"><table>
332
+ <thead>
333
+ <tr>
334
+ <th>Existing entry</th>
335
+ <th>Proposed behavior</th>
336
+ </tr>
337
+ </thead>
338
+ <tbody><tr>
339
+ <td><code>#/project/:id</code></td>
340
+ <td>Project Overview.</td>
341
+ </tr>
342
+ <tr>
343
+ <td>New <code>#/project/:id/runs</code></td>
344
+ <td>Project run history.</td>
345
+ </tr>
346
+ <tr>
347
+ <td>New <code>#/project/:id/repositories</code></td>
348
+ <td>Repository list and tools with explicit repository selection.</td>
349
+ </tr>
350
+ <tr>
351
+ <td><code>#/project/:id/workspace</code></td>
352
+ <td>Compatibility alias for the project&#39;s Repositories destination.</td>
353
+ </tr>
354
+ <tr>
355
+ <td>New <code>#/project/:id/automation/:kind</code></td>
356
+ <td>Existing Scheduling purpose with an explicit project.</td>
357
+ </tr>
358
+ <tr>
359
+ <td>New project Board and People routes</td>
360
+ <td>Resolve only against the owning server or an explicitly identified collaboration source.</td>
361
+ </tr>
362
+ <tr>
363
+ <td><code>#/run/:id</code> and <code>#/review/:id/:branch</code></td>
364
+ <td>Keep working and derive project breadcrumbs from the result&#39;s recorded context.</td>
365
+ </tr>
366
+ <tr>
367
+ <td><code>#/team</code>, project and task variants</td>
368
+ <td>Keep connection identity and open the corresponding board/task view. Never reinterpret against an unrelated active project.</td>
369
+ </tr>
370
+ <tr>
371
+ <td><code>#/workspace</code> and <code>#/settings/workspace</code></td>
372
+ <td>Open repository tools for a valid current destination; otherwise show an explicit repository/project chooser.</td>
373
+ </tr>
374
+ <tr>
375
+ <td>Legacy SSH, team and remote-access settings links</td>
376
+ <td>Continue resolving through Connections.</td>
377
+ </tr>
378
+ </tbody></table>
379
+ </div><p>Retain <code>/computer/:id/</code> prefixes, existing team query context and URL encoding. Malformed links produce a recoverable state. Unsupported project subroutes should not silently appear to be Overview. Browser back/forward must restore both the destination and its context.</p>
380
+ <h3 id="reuse-existing-screens">Reuse existing screens</h3>
381
+ <div class="table-scroll" tabindex="0"><table>
382
+ <thead>
383
+ <tr>
384
+ <th>Area</th>
385
+ <th>Main implementation locations</th>
386
+ <th>Required change</th>
387
+ </tr>
388
+ </thead>
389
+ <tbody><tr>
390
+ <td>Routes and context</td>
391
+ <td><code>ui/navigation.ts</code>, <code>ui/state.ts</code>, <code>ui/lib.ts</code>, new focused context module</td>
392
+ <td>Explicit view/draft/filter contexts, qualified references, aliases and consistent link building.</td>
393
+ </tr>
394
+ <tr>
395
+ <td>Shell and sidebar</td>
396
+ <td><code>ui/app.tsx</code>, <code>ui/rail.tsx</code>, <code>ui/connected-projects.tsx</code></td>
397
+ <td>Project destinations, scope labels, breadcrumbs and discoverable global tools.</td>
398
+ </tr>
399
+ <tr>
400
+ <td>Project and composer</td>
401
+ <td><code>ui/project.tsx</code>, <code>ui/projects.tsx</code>, <code>ui/composer.tsx</code></td>
402
+ <td>Focused overview, direct repository onboarding and one composer path.</td>
403
+ </tr>
404
+ <tr>
405
+ <td>Repository tools</td>
406
+ <td><code>ui/activity.tsx</code>, <code>ui/workbench.tsx</code>, side-panel scope in <code>ui/state.ts</code></td>
407
+ <td>Explicit repository context, consistent labels and preserved worktree targets.</td>
408
+ </tr>
409
+ <tr>
410
+ <td>Collaboration</td>
411
+ <td><code>ui/collab-board.tsx</code>, <code>ui/collab-state.ts</code>, <code>ui/collab-settings.tsx</code>, <code>ui/shared.tsx</code>, <code>ui/team-connections.tsx</code></td>
412
+ <td>Board versus People distinction, correct connection scope and role-appropriate views.</td>
413
+ </tr>
414
+ <tr>
415
+ <td>Automation</td>
416
+ <td><code>ui/scheduling.tsx</code>, <code>ui/automations.tsx</code>, <code>ui/project-teams.tsx</code></td>
417
+ <td>Explicit project parameters and one configuration home for each schedule or mission.</td>
418
+ </tr>
419
+ <tr>
420
+ <td>Connections and settings</td>
421
+ <td><code>ui/connections.tsx</code>, <code>ui/ssh-projects.tsx</code>, <code>ui/team-server-wizard.tsx</code>, <code>ui/settings-sections.ts</code>, <code>ui/preferences.ts</code></td>
422
+ <td>Computer-oriented language, shared-project setup and consistent search aliases.</td>
423
+ </tr>
424
+ <tr>
425
+ <td>Server integration</td>
426
+ <td><code>src/projects.ts</code>, <code>src/server.ts</code>, <code>src/collab/connections.ts</code>, existing access-policy modules</td>
427
+ <td>Reuse existing project operations and enforce launch membership for the new explicit UI flow. Add narrowly scoped projections only when required.</td>
428
+ </tr>
429
+ </tbody></table>
430
+ </div><p>Extract reusable content from existing pages so an embedded project view does not render duplicate headers, pickers or event subscriptions. Hidden tabs should not fetch owner-only data or maintain unnecessary live feeds.</p>
431
+ <h2 id="implementation-sequence">Implementation sequence</h2>
432
+ <h3 id="phase-1-establish-the-design-contract">Phase 1 Establish the design contract</h3>
433
+ <p>Create a route and label inventory covering owner, SSH, linked-server and shared-user views. Record the identity source and access requirements of each destination. Build lightweight screen sketches for the empty state, project overview, composer summary, multiple repositories and shared board. Check whether each location answers “Which project?”, “Which repository?” and “Which computer?” when those answers matter.</p>
434
+ <p>Deliver the terminology map, route matrix and scenario checklist as the implementation contract. Capture baseline completion time and wrong turns for the usability scenarios below. This is a small design and investigation phase; it should expose any shared-project mapping gaps before route work begins.</p>
435
+ <p><strong>Exit criterion:</strong> every existing destination has a proposed home or compatibility entry, and the first-run flow requires no separate workspace or team setup.</p>
436
+ <h3 id="phase-2-implement-explicit-context-and-route-compatibility">Phase 2 Implement explicit context and route compatibility</h3>
437
+ <p>Add the context module and project sections. Separate global list filters from composer destination state. Add project/source-qualified draft and repository preferences with a versioned migration from existing browser state. Preserve the existing per-computer namespaces.</p>
438
+ <p>Wire route resolution, late-response guards, deep links and back/forward behavior before restructuring pages. Use the existing project APIs for explicit membership changes. The new project-bound UI launch path should request strict membership validation; retain deliberate compatibility behavior for existing automation and API clients.</p>
439
+ <p><strong>Exit criterion:</strong> routing and selection tests show that a project, repository or connection switch cannot redirect a launch, leak a draft or overwrite a more recent selection. Old bookmarks continue to resolve.</p>
440
+ <h3 id="phase-3-deliver-the-owner-project-experience">Phase 3 Deliver the owner project experience</h3>
441
+ <p>Implement the focused overview, Runs and Repositories destinations. Reuse existing result rows and tools. Add Open repository onboarding and simplify the single-repository composer. Update sidebar entry points, breadcrumbs, repository changes and the compact execution summary together.</p>
442
+ <p>Keep cross-project Inbox available. Move global Scheduling only when its project destination and command-search entry are working. Preserve keyboard shortcuts and recent-run navigation.</p>
443
+ <p><strong>Exit criterion:</strong> a new local user can open a repository, launch a fake-agent run and review its result through one project; an existing user can recover drafts, archives and repository tools without losing context.</p>
444
+ <p>This is the first useful release slice, dependent on Phases 1 and 2. It can ship before the collaboration restructuring.</p>
445
+ <h3 id="phase-4-integrate-collaboration-with-correct-source-identity">Phase 4 Integrate collaboration with correct source identity</h3>
446
+ <p>Separate Board from People and embed authorized project views. Reuse existing account administration, grants and board-task operations. Add explicit collaboration-source handling to navigation, requests and subscriptions. Preserve the connection-scoped board when no reliable local-project relationship exists.</p>
447
+ <p>Adapt shared dashboards using their existing safe data projections; do not embed the owner project page with controls merely hidden. Test empty shared projects that have repository keys but no server-side local clone. Expose existing terminal or host-execution grants only to their authorized recipients.</p>
448
+ <p><strong>Exit criterion:</strong> two servers with identical project or task IDs remain distinct, permission changes remove access promptly, and selecting another board cannot redirect an existing task execution.</p>
449
+ <h3 id="phase-5-complete-project-automation-and-discoverability">Phase 5 Complete project automation and discoverability</h3>
450
+ <p>Scope Scheduling, backlogs and missions explicitly to the project and repository. Surface actionable outcomes in Overview and Inbox using the existing evidence and approval rules. Align settings search, command search, connection setup, errors and help text with the terminology contract.</p>
451
+ <p>Apply predictable visibility: hide unused specialized controls initially, retain access through More or search, and surface already-configured features even when an old optional-navigation preference is off. Authorization decides availability; a preference decides presentation only.</p>
452
+ <p><strong>Exit criterion:</strong> users can find and manage existing schedules, missions, shared work and connection settings from their expected project or app location. All first-run instructions match the implemented navigation.</p>
453
+ <h3 id="phase-6-validate-and-roll-out">Phase 6 Validate and roll out</h3>
454
+ <p>Run the relevant behavioral and browser suites, then the full required checks for the final code change. Conduct the usability scenarios and inspect narrow screens, light/dark themes and keyboard/screen-reader behavior. Refresh documentation and screenshots after the routes stabilize.</p>
455
+ <p>Use a temporary navigation rollout switch if the implementation needs staged exposure. Both paths should use compatible storage so reverting navigation does not require restoring user data. Remove the temporary branch after validation rather than maintaining two permanent information architectures.</p>
456
+ <p><strong>Exit criterion:</strong> the scenario matrix passes, no unexplained source or destination switches occur, and pilot users can find previously available capabilities.</p>
457
+ <p>Phases 2 through 5 are substantial UI and integration work. Treat collaboration as the highest-uncertainty portion. Estimate delivery after Phase 1 resolves source mapping and draft migration; a simple label-change estimate would understate the scope.</p>
458
+ <h2 id="migration-and-compatibility">Migration and compatibility</h2>
459
+ <p>Preserve project IDs, repository membership, run logs, board tasks, shared repository keys, account roles, automation records and managed mission history. Introduce browser preference versions and additive route aliases rather than rewriting durable execution history.</p>
460
+ <p>For legacy browser drafts, migrate once into a valid source/project destination when unambiguous. Otherwise retain them as a recoverable unassigned draft and ask for a destination when opened. Keep the original recovery data until migration is verified. A failed migration must not create a project or start work.</p>
461
+ <p>Keep the existing semantics for historical runs whose projects were deleted or whose membership was inferred. Show them under Unassigned and retain review/archive access allowed by current rules. New explicit selection behavior does not justify silently regrouping old runs or sharing previously private results.</p>
462
+ <p>Do not merge projects by name, repository basename, Git remote URL or matching IDs across computers. Those can describe related work without establishing common identity or access. Repository membership changes may affect shared access, so expose their real consequences in the project settings action.</p>
463
+ <p>The initial scope excludes a global project database, automatic synchronization of clones, a merged run/board-task data model, cross-server Inbox federation, new permission levels and changes to execution engines. Each would need its own design and validation.</p>
464
+ <h2 id="validation-plan">Validation plan</h2>
465
+ <div class="table-scroll" tabindex="0"><table>
466
+ <thead>
467
+ <tr>
468
+ <th>Scenario</th>
469
+ <th>Required result</th>
470
+ </tr>
471
+ </thead>
472
+ <tbody><tr>
473
+ <td>New local installation, one repository</td>
474
+ <td>Open repository leads to a named project and ready composer with no team/workspace configuration.</td>
475
+ </tr>
476
+ <tr>
477
+ <td>Returning user with an unsent draft</td>
478
+ <td>Navigation and reload preserve the draft, its attachments and destination.</td>
479
+ </tr>
480
+ <tr>
481
+ <td>One repository in multiple projects</td>
482
+ <td>An explicit project selection wins; ambiguous onboarding asks the user to choose.</td>
483
+ </tr>
484
+ <tr>
485
+ <td>Multiple repositories with delayed API responses</td>
486
+ <td>The last valid selection controls checks, defaults, tools and launch; old responses cannot win.</td>
487
+ </tr>
488
+ <tr>
489
+ <td>Empty project or removed repository</td>
490
+ <td>Helpful setup/recovery state; no launch using a stale repository.</td>
491
+ </tr>
492
+ <tr>
493
+ <td>Same project name and path on two computers</td>
494
+ <td>Requests, drafts, terminals and file recovery remain isolated.</td>
495
+ </tr>
496
+ <tr>
497
+ <td>Disconnected SSH computer</td>
498
+ <td>Reconnect the intended computer; never substitute local execution.</td>
499
+ </tr>
500
+ <tr>
501
+ <td>Local project with a delegated worker</td>
502
+ <td>The project computer and actual execution worker are both clear.</td>
503
+ </tr>
504
+ <tr>
505
+ <td>Multiple collaboration servers with colliding IDs</td>
506
+ <td>Correct board, task, membership and inbox scope for each connection.</td>
507
+ </tr>
508
+ <tr>
509
+ <td>Viewer, reviewer, contributor and maintainer</td>
510
+ <td>Only authorized projections and actions are available; server enforcement still rejects forged requests.</td>
511
+ </tr>
512
+ <tr>
513
+ <td>Revoked or expired shared access</td>
514
+ <td>Stale views/subscriptions cease exposing data and present a recoverable access state.</td>
515
+ </tr>
516
+ <tr>
517
+ <td>Shared board without a server clone</td>
518
+ <td>Board/review workflows work; local clone mapping appears when needed for execution.</td>
519
+ </tr>
520
+ <tr>
521
+ <td>Existing schedules and managed missions</td>
522
+ <td>Same scope, budgets, controls and result links; mission readiness/approval rules remain intact.</td>
523
+ </tr>
524
+ <tr>
525
+ <td>Old bookmarks, encoded branches and browser history</td>
526
+ <td>Correct destination and source context, or a clear recoverable invalid-link state.</td>
527
+ </tr>
528
+ <tr>
529
+ <td>Pinned side panel or selected run worktree</td>
530
+ <td>Actual panel/tool target stays visible and cannot be mistaken for the composer repository.</td>
531
+ </tr>
532
+ <tr>
533
+ <td>Deleted project and archived runs</td>
534
+ <td>Existing history remains discoverable with correct access and ownership semantics.</td>
535
+ </tr>
536
+ </tbody></table>
537
+ </div><p>Extend behavioral coverage around <code>test/projects.test.ts</code>, <code>test/repo-selection-ui.test.ts</code>, <code>test/workspace-routing.test.ts</code>, <code>test/team-connections.test.ts</code>, <code>test/team-connection-ui.test.ts</code> and <code>test/shared-access.test.ts</code>. Add focused route/context tests where existing tests do not exercise the new behavior. Retain checkout-namespace and workspace-activity regressions when touching tool targeting.</p>
538
+ <p>Exercise browser flows in the existing simplification, connections, SSH projects, shared projects, team, project missions, workspace, settings and accessibility suites. Check visible results and request destinations rather than snapshotting implementation strings. Run <code>npm run typecheck</code>, the relevant targeted suites and documentation checks as changes land; run the full repository-required test set before release.</p>
539
+ <p>For usability, pilot with a small mix of new solo users, remote users and collaborators. Ask them to start a run, switch repository, identify the execution computer, find a result, open a shared board and locate access settings. Record completion without assistance, wrong turns, time to start and incorrect destination assumptions. Compare the same tasks against the current UI.</p>
540
+ <p>Proposed pilot targets are at least four of five participants completing the primary start-and-review flow without assistance, and no incorrect computer or repository assumption at the launch checkpoint. These are initial decision thresholds, not statistical proof. Any wrong-target launch or lost draft blocks release regardless of the aggregate score.</p>
541
+ <h2 id="principal-risks-and-controls">Principal risks and controls</h2>
542
+ <div class="table-scroll" tabindex="0"><table>
543
+ <thead>
544
+ <tr>
545
+ <th>Risk</th>
546
+ <th>Control</th>
547
+ </tr>
548
+ </thead>
549
+ <tbody><tr>
550
+ <td>Project becomes another mandatory setup burden</td>
551
+ <td>Open repository suggests and creates the project through a short flow.</td>
552
+ </tr>
553
+ <tr>
554
+ <td>Simplification hides execution location</td>
555
+ <td>Persistent computer context and a concrete pre-launch summary.</td>
556
+ </tr>
557
+ <tr>
558
+ <td>Renaming People leaves the board hard to find</td>
559
+ <td>Dedicated Board destination, contextual links and legacy search terms.</td>
560
+ </tr>
561
+ <tr>
562
+ <td>Shared and local projects look falsely unified</td>
563
+ <td>Qualified source identities and explicit relationships; retain connection-scoped access where needed.</td>
564
+ </tr>
565
+ <tr>
566
+ <td>Useful tools disappear into menus</td>
567
+ <td>Stable project destinations, searchable aliases and task-based discoverability tests.</td>
568
+ </tr>
569
+ <tr>
570
+ <td>Context refactoring loses drafts or misapplies defaults</td>
571
+ <td>Versioned migration, preserved recovery data and async-switch regression tests.</td>
572
+ </tr>
573
+ <tr>
574
+ <td>Shared views expose owner data</td>
575
+ <td>Reuse shared projections and enforce server permissions; do not rely on hidden controls.</td>
576
+ </tr>
577
+ <tr>
578
+ <td>A large rewrite delays the basic improvement</td>
579
+ <td>Ship the owner project flow after Phase 3, then integrate collaboration and automation.</td>
580
+ </tr>
581
+ </tbody></table>
582
+ </div><p>The recommended first implementation is the explicit context and owner project flow: one clear project destination, one composer path, predictable repository selection and visible computer scope. That creates the foundation the remaining simplification depends on.</p>
583
+ </article><footer><a href="https://github.com/midhunxavier/code-flow/blob/main/docs/project-first-navigation-plan.md">Edit this page on GitHub ↗</a><span>code-flow · 0.1.0-preview.1 · <a href="font-license.txt">Font license</a></span></footer><nav class="pagination" aria-label="Adjacent guides"><a href="application-improvements.html"><small>← Previous</small>Application improvement program</a><a href="dynamic-teams-evaluation.html"><small>Next →</small>Dynamic teams: implementation evidence and rollout decision</a></nav></main>
584
+ <aside class="on-page" aria-label="On this page"><strong>On this page</strong><a class="depth-2" href="#implemented-navigation-contract">Implemented navigation contract</a><a class="depth-2" href="#phases-46-implementation-and-validation">Phases 4–6 implementation and validation</a><a class="depth-2" href="#review-of-the-idea">Review of the idea</a><a class="depth-2" href="#terminology-contract">Terminology contract</a><a class="depth-2" href="#proposed-navigation">Proposed navigation</a><a class="depth-2" href="#user-flows">User flows</a><a class="depth-3" href="#first-project-and-first-run">First project and first run</a><a class="depth-3" href="#returning-to-a-project">Returning to a project</a><a class="depth-3" href="#working-with-multiple-repositories">Working with multiple repositories</a><a class="depth-3" href="#working-on-another-computer">Working on another computer</a><a class="depth-3" href="#collaborating-with-people">Collaborating with people</a><a class="depth-3" href="#scheduling-and-ongoing-missions">Scheduling and ongoing missions</a><a class="depth-2" href="#context-and-routing-design">Context and routing design</a><a class="depth-3" href="#resolve-context-explicitly">Resolve context explicitly</a><a class="depth-3" href="#add-project-destinations-without-breaking-links">Add project destinations without breaking links</a><a class="depth-3" href="#reuse-existing-screens">Reuse existing screens</a><a class="depth-2" href="#implementation-sequence">Implementation sequence</a><a class="depth-3" href="#phase-1-establish-the-design-contract">Phase 1 Establish the design contract</a><a class="depth-3" href="#phase-2-implement-explicit-context-and-route-compatibility">Phase 2 Implement explicit context and route compatibility</a><a class="depth-3" href="#phase-3-deliver-the-owner-project-experience">Phase 3 Deliver the owner project experience</a><a class="depth-3" href="#phase-4-integrate-collaboration-with-correct-source-identity">Phase 4 Integrate collaboration with correct source identity</a><a class="depth-3" href="#phase-5-complete-project-automation-and-discoverability">Phase 5 Complete project automation and discoverability</a><a class="depth-3" href="#phase-6-validate-and-roll-out">Phase 6 Validate and roll out</a><a class="depth-2" href="#migration-and-compatibility">Migration and compatibility</a><a class="depth-2" href="#validation-plan">Validation plan</a><a class="depth-2" href="#principal-risks-and-controls">Principal risks and controls</a></aside>
585
+ <aside id="help-panel" hidden aria-labelledby="help-title"><div class="chat-heading"><div><span class="eyebrow">Your AI companion</span><h2 id="help-title">Ask code-flow</h2></div><button id="close-help" aria-label="Close AI companion">✕</button></div><div class="chat-toolbar"><span>Grounded in your docs</span><button id="new-chat">New chat</button></div><div id="help-messages" role="log" aria-label="Help conversation" aria-live="polite"><div id="chat-welcome"><span class="chat-mark" aria-hidden="true">✦</span><h3>What would you like to do?</h3><p>Let’s find your next step. Ask about setup, workflows or something that’s unclear.</p><div class="suggestions"><button type="button" data-question="How do I start my first run?">Start my first run ↗</button><button type="button" data-question="What should I do when a check fails?">Understand a failed check ↗</button></div></div></div><p id="help-status" role="status">Checking your installed CLIs…</p><button id="retry-help" hidden>Retry connection</button><form id="help-form" hidden><label class="sr-only" for="question">Your question</label><textarea id="question" rows="3" maxlength="4000" placeholder="Ask a question…" required></textarea><div class="composer-controls"><label class="sr-only" for="help-agent">Use your CLI</label><select id="help-agent"></select><button type="button" id="stop-help" hidden>Stop</button><button class="primary" id="send-help" aria-label="Send message">Send ↗</button></div><small>Uses your CLI login and quota. Shift + Enter for a new line.</small></form><a id="help-guide" href="help.html">About your local companion →</a></aside></div>
586
+ <dialog id="search-dialog" aria-labelledby="search-title"><div class="dialog-title"><h2 id="search-title">Search documentation</h2><button data-close="search-dialog" aria-label="Close search">✕</button></div><label class="sr-only" for="search">Search all guides</label><input id="search" type="search" placeholder="Search workflows, settings, troubleshooting…" autocomplete="off"><div id="search-results" aria-live="polite"></div></dialog>
587
+ </body></html>