pmx-canvas 0.8.2 → 0.9.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 (335) hide show
  1. package/.github/extensions/pmx-canvas/runtime.json +1 -1
  2. package/.github/extensions/pmx-canvas/tools.json +601 -22
  3. package/CHANGELOG.md +49 -0
  4. package/Readme.md +131 -532
  5. package/dist/canvas/global.css +2724 -476
  6. package/dist/canvas/index.js +168 -107
  7. package/dist/canvas/mcp-app.html +2899 -596
  8. package/dist/json-render/index.js +20 -20
  9. package/dist/types/client/canvas/BarHint.d.ts +12 -2
  10. package/dist/types/client/canvas/BoardLinkDialog.d.ts +3 -1
  11. package/dist/types/client/canvas/BoardPinButton.d.ts +10 -0
  12. package/dist/types/client/canvas/BoardSwitcher.d.ts +1 -1
  13. package/dist/types/client/canvas/CanvasViewport.d.ts +1 -1
  14. package/dist/types/client/canvas/CommandBar.d.ts +3 -4
  15. package/dist/types/client/canvas/ConnectionBanner.d.ts +2 -1
  16. package/dist/types/client/canvas/ContextChip.d.ts +3 -0
  17. package/dist/types/client/canvas/CrossBoardReferences.d.ts +5 -0
  18. package/dist/types/client/canvas/EdgeLayer.d.ts +14 -3
  19. package/dist/types/client/canvas/EmptyState.d.ts +4 -4
  20. package/dist/types/client/canvas/HomeGraphView.d.ts +2 -0
  21. package/dist/types/client/canvas/HomeMapView.d.ts +1 -0
  22. package/dist/types/client/canvas/HomeReviewView.d.ts +6 -0
  23. package/dist/types/client/canvas/HomeView.d.ts +9 -7
  24. package/dist/types/client/canvas/KnowledgeDialog.d.ts +4 -0
  25. package/dist/types/client/canvas/LifecycleChrome.d.ts +5 -0
  26. package/dist/types/client/canvas/LifecycleFields.d.ts +7 -0
  27. package/dist/types/client/canvas/LifecyclePanel.d.ts +1 -0
  28. package/dist/types/client/canvas/MemoryInspector.d.ts +7 -0
  29. package/dist/types/client/canvas/NearPinLayer.d.ts +14 -0
  30. package/dist/types/client/canvas/NodeContextMark.d.ts +40 -7
  31. package/dist/types/client/canvas/RelationPresetsDialog.d.ts +4 -0
  32. package/dist/types/client/canvas/RelationsPanel.d.ts +4 -0
  33. package/dist/types/client/canvas/SessionPanel.d.ts +2 -0
  34. package/dist/types/client/canvas/canvas-area.d.ts +1 -1
  35. package/dist/types/client/canvas/graph-geometry.d.ts +27 -0
  36. package/dist/types/client/canvas/graph-model.d.ts +37 -0
  37. package/dist/types/client/canvas/memory-layout.d.ts +23 -0
  38. package/dist/types/client/canvas/use-chrome-height.d.ts +2 -0
  39. package/dist/types/client/canvas/use-focus-trap.d.ts +1 -0
  40. package/dist/types/client/canvas/use-memory-graph.d.ts +8 -0
  41. package/dist/types/client/canvas/use-pan-zoom.d.ts +4 -1
  42. package/dist/types/client/icons.d.ts +0 -10
  43. package/dist/types/client/nodes/AxStepControls.d.ts +1 -1
  44. package/dist/types/client/nodes/InlineMarkdownEditor.d.ts +4 -4
  45. package/dist/types/client/nodes/MarkdownNode.d.ts +5 -1
  46. package/dist/types/client/nodes/McpAppNode.d.ts +4 -4
  47. package/dist/types/client/nodes/viewer-runtime-state.d.ts +1 -1
  48. package/dist/types/client/state/boards-store.d.ts +81 -9
  49. package/dist/types/client/state/canvas-store.d.ts +14 -1
  50. package/dist/types/client/state/context-chip-store.d.ts +22 -0
  51. package/dist/types/client/state/context-status-store.d.ts +35 -0
  52. package/dist/types/client/state/intent-bridge.d.ts +11 -8
  53. package/dist/types/client/state/knowledge-store.d.ts +22 -0
  54. package/dist/types/client/state/near-pin-store.d.ts +44 -1
  55. package/dist/types/client/state/presence-store.d.ts +4 -4
  56. package/dist/types/client/state/presentation.d.ts +28 -0
  57. package/dist/types/client/state/relation-store.d.ts +10 -0
  58. package/dist/types/client/state/session-store.d.ts +41 -2
  59. package/dist/types/client/state/workspace-settings.d.ts +7 -0
  60. package/dist/types/client/types.d.ts +13 -1
  61. package/dist/types/client/utils/keyboard.d.ts +2 -0
  62. package/dist/types/client/utils/time-ago.d.ts +4 -0
  63. package/dist/types/mcp/context-uri-template.d.ts +3 -1
  64. package/dist/types/server/agent-presence.d.ts +10 -3
  65. package/dist/types/server/ax-context.d.ts +1 -1
  66. package/dist/types/server/canvas-db.d.ts +30 -7
  67. package/dist/types/server/canvas-operations.d.ts +24 -2
  68. package/dist/types/server/canvas-provenance.d.ts +22 -2
  69. package/dist/types/server/canvas-serialization.d.ts +2 -0
  70. package/dist/types/server/canvas-state.d.ts +93 -15
  71. package/dist/types/server/canvas-validation.d.ts +1 -1
  72. package/dist/types/server/context-brief.d.ts +94 -6
  73. package/dist/types/server/context-reads.d.ts +33 -7
  74. package/dist/types/server/edit-summary.d.ts +20 -0
  75. package/dist/types/server/index.d.ts +71 -10
  76. package/dist/types/server/knowledge-lifecycle.d.ts +221 -0
  77. package/dist/types/server/lifecycle-status.d.ts +10 -0
  78. package/dist/types/server/memory-graph.d.ts +9 -0
  79. package/dist/types/server/mutation-history.d.ts +2 -0
  80. package/dist/types/server/operations/ops/ax-shared.d.ts +1 -1
  81. package/dist/types/server/operations/ops/boards.d.ts +2 -1
  82. package/dist/types/server/operations/ops/lifecycle.d.ts +2 -0
  83. package/dist/types/server/operations/ops/memory-graph.d.ts +2 -0
  84. package/dist/types/server/operations/ops/nodes.d.ts +5 -0
  85. package/dist/types/server/operations/ops/query.d.ts +23 -0
  86. package/dist/types/server/operations/registry.d.ts +1 -0
  87. package/dist/types/server/placement.d.ts +7 -0
  88. package/dist/types/server/scope-fence.d.ts +2 -1
  89. package/dist/types/server/spatial-analysis.d.ts +6 -3
  90. package/dist/types/server/tour-control.d.ts +32 -0
  91. package/dist/types/server/wiki-links.d.ts +14 -0
  92. package/dist/types/server/workbench-auth.d.ts +2 -0
  93. package/dist/types/shared/agent-context.d.ts +2 -0
  94. package/dist/types/shared/agent-presence.d.ts +15 -12
  95. package/dist/types/shared/auto-arrange.d.ts +1 -0
  96. package/dist/types/shared/boards.d.ts +4 -4
  97. package/dist/types/shared/knowledge-lifecycle.d.ts +41 -0
  98. package/dist/types/shared/knowledge-presets.d.ts +6 -0
  99. package/dist/types/shared/lifecycle-status.d.ts +24 -0
  100. package/dist/types/shared/memory-graph.d.ts +53 -0
  101. package/dist/types/shared/relations.d.ts +68 -0
  102. package/dist/types/shared/semantic-attention.d.ts +2 -0
  103. package/dist/types/shared/tour.d.ts +38 -0
  104. package/dist/types/shared/workspace-settings.d.ts +11 -0
  105. package/docs/RELEASE.md +21 -3
  106. package/docs/adr-001-bun-only-runtime.md +7 -1
  107. package/docs/adr-002-shared-product-separate-runtimes.md +93 -0
  108. package/docs/api-reference.md +109 -0
  109. package/docs/ax-host-adapter-contract.md +1 -1
  110. package/docs/ax-state-contract.md +5 -4
  111. package/docs/cli.md +153 -15
  112. package/docs/demos/pmx-canvas-demo.mp4 +0 -0
  113. package/docs/design/AgentContext.dc.html +3 -3
  114. package/docs/design/BoardPins.dc.html +37 -22
  115. package/docs/design/Categories.dc.html +208 -0
  116. package/docs/design/CategoryEditor.dc.html +33 -0
  117. package/docs/design/Chrome.dc.html +52 -9
  118. package/docs/design/ContextChip.dc.html +224 -0
  119. package/docs/design/ContextChip600.dc.html +136 -0
  120. package/docs/design/EmptyState.dc.html +45 -0
  121. package/docs/design/Flows.dc.html +23 -1
  122. package/docs/design/HeaderMarks.dc.html +183 -0
  123. package/docs/design/Home.dc.html +19 -1
  124. package/docs/design/HomeGraph.dc.html +86 -202
  125. package/docs/design/HomeMap.dc.html +23 -1
  126. package/docs/design/HomeTeam.dc.html +32 -14
  127. package/docs/design/Lifecycle.dc.html +22 -0
  128. package/docs/design/Lifecycle600.dc.html +18 -0
  129. package/docs/design/LifecycleVariants.dc.html +157 -0
  130. package/docs/design/LinkAuthorship.dc.html +139 -0
  131. package/docs/design/LinksChanged.dc.html +203 -0
  132. package/docs/design/LinksOptions.dc.html +137 -0
  133. package/docs/design/LinksOptions600.dc.html +134 -0
  134. package/docs/design/NearPin.dc.html +9 -10
  135. package/docs/design/Pane600.dc.html +4 -3
  136. package/docs/design/Relations.dc.html +3 -2
  137. package/docs/design/Restore.dc.html +152 -0
  138. package/docs/design/SeeChange.dc.html +267 -0
  139. package/docs/design/Uses.dc.html +12 -6
  140. package/docs/design/canvas.json +146 -19
  141. package/docs/design.md +449 -16
  142. package/docs/environment.md +0 -1
  143. package/docs/evals/curation-effect.md +128 -0
  144. package/docs/http-api.md +459 -37
  145. package/docs/mcp.md +146 -18
  146. package/docs/node-types.md +58 -3
  147. package/docs/plans/design-gaps-2026-10-08.md +53 -0
  148. package/docs/plans/plan-009-tech-debt-backlog.md +379 -0
  149. package/docs/plans/plan-016-context-made-visible-wave-1.md +150 -5
  150. package/docs/plans/plan-017-knowledge-categories-and-lifecycle.md +175 -0
  151. package/docs/plans/plan-018-connected-memory-wave-2.md +594 -0
  152. package/docs/plans/plan-019-post-0.9-roadmap.md +198 -0
  153. package/docs/product-context-vision-2026-09.md +17 -1
  154. package/docs/product-vision-2026-09.md +1082 -43
  155. package/docs/product-vision-review-2026-09.md +13 -1
  156. package/docs/screenshots/workbench-live-dark.png +0 -0
  157. package/docs/screenshots/workbench-live-light.png +0 -0
  158. package/docs/sdk.md +62 -2
  159. package/package.json +1 -1
  160. package/plugins/pmx-canvas/com.github.copilot/extensions/pmx-canvas/runtime.json +1 -1
  161. package/plugins/pmx-canvas/plugin.json +1 -1
  162. package/plugins/pmx-canvas/runtime.json +1 -1
  163. package/plugins/pmx-canvas/tools.json +601 -22
  164. package/skills/pmx-canvas/SKILL.md +216 -42
  165. package/skills/pmx-canvas/references/full-reference.md +120 -21
  166. package/skills/pmx-canvas/references/github-copilot-app-adapter.md +2 -2
  167. package/skills/pmx-canvas/references/importing-context.md +132 -0
  168. package/skills/pmx-canvas/references/installing-pmx-canvas.md +6 -6
  169. package/skills/pmx-canvas/references/tours-and-recording.md +16 -1
  170. package/skills/pmx-canvas-testing/SKILL.md +20 -0
  171. package/src/cli/agent.ts +2 -0
  172. package/src/cli/commands/ax.ts +12 -0
  173. package/src/cli/commands/boards.ts +87 -11
  174. package/src/cli/commands/edges.ts +28 -0
  175. package/src/cli/commands/groups.ts +7 -0
  176. package/src/cli/commands/nodes.ts +1 -0
  177. package/src/cli/commands/query.ts +34 -2
  178. package/src/cli/commands/record.ts +199 -48
  179. package/src/cli/index.ts +6 -1
  180. package/src/client/App.tsx +177 -70
  181. package/src/client/canvas/AttentionHistory.tsx +0 -2
  182. package/src/client/canvas/BarHint.tsx +40 -2
  183. package/src/client/canvas/BoardCopyDialog.tsx +1 -1
  184. package/src/client/canvas/BoardFolderDialog.tsx +7 -7
  185. package/src/client/canvas/BoardLinkDialog.tsx +138 -33
  186. package/src/client/canvas/BoardPinButton.tsx +33 -0
  187. package/src/client/canvas/BoardSwitcher.tsx +26 -40
  188. package/src/client/canvas/CanvasNode.tsx +360 -237
  189. package/src/client/canvas/CanvasViewport.tsx +45 -7
  190. package/src/client/canvas/CommandBar.tsx +29 -23
  191. package/src/client/canvas/CommandPalette.tsx +5 -12
  192. package/src/client/canvas/ConnectionBanner.tsx +3 -3
  193. package/src/client/canvas/ContextChip.tsx +296 -0
  194. package/src/client/canvas/ContextMenu.tsx +63 -5
  195. package/src/client/canvas/CrossBoardReferences.tsx +60 -0
  196. package/src/client/canvas/EdgeLayer.tsx +339 -76
  197. package/src/client/canvas/EmptyState.tsx +33 -18
  198. package/src/client/canvas/ExpandedNodeOverlay.tsx +72 -40
  199. package/src/client/canvas/ExternalWriters.tsx +57 -42
  200. package/src/client/canvas/HomeGraphView.tsx +942 -0
  201. package/src/client/canvas/HomeMapView.tsx +641 -0
  202. package/src/client/canvas/HomeReviewView.tsx +167 -0
  203. package/src/client/canvas/HomeView.tsx +687 -160
  204. package/src/client/canvas/IntentLayer.tsx +19 -12
  205. package/src/client/canvas/KnowledgeDialog.tsx +488 -0
  206. package/src/client/canvas/LifecycleChrome.tsx +133 -0
  207. package/src/client/canvas/LifecycleFields.tsx +91 -0
  208. package/src/client/canvas/LifecyclePanel.tsx +533 -0
  209. package/src/client/canvas/MemoryInspector.tsx +104 -0
  210. package/src/client/canvas/Minimap.tsx +3 -3
  211. package/src/client/canvas/NearPinLayer.tsx +187 -0
  212. package/src/client/canvas/NodeContextMark.tsx +175 -97
  213. package/src/client/canvas/Presentation.tsx +23 -57
  214. package/src/client/canvas/RelationPresetsDialog.tsx +413 -0
  215. package/src/client/canvas/RelationsPanel.tsx +82 -0
  216. package/src/client/canvas/SelectionBar.tsx +3 -6
  217. package/src/client/canvas/SessionPanel.tsx +90 -50
  218. package/src/client/canvas/SessionReceipt.tsx +311 -39
  219. package/src/client/canvas/ShortcutOverlay.tsx +1 -1
  220. package/src/client/canvas/SnapshotPanel.tsx +27 -36
  221. package/src/client/canvas/ToolRail.tsx +367 -192
  222. package/src/client/canvas/TopBar.tsx +354 -124
  223. package/src/client/canvas/canvas-area.ts +10 -3
  224. package/src/client/canvas/graph-geometry.ts +195 -0
  225. package/src/client/canvas/graph-model.ts +254 -0
  226. package/src/client/canvas/memory-layout.ts +106 -0
  227. package/src/client/canvas/use-chrome-height.ts +20 -0
  228. package/src/client/canvas/use-focus-trap.ts +31 -5
  229. package/src/client/canvas/use-memory-graph.ts +58 -0
  230. package/src/client/canvas/use-node-drag.ts +2 -1
  231. package/src/client/canvas/use-pan-zoom.ts +64 -7
  232. package/src/client/icons.tsx +0 -63
  233. package/src/client/mcp-app/style.css +0 -6
  234. package/src/client/nodes/AxStepControls.tsx +74 -50
  235. package/src/client/nodes/BoardNode.tsx +5 -1
  236. package/src/client/nodes/ContextNode.tsx +18 -11
  237. package/src/client/nodes/ExtAppFrame.tsx +0 -1
  238. package/src/client/nodes/FileNode.tsx +46 -42
  239. package/src/client/nodes/HtmlNode.tsx +32 -0
  240. package/src/client/nodes/ImageNode.tsx +1 -1
  241. package/src/client/nodes/InlineFormatBar.tsx +6 -9
  242. package/src/client/nodes/InlineMarkdownEditor.tsx +56 -17
  243. package/src/client/nodes/MarkdownNode.tsx +377 -109
  244. package/src/client/nodes/McpAppNode.tsx +50 -20
  245. package/src/client/nodes/MdFormatBar.tsx +21 -18
  246. package/src/client/nodes/PromptNode.tsx +1 -1
  247. package/src/client/nodes/ResponseNode.tsx +1 -1
  248. package/src/client/nodes/viewer-runtime-state.ts +54 -22
  249. package/src/client/state/attention-bridge.ts +64 -15
  250. package/src/client/state/boards-store.ts +193 -39
  251. package/src/client/state/canvas-store.ts +99 -12
  252. package/src/client/state/context-chip-store.ts +70 -0
  253. package/src/client/state/context-status-store.ts +53 -0
  254. package/src/client/state/intent-bridge.ts +51 -30
  255. package/src/client/state/knowledge-store.ts +43 -0
  256. package/src/client/state/near-pin-store.ts +115 -6
  257. package/src/client/state/presence-store.ts +7 -10
  258. package/src/client/state/presentation.ts +91 -0
  259. package/src/client/state/relation-store.ts +81 -0
  260. package/src/client/state/session-store.ts +144 -18
  261. package/src/client/state/sse-bridge.ts +206 -29
  262. package/src/client/state/workspace-settings.ts +11 -0
  263. package/src/client/theme/global.css +2724 -476
  264. package/src/client/types.ts +12 -0
  265. package/src/client/utils/keyboard.ts +10 -0
  266. package/src/client/utils/time-ago.ts +14 -0
  267. package/src/json-render/renderer/index.tsx +31 -0
  268. package/src/mcp/canvas-app.ts +12 -2
  269. package/src/mcp/context-uri-template.ts +7 -4
  270. package/src/mcp/server.ts +63 -41
  271. package/src/mcp/workbench-app.ts +39 -6
  272. package/src/server/agent-presence.ts +128 -28
  273. package/src/server/ax-context.ts +27 -13
  274. package/src/server/board-export.ts +12 -1
  275. package/src/server/canvas-db.ts +331 -42
  276. package/src/server/canvas-operations.ts +195 -83
  277. package/src/server/canvas-provenance.ts +53 -22
  278. package/src/server/canvas-serialization.ts +2 -0
  279. package/src/server/canvas-state.ts +950 -122
  280. package/src/server/canvas-validation.ts +9 -2
  281. package/src/server/context-brief.ts +345 -38
  282. package/src/server/context-reads.ts +178 -30
  283. package/src/server/demo-state.json +355 -24
  284. package/src/server/edit-summary.ts +74 -0
  285. package/src/server/html-surface.ts +8 -1
  286. package/src/server/index.ts +181 -11
  287. package/src/server/knowledge-lifecycle.ts +304 -0
  288. package/src/server/lifecycle-status.ts +232 -0
  289. package/src/server/memory-graph.ts +166 -0
  290. package/src/server/mutation-history.ts +18 -6
  291. package/src/server/operations/composites.ts +32 -11
  292. package/src/server/operations/http.ts +7 -2
  293. package/src/server/operations/index.ts +4 -0
  294. package/src/server/operations/mcp.ts +26 -1
  295. package/src/server/operations/ops/ax-presence.ts +1 -1
  296. package/src/server/operations/ops/ax-read.ts +57 -6
  297. package/src/server/operations/ops/ax-timeline.ts +28 -2
  298. package/src/server/operations/ops/backup.ts +5 -3
  299. package/src/server/operations/ops/batch.ts +35 -4
  300. package/src/server/operations/ops/boards.ts +188 -47
  301. package/src/server/operations/ops/canvas-wire.ts +31 -1
  302. package/src/server/operations/ops/edges.ts +36 -2
  303. package/src/server/operations/ops/groups.ts +6 -1
  304. package/src/server/operations/ops/lifecycle.ts +262 -0
  305. package/src/server/operations/ops/memory-graph.ts +45 -0
  306. package/src/server/operations/ops/nodes.ts +107 -24
  307. package/src/server/operations/ops/query.ts +281 -68
  308. package/src/server/operations/ops/snapshots.ts +73 -1
  309. package/src/server/operations/ops/validate.ts +5 -1
  310. package/src/server/operations/ops/viewport.ts +97 -3
  311. package/src/server/operations/registry.ts +74 -25
  312. package/src/server/placement.ts +29 -0
  313. package/src/server/scope-fence.ts +78 -6
  314. package/src/server/server.ts +115 -16
  315. package/src/server/spatial-analysis.ts +48 -23
  316. package/src/server/tour-control.ts +82 -0
  317. package/src/server/wiki-links.ts +137 -0
  318. package/src/server/workbench-auth.ts +11 -0
  319. package/src/shared/agent-context.ts +3 -0
  320. package/src/shared/agent-presence.ts +15 -15
  321. package/src/shared/auto-arrange.ts +2 -0
  322. package/src/shared/boards.ts +4 -4
  323. package/src/shared/knowledge-lifecycle.ts +22 -0
  324. package/src/shared/knowledge-presets.ts +80 -0
  325. package/src/shared/lifecycle-status.ts +26 -0
  326. package/src/shared/memory-graph.ts +74 -0
  327. package/src/shared/relations.ts +98 -0
  328. package/src/shared/semantic-attention.ts +15 -1
  329. package/src/shared/tour.ts +23 -5
  330. package/src/shared/workspace-settings.ts +13 -0
  331. package/dist/types/client/canvas/ContextPinBar.d.ts +0 -1
  332. package/dist/types/client/canvas/FocusFieldLayer.d.ts +0 -1
  333. package/dist/types/client/canvas/kind-colors.d.ts +0 -3
  334. package/dist/types/server/agent-context.d.ts +0 -22
  335. package/src/client/canvas/ContextPinBar.tsx +0 -25
