pmx-canvas 0.8.2 → 0.9.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.
- package/.github/extensions/pmx-canvas/runtime.json +1 -1
- package/.github/extensions/pmx-canvas/tools.json +601 -22
- package/CHANGELOG.md +59 -0
- package/Readme.md +131 -532
- package/dist/canvas/global.css +2724 -476
- package/dist/canvas/index.js +168 -107
- package/dist/canvas/mcp-app.html +2899 -596
- package/dist/json-render/index.js +20 -20
- package/dist/types/client/canvas/BarHint.d.ts +12 -2
- package/dist/types/client/canvas/BoardLinkDialog.d.ts +3 -1
- package/dist/types/client/canvas/BoardPinButton.d.ts +10 -0
- package/dist/types/client/canvas/BoardSwitcher.d.ts +1 -1
- package/dist/types/client/canvas/CanvasViewport.d.ts +1 -1
- package/dist/types/client/canvas/CommandBar.d.ts +3 -4
- package/dist/types/client/canvas/ConnectionBanner.d.ts +2 -1
- package/dist/types/client/canvas/ContextChip.d.ts +3 -0
- package/dist/types/client/canvas/CrossBoardReferences.d.ts +5 -0
- package/dist/types/client/canvas/EdgeLayer.d.ts +14 -3
- package/dist/types/client/canvas/EmptyState.d.ts +4 -4
- package/dist/types/client/canvas/HomeGraphView.d.ts +2 -0
- package/dist/types/client/canvas/HomeMapView.d.ts +1 -0
- package/dist/types/client/canvas/HomeReviewView.d.ts +6 -0
- package/dist/types/client/canvas/HomeView.d.ts +9 -7
- package/dist/types/client/canvas/KnowledgeDialog.d.ts +4 -0
- package/dist/types/client/canvas/LifecycleChrome.d.ts +5 -0
- package/dist/types/client/canvas/LifecycleFields.d.ts +7 -0
- package/dist/types/client/canvas/LifecyclePanel.d.ts +1 -0
- package/dist/types/client/canvas/MemoryInspector.d.ts +7 -0
- package/dist/types/client/canvas/NearPinLayer.d.ts +14 -0
- package/dist/types/client/canvas/NodeContextMark.d.ts +40 -7
- package/dist/types/client/canvas/RelationPresetsDialog.d.ts +4 -0
- package/dist/types/client/canvas/RelationsPanel.d.ts +4 -0
- package/dist/types/client/canvas/SessionPanel.d.ts +2 -0
- package/dist/types/client/canvas/canvas-area.d.ts +1 -1
- package/dist/types/client/canvas/graph-geometry.d.ts +27 -0
- package/dist/types/client/canvas/graph-model.d.ts +37 -0
- package/dist/types/client/canvas/memory-layout.d.ts +23 -0
- package/dist/types/client/canvas/use-chrome-height.d.ts +2 -0
- package/dist/types/client/canvas/use-focus-trap.d.ts +1 -0
- package/dist/types/client/canvas/use-memory-graph.d.ts +8 -0
- package/dist/types/client/canvas/use-pan-zoom.d.ts +4 -1
- package/dist/types/client/icons.d.ts +0 -10
- package/dist/types/client/nodes/AxStepControls.d.ts +1 -1
- package/dist/types/client/nodes/InlineMarkdownEditor.d.ts +4 -4
- package/dist/types/client/nodes/MarkdownNode.d.ts +5 -1
- package/dist/types/client/nodes/McpAppNode.d.ts +4 -4
- package/dist/types/client/nodes/viewer-runtime-state.d.ts +1 -1
- package/dist/types/client/state/boards-store.d.ts +81 -9
- package/dist/types/client/state/canvas-store.d.ts +14 -1
- package/dist/types/client/state/context-chip-store.d.ts +22 -0
- package/dist/types/client/state/context-status-store.d.ts +35 -0
- package/dist/types/client/state/human-store.d.ts +2 -1
- package/dist/types/client/state/intent-bridge.d.ts +11 -8
- package/dist/types/client/state/knowledge-store.d.ts +22 -0
- package/dist/types/client/state/near-pin-store.d.ts +44 -1
- package/dist/types/client/state/presence-store.d.ts +4 -4
- package/dist/types/client/state/presentation.d.ts +28 -0
- package/dist/types/client/state/relation-store.d.ts +10 -0
- package/dist/types/client/state/session-store.d.ts +41 -2
- package/dist/types/client/state/workspace-settings.d.ts +7 -0
- package/dist/types/client/types.d.ts +13 -1
- package/dist/types/client/utils/keyboard.d.ts +2 -0
- package/dist/types/client/utils/time-ago.d.ts +4 -0
- package/dist/types/mcp/context-uri-template.d.ts +3 -1
- package/dist/types/server/agent-presence.d.ts +10 -3
- package/dist/types/server/ax-context.d.ts +1 -1
- package/dist/types/server/canvas-db.d.ts +30 -7
- package/dist/types/server/canvas-operations.d.ts +24 -2
- package/dist/types/server/canvas-provenance.d.ts +22 -2
- package/dist/types/server/canvas-serialization.d.ts +2 -0
- package/dist/types/server/canvas-state.d.ts +93 -15
- package/dist/types/server/canvas-validation.d.ts +1 -1
- package/dist/types/server/context-brief.d.ts +94 -6
- package/dist/types/server/context-reads.d.ts +33 -7
- package/dist/types/server/edit-summary.d.ts +20 -0
- package/dist/types/server/index.d.ts +71 -10
- package/dist/types/server/knowledge-lifecycle.d.ts +221 -0
- package/dist/types/server/lifecycle-status.d.ts +10 -0
- package/dist/types/server/memory-graph.d.ts +9 -0
- package/dist/types/server/mutation-history.d.ts +2 -0
- package/dist/types/server/operations/ops/ax-shared.d.ts +1 -1
- package/dist/types/server/operations/ops/boards.d.ts +2 -1
- package/dist/types/server/operations/ops/lifecycle.d.ts +2 -0
- package/dist/types/server/operations/ops/memory-graph.d.ts +2 -0
- package/dist/types/server/operations/ops/nodes.d.ts +5 -0
- package/dist/types/server/operations/ops/query.d.ts +23 -0
- package/dist/types/server/operations/registry.d.ts +1 -0
- package/dist/types/server/placement.d.ts +7 -0
- package/dist/types/server/scope-fence.d.ts +2 -1
- package/dist/types/server/spatial-analysis.d.ts +6 -3
- package/dist/types/server/tour-control.d.ts +32 -0
- package/dist/types/server/wiki-links.d.ts +14 -0
- package/dist/types/server/workbench-auth.d.ts +2 -0
- package/dist/types/shared/agent-context.d.ts +2 -0
- package/dist/types/shared/agent-presence.d.ts +15 -12
- package/dist/types/shared/auto-arrange.d.ts +1 -0
- package/dist/types/shared/boards.d.ts +4 -4
- package/dist/types/shared/knowledge-lifecycle.d.ts +41 -0
- package/dist/types/shared/knowledge-presets.d.ts +6 -0
- package/dist/types/shared/lifecycle-status.d.ts +24 -0
- package/dist/types/shared/memory-graph.d.ts +53 -0
- package/dist/types/shared/relations.d.ts +68 -0
- package/dist/types/shared/semantic-attention.d.ts +2 -0
- package/dist/types/shared/tour.d.ts +38 -0
- package/dist/types/shared/workspace-settings.d.ts +11 -0
- package/docs/RELEASE.md +21 -3
- package/docs/adr-001-bun-only-runtime.md +7 -1
- package/docs/adr-002-shared-product-separate-runtimes.md +93 -0
- package/docs/api-reference.md +109 -0
- package/docs/ax-host-adapter-contract.md +1 -1
- package/docs/ax-state-contract.md +5 -4
- package/docs/cli.md +153 -15
- package/docs/demos/pmx-canvas-demo.mp4 +0 -0
- package/docs/design/AgentContext.dc.html +3 -3
- package/docs/design/BoardPins.dc.html +37 -22
- package/docs/design/Categories.dc.html +208 -0
- package/docs/design/CategoryEditor.dc.html +33 -0
- package/docs/design/Chrome.dc.html +52 -9
- package/docs/design/ContextChip.dc.html +224 -0
- package/docs/design/ContextChip600.dc.html +136 -0
- package/docs/design/EmptyState.dc.html +45 -0
- package/docs/design/Flows.dc.html +23 -1
- package/docs/design/HeaderMarks.dc.html +183 -0
- package/docs/design/Home.dc.html +19 -1
- package/docs/design/HomeGraph.dc.html +86 -202
- package/docs/design/HomeMap.dc.html +23 -1
- package/docs/design/HomeTeam.dc.html +32 -14
- package/docs/design/Lifecycle.dc.html +22 -0
- package/docs/design/Lifecycle600.dc.html +18 -0
- package/docs/design/LifecycleVariants.dc.html +157 -0
- package/docs/design/LinkAuthorship.dc.html +139 -0
- package/docs/design/LinksChanged.dc.html +203 -0
- package/docs/design/LinksOptions.dc.html +137 -0
- package/docs/design/LinksOptions600.dc.html +134 -0
- package/docs/design/NearPin.dc.html +9 -10
- package/docs/design/Pane600.dc.html +4 -3
- package/docs/design/Relations.dc.html +3 -2
- package/docs/design/Restore.dc.html +152 -0
- package/docs/design/SeeChange.dc.html +267 -0
- package/docs/design/Uses.dc.html +12 -6
- package/docs/design/canvas.json +146 -19
- package/docs/design.md +449 -16
- package/docs/environment.md +0 -1
- package/docs/evals/curation-effect.md +128 -0
- package/docs/http-api.md +459 -37
- package/docs/mcp.md +146 -18
- package/docs/node-types.md +58 -3
- package/docs/plans/design-gaps-2026-10-08.md +53 -0
- package/docs/plans/plan-009-tech-debt-backlog.md +379 -0
- package/docs/plans/plan-016-context-made-visible-wave-1.md +150 -5
- package/docs/plans/plan-017-knowledge-categories-and-lifecycle.md +175 -0
- package/docs/plans/plan-018-connected-memory-wave-2.md +594 -0
- package/docs/plans/plan-019-post-0.9-roadmap.md +198 -0
- package/docs/product-context-vision-2026-09.md +17 -1
- package/docs/product-vision-2026-09.md +1082 -43
- package/docs/product-vision-review-2026-09.md +13 -1
- package/docs/screenshots/workbench-live-dark.png +0 -0
- package/docs/screenshots/workbench-live-light.png +0 -0
- package/docs/sdk.md +62 -2
- package/package.json +1 -1
- package/plugins/pmx-canvas/com.github.copilot/extensions/pmx-canvas/runtime.json +1 -1
- package/plugins/pmx-canvas/plugin.json +1 -1
- package/plugins/pmx-canvas/runtime.json +1 -1
- package/plugins/pmx-canvas/tools.json +601 -22
- package/skills/pmx-canvas/SKILL.md +216 -42
- package/skills/pmx-canvas/evals/evals.json +224 -0
- package/skills/pmx-canvas/references/full-reference.md +120 -21
- package/skills/pmx-canvas/references/github-copilot-app-adapter.md +2 -2
- package/skills/pmx-canvas/references/importing-context.md +132 -0
- package/skills/pmx-canvas/references/installing-pmx-canvas.md +6 -6
- package/skills/pmx-canvas/references/tours-and-recording.md +16 -1
- package/skills/pmx-canvas-testing/SKILL.md +20 -0
- package/src/cli/agent.ts +2 -0
- package/src/cli/commands/ax.ts +12 -0
- package/src/cli/commands/boards.ts +88 -11
- package/src/cli/commands/edges.ts +28 -0
- package/src/cli/commands/groups.ts +7 -0
- package/src/cli/commands/nodes.ts +1 -0
- package/src/cli/commands/query.ts +34 -2
- package/src/cli/commands/record.ts +199 -48
- package/src/cli/index.ts +6 -1
- package/src/client/App.tsx +177 -70
- package/src/client/canvas/AttentionHistory.tsx +0 -2
- package/src/client/canvas/BarHint.tsx +40 -2
- package/src/client/canvas/BoardCopyDialog.tsx +1 -1
- package/src/client/canvas/BoardFolderDialog.tsx +7 -7
- package/src/client/canvas/BoardLinkDialog.tsx +138 -33
- package/src/client/canvas/BoardPinButton.tsx +33 -0
- package/src/client/canvas/BoardSwitcher.tsx +26 -40
- package/src/client/canvas/CanvasNode.tsx +360 -237
- package/src/client/canvas/CanvasViewport.tsx +45 -7
- package/src/client/canvas/CommandBar.tsx +29 -23
- package/src/client/canvas/CommandPalette.tsx +5 -12
- package/src/client/canvas/ConnectionBanner.tsx +3 -3
- package/src/client/canvas/ContextChip.tsx +296 -0
- package/src/client/canvas/ContextMenu.tsx +63 -5
- package/src/client/canvas/CrossBoardReferences.tsx +60 -0
- package/src/client/canvas/EdgeLayer.tsx +339 -76
- package/src/client/canvas/EmptyState.tsx +33 -18
- package/src/client/canvas/ExpandedNodeOverlay.tsx +72 -40
- package/src/client/canvas/ExternalWriters.tsx +57 -42
- package/src/client/canvas/HomeGraphView.tsx +942 -0
- package/src/client/canvas/HomeMapView.tsx +641 -0
- package/src/client/canvas/HomeReviewView.tsx +167 -0
- package/src/client/canvas/HomeView.tsx +687 -160
- package/src/client/canvas/IntentLayer.tsx +19 -12
- package/src/client/canvas/KnowledgeDialog.tsx +488 -0
- package/src/client/canvas/LifecycleChrome.tsx +133 -0
- package/src/client/canvas/LifecycleFields.tsx +91 -0
- package/src/client/canvas/LifecyclePanel.tsx +543 -0
- package/src/client/canvas/MemoryInspector.tsx +104 -0
- package/src/client/canvas/Minimap.tsx +3 -3
- package/src/client/canvas/NearPinLayer.tsx +187 -0
- package/src/client/canvas/NodeContextMark.tsx +175 -97
- package/src/client/canvas/Presentation.tsx +23 -57
- package/src/client/canvas/RelationPresetsDialog.tsx +413 -0
- package/src/client/canvas/RelationsPanel.tsx +82 -0
- package/src/client/canvas/SelectionBar.tsx +3 -6
- package/src/client/canvas/SessionPanel.tsx +90 -50
- package/src/client/canvas/SessionReceipt.tsx +311 -39
- package/src/client/canvas/ShortcutOverlay.tsx +1 -1
- package/src/client/canvas/SnapshotPanel.tsx +27 -36
- package/src/client/canvas/ToolRail.tsx +367 -192
- package/src/client/canvas/TopBar.tsx +354 -124
- package/src/client/canvas/canvas-area.ts +10 -3
- package/src/client/canvas/graph-geometry.ts +195 -0
- package/src/client/canvas/graph-model.ts +254 -0
- package/src/client/canvas/memory-layout.ts +106 -0
- package/src/client/canvas/use-chrome-height.ts +20 -0
- package/src/client/canvas/use-focus-trap.ts +31 -5
- package/src/client/canvas/use-memory-graph.ts +58 -0
- package/src/client/canvas/use-node-drag.ts +2 -1
- package/src/client/canvas/use-pan-zoom.ts +64 -7
- package/src/client/icons.tsx +0 -63
- package/src/client/mcp-app/style.css +0 -6
- package/src/client/nodes/AxStepControls.tsx +74 -50
- package/src/client/nodes/BoardNode.tsx +5 -1
- package/src/client/nodes/ContextNode.tsx +18 -11
- package/src/client/nodes/ExtAppFrame.tsx +6 -3
- package/src/client/nodes/FileNode.tsx +46 -42
- package/src/client/nodes/HtmlNode.tsx +32 -0
- package/src/client/nodes/ImageNode.tsx +1 -1
- package/src/client/nodes/InlineFormatBar.tsx +6 -9
- package/src/client/nodes/InlineMarkdownEditor.tsx +56 -17
- package/src/client/nodes/MarkdownNode.tsx +377 -109
- package/src/client/nodes/McpAppNode.tsx +50 -20
- package/src/client/nodes/MdFormatBar.tsx +21 -18
- package/src/client/nodes/PromptNode.tsx +1 -1
- package/src/client/nodes/ResponseNode.tsx +1 -1
- package/src/client/nodes/viewer-runtime-state.ts +54 -22
- package/src/client/state/attention-bridge.ts +64 -15
- package/src/client/state/boards-store.ts +193 -39
- package/src/client/state/canvas-store.ts +99 -12
- package/src/client/state/context-chip-store.ts +70 -0
- package/src/client/state/context-status-store.ts +53 -0
- package/src/client/state/human-store.ts +13 -7
- package/src/client/state/intent-bridge.ts +51 -30
- package/src/client/state/knowledge-store.ts +43 -0
- package/src/client/state/near-pin-store.ts +115 -6
- package/src/client/state/presence-store.ts +7 -10
- package/src/client/state/presentation.ts +91 -0
- package/src/client/state/relation-store.ts +81 -0
- package/src/client/state/session-store.ts +144 -18
- package/src/client/state/sse-bridge.ts +235 -32
- package/src/client/state/workspace-settings.ts +11 -0
- package/src/client/theme/global.css +2724 -476
- package/src/client/types.ts +12 -0
- package/src/client/utils/keyboard.ts +10 -0
- package/src/client/utils/time-ago.ts +14 -0
- package/src/json-render/renderer/index.tsx +31 -0
- package/src/mcp/canvas-app.ts +12 -2
- package/src/mcp/context-uri-template.ts +7 -4
- package/src/mcp/server.ts +63 -41
- package/src/mcp/workbench-app.ts +39 -6
- package/src/server/agent-presence.ts +128 -28
- package/src/server/ax-context.ts +27 -13
- package/src/server/board-export.ts +12 -1
- package/src/server/canvas-db.ts +331 -42
- package/src/server/canvas-operations.ts +195 -83
- package/src/server/canvas-provenance.ts +53 -22
- package/src/server/canvas-serialization.ts +2 -0
- package/src/server/canvas-state.ts +950 -122
- package/src/server/canvas-validation.ts +9 -2
- package/src/server/context-brief.ts +345 -38
- package/src/server/context-reads.ts +178 -30
- package/src/server/demo-state.json +355 -24
- package/src/server/edit-summary.ts +74 -0
- package/src/server/html-surface.ts +8 -1
- package/src/server/index.ts +181 -11
- package/src/server/knowledge-lifecycle.ts +304 -0
- package/src/server/lifecycle-status.ts +232 -0
- package/src/server/memory-graph.ts +166 -0
- package/src/server/mutation-history.ts +18 -6
- package/src/server/operations/composites.ts +32 -11
- package/src/server/operations/http.ts +7 -2
- package/src/server/operations/index.ts +4 -0
- package/src/server/operations/mcp.ts +26 -1
- package/src/server/operations/ops/ax-presence.ts +1 -1
- package/src/server/operations/ops/ax-read.ts +57 -6
- package/src/server/operations/ops/ax-timeline.ts +28 -2
- package/src/server/operations/ops/backup.ts +5 -3
- package/src/server/operations/ops/batch.ts +35 -4
- package/src/server/operations/ops/boards.ts +188 -47
- package/src/server/operations/ops/canvas-wire.ts +31 -1
- package/src/server/operations/ops/edges.ts +36 -2
- package/src/server/operations/ops/groups.ts +6 -1
- package/src/server/operations/ops/lifecycle.ts +262 -0
- package/src/server/operations/ops/memory-graph.ts +45 -0
- package/src/server/operations/ops/nodes.ts +107 -24
- package/src/server/operations/ops/query.ts +281 -68
- package/src/server/operations/ops/snapshots.ts +73 -1
- package/src/server/operations/ops/validate.ts +5 -1
- package/src/server/operations/ops/viewport.ts +97 -3
- package/src/server/operations/registry.ts +74 -25
- package/src/server/placement.ts +29 -0
- package/src/server/scope-fence.ts +78 -6
- package/src/server/server.ts +115 -16
- package/src/server/spatial-analysis.ts +48 -23
- package/src/server/tour-control.ts +82 -0
- package/src/server/wiki-links.ts +137 -0
- package/src/server/workbench-auth.ts +11 -0
- package/src/shared/agent-context.ts +3 -0
- package/src/shared/agent-presence.ts +15 -15
- package/src/shared/auto-arrange.ts +2 -0
- package/src/shared/boards.ts +4 -4
- package/src/shared/knowledge-lifecycle.ts +22 -0
- package/src/shared/knowledge-presets.ts +80 -0
- package/src/shared/lifecycle-status.ts +26 -0
- package/src/shared/memory-graph.ts +74 -0
- package/src/shared/relations.ts +98 -0
- package/src/shared/semantic-attention.ts +15 -1
- package/src/shared/tour.ts +23 -5
- package/src/shared/workspace-settings.ts +13 -0
- package/dist/types/client/canvas/ContextPinBar.d.ts +0 -1
- package/dist/types/client/canvas/FocusFieldLayer.d.ts +0 -1
- package/dist/types/client/canvas/kind-colors.d.ts +0 -3
- package/dist/types/server/agent-context.d.ts +0 -22
- package/src/client/canvas/ContextPinBar.tsx +0 -25
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
# Plan 017 — Knowledge categories and context lifecycle
|
|
2
|
+
|
|
3
|
+
**Status:** Wave 3 implementation includes slices 0–5 and the relationship layer.
|
|
4
|
+
Local stabilization passed; see plan 018 for evidence and limitations. The owner's manual
|
|
5
|
+
E2E acceptance is still required. Not a release; version remains 0.8.2.
|
|
6
|
+
**Date:** 2026-10-07
|
|
7
|
+
**Source:** vision [move 13](../product-vision-2026-09.md#13-context-lifecycle-and-recipe-cards-m-then-later-classification)
|
|
8
|
+
(decided model) and Part 3 (user-defined knowledge scopes); [design.md](../design.md) wave 3.
|
|
9
|
+
Drawings: [`Categories`](../design/Categories.dc.html), [`CategoryEditor`](../design/CategoryEditor.dc.html),
|
|
10
|
+
[`Lifecycle`](../design/Lifecycle.dc.html), [`Lifecycle600`](../design/Lifecycle600.dc.html),
|
|
11
|
+
[`Restore`](../design/Restore.dc.html), [`LifecycleVariants`](../design/LifecycleVariants.dc.html) (variant A).
|
|
12
|
+
|
|
13
|
+
## Done when
|
|
14
|
+
|
|
15
|
+
From the board alone a person can see which cards need review and why, and the agent's brief
|
|
16
|
+
carries the same qualification. Filing a board in a folder gives it a category and lifecycle with
|
|
17
|
+
no tagging. Nothing here needs a model, accounts or an external service.
|
|
18
|
+
|
|
19
|
+
## Decided (2026-10-07)
|
|
20
|
+
|
|
21
|
+
- Category is a property of a folder and inherits down the tree; a subfolder may set its own.
|
|
22
|
+
- One category list per workspace, editable; starter templates (org · team · personal, solo
|
|
23
|
+
research, product team, empty) are presets, never hard-coded words.
|
|
24
|
+
- A card may override its lifecycle, never its category.
|
|
25
|
+
- Categories carry no colour: glyph and word.
|
|
26
|
+
- The board shows only "⧗ review due" on the card, while due (variant A). Everything else lives in
|
|
27
|
+
the card's Lifecycle tab, folder settings and Home; "unknown" is per folder on Home.
|
|
28
|
+
- Retire is reversible: out of the brief only; dimmed and searchable; restore is recorded and is
|
|
29
|
+
not a validation.
|
|
30
|
+
- Audience is a separate, later property (share ladder step 5) and is not built here.
|
|
31
|
+
|
|
32
|
+
## Prerequisite
|
|
33
|
+
|
|
34
|
+
**Board folders.** Folders are the decided hierarchy (2026-10-06), and they already exist: a
|
|
35
|
+
board's `folder` field is a nested folder path on Home (e.g. `Engineering/Canvas`, up to 8
|
|
36
|
+
levels; `canvas_board update`, `pmx-canvas board folder`). Slice 0 renamed the old board
|
|
37
|
+
`category` field in all four layers without an alias, preserving stored folder paths. Slice 1
|
|
38
|
+
adds per-folder properties (the knowledge category and lifecycle overrides), keyed by folder
|
|
39
|
+
path, together with their consumers rather than unused schema scaffolding.
|
|
40
|
+
|
|
41
|
+
## Slices
|
|
42
|
+
|
|
43
|
+
Each slice is its own commit and leaves the suite green. Design ships with its function.
|
|
44
|
+
|
|
45
|
+
### 0. Rename board category to folder
|
|
46
|
+
|
|
47
|
+
As above. Moving a board between folders stays an ordinary write; the brief's same-folder
|
|
48
|
+
discovery tier keeps working on the renamed field.
|
|
49
|
+
|
|
50
|
+
**Implemented 2026-10-11.** The persistence regression covers concurrent legacy-schema opens,
|
|
51
|
+
current WAL reads during an unrelated writer transaction, and reopening with paths, content,
|
|
52
|
+
pins and Map positions intact. Real headed board cases (18) pass. Live human folder creation,
|
|
53
|
+
move and reload preserve the nested path; a real CLI move updates the human's Home tree without
|
|
54
|
+
opening a board. Oracle's two startup findings were reproduced, fixed and closed. There is no
|
|
55
|
+
lifecycle UI or review behavior in this slice.
|
|
56
|
+
|
|
57
|
+
### 1. Data: categories, inheritance, lifecycle, review records (no UI)
|
|
58
|
+
|
|
59
|
+
- `categories` (workspace list): id, name, glyph, decay type (reality / decision / dependency /
|
|
60
|
+
relevance), rate (fast / medium / slow / durable), triggers, revalidation method.
|
|
61
|
+
- `folders.category_id` (nullable = inherit); one resolver returns a board's effective category
|
|
62
|
+
and lifecycle with its source ("set here" / "inherited from <folder>" / unknown).
|
|
63
|
+
- Card lifecycle override in node data; never a category.
|
|
64
|
+
- `review_records`: node, outcome (retain / revise / externalize / retire / unresolved), evidence,
|
|
65
|
+
who, when; plus restore records. Retired = latest retire not followed by a restore.
|
|
66
|
+
- Four-layer parity: read and write categories, set a folder's category, override a card's
|
|
67
|
+
lifecycle, record an outcome, retire, restore.
|
|
68
|
+
|
|
69
|
+
**Implemented 2026-10-11 (data only).** Workspace category/folder replacements, one effective
|
|
70
|
+
resolver with source paths, full nullable card overrides, and append-only attributed review/restore
|
|
71
|
+
records are persisted. Explicit child categories reset ancestor lifecycle overrides; unknown stays
|
|
72
|
+
unknown. Only applied retain/revise/externalize with nonempty evidence renew validation. Retirement
|
|
73
|
+
survives unrelated reviews/content restoration until explicit audited restore. History is qualified
|
|
74
|
+
by board+node and remains outside snapshots. Lifecycle-only edits preserve semantic revision and
|
|
75
|
+
lastEditedBy; no speculative date is stamped onto legacy content. Workspace writes on Home do not
|
|
76
|
+
open boards and do not bypass agent fences. Active-card writes use the existing board, scope and
|
|
77
|
+
human-lock boundary. HTTP/SDK/MCP/CLI share the registry contract; MCP extends canvas_board and
|
|
78
|
+
canvas_node rather than adding tools. See [public fields](../http-api.md#knowledge-lifecycle-data-plan-017-slice-1).
|
|
79
|
+
Validating outcomes require the reviewed content revision; stale reviews fail with 409. The body
|
|
80
|
+
is flushed before an audit append, so a failed save cannot leave a durable validation of lost text.
|
|
81
|
+
Initial data-slice unit (1431) and client (276) suites, build, typecheck and lint pass (zero lint errors; existing
|
|
82
|
+
warnings remain). Oracle findings were reproduced and fixed, including metadata-only edits,
|
|
83
|
+
failed load/workspace rebinding and concurrent database opens; the final focused review found
|
|
84
|
+
no data-slice blocker. Live human Source drafts and selection survive CLI lifecycle changes;
|
|
85
|
+
CLI retain → retire → restore preserves the validation and attributed audit history across restart.
|
|
86
|
+
Later workbench reconnect, save-lineage, ownership and scope findings are fixed; the
|
|
87
|
+
[combined stabilization gate](plan-018-connected-memory-wave-2.md#combined-stabilization) passes
|
|
88
|
+
with 1,437 unit, 302 client and 266 headed browser cases, plus live human/agent checks.
|
|
89
|
+
No lifecycle browser appearance changed; the user-facing review controls remain pending.
|
|
90
|
+
|
|
91
|
+
### 2. The brief (implemented)
|
|
92
|
+
|
|
93
|
+
- Retired cards leave the brief; restored cards return.
|
|
94
|
+
- Each delivered card carries its qualification when it has one: review due (with reason),
|
|
95
|
+
changed since read, lifecycle unknown. Never presents stale context as validated.
|
|
96
|
+
- `canvas_query` search still finds retired cards, marked retired.
|
|
97
|
+
- Dashboard portals/source-backed cards carry the accessible source's review qualification
|
|
98
|
+
separately from their own lifecycle. A durable container never suppresses a source warning;
|
|
99
|
+
unreadable targets disclose neither content nor lifecycle metadata.
|
|
100
|
+
|
|
101
|
+
### 3. Menus: folder settings, category editor, card Lifecycle tab (implemented)
|
|
102
|
+
|
|
103
|
+
Per `Categories`, `CategoryEditor`, `Lifecycle`: choose or inherit a category; edit the one list
|
|
104
|
+
and start from a template; the card tab with inherited/override switch, the four clocks as
|
|
105
|
+
separate tiles (only "read by agent" violet), outcomes with evidence, history, retire/restore.
|
|
106
|
+
|
|
107
|
+
### 4. The board and Home (implemented)
|
|
108
|
+
|
|
109
|
+
Variant A: "⧗ review due" bottom line (outlined amber, glyph + word + reason) only while due;
|
|
110
|
+
filter row (All / To review / Retired); Undo toast after retire; Home folder rows with category
|
|
111
|
+
(glyph + word, inherited "↳"), "⧗ N due" and per-folder "unknown" counts.
|
|
112
|
+
|
|
113
|
+
Dashboard source warnings identify the affected source rather than marking every card due.
|
|
114
|
+
Extend the portal/source-card drawings to distinguish “source needs review” from the card's own
|
|
115
|
+
review reason before building this state; no additional healthy-card badge is required.
|
|
116
|
+
|
|
117
|
+
### 5. When review is due (implemented)
|
|
118
|
+
|
|
119
|
+
Rate-based checks plus event triggers already observable: a provenance source changed, a
|
|
120
|
+
superseding decision linked, a dependency card changed. Recipe cards (move 13) add the "refresh
|
|
121
|
+
this board" handoff; regenerating a card is not validation.
|
|
122
|
+
|
|
123
|
+
Apply the vision's dashboard/source lifecycle rules: folder defaults stop at links; source
|
|
124
|
+
updates trigger review of explicitly dependent conclusions, not unrelated navigational cards.
|
|
125
|
+
Opening or refreshing a dashboard never renews evidence validation. Preserve source revision
|
|
126
|
+
or observation time on cached values, independently of when they were fetched.
|
|
127
|
+
|
|
128
|
+
**Dashboard acceptance case:** a durable dashboard links to a fast-changing status source and
|
|
129
|
+
an unrelated durable reference, and has a conclusion explicitly derived from the status source.
|
|
130
|
+
Make the status source due or change its relevant content: the portal reports the source's
|
|
131
|
+
qualification and the dependent conclusion needs review, while the reference and dashboard
|
|
132
|
+
structure remain unaffected. Reopen and refresh: last-validated timestamps stay unchanged.
|
|
133
|
+
Repeat with a cached/unavailable source (no fresh-check claim), and an unreadable target when
|
|
134
|
+
sharing is available (no title or lifecycle leak). Verify the same distinctions in the brief.
|
|
135
|
+
|
|
136
|
+
## Remaining-wave implementation and stabilization
|
|
137
|
+
|
|
138
|
+
Relations retain open kind/reason and editable per-board vocabulary across undo, snapshots,
|
|
139
|
+
restart and all agent transports. Relation text reaches graph/brief/pinned context. Source
|
|
140
|
+
observations and inert recipes retain observation/revision separately from retrieval time.
|
|
141
|
+
Dependency cycles propagate review without recursion; navigation never implies a dependency.
|
|
142
|
+
Validating dependent cards requires matching checked source revisions, as well as card content.
|
|
143
|
+
The dashboard case, unavailable/cached sources, cadence boundary, session use and retired
|
|
144
|
+
filtering have regression coverage. Brief lifecycle snapshots are independent of the content
|
|
145
|
+
cursor and bounded: incomplete snapshots explicitly require rechecking cached cards.
|
|
146
|
+
|
|
147
|
+
Category presets, inherited folder settings, lifecycle overrides, four clocks, due reasons,
|
|
148
|
+
review evidence/history, reversible retirement and a post-retirement Undo toast are implemented.
|
|
149
|
+
See [design decisions and deviations](../design.md) for dialog placement and spatial dimming.
|
|
150
|
+
Reloading review metadata clears old evidence/applied state, preventing stale drafts from gaining
|
|
151
|
+
new source/content preconditions. Retired cards remain searchable and direct-readable, marked
|
|
152
|
+
retired. Restore, refresh, read, pin and content edits never renew evidence validation.
|
|
153
|
+
|
|
154
|
+
The owner requested adversarial self-review because Oracle was unavailable. Failures remain in
|
|
155
|
+
separate `/tmp/pmx-w3-*` attempt directories, including the cached-provenance regression and the
|
|
156
|
+
headed stale-evidence reproduction. The original stale-evidence test failed with the old 99%
|
|
157
|
+
evidence retained after a 95% content change; the corrected same browser case passes. No release,
|
|
158
|
+
tag, publish, deployment or version bump is authorized. The final local gates pass 1,443 unit,
|
|
159
|
+
302 client and 268 headed browser tests, coverage and fresh-workspace headed CLI E2E. Real CLI,
|
|
160
|
+
stdio MCP and live human gestures passed on disposable boards. The forward-looking debt review
|
|
161
|
+
is recorded in plan 009 and beside its owning stages in the vision.
|
|
162
|
+
|
|
163
|
+
## Out of this plan
|
|
164
|
+
|
|
165
|
+
- Audience, membership and publication (share ladder step 5).
|
|
166
|
+
- Claim-level lifecycle inside a card.
|
|
167
|
+
- Classifier assistance (Jev-style); optional later, never a dependency.
|
|
168
|
+
|
|
169
|
+
## Defaults (change if the maintainer disagrees)
|
|
170
|
+
|
|
171
|
+
- **The card is the lifecycle unit.** Claims inside a card are not tracked separately until a real
|
|
172
|
+
board shows a card that needs it.
|
|
173
|
+
- **"Fast" means review at use, not permanently due.** A fast card is flagged when it is delivered
|
|
174
|
+
and its last validation is older than the current session, so it does not sit amber forever.
|
|
175
|
+
- **Unknown is never an expiry.** Unclassified cards are counted per folder and never marked due.
|