package/docs/design.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Design: the system and when it gets built
2
2
 
3
- *Updated 2026-10-04. Companion to [the vision](product-vision-2026-09.md): the vision
3
+ *Updated 2026-10-12. Companion to [the vision](product-vision-2026-09.md): the vision
4
4
  says what the product does and in what order; this file says how it looks and which
5
5
  design work ships with which part of that order. Design never ships ahead of the
6
6
  function that produces its data, and function never ships with today's styling when
@@ -119,14 +119,24 @@ the same change.
119
119
  | [`Tokens.dc.html`](design/Tokens.dc.html) | Typeface, type scale, radii, elevation, one meaning per colour | 0 |
120
120
  | [`TokenSystem.dc.html`](design/TokenSystem.dc.html) | The token system today vs proposed: palette, meaning, scale | 0 |
121
121
  | [`Themes.dc.html`](design/Themes.dc.html) | Meaning colours across all nine themes, proposed names | 0 |
122
- | [`Chrome.dc.html`](design/Chrome.dc.html) | Rail at 690 px, node header (expand and context pin always visible, the rest under ⋯), section headings, floating chrome | 0 |
122
+ | [`Chrome.dc.html`](design/Chrome.dc.html) | Rail at 690 px, node header (expand and context pin always visible, the rest under ⋯), bounded reference footer, section headings, floating chrome | 0 |
123
+ | [`EmptyState.dc.html`](design/EmptyState.dc.html) | Empty board: Drop files here, Paste a link, Start a note with collaboration guidance, then a separate agent-first path | 0 |
123
124
  | [`Context.dc.html`](design/Context.dc.html) | Nodes in context: every state, the count chip, the command bar | 0–1 |
124
125
  | [`NearPin.dc.html`](design/NearPin.dc.html) | Near a pin: the dotted “near” chip on a pinned node's unpinned neighbours, tethers on hover, the moment of change, combinations, 600 px; ships with the brief carrying neighbours (title + summary, reason “near <pin>”) | 1 |
125
- | [`AgentContext.dc.html`](design/AgentContext.dc.html) | What the agent did: read, created, edited, suggested, out of date; lens and receipt | 1 |
126
- | [`BoardPins.dc.html`](design/BoardPins.dc.html) | Board pins: where you pin a board, the tiered brief, the context chip across boards | 1 |
127
- | [`Home.dc.html`](design/Home.dc.html) | Home — Folders: library tree, pinned boards, README, board details | 1 |
128
- | [`HomeMap.dc.html`](design/HomeMap.dc.html), [`HomeGraph.dc.html`](design/HomeGraph.dc.html) | Home — Map and Graph views of the library | 2 |
129
- | [`HomeTeam.dc.html`](design/HomeTeam.dc.html) | Home on a team server: workspace and personal libraries, per-user pins, moving a board into the workspace, locked links (look ahead) | Later (Part 3, step 5) |
126
+ | [`ContextChip.dc.html`](design/ContextChip.dc.html), [`ContextChip600.dc.html`](design/ContextChip600.dc.html) | The one context chip (decided with the maintainer 2026-10-07: placement, near muted, quiet empty state, agent-pin dots, “N in context” at 600 px): top bar, right, replacing the floating ContextPinBar and the ContextBudget meter; at rest for cards, near, boards, agent-only pins, nothing pinned; opened into Cards (full, × unpin, clear all), Near (derived, title + summary, no ×, Pin to promote) and Boards (read state, × unpin). **A pinned board travels as a map** (decided 2026-10-07): folder, README summary, each pinned card's title + summary, links and backlinks; the agent pulls a card or board in full itself, so the chip shows no full / summary / not-sent state. **A cost, not a budget** (decided with the maintainer 2026-10-08): the chip shows what the brief costs as ≈ tokens, with no meter, share or clipped state; when the host reports its agent's token usage the panel names that count too (“Copilot’s whole context holds 42.8k tokens”). The brief's size limit stays internal as a page size. At rest it is the summary, always visible and right-aligned in the top bar at every width; the details open only on click. At ≤ 760 px the summary is “N in context” with no token text, and the bar gives way in this order: session id and counts; Export, Present, zoom and fit fold into ⋯; agent chip to its avatar, Start agent session to its icon; the board name truncates — the dot, board pin, summary and ⋯ never collapse. Harbor and Daylight, 600 px. Supersedes the chip wording on Context, NearPin and BoardPins | 1 (slices 4b, 5b) |
127
+ | [`LinksChanged.dc.html`](design/LinksChanged.dc.html) | Links that changed after the agent read a card (decided with the maintainer 2026-10-08: option C of LinksOptions): the mark sits on the edge, not on both cards — a person’s new or edited link says “not seen by <agent>” (muted, eye-off) until a read carries either end, an agent’s link says “by <agent>” (violet). <agent> is whichever agent is attached (Claude, Codex, Copilot, any other), never a fixed name; the drawing’s “Claude” is an example. Marks stay quiet on a board no agent has read; link authorship (built 2026-10-09 to [`LinkAuthorship.dc.html`](design/LinkAuthorship.dc.html)) stays until a person edits or relabels the link, as a violet ✦ before the label with who drew it and when in the hint — the agent today; another person's initial on shared boards (hosted version, Part 4) is not built; card text changes keep amber “changed” and win on the card; links-only changes show per card only in the context panel (“links changed”, neutral); relation inks never change; 600 px | 1 |
128
+ | [`LinksOptions.dc.html`](design/LinksOptions.dc.html), [`LinksOptions600.dc.html`](design/LinksOptions600.dc.html) | The connections question as three options on one board (one text edit, one link by you, one by the agent, plus the context panel rows): A as built (every change “changed”), B a separate amber “links changed” on both cards, C the mark on the connection (“not seen by <agent>”, neutral) — C decided with the maintainer 2026-10-08; A and B not chosen | 1 |
129
+ | [`HeaderMarks.dc.html`](design/HeaderMarks.dc.html) | A node header with more than one mark (decided 2026-10-08): the title keeps at least 140 px (all of it when shorter; only amber may push it to 80). “By <agent>” is authorship, not state, so it never takes a chip: a violet sparkle on the type icon at every width, its words in the icon's hint. The one state chip (near, or the read state) folds to its 22 px glyph and then into the icon's hint as the title needs the room; amber “changed” never folds. The icon's one hint holds the full title, the byline and any folded word — never other cards' titles. 260, 340 and 480 px, Harbor and Daylight. Supersedes the byline chip on AgentContext. Read state shows on pinned cards only (decided 2026-10-08: "read" only accumulates and spans boards, so on unpinned cards it would mark everything; the receipt and lens say what was read) — the near + read cases are superseded | 1 |
130
+ | [`LinkAuthorship.dc.html`](design/LinkAuthorship.dc.html) | Who drew a link (decided 2026-10-08): an agent's link carries a violet ✦ before its label until a person edits, retypes or relabels it — a read never clears it; another person on a shared board shows their initial (hosted version, Part 4); the board's only person shows no mark. “Not seen by <agent>” follows, behind a hairline, on a person's new link until the next read; it folds to its glyph on a short line or below 60 % zoom, and below 35 % labels go and only marks stay. The hint names who drew it and when, and who took it over. Harbor and Daylight | 1 |
131
+ | [`SeeChange.dc.html`](design/SeeChange.dc.html) | Built locally (2026-10-10): Before above After (the receipt stays 290 px), changed words marked (removed struck through and muted, added in a violet tint), excerpts cut with “…”, Undo this card and its states (✓ Undone · You edited it since · Open its board to undo), the Edited row’s Undo (Undone · Kept your edits). Long scroll boxes start at the first changed word with context above it; the receipt uses opaque `--c-panel` so underlying marks do not bleed through. At ≤ 760 px the agent's initial has its violet ring and phase dot; clicking opens live counts, the dim-untouched switch and Open session panel (ContextChip600 wins over Pane600). Checked at 600/1024/1920 in all nine themes | 1 |
132
+ | [`AgentContext.dc.html`](design/AgentContext.dc.html) | What the agent did: read, created, edited, suggested, out of date; lens and receipt. Built (2026-10-10) with two placements of our own: the live "Claude · this session" counts sit in the top bar's agent chip ("2 read · 1 edited", press to dim untouched cards; Pane600's wording), because the bottom of the canvas belongs to the command bar; "see change" lives on the receipt's Edited lines, not on the card, which has no meta line — its open view is now built to SeeChange. The drawing's Suggested state is dropped (maintainer, 2026-10-10: the agent changes the canvas directly; asks and suggestions go through the composer) | 1 |
133
+ | [`BoardPins.dc.html`](design/BoardPins.dc.html) | Board pins: where you pin a board, the tiered brief, the context chip across boards; each pinned board carries its category glyph and review state (due count, the brief’s “review due” / “lifecycle unknown” lines) | 1 |
134
+ | [`Home.dc.html`](design/Home.dc.html) | Home — Folders: library tree, pinned boards, README, board details. Folders carry no colour (the 2026-10-07 decision supersedes the drawing's hues); the folder's README line waits until folders have a README. Map and Graph are now available. A card selects the board into details; Open board (or a double-click) opens it | 1, 2 |
135
+ | [`CategoryEditor.dc.html`](design/CategoryEditor.dc.html), [`Uses.dc.html`](design/Uses.dc.html), [`Home.dc.html`](design/Home.dc.html), [`Lifecycle.dc.html`](design/Lifecycle.dc.html), [`Lifecycle600.dc.html`](design/Lifecycle600.dc.html) | Selected 2026-10-14: C1 compact category inspector; R2 read-only chooser then separate preset editor; H2 individual-card Home Review queue; V2 real card beside a docked review drawer, lower dock at 600 px. Supersedes earlier category full-form and review-modal geometry; retains inheritance, evidence guards and independent clocks | Implemented; owner acceptance pending, no release claim |
136
+ | [`HomeMap.dc.html`](design/HomeMap.dc.html), [`HomeGraph.dc.html`](design/HomeGraph.dc.html) | Home — Map and Graph views of the library; implemented with the wave-2 deviations below | 2 |
137
+ | [`HomeTeam.dc.html`](design/HomeTeam.dc.html) | Home on a team server: workspace and personal libraries, per-user pins, moving a board into the workspace, locked links, folder categories and due counts in both libraries (look ahead) | Later (hosted version, Part 4) |
138
+ | [`Categories.dc.html`](design/Categories.dc.html), [`CategoryEditor.dc.html`](design/CategoryEditor.dc.html), [`Lifecycle.dc.html`](design/Lifecycle.dc.html), [`Lifecycle600.dc.html`](design/Lifecycle600.dc.html) | Knowledge categories as a folder property (glyph + word, no colour; set here vs `↳` inherited; dashed “unknown”), folder settings, the one workspace list with lifecycle defaults and templates (org/team/personal is one option), a solo-research workspace; on cards: lifecycle override (never category), the four clocks, review outcomes with evidence, the board's review list, the brief. Review due is amber **outlined** with ⧗ as the card's bottom line, only while due; changed-since-read stays amber **filled** with △ in the header. 600 px | For review (move 13: local categories and lifecycle are implemented; shared scopes come with the hosted version, Part 4) |
139
+ | [`LifecycleVariants.dc.html`](design/LifecycleVariants.dc.html), [`Restore.dc.html`](design/Restore.dc.html) | Where lifecycle shows: variant A (review due on the card while due) vs B (only in the ⋯ menu, a count on the board), with the shared ⋯ → Lifecycle entry; retiring and restoring a card: dimmed in place, Retired filter, search, Restore in the Lifecycle tab, Undo toast, history with who and when | A chosen 2026-10-07; restore confirmed |
130
140
  | [`Relations.dc.html`](design/Relations.dc.html) | Relations on a research board, today vs proposed; edge anatomy; relation inks | 3 |
131
141
  | [`Flows.dc.html`](design/Flows.dc.html) | Data lineage with staleness, what a finding rests on, opening a group | 3, 5 |
132
142
  | [`Uses.dc.html`](design/Uses.dc.html) | One relation layer for research, dependencies, decisions and agent flows | 3 |
@@ -135,6 +145,116 @@ the same change.
135
145
  | [`Pane600.dc.html`](design/Pane600.dc.html) | Home and a board at the narrow end, 600 px | all |
136
146
  | [`Vision.dc.html`](design/Vision.dc.html) | How each design area maps to the vision, and the open decisions | — |
137
147
 
148
+ **Empty-board onboarding (owner decision, 2026-10-17).** Keep both starting paths visible:
149
+ Drop files here, Paste a link, and Start a note, each with a short explanation. The note
150
+ invites the person to ask their agent to help develop the idea. A separate “Or start with
151
+ your agent” section says “Give your agent a task and ask it to work on this board.” This is
152
+ guidance, not an agent-launch button, and remains visible with Agent sessions (Beta) off.
153
+ With the beta on, the existing Start agent session action sits below that guidance.
154
+ The existing panel, type and colour tokens stay; actions form one readable column, and
155
+ short windows scroll the guide rather than cutting off either starting path.
156
+
157
+ **Canvas mouse gestures (owner decision, 2026-10-19).** Right-click on empty canvas
158
+ opens the existing creation menu on release. Holding the right button and moving more
159
+ than 5 screen pixels pans; releasing after a drag never opens a menu, even when the
160
+ pointer returns to its starting point. Small hand jitter remains a click. Cancelled
161
+ gestures open nothing. Right-drag over cards, middle-button drag, Space-drag and the
162
+ existing node and background double-click menus remain available. Right-clicking a
163
+ connection line or label opens its menu on release instead of double-click; dragging
164
+ from either still pans without opening a menu. Menu appearance is unchanged.
165
+
166
+ **Workspace UI opt-ins (owner decision, 2026-10-16).** Main rail **Settings** contains
167
+ **Agent sessions (Beta)** and **Knowledge lifecycle (Beta)**, each with a small switch,
168
+ both **OFF by default**. These preferences persist workspace-wide across reloads and
169
+ board changes: they are library-wide settings, never board snapshot state. Restoring a
170
+ board snapshot must not change them. Chrome §7 is the chosen settings drawing; this
171
+ decision gates the session and lifecycle surfaces described elsewhere in this guide.
172
+
173
+ Every main Settings item (including existing actions and both opt-ins) has an explanatory,
174
+ nonnative tooltip on pointer hover and keyboard focus. Tooltips render outside the scrolling
175
+ menu in an overlay, stay within the viewport, and do not clip at the menu boundary. Do not
176
+ use native `title` tooltips; associate the explanation with its control for assistive technology.
177
+ The lifecycle explanation leads with context lifecycle and boards/cards decaying as their
178
+ relevance fades, before naming its tools and explaining that turning it off preserves data.
179
+ Keep the menu scrollable in short windows and all items keyboard-reachable. Saving a switch
180
+ uses `aria-disabled` with an action guard, not native disabling that drops keyboard focus;
181
+ the focused switch announces its new state, and board shortcuts never own menu keys.
182
+ Trace uses the same inline switch, without a Beta label or submenu. Clear trace stays a
183
+ separate Settings action while capture is enabled or recorded trace cards remain.
184
+ Relation filters sit 8 px below the canvas top when lifecycle is off, regardless of the
185
+ session opt-in. Reserve the lifecycle row's space only while its filters are visible.
186
+
187
+ - **Agent sessions OFF** hides session chips, Start agent session, timeline, work items,
188
+ composer and receipts. It does not end or detach attached agents. Normal writer visibility
189
+ remains, and approvals, scope fences, human edit locks and veto protections still apply;
190
+ required approval decisions must remain reachable outside the hidden session UI. Restore
191
+ the bottom-center **N nodes in context** pill for pinned cards on the current board, with
192
+ Clear all and its styled tooltip, independently of attachment or lifecycle. Hide it on Home
193
+ and when no cards are pinned. Keep the top-bar context summary unchanged. The selection
194
+ toolbar wraps within the canvas above the pill; at narrow widths a visible minimap sits
195
+ 10 px above the toolbar's measured height, or above the pill if nothing is selected. Fit
196
+ and focus reserve the pill's screen-space bounds. ContextChip shows this footer exception
197
+ to the earlier one-chip decision; enabling sessions gives the footer back to the composer.
198
+ Footer collision layout uses the actual canvas width, including space taken by Review or
199
+ session panels: at 1200 px or less the minimap sits above the measured composer/selection
200
+ stack, with a 10 px gap even when the minimap magnifies on hover. Hidden composers reserve
201
+ no space. Wider canvases keep the minimap in the bottom-right corner.
202
+ - **Knowledge lifecycle OFF** hides Home Review, card Review, review-policy and category
203
+ management, lifecycle filters, due marks and retired marks/dimming. Saved policies,
204
+ categories and review records remain intact. Open lifecycle drafts are suspended without
205
+ saving or discarding them and resume when enabled again. Ordinary folders, boards, pins
206
+ and relations remain available; hiding lifecycle never removes their ordinary controls.
207
+ - These are **UI opt-ins**, not backend security boundaries or API disables. Background
208
+ agents and API operations retain their contracts and protections. Retirement still excludes
209
+ retired content from agent context even while retired marks and lifecycle controls are hidden.
210
+ Context counts and nearby-context marks exclude retired cards regardless of the opt-in;
211
+ raw pin membership remains saved, so restoring a retired card restores its active pin.
212
+ Clear all removes all saved pins, including retired cards excluded from the displayed count.
213
+ A successful review save is acknowledged even if its dock is suspended before the reply:
214
+ clear the saved draft, reload its preconditions, and retain retirement Undo on resume.
215
+
216
+ **Near cards distance (owner decision, 2026-10-14).** Near means an edge-to-edge
217
+ gap of at most 600 canvas pixels, not distance between centres. Large cards do
218
+ not need to overlap to qualify. Keep the five nearest unpinned cards per pin;
219
+ the brief, chip distances, tether numbering and nearest-pin drag preview use the
220
+ same gap. The dotted boundary expands the whole pinned rectangle by 600 pixels,
221
+ with rounded corners, rather than drawing a circle around its centre.
222
+
223
+ **Escape cancels selection (owner decision, 2026-10-14).** Escape returns board
224
+ relation and To review / Retired filters to All, and clears selected cards or
225
+ links. In Home it clears the selected board/card in Folders, Map or Graph
226
+ without leaving that view or resetting its camera; the Review queue's search
227
+ and source-warning filter also clear. Open menus/dialogs consume Escape first, and typing in a
228
+ text editor or search field does not silently reset the underlying selection.
229
+ Category and relation-preset dialogs retain Escape ownership after a busy save/apply
230
+ disables the focused control and focus falls back to the page body; nested menus and
231
+ unsaved-change confirmations still dismiss first without discarding drafts.
232
+ Agent session popovers accept Escape immediately on opening, consume it before underlying
233
+ selection and return focus to their initial button without scrolling the canvas.
234
+
235
+ **Authorship simplification (owner decision, 2026-10-12).** Remove the violet stars from
236
+ card type icons and relation pills. The type-icon hint still names who wrote or edited the
237
+ card; the relation hint still names who drew it and when, including later takeover.
238
+ Bare lines also expose that hint, so removing an unlabelled link's star does not remove its
239
+ authorship information. This supersedes the star treatment in HeaderMarks, LinkAuthorship
240
+ and LinksChanged above. Blue context pins, violet read-state marks and the agent's activity
241
+ lens remain separate and unchanged.
242
+
243
+ **See change runtime bounds (2026-10-10).** In short windows the whole receipt scrolls inside
244
+ the canvas region, keeping Undo and History reachable. The Edited row follows individual restores
245
+ as well as bulk Undo. On another board, View diff becomes Open <board> to compare, even when the
246
+ session only added or removed cards; snapshot ownership checks stay unchanged.
247
+
248
+ **Viewer refresh handoff (2026-10-10).** Keep the painted embedded JSON/graph viewer visible
249
+ while its replacement loads and restores tab-local state. After React commits, the replacement
250
+ advances its own rendering cycle through two animation frames before acknowledging readiness.
251
+ Authenticate that acknowledgement by node ID, nonce and source window, then wait two parent
252
+ animation frames before promotion. The replacement renders behind the old opaque iframe, inert
253
+ and excluded from accessibility until promotion; `visibility:hidden` would suppress rendering.
254
+ Keep the iframe stack's z-indices local. An obsolete replacement cannot promote after a newer
255
+ source arrives.
256
+ Standalone viewers and HTML/artifact viewers retain their existing load path; no new styling.
257
+
138
258
  ## Principles
139
259
 
140
260
  - **One meaning per colour, the same in every theme.** Blue = in the agent's
@@ -144,8 +264,9 @@ the same change.
144
264
  three. Each theme keeps its own surfaces and accent; the meaning colours keep
145
265
  their hue and are tuned only for lightness. A token test keeps them apart in all
146
266
  nine themes.
147
- - **Context pins at two levels, one look.** A card pin sends that card's content; a board
148
- pin brings the whole board into the agent's working set, from anywhere in the library
267
+ - **Context pins at two levels, one look.** A card pin puts that card first in the agent's
268
+ map (title, summary, relations; the agent pulls the full text when it decides to); a board
269
+ pin brings the whole board into the agent's working set as a map, from anywhere in the library
149
270
  ([vision move 0a](product-vision-2026-09.md#0a-board-pins-a-working-set-across-boards-sm)).
150
271
  Both use the outline pin (not in context) and the filled blue badge (in context), and the
151
272
  context chip counts both: "4 cards · 3 boards in context".
@@ -164,7 +285,41 @@ the same change.
164
285
  README, close) appear on hover under ⋯ and ×. Their slots stay reserved while
165
286
  hidden, so hover or keyboard focus cannot move the pin onto another action.
166
287
  Section labels are a heading display of the markdown node. Rarely used tools
167
- live in one settings menu on the rail.
288
+ live in one settings menu on the rail (built 2026-10-08: theme, snapshots, minimap,
289
+ shortcuts, trace, feedback; now also Agent sessions (Beta) and Knowledge lifecycle (Beta),
290
+ both initially off, with library-wide persistence and explanatory hover/focus tooltips.
291
+ Theme and Trace open in place with a "‹ Settings" row). The
292
+ Eraser stays beside Text note — it is the only way to remove an annotation — so the rail
293
+ has 13 tools (Chrome.dc.html §7, updated to match).
294
+ - **Kinds and knowledge categories carry no colour** (categories confirmed with the
295
+ maintainer 2026-10-07). A node kind and a folder's category are told by glyph and word
296
+ only; no hue is spent on them, so every colour on the board keeps a meaning. This
297
+ settles the old Home folder-hue question: folders show their category tag, never a
298
+ coloured square.
299
+ - **Retire is reversible** (confirmed 2026-10-07). "Retire from active context" only takes
300
+ a card out of the brief; the card and its history stay. A retired card is dimmed in
301
+ place, found by the board's Retired filter and by search, and restored from its
302
+ Review dialog; the restore is recorded with who and when, and is not a validation.
303
+ - **Lifecycle lives in menus; only "review due" reaches the card** (decided with the
304
+ maintainer 2026-10-07, variant A in `LifecycleVariants.dc.html`). While a review is due a
305
+ card shows one bottom line, `⧗ review due` (amber, outlined) with a short reason; a healthy
306
+ card shows no lifecycle line. Rate, decay type, inherited or set, the four clocks and the
307
+ outcome history live under ⋯ → Review → Settings and history, folder settings and Home.
308
+ "No review policy" appears in Home's selected-folder summary, never on a card. Why: the brief tells the agent
309
+ to doubt a due card, so the human sees that on the card too.
310
+ **Freshness correction, 2026-10-18:** newly authored cards have no warning until
311
+ their effective decay policy or an actual source invalidation requires review.
312
+ Creation is not evidence validation. Historical imports and undated existing cards
313
+ do not gain a new freshness clock; edits never restart it. Navigation groups and
314
+ portals skip inherited factual decay unless explicitly assigned a card policy.
315
+ An explicitly due group's same outlined footer sits below its children in the
316
+ group frame, never as the empty body's expanding first child. The Lifecycle
317
+ artboards' warning tokens, glyph, copy and compact row remain unchanged.
318
+ - **A portal's pin is its board's pin** (decided with the maintainer 2026-10-07). On a
319
+ portal card the header pin, in the usual place, pins the linked board into the agent's
320
+ working set (README and pinned cards in full, on every board); there is no separate card
321
+ pin, which would only send the portal's summary while this board is open. Every other
322
+ card keeps its card pin.
168
323
  - **Relations are the edge layer, not node types.** Design work adds no node type;
169
324
  the vision's own `ask` node (move 3) is separate.
170
325
  - **Any size, from a side pane to a full window.** The workbench lives in narrow agent-host
@@ -176,18 +331,55 @@ the same change.
176
331
  ## Build plan
177
332
 
178
333
  Each wave pairs a vision move with the design that shows it. A wave is done only
179
- when both halves pass its check. Status reflects 0.7.0 (see the vision's
180
- implementation table).
334
+ when both halves pass its check. **Current progress, 2026-10-12:** the implemented
335
+ Wave 2/3 scope and acceptance fixes are pushed in the
336
+ [combined implementation](https://github.com/pskoett/pmx-canvas/commit/11dc311732d8c12acc86dda12b269539df8fa5b3)
337
+ and [stabilization follow-up](https://github.com/pskoett/pmx-canvas/commit/fd63c3c611e680864d444532ca3ef7bb79cd171e).
338
+ Home Map/Graph now have live updates, counted filters and selection details; Graph
339
+ follows the topology-driven navigation acceptance revision below. Explicit library browsing survives agent
340
+ board switches, preserving camera, selection and gestures until the human opens a target.
341
+ Wave 3 implements per-board relation vocabularies, provenance, source-driven review and
342
+ [knowledge categories and context lifecycle](plans/plan-017-knowledge-categories-and-lifecycle.md).
343
+ The final [stabilization record](plans/plan-018-connected-memory-wave-2.md#delivered-checkpoint-2026-10-12)
344
+ has 1,444 unit, 306 client and 276 headed browser tests, 20 repeated save-race cases,
345
+ fresh headed CLI E2E and live human/real-agent transport checks. Widths and all nine themes
346
+ were inspected; independent board vocabularies persist across switching/reload. All five
347
+ [CI jobs](https://github.com/pskoett/pmx-canvas/actions/runs/38218734543) pass. These gates
348
+ do not establish complete drawing parity or replace the owner's acceptance.
349
+
350
+ **Remaining acceptance:** the owner's test pass since 0.8.2 remains open. The real-agent
351
+ curation evaluation moved to the end of the plan on 2026-10-19; the post-0.9.0 order of
352
+ Waves 4 and 5 is in [plan 019](plans/plan-019-post-0.9-roadmap.md). The actual Amp embedded context-pill opening, native Copilot/WebKit,
353
+ native Windows UI and registry-installed execution remain unverified. Dense Fit labels need
354
+ selection/local focus for detail, not a claim of large-library readability. The sketch gaps
355
+ below remain implementation work. The [release gates](RELEASE.md) still apply before a release;
356
+ the owner authorized review, testing and release of 0.9.0 on 2026-10-22. The release
357
+ candidate includes the acceptance fixes, but that authorization does not turn qualified
358
+ native-host checks or deferred sketch parity into completed work.
359
+
360
+ **Sketch parity, clarified 2026-10-11.** `Relations`, `Flows` and `Uses` remain the
361
+ vision's target designs, not screenshots of the shipped workbench. The Wave-3
362
+ foundation does not implement every interaction pictured in them. It provides
363
+ per-board vocabularies, semantic inks, separate endpoint slots, authored reasons,
364
+ evidence/source/use queries, downstream review qualification and view-only
365
+ highlights. Parallel-pair count badges, cycle/affected counts, the compact inline
366
+ edge editor, amber stale-lineage strokes and the Show lineage / Show on canvas
367
+ actions are not implemented. The current editor is a context menu with text
368
+ dialogs; source changes appear as review-due card footers, not recoloured edges.
369
+ Group drill-in with breadcrumbs and outside endpoint stubs belongs to Wave 5.
370
+ The sketches' suggested-link Accept/Dismiss treatment was superseded by the
371
+ 2026-10-10 direct-edit decision recorded above; it is not a pending acceptance
372
+ workflow. A demo of existing features must not be used to claim full sketch parity.
181
373
 
182
374
  | Wave | Vision | Function (build) | Design (proposal boards) | Done when |
183
375
  |---|---|---|---|---|
184
- | **0. Foundation** — ships alone, first | Moves 5, 9, 10 | Bundle Plex; controls inherit the font; type/radius/shadow tokens; meaning tokens per theme; theme renames (`dark` → Harbor, `light` → Daylight, neutral; no aliases); pin style that survives selection and attention; violet header bar replaces amber halos and focus fields | Today / Proposed, Tokens, Themes, Rail and node header, Nodes in context | No control renders in a fallback font; token test passes for all nine themes; reference cases pass at 600, 1024 and 1920 px; demo board regenerated |
185
- | **1. Context made visible** — next batch, with the curation evaluation | Part 1 bet, moves 0a, 2, 7 | Surface `context_reads` (already recorded since 0.7.0: who read, which nodes were delivered) per node and per board as read / not read / changed since read, using revisions; who pinned; activity lens and session receipt from presence activity and revisions; board pins (`board_pins`, tiered brief, `canvas_board pin/unpin`) and Home's pinned-boards section | What the agent did with context, Nodes in context, Board pins, Home (Folders) | From the board alone, a person can answer "did the agent read what I pinned, and is its copy current?" The evaluation in `docs/evals/` reads the same data |
186
- | **2. Connected memory views** — next batch, remaining wiki/graph work | Moves 0, 14 | Board map projection (generated like the code graph), wiki links, direct cross-board card edges, previous-board chains | Home Map, Home Graph | Map and Graph are generated from the library; orphans visible; works at 600 px and in a full window |
376
+ | **0. Foundation**: shipped in 0.8.0; remaining foundation gaps ship with plan 019 step 3 | Moves 5, 9, 10 | Bundle Plex; controls inherit the font; type/radius/shadow tokens; meaning tokens per theme; theme renames (`dark` → Harbor, `light` → Daylight, neutral; no aliases); pin style that survives selection and attention; violet header bar replaces amber halos and focus fields | Today / Proposed, Tokens, Themes, Rail and node header, Nodes in context | No control renders in a fallback font; token test passes for all nine themes; reference cases pass at 600, 1024 and 1920 px; demo board regenerated |
377
+ | **1. Context made visible** — its curation evaluation moved to the end of the plan (2026-10-19) | Part 1 bet, moves 0a, 2, 7 | Surface `context_reads` (already recorded since 0.7.0: who read, which nodes were delivered) per node and per board as read / not read / changed since read, using revisions; who pinned; activity lens and session receipt from presence activity and revisions; board pins (`board_pins`, tiered brief, `canvas_board pin/unpin`) and Home's pinned-boards section | What the agent did with context, Nodes in context, Board pins, Home (Folders) | From the board alone, a person can answer "did the agent read what I pinned, and is its copy current?" The evaluation in `docs/evals/` reads the same data |
378
+ | **2. Connected memory views** — implemented, verification gates apply | Moves 0, 14 | One board/card projection for Home, links/backlinks, brief discovery and `canvas://graph{?focus,depth}`; saved wiki ID bindings, direct cross-board card edges, previous-board chains, persisted Map positions | Home Map, Home Graph (deviations below) | Map and Graph are generated from the library; orphans visible; works at 600 px and in a full window |
187
379
  | **3. Relations layer** | Moves 0, 1, 13 | Edge `reason` and an open `kind` with a per-board vocabulary; relations carried in the brief's text form; "derived from" with staleness from provenance and recipes; relation queries for the inspector | Relations, Lineage, One relation layer | Hovering a node explains each link; a changed source turns downstream nodes amber; the agent's brief includes relations |
188
380
  | **4. Frame host and viewers** | Moves 5, 9 | One frame host passing the full theme tokens; json-render defaults to the canvas theme with an opt-out for design experiments; zoomed-out cards for unmounted frames | Node types 1–3, Zoomed out | No viewer draws its own background; 20 portals mount no more frames than none; fit-all is readable |
189
381
  | **5. Agent output and groups as pages** | Moves 3, 0 | Work items, gates and asks as nodes; make board / inline board; opening a group keeps its outside links | One relation layer (agent flow), Lineage (open a group) | Agent output is styled by the same shell and tokens; a group opened as a board shows its outside stubs |
190
- | **Later — share ladder** | Part 3 | Read-only link, comments, second writer; at step 5, workspace and personal libraries with per-user pins | HomeTeam (look ahead): Home with two roots (Workspace, Personal), your pins across both, an explicit move with its effects spelled out, locked cards for boards a viewer cannot read | Exports and shared views inherit the tokens; a viewer sees the same meaning colours; nothing personal crosses into the workspace without an explicit share or move |
382
+ | **Later: hosted version** | Part 4 (moved from Part 3, 2026-10-19) | Read-only link, comments, second writer, accounts and roles; org → team → personal scopes with configurable categories and per-user pins; built once for the ChatGPT Sites and later Cloudflare editions | HomeTeam is the earlier two-root look ahead; updated scope/category drawings are required before building, retaining explicit publication and locked cards for unreadable boards | Exports and shared views inherit the tokens; a viewer sees the same meaning colours; nothing personal reaches a wider audience without explicit publication |
191
383
 
192
384
  **Folders and portals (decided 2026-10-06).** Home uses folders as the visible hierarchy (where a
193
385
  board lives, one place); portals and links are how boards relate: a many-to-many graph the agent
@@ -195,6 +387,247 @@ navigates through links and backlinks on `canvas://boards`, and that Map and Gra
195
387
  replaces the review's portal-derived levels as the navigation tree. Where a board's folder and its
196
388
  links disagree, the Map shows it (folders as regions) rather than forcing them to match.
197
389
 
390
+ **Home Map/Graph acceptance revision (2026-10-18, owner-authorized Claude/Oracle agreement).**
391
+ Graph is one zoomable, topology-driven **Library > Board > Card** explorer. The canonical
392
+ `HomeGraph.dc.html` draws all three levels with actual relationships. This is the acceptance
393
+ target, not a claim that UI implementation or owner verification is complete. Folder paths
394
+ remain metadata and filters; they never determine Graph geometry.
395
+
396
+ - **Library:** named board nodes connected by neutral, undirected, counted bundles of
397
+ original evidence for each unordered board pair. Combining directions and kinds does not
398
+ invent a board-to-board fact. Internal counts and missing targets are separately qualified.
399
+ - **Board:** the board's internal card-relation topology, alongside external neighbor boards.
400
+ Membership alone draws no evidence edge; there is no central ownership hub dictating layout.
401
+ - **Card:** the focused card with exact one-hop qualified neighbors, incoming on the left and
402
+ outgoing on the right. Keep board identity on every endpoint, original direction and the
403
+ source-board vocabulary. Undirected `related` has no arrow; `depends-on` points from dependent
404
+ to prerequisite. Opposite authored directions remain separate facts, including when the same
405
+ qualified neighbor participates on both sides.
406
+
407
+ Ordinary node **click, Enter or Space drills** into that board or card's graph, including
408
+ external neighbors. An **edge selects its exact evidence** in the existing bottom inspector;
409
+ a bundle exposes its constituent facts, never a synthetic reason. **Back** restores the prior
410
+ scene, camera, query, filters and selection. The breadcrumb instead goes up the ownership
411
+ hierarchy: Library, owning Board, Card; it is not traversal history. **Open board/card** is
412
+ separate and opens content, never an implicit consequence of drilling or inspecting evidence.
413
+
414
+ Unconnected boards and cards occupy a **labelled, clickable tray**, not invented links.
415
+ Large connected sets use bounded initial display with search and explicit reveal actions;
416
+ show displayed, total, filtered and hidden counts so omissions are never mistaken for absence.
417
+ Search can reveal a hidden target without shrinking every label. Entry and reveal preserve
418
+ readable scale at 100%; explicit Fit may show a dense extent. The header separately counts
419
+ drawn nodes outside the usable viewport, filtered nodes and nodes beyond the display limit.
420
+ Card entry centers the focused card; mutual and undirected neighbors start below it, not below
421
+ the deepest side bank. Display bounds do not truncate inspector evidence or change the graph
422
+ API. No unverified numeric display limit is a design constant.
423
+
424
+ Initial layout uses a **deterministic bounded force solve** and caches the settled positions.
425
+ Owner interaction follow-up (2026-10-18): **dragging reheats the graph** at every exploration
426
+ level. The held node follows the pointer through occupied space; nearby nodes repel and real
427
+ links pull their neighbors. After release the dropped node stays put while the rest cools and
428
+ settles, then animation stops. Canceling restores the whole pre-drag layout. Card directions
429
+ start in left/right banks; manual rearrangement never changes the authored arrows.
430
+ Dense-graph follow-up: each node shares a gentler weighted pull across its links, rather than
431
+ accumulating full-strength springs with its degree. Keep breathing room instead of packing
432
+ connected nodes against their collision stops. Initial Card banks use the same spacing rule.
433
+ Live updates alone keep existing nodes anchored and preserve camera and selection; place
434
+ additions without globally reshuffling the scene. Graph positions remain view-local, not saved
435
+ board coordinates. Use the existing stack, with no new framework or dependencies. Graph and
436
+ Map retain separate view owners, sharing projection loading and the inspector shell only.
437
+ Server/API `focus` and `depth` contracts remain unchanged; these are not Graph navigation controls.
438
+
439
+ Graph nodes use one 220 × 96 px outlined footprint, with glyph, title and metadata inside it.
440
+ Collision clearance, boundary ports, obstacle-avoiding routes and Fit share those bounds.
441
+ The 64 px node-spacing gap reserves breathing room and a corridor outside each node's 8 px route clearance;
442
+ settling separates rectangles instead of allowing springs to close those corridors. Hover
443
+ emphasizes a node's incident links without fading unrelated connections.
444
+ External boards use dashed outlines. Count/type labels reserve their own non-overlapping
445
+ rectangles outside node bodies; Fit includes those rectangles. The view permits line crossings,
446
+ not paths through titles. No old slot grid, ring or pair-only navigation remains alongside it.
447
+
448
+ Graph's full-width bottom inspector starts **collapsed and compact**, below the view and legend,
449
+ separate from filters. Selecting evidence exposes it in that dock; expanding/restoring retains
450
+ selection and camera. Map retains its existing behavior and **280 px default dock**, not a
451
+ redesign. In the existing docking shell, drag the separator or use Up/Down and Home/End to
452
+ resize. The upper bound reserves 160 px for the graph when the window has room. Collapse
453
+ retains the selection/action header; restore keeps height, selection and camera.
454
+ The relation list scrolls internally. A reserved dock keeps selecting a card from shifting
455
+ the view, and the same bottom layout remains usable with the narrow filter overlay closed.
456
+ The fixed action header has 8 px bottom spacing and a divider before the scrolling list;
457
+ the empty heading reserves the collapse control's full 36 px height above the help text.
458
+ Owner readability follow-up uses 14 px relation text and controls (36 px minimum height),
459
+ 15 px headings and 13 px secondary text. Inspector chrome never scales with canvas zoom.
460
+ Owner follow-up (2026-10-17): Map matches this inspector visually, not functionally. Map
461
+ retains board tiles, persisted positions, Reset position and connection Open actions; it does
462
+ not inherit Graph drill navigation or Back. Both narrow filter toggles say Filters, and a
463
+ selection never opens that overlay just to show relations in the separate bottom dock.
464
+ Map nests and collapses neutral folder regions; dragging persists top-left `mapPosition`
465
+ in SQLite and a refused write rolls back. Both views update from the shared projection
466
+ without resetting the camera or selection. An agent opening a board does not eject a human
467
+ browsing Map/Graph; explicit Open board/card returns to the board. Board-edit shortcuts and
468
+ controls are unavailable while that library view is active. Its context chip lists all
469
+ workspace board pins, including the agent's active board, without hidden-board card controls.
470
+
471
+ **Remaining drawing deviations.** No synthetic Home board, portal-derived hierarchy, or
472
+ category hues: later folder/meaning-colour decisions override those marks. Map board tiles
473
+ use consistent dimensions rather than count-based sizes, and no unqualified age fading or
474
+ token estimate is shown. Both sidebars contain filters only and overlay the view at 600 px;
475
+ selection details stay in the shared bottom dock. Graph positions/display settings
476
+ are view-local, not saved board coordinates. Folders remain independent of links. Remote card
477
+ connections use the source footer and human More-menu picker, not remote canvas
478
+ lines; auto-arrange remains local and static export retains explicit external
479
+ connection evidence.
480
+
481
+ **Reference-footer correction (2026-10-18).** Chrome's footer keeps every remote
482
+ connection inside one keyboard-focusable scroll region, capped at 40% of the card
483
+ body and 132 world pixels. Short lists retain their natural height; long lists
484
+ cannot consume the document or its actions. Unmodified wheel and navigation keys
485
+ scroll references instead of moving the canvas. No graph data is collapsed or removed.
486
+ Reading expanded Markdown, closing it or following a link without input preserves
487
+ the exact source and revision. Pending real edits still finish before navigation.
488
+
489
+ **Owner-guide fixes (2026-10-20).** The same reference list follows cards into focus
490
+ mode, above the provenance strip, capped at 132 screen pixels there. It retains every
491
+ target without displacing the document. A refused Markdown save keeps the reader and
492
+ its draft open instead of navigating away. Hidden connection handles do not receive
493
+ pointer hits; their enlarged grab areas activate with the visible handles on hover,
494
+ selection or keyboard focus. Flow-action hints fit the native card or expanded panel,
495
+ whichever actually contains them. The shared Map/Graph inspector reserves one trailing
496
+ pixel so integer scroll extents do not cut the last row's fractional border.
497
+ The guide uses the current Library → Board → Card explorer described above, not the
498
+ removed stationary expansion controls. Dense Fit remains an overview, and unfinished
499
+ Relations/Flows/Uses drawings and unavailable platform checks remain separate from fixes.
500
+
501
+ **Interaction follow-up (2026-10-21).** Visible connection handles keep their 32-screen-pixel
502
+ grab areas outside the card, with the dots still on its edge, so low-zoom headers and pins
503
+ retain their hit targets. Grab areas yield to every card, including neighboring cards,
504
+ but outrank connection labels and lines. Group interiors still select and open their menus,
505
+ below child ports and labels; the frames and labels keep their existing visual stacking.
506
+ Expanded flow documents put Source in a separate row above the reader, clear of the
507
+ bottom dock's action hints; ordinary documents keep their bottom-right Source button.
508
+ Hovering a flow action temporarily
509
+ hides another action's keyboard hint without moving focus; leaving restores the focused hint.
510
+ Card checkbox clicks address parsed Markdown tasks, not fenced/indented examples or raw
511
+ HTML inputs, and change only the selected marker. Polling requests have a ten-second
512
+ headers-and-body deadline, including hosted transports, before the existing reconnect retry;
513
+ recovery does not reload the workbench or discard an unsaved draft. These fixes do not
514
+ establish the cause of the earlier ordinary-checkbox or reconnect incidents.
515
+
516
+ **Acceptance follow-up (2026-10-13).** ContextChip600's collapse order also applies when
517
+ agent names/counts fill a wider bar: fold actions into More before compacting sessions to
518
+ their existing initials and popovers. More owns keyboard focus as soon as it opens and
519
+ stays reachable through resize or count changes until it closes.
520
+ At extra-narrow widths with multiple attached sessions, compact spacing tightens and the
521
+ board name may ellipsize below its usual minimum; the status dot, board pin, context summary,
522
+ agent initials and More remain reachable. The switcher button must shrink with its wrapper,
523
+ not retain its intrinsic text width behind clipped controls.
524
+ External writers follow the same compact step, keeping their avatars, activity button and
525
+ accessible identity while giving the context summary room. At narrow widths, retained Updates
526
+ tracks the measured bottom of the Map/Graph toolbar, including wrapped tabs/counts, not a
527
+ fixed offset. It stays clear of Filters in both sidebar states; while filters are
528
+ open it compacts to an icon beside the sidebar rather than covering search.
529
+ The open session drawer sits above retained canvas receipts so its controls remain
530
+ reachable. Expanded Markdown uses the same wiki navigation as the card preview, after its
531
+ rich-editor blur save finishes. Missing-board creation captures that saved source; later peer
532
+ changes still refuse binding rather than overwrite the source. Medium
533
+ review policies require an explicit cadence; whitespace alone is not a revalidation method.
534
+ HTML viewer replacements acknowledge mount and paint before replacing the healthy document,
535
+ matching the existing JSON/graph handoff without changing the sandbox permissions.
536
+
537
+ **Wave-3 implementation decisions and deviations.** The relation legend uses the six fixed
538
+ inks and open kinds. Owner clarification (2026-10-13) moves editable Research/Dependencies/
539
+ Decision/Flow templates into **Home → Relation presets**, shared across the workspace like
540
+ Categories. Applying a saved preset explicitly copies its vocabulary to a selected board;
541
+ later template edits/deletion do not rewrite existing boards or connections. The board's
542
+ 24 px dropdown is now a view-only filter: All relations plus kinds actually on that board,
543
+ with counts, never a preset name or “Custom vocabulary”. Rounded count chips remain.
544
+ The legend stays below the lifecycle filters, outside the
545
+ scrollable canvas. Relation categories wrap instead of using a horizontal scrollbar, including
546
+ long custom names; Fit reserves the legend's rendered height as well as the lifecycle filters.
547
+ Parallel links
548
+ receive separate endpoint slots. Hover explains endpoints, kind and reason; the expanded
549
+ card's Relations view uses the same qualified graph as agents, with navigable targets and a
550
+ pointer to shared Home settings. Connections are grouped into Evidence for/against, Sources, Used by and
551
+ other Connections. Reasons stay in the hint/inspector, not long pills covering both endpoints.
552
+ Owner correction (2026-10-16): relation dimming follows clicked focus, selection, or an
553
+ explicit relation filter, never pointer hover. Selecting a group keeps all its descendants
554
+ readable, including nested groups. Moving the pointer does not change that focus; clicking
555
+ blank canvas clears it. This supersedes the hover-triggered focus in the Relations drawing.
556
+ Research highlights evidence; Dependencies follows explicit downstream impact; Decision traces
557
+ option/if/chosen links backward from the selected outcome; with focus active, Flow reads existing AX step status.
558
+ Custom vocabularies use the local neighborhood. These are view-only, not a decision or execution engine. Remote cards
559
+ remain footer links, not long lines across boards.
560
+
561
+ Owner selection (2026-10-14): **C1 compact category inspector, R2 choose then customize,
562
+ H2 dedicated Home Review queue, V2 docked card review drawer**. These are implemented
563
+ directions in the current acceptance batch; owner acceptance is pending, with no release claim. The selected
564
+ drawings are CategoryEditor, Uses, Home, Lifecycle and Lifecycle600; they supersede earlier
565
+ full-form category editing and standalone review-modal geometry.
566
+ The owner-approved naming is **Review** in Home navigation, **Knowledge review** as the
567
+ queue page heading, and **Review card** in the drawer, followed by the actual card title.
568
+ Review concerns the context's reliability, not task completion or automatic validation.
569
+
570
+ C1 keeps a searchable neutral glyph-and-word category list beside **Basics / Review policy /
571
+ Usage** tabs, templates behind disclosure, and Save/Cancel with a dirty guard on leaving.
572
+ The Add category button stays 8 px below the search field, rather than touching its border.
573
+ Basics offers the starter glyphs as visible, neutral choices alongside the custom glyph input.
574
+ Choosing a glyph changes only that draft's glyph, not its name or review policy; Save commits it.
575
+ Folder inheritance, card-only lifecycle overrides and assigned-category deletion protections
576
+ remain. R2 starts with a read-only relation preview; **Customize preset** opens a separate editor.
577
+ Save changes the workspace template only. **Use on board** explicitly copies the saved vocabulary
578
+ to one selected board; existing edges and other boards stay unchanged, with no later auto-sync.
579
+ Opening before the workspace catalog arrives must still select the first saved preset when it
580
+ loads. An explicit new/deleted selection stays empty instead of silently choosing another preset.
581
+
582
+ V2 docks **Review card** beside the real rendered card, reachable from More, a due footer or the
583
+ expanded-card Review button; it does not substitute a text excerpt for the card. The 380 px
584
+ side dock becomes a lower dock at narrow widths, keeping content visible above. It asks for
585
+ one short check note and offers **Checked, still correct** or **Not now**.
586
+ The camera fits the reviewed card into the actual remaining canvas on opening, reopening
587
+ and resize. Keyboard focus must not add a native scroll offset beneath that camera;
588
+ the canvas clips overflow without becoming a scroll container.
589
+ Fit preserves the card boundary, not visibility of its entire body: expand or resize a
590
+ compact card to read content beyond its body viewport.
591
+ Not now writes nothing and leaves the current review state alone. **Settings and history**
592
+ discloses the policy, four clocks, advanced outcomes, recipes and retirement controls.
593
+ Four clock tiles stay separate; only read delivery is violet. New
594
+ review metadata clears the evidence draft and applied checkbox. Stale content/source observations
595
+ refuse validation; dirty Markdown must save, reload and be rechecked first. Close/Escape also
596
+ dismiss without writing. Retire/Restore are audited;
597
+ the post-retirement toast offers Undo. Filters dim nonmatches rather than deleting their spatial
598
+ context. Due footers use variant A, including collapsed cards; healthy cards gain no badge.
599
+ Home's tree is navigation only. The selected-folder summary reports category and actionable
600
+ **Review needed** counts, explicitly including descendants; **No review policy** is informational,
601
+ not a task. The summary opens H2's dedicated **Review** tab with individual cards, authoritative
602
+ card and board titles, reasons, last checked and **Open review**. Scope is the selected folder
603
+ plus descendants or the whole library. Search and Source warnings only narrow the queue;
604
+ long descendant options must not push the scope border or arrow outside the main pane,
605
+ including at 390 px. Check the pane and queue scroll widths, not only the root document.
606
+ Refresh retries unavailable observations. Nonretired cards with due or source warnings count
607
+ once, even with both; unknown policy alone is neutral, but explicit warnings still qualify.
608
+ Opening focuses the real card and dock and never validates it.
609
+ Board details prioritize Open board; agent README and link dumps belong in agent reads or Map/Graph,
610
+ not the human's opening flow. Categories and folder settings reuse themed ChoiceMenus and compact
611
+ controls; unused category deletion is confirmed inline, assigned categories name blocking folders.
612
+ Presets add only missing starter
613
+ entries and never overwrite edits. Medium cadence is an explicit required day count, never
614
+ inferred from the category name. Unknown stays unknown.
615
+
616
+ The `Flows` source-qualification extension distinguishes a portal's source warning from its
617
+ own lifecycle and labels cached observations. A durable dashboard does not suppress warnings
618
+ from a fast source. Dependency direction is source → dependent for derived-from/contradicts/
619
+ supersedes, dependent → prerequisite for depends-on. Only explicit dependencies propagate review.
620
+ Recipe refresh is a human-requested steering broadcast; Canvas does not execute the named tool.
621
+
622
+ **Context lifecycle (direction added 2026-10-07).** [Vision move 13](product-vision-2026-09.md#13-context-lifecycle-and-recipe-cards-m-then-later-classification)
623
+ extends Wave 3's source-change warning into evidence-backed review: decay type/rate, triggers,
624
+ validation evidence and review outcomes. Amber means needs review, not false. Read receipts,
625
+ content revisions, evidence validation and task relevance remain separate. Categories, Lifecycle,
626
+ Lifecycle600 and Restore supply the review-state drawings beyond Lineage. This adds no Wave 1 prerequisite and leaves the
627
+ curation evaluation after its remaining features. Local categories and lifecycle data work
628
+ without a model; Jev-style classification is optional longer-term assistance, not a dependency
629
+ of Wave 3 or the org/team/personal structure.
630
+
198
631
  ## Definition of done for any design work
199
632
 
200
633
  1. It is drawn in the proposal canvas first, at 600 px and at full-window width.
@@ -22,7 +22,6 @@ optional; defaults are listed.
22
22
  | `PMX_CANVAS_BLOB_THRESHOLD_BYTES` | server | Node payloads above this many JSON bytes are stored as blobs (default `2048`). |
23
23
  | `PMX_CANVAS_AGENT_SOURCE` | MCP transport, CLI | Names the agent behind this transport for presence (`codex`, `claude-code`, …) so its writes, attach and cursor share one identity; default is the transport label (`mcp` / `cli`). |
24
24
  | `PMX_CANVAS_GATE_TTL_MS` | server | Default TTL for approval gates before the unattended-approval policy auto-holds them (default `300000` = 5 min, clamped to 1 s – 24 h). |
25
- | `PMX_CANVAS_CONTEXT_BUDGET_TOKENS` | server | `budget.total` in agent presence — the ceiling the top bar's **Pins** meter measures the pinned-context token estimate against (default `32000`). It is not the agent's context window; a host reports that on the presence as `contextUsage`, and the meter then reads **Context**. |
26
25
 
27
26
  ## Server behavior
28
27