@paradigma-inc/flywheel 0.1.73 → 0.1.77

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 (72) hide show
  1. package/README.md +29 -0
  2. package/package.json +1 -1
  3. package/skills/flywheel/compute/managed-compute.md +1 -1
  4. package/skills/flywheel/references/INTERFACES.md +2 -1
  5. package/skills/flywheel/references/experiment-design-protocol.md +5 -5
  6. package/skills/flywheel/references/flywheel-cli-tool-map.md +1 -3
  7. package/skills/flywheel/references/flywheel-mcp-tool-map.md +5 -7
  8. package/skills/flywheel/usage-and-workflows/what-to-do-with-flywheel.md +2 -2
  9. package/skills/flywheel/web-ui/flywheel-webui-map.md +2 -3
  10. package/skills/flywheel/web-ui/the-flywheel-web-ui.md +1 -1
  11. package/skills/flywheel-auto/SKILL.md +9 -13
  12. package/skills/flywheel-auto/references/INTERFACES.md +2 -1
  13. package/skills/flywheel-auto/references/experiment-design-protocol.md +5 -5
  14. package/skills/flywheel-auto/references/flywheel-cli-tool-map.md +0 -2
  15. package/skills/flywheel-auto/references/flywheel-mcp-tool-map.md +4 -6
  16. package/skills/flywheel-lookahead/SKILL.md +7 -9
  17. package/skills/flywheel-lookahead/references/INTERFACES.md +2 -1
  18. package/skills/flywheel-lookahead/references/flywheel-cli-tool-map.md +0 -2
  19. package/skills/flywheel-lookahead/references/flywheel-mcp-tool-map.md +4 -6
  20. package/skills/flywheel-reproduce/SKILL.md +7 -8
  21. package/skills/flywheel-reproduce/references/INTERFACES.md +2 -1
  22. package/skills/flywheel-reproduce/references/experiment-design-protocol.md +5 -5
  23. package/skills/flywheel-reproduce/references/flywheel-cli-tool-map.md +0 -2
  24. package/skills/flywheel-reproduce/references/flywheel-mcp-tool-map.md +4 -6
  25. package/skills/flywheel-to-graph/SKILL.md +3 -4
  26. package/skills/flywheel-to-graph/references/INTERFACES.md +2 -1
  27. package/skills/flywheel-to-graph/references/flywheel-cli-tool-map.md +0 -2
  28. package/skills/flywheel-to-graph/references/flywheel-mcp-tool-map.md +4 -6
  29. package/skills/flywheel-tree/SKILL.md +1 -2
  30. package/skills/flywheel-tree/references/workflow.md +1 -5
  31. package/skills/flywheel-tree/scripts/render_tree.py +2 -23
  32. package/src/cli.mjs +55 -0
  33. package/src/completion.mjs +326 -0
  34. package/src/public-command-metadata.mjs +240 -0
  35. package/src/runtime/delegate.mjs +2 -2
  36. package/src/runtime/required-runtime-commands.json +0 -2
  37. package/src/runtime/vendor/flywheel-cli-dist/commands/admin-graphs-export-stream.js +0 -3
  38. package/src/runtime/vendor/flywheel-cli-dist/commands/admin-graphs-export-stream.js.map +1 -1
  39. package/src/runtime/vendor/flywheel-cli-dist/commands/admin-graphs-list.js +0 -3
  40. package/src/runtime/vendor/flywheel-cli-dist/commands/admin-graphs-list.js.map +1 -1
  41. package/src/runtime/vendor/flywheel-cli-dist/commands/help-metadata.d.ts +32 -0
  42. package/src/runtime/vendor/flywheel-cli-dist/commands/help-metadata.js +112 -0
  43. package/src/runtime/vendor/flywheel-cli-dist/commands/help-metadata.js.map +1 -0
  44. package/src/runtime/vendor/flywheel-cli-dist/commands/help.d.ts +2 -13
  45. package/src/runtime/vendor/flywheel-cli-dist/commands/help.js +6 -128
  46. package/src/runtime/vendor/flywheel-cli-dist/commands/help.js.map +1 -1
  47. package/src/runtime/vendor/flywheel-cli-dist/commands/index.js +0 -4
  48. package/src/runtime/vendor/flywheel-cli-dist/commands/index.js.map +1 -1
  49. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-resolve-slug.js +1 -1
  50. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-resolve-slug.js.map +1 -1
  51. package/src/runtime/vendor/flywheel-cli-dist/commands/registry/admin.js +1 -3
  52. package/src/runtime/vendor/flywheel-cli-dist/commands/registry/admin.js.map +1 -1
  53. package/src/runtime/vendor/flywheel-cli-dist/commands/registry/lifecycle.js +0 -36
  54. package/src/runtime/vendor/flywheel-cli-dist/commands/registry/lifecycle.js.map +1 -1
  55. package/src/runtime/vendor/flywheel-cli-dist/commands/registry.d.ts +1 -0
  56. package/src/runtime/vendor/flywheel-cli-dist/commands/registry.js +0 -8
  57. package/src/runtime/vendor/flywheel-cli-dist/commands/registry.js.map +1 -1
  58. package/src/runtime/vendor/flywheel-cli-dist/commands/usage-spec.d.ts +6 -0
  59. package/src/runtime/vendor/flywheel-cli-dist/commands/usage-spec.js +342 -0
  60. package/src/runtime/vendor/flywheel-cli-dist/commands/usage-spec.js.map +1 -0
  61. package/src/runtime/vendor/flywheel-cli-dist/main.js +129 -2
  62. package/src/runtime/vendor/flywheel-cli-dist/main.js.map +1 -1
  63. package/src/runtime/vendor/flywheel-cli-dist/output/format.js +0 -1
  64. package/src/runtime/vendor/flywheel-cli-dist/output/format.js.map +1 -1
  65. package/src/runtime/vendor/manifest.json +7 -7
  66. package/src/unified-cli.mjs +23 -46
  67. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-stage-backfill-hypothesis.d.ts +0 -2
  68. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-stage-backfill-hypothesis.js +0 -7
  69. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-stage-backfill-hypothesis.js.map +0 -1
  70. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-stage-backfill-insights.d.ts +0 -2
  71. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-stage-backfill-insights.js +0 -7
  72. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-stage-backfill-insights.js.map +0 -1
package/README.md CHANGED
@@ -57,6 +57,35 @@ Configure your AI host (Claude Code, Codex, etc.) to call Flywheel over MCP:
57
57
  npx --yes @paradigma-inc/flywheel@latest setup --mode mcp --install-skill
58
58
  ```
59
59
 
60
+ ## Shell Completion
61
+
62
+ `flywheel completion <shell>` generates shell completion scripts from the public
63
+ Flywheel command spec. It requires the official `usage` executable on `PATH`;
64
+ install it with one of:
65
+
66
+ ```bash
67
+ mise use -g usage
68
+ brew install usage
69
+ cargo install usage-cli
70
+ cargo binstall usage-cli
71
+ pacman -S usage
72
+ ```
73
+
74
+ Generate the script for your shell and redirect it wherever your shell setup
75
+ loads completions:
76
+
77
+ ```bash
78
+ flywheel completion bash --include-bash-completion-lib > ~/.local/share/bash-completion/completions/flywheel
79
+ flywheel completion zsh > ~/.zsh/completions/_flywheel
80
+ flywheel completion fish > ~/.config/fish/completions/flywheel.fish
81
+ flywheel completion powershell > flywheel.ps1
82
+ flywheel completion nu > ~/.config/nushell/autoload/flywheel.nu
83
+ flywheel completion nushell > ~/.config/nushell/autoload/flywheel.nu
84
+ ```
85
+
86
+ This command generates scripts only. It does not install completions. It does
87
+ nothing to shell startup files and does not edit shell profiles.
88
+
60
89
  ## Uninstall
61
90
 
62
91
  One-shot uninstaller (macOS and Linux):
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@paradigma-inc/flywheel",
3
- "version": "0.1.73",
3
+ "version": "0.1.77",
4
4
  "description": "One-command setup for Flywheel MCP hosts",
5
5
  "type": "module",
6
6
  "files": [
@@ -53,7 +53,7 @@ For a focused reference, see `compute/credits-and-billing.md`.
53
53
 
54
54
  ### Step 2 - Extract task signals from node text
55
55
 
56
- - Read `node.content`, `node.hypothesis`, `node.summary`.
56
+ - Read `node.content` and `node.summary`.
57
57
  - Extract:
58
58
  - `weight_class` in `{light, medium, heavy, unknown}`
59
59
  - `expected_runtime_hours`
@@ -19,9 +19,10 @@ Canonical reference for Flywheel MCP public interfaces and contract pointers.
19
19
  ## Canonical Entity Model
20
20
 
21
21
  - Canonical durable entity: `node`.
22
- - Node kind values: `untyped`, `empirical`, `insight`.
22
+ - Canonical node body fields: `title`, Markdown `content`, and optional `summary`.
23
23
  - Node references: `node_id`, `slug_name`.
24
24
  - `slug_name` format: `adjective-noun-####` (immutable when present).
25
+ - Removed typed node body fields (`kind`, `node_type`, `hypothesis`, `insights`, `no_artifacts_reason`) are not write fields.
25
26
  - Approval sessions and compute grants are distinct entities; approvals are session-scoped bindings.
26
27
  - Campaign projections are derived from root config and attempt submission JSON artifacts.
27
28
 
@@ -94,7 +94,7 @@ For exploratory work, instead check:
94
94
 
95
95
  Additional checks when relevant:
96
96
 
97
- - an artifact plan or `no_artifacts_reason` exists
97
+ - an artifact plan exists, or the node content states why the run is intentionally artifact-free
98
98
  - the run shape matches the question and is not changing too many important things without purpose
99
99
  - an interpretation rule or next branch is defined
100
100
 
@@ -134,7 +134,7 @@ Typical flow:
134
134
 
135
135
  ### Execution layer
136
136
 
137
- Only after the design gate passes, create or branch the `empirical` node for the runnable part of the work.
137
+ Only after the design gate passes, create or branch the node for the runnable part of the work.
138
138
 
139
139
  Typical flow:
140
140
 
@@ -149,10 +149,10 @@ Typical flow:
149
149
 
150
150
  Important notes:
151
151
 
152
- - Exploratory work can stay in `insight` nodes until a specific empirical probe is ready.
153
- - Because `empirical` commits require a non-empty `hypothesis`, turn each runnable exploratory probe into a concrete local question or hypothesis for that branch.
152
+ - Exploratory work can stay as planning content until a specific empirical probe is ready.
153
+ - Record each runnable exploratory probe as a concrete local question or hypothesis in the branch content.
154
154
  - For multi-stage or multi-arm work, use branches to represent stages or arms and keep summaries clear about how each branch feeds the next.
155
- - Completed empirical work needs artifacts or a `no_artifacts_reason`.
155
+ - Attach artifacts when empirical work produces evidence; when it is intentionally artifact-free, state that rationale in node content.
156
156
 
157
157
  ## Adaptive question flow
158
158
 
@@ -125,8 +125,6 @@ These commands have no MCP counterpart. They cover auth/profile management, acco
125
125
  - `flywheel nodes:create` (mutating; scopes: `write`): Create a minimal node (title only) and emit graph-change event.
126
126
  - `flywheel nodes:files` (read; scopes: `read`): List files attached to a node.
127
127
  - `flywheel nodes:sharing:summaries` (read; scopes: `read`): Read access summaries for multiple nodes in one batch.
128
- - `flywheel nodes:stage:backfill:hypothesis` (mutating; scopes: `write`): Derive hypothesis from staged node content.
129
- - `flywheel nodes:stage:backfill:insights` (mutating; scopes: `write`): Extract structured insights from staged node content.
130
128
 
131
129
  ### Artifact helpers (CLI-only)
132
130
 
@@ -245,7 +243,7 @@ Account merge, detach, and email mutation commands are browser-session-bound. AP
245
243
 
246
244
  These commands require `FLYWHEEL_ADMIN_KEY` in the environment (forwarded as the `X-Admin-Key` header) or an admin browser session. Default help and JSON help hide admin commands unless `FLYWHEEL_ADMIN_KEY` or `FLYWHEEL_CLI_INTERNAL=1` is present, but explicit `flywheel help admin:<command>` still works. API-key-only callers fail locally with `admin_auth_required`. The endpoints are omitted from the public OpenAPI schema and from the API-key allowlist.
247
245
 
248
- - `flywheel admin:graphs:list` — list every root-node graph across all users. Filters: `--tag-id`, `--kind`, `--owner-user-id`, `--created-after`, `--created-before`, `--cursor`, `--page-size` (1..200).
246
+ - `flywheel admin:graphs:list` — list every root-node graph across all users. Filters: `--tag-id`, `--owner-user-id`, `--created-after`, `--created-before`, `--cursor`, `--page-size` (1..200).
249
247
  - `flywheel admin:graphs:export --root-node-id=<id>` — export one graph as canonical JSON, bypassing per-caller visibility.
250
248
  - `flywheel admin:graphs:export:stream` — stream canonical graph JSON for many graphs as NDJSON (one page per call, `--out=<file>` to write to disk). Filters match `admin:graphs:list`.
251
249
 
@@ -8,19 +8,17 @@ Flywheel is a graph-based system for tracking research work, decisions, and evid
8
8
 
9
9
  - Use `flywheel_get_contract` + `flywheel_get_contract_section` as canonical contract references.
10
10
  - Node state is canonical durable state; avoid relying on ephemeral transcript state.
11
- - Node kind (`untyped`, `empirical`, `insight`) is an explicit durable field.
11
+ - Node body state is `title`, Markdown `content`, and optional `summary`; represent observations, decisions, experiments, and evidence with Markdown structure, tags, artifacts, and executions.
12
12
  - Node references include immutable `node_id` and optional immutable `slug_name`; prefer communicating both together for human clarity and disambiguation.
13
- - Insight nodes should represent conceptual observations (theoretical insights, intuitions, motivations, decision-relevant framing); empirical nodes should represent experiments with explicit hypotheses and measured outcomes.
14
13
  - Graph topology should encode logical/causal relations between concepts and experiments. Avoid defaulting to shallow root-only branching unless work items are truly independent.
15
14
  - Node staging is local (non-canonical) and commit is the only canonical persistence boundary (`commit_new_node`, `commit_node`).
16
15
  - Mutating node writes are optimistic-locking operations: read latest state, pass `expected_revision` or `base_committed_revision` as required, and handle `409 conflict` with explicit reconciliation.
17
16
  - Mutating operations are idempotent; MCP tool transport auto-manages `Idempotency-Key` on mutating tool calls.
18
17
  - Existing-node field editing may use a session-scoped stage lease (`flywheel_acquire_stage_lease`, `flywheel_heartbeat_stage_lease`, `flywheel_release_stage_lease`) to coordinate local staged state before commit.
19
18
  - Existing-node commit publishes a full staged payload under an active stage lease: commit requests require `stage_session_id`, `base_committed_revision`, and `staged_payload`; conflicts on stale committed revisions are surfaced directly and are not transport-retried.
20
- - Stage/backfill helpers (`stage_backfill_hypothesis`, `stage_backfill_insights`) return non-canonical staged payload patches and explicit status fields (`staged_changes_pending`, `commit_required`, `next_action_hint`).
21
- - Committed node state must still satisfy strict contract (`summary` required; `empirical` requires hypothesis plus artifacts or `no_artifacts_reason`; `insight` requires non-empty insights).
19
+ - Committed node state uses the same canonical body fields for every node; `summary` may be empty when the node body is intentionally represented by content, artifacts, tags, or executions.
22
20
  - When code is involved, pass `repo_url`/`branch_name`/`head_commit_sha` and align git structure with graph topology where practical (without forcing one-to-one mapping).
23
- - Summaries, hypotheses, and artifacts should be reproduction-grade: enough setup, method, evidence, and interpretation for another reader to reproduce or audit results.
21
+ - Content, summaries, and artifacts should be reproduction-grade: enough setup, method, evidence, and interpretation for another reader to reproduce or audit results.
24
22
  - Empirical workflow is hypothesis-driven: launch execution, inspect outcomes, publish evidence artifacts, and commit only after terminal status.
25
23
  - For empirical work, publish evidence with `flywheel_prepare_artifact_uploads`, upload raw file bytes, then `flywheel_finalize_artifact_uploads` before commit.
26
24
  - Artifact metadata records expose a non-empty `title` suitable for display labels; title normalization must never derive from `storage_url`.
@@ -162,7 +160,7 @@ Hook workflow-if contract (first version):
162
160
  8. `flywheel_list_executions`: Poll until execution reaches terminal status.
163
161
  9. `flywheel_prepare_artifact_uploads`: Prepare signed upload URLs for empirical evidence.
164
162
  10. `raw_file_upload`: Upload raw bytes to each signed URL with required headers.
165
- 11. `flywheel_finalize_artifact_uploads`: Finalize prepared uploads before commit, or set `no_artifacts_reason` when intentionally artifact-free.
163
+ 11. `flywheel_finalize_artifact_uploads`: Finalize prepared uploads before commit when the work produced evidence artifacts.
166
164
  12. `flywheel_commit_node`: Commit terminal empirical node once contract requirements are satisfied.
167
165
 
168
166
  ### Hook Automation Workflow
@@ -202,6 +200,6 @@ Hook workflow-if contract (first version):
202
200
 
203
201
  These tools require an `@paradigma.inc`-authenticated MCP session **or** a valid `X-Admin-Key` header sent on the MCP HTTP request. The MCP streamable HTTP mount reads `X-Admin-Key` from the inbound request and forwards it through to the in-process `/admin/graphs*` call; on admin paths the proxy also suppresses the session bearer to sidestep the API-key route allowlist check. `require_paradigma_admin` then grants access based on the admin key. The routes are omitted from the public OpenAPI schema and from the API-key allowlist.
204
202
 
205
- - `flywheel_admin_list_graphs`: list every root-node graph across all users. Filters: `tag_id`, `kind`, `owner_user_id`, `created_after`, `created_before`, `cursor`, `page_size` (1..200). Returns `{graphs, has_more, next_cursor}`.
203
+ - `flywheel_admin_list_graphs`: list every root-node graph across all users. Filters: `tag_id`, `owner_user_id`, `created_after`, `created_before`, `cursor`, `page_size` (1..200). Returns `{graphs, has_more, next_cursor}`.
206
204
  - `flywheel_admin_export_graph`: export one graph by `root_node_id` as canonical JSON (`{version, exported_at, node_count, nodes}`). Bypasses per-caller node-visibility checks by design.
207
205
  - `flywheel_admin_export_graphs_stream`: batch-export one page of canonical graph JSON payloads matching the filter; iterate pages via `next_cursor`. The NDJSON HTTP endpoint (`GET /admin/graphs/export.jsonl`) is the CLI-first streaming surface; the MCP tool materializes a page to fit the RPC model.
@@ -11,9 +11,9 @@ built in.
11
11
 
12
12
  What you can do with it:
13
13
 
14
- - Create work nodes and classify them as insight (thinking/analysis) or empirical (actual experiments).
14
+ - Create work nodes for thinking, analysis, and empirical experiments.
15
15
  - Build a graph of work with branching/merging, not just a linear log.
16
- - Commit outcomes with required structure (kind, outcome, summary) so results stay consistent.
16
+ - Commit outcomes as Markdown content, optional summaries, artifacts, tags, and executions so results stay consistent.
17
17
  - Launch managed compute for a node with budget controls and track execution state.
18
18
  - Attach artifacts to nodes (text, tables, JSON, images, HTML/plots, checkpoints, diffs).
19
19
  - Configure hooks that call external HTTP endpoints when events occur.
@@ -5,10 +5,9 @@ Use this map when a user asks where to find a feature in the web interface.
5
5
  ## Primary Areas
6
6
 
7
7
  - Graph canvas: browse nodes, branches, and topology for the current workspace.
8
- - Node panel: inspect node metadata, summaries, hypotheses, outcomes, artifacts,
9
- and access state.
8
+ - Node panel: inspect node metadata, Markdown content, summaries, artifacts, tags, executions, and access state.
10
9
  - Artifact views: open uploaded artifacts (plots, tables, JSON, text, HTML).
11
- - Search and filters: narrow nodes by title, kind, state, and tags.
10
+ - Search and filters: narrow nodes by title, content, state, and tags.
12
11
  - Access and sharing controls: review and update visibility/collaboration policy.
13
12
  - Settings: account-level preferences, machines/leases, and credit-related pages.
14
13
 
@@ -12,6 +12,6 @@ You can also toggle timeline view for a more organized, linear view of the graph
12
12
 
13
13
  You can also shift select some nodes and generate summaries of their content and or export them as PDFs and/or JSON files for others to import. Of course, you can also use your MCP host to generate summaries and overviews of your research graph.
14
14
 
15
- Inside a node, you will be able to see the artifacts attached to it, a summary and possibly the hypothesis and/or insight that was recorded for this node.
15
+ Inside a node, you will be able to see its Markdown content, optional summary, artifacts, tags, and execution history.
16
16
 
17
17
  ![example node view](https://flywheel.paradigma.inc/assets/example_node_view-Xv6mViuc.png)
@@ -51,8 +51,7 @@ Before execution, recover or establish these inputs:
51
51
  - Treat the flywheel-auto skill as graph-local autonomous research: persist the run contract in the graph, keep the plan `n` hops ahead, and spend only within an explicit measured budget.
52
52
  - When guidance from flywheel, flywheel-lookahead, flywheel-reproduce, or flywheel-to-graph conflicts during an active $flywheel-auto run, flywheel-auto rules take precedence for compute, questioning, and stop decisions.
53
53
  - Ask only the minimum clarification questions needed to establish a coherent control contract, and ask none when the required answers are already recoverable from user instructions, conversational context, or graph state.
54
- - Planned nodes that are expected to produce evidence or artifacts should be typed `empirical`; planned nodes that only encode synthesis, decomposition, or decision structure should be typed `insight`.
55
- - Keep the control node typed `insight` and keep its `insights` non-empty so the insight commit contract stays valid.
54
+ - Planned nodes that are expected to produce evidence or artifacts should say so in `content` and attach artifacts when evidence exists; planned nodes that encode synthesis, decomposition, or decision structure should keep that rationale in `content`.
56
55
  - Do not rely on fresh user feedback to decide whether the flywheel-auto skill should continue, so later replans can resume from node state alone in a fresh chat.
57
56
 
58
57
  ## Workflow
@@ -64,7 +63,7 @@ Before execution, recover or establish these inputs:
64
63
  - The flywheel-auto skill requires a measurable objective and an explicit terminal condition. Ask once for missing prerequisites; if the user refuses to specify an objective, infer it from the available graph context and state it explicitly before continuing.
65
64
  - The budget contract must be explicit before execution starts. Ask once for missing budget ceiling or budget unit. When budget ceiling and budget unit are present but terminal condition is missing, derive `terminal_condition: "budget ceiling reached"` and persist that derivation into the control node `content` before any compute request or acquisition.
66
65
  - Managed compute spend is billed in Flywheel credits. If the user gives dollars, hours, or another measurable budget semantic, persist that user-facing cap explicitly and derive the operational compute approval cap before acquisition.
67
- - Persist the run contract in a dedicated `insight` control node for this frontier. Put the canonical contract in node `content`, keep a one-line synopsis in `summary`, and keep brief run rationale in `insights` so the commit contract stays valid.
66
+ - Persist the run contract in a dedicated control node for this frontier. Put the canonical contract and brief run rationale in node `content`, and keep a one-line synopsis in `summary`.
68
67
  - The control contract must name: objective, decision criterion, start nodes, budget ceiling and unit, lookahead depth `n`, frontier width `k`, and an explicit terminal condition.
69
68
  - Later flywheel-auto replans must read the control node `content` first and continue from that persisted contract rather than from chat memory.
70
69
  - Run the design gate from [references/experiment-design-protocol-autonomous.md](references/experiment-design-protocol-autonomous.md) before the first compute request: confirm objective, decision criterion, evidence plan, budget readiness, and stop-reason recording requirements, even though later continuation decisions become graph-local.
@@ -73,8 +72,7 @@ Before execution, recover or establish these inputs:
73
72
  - Create a new node with `flywheel_commit_new_node` (MCP) or `flywheel nodes:commit-new` (CLI) when needed.
74
73
  - Update an existing node with `flywheel_get_node` + `flywheel_acquire_stage_lease` + `flywheel_commit_node` (MCP) or `flywheel nodes:get` + `flywheel nodes:stage:lease:acquire` + `flywheel nodes:commit` (CLI) when continuing work.
75
74
  4. Put the primary page markdown or plan rationale in the node body/readme field (`content`).
76
- - Keep `summary` concise.
77
- - Populate `hypothesis`, `insights`, `outcome`, and similar fields only when the source actually supports them.
75
+ - Put claims, rationale, methods, outcomes, and continuation notes in `content`; keep `summary` concise.
78
76
  5. Publish supporting files with the artifact upload flow.
79
77
  - For exact artifact contract details, load [references/ARTIFACTS.md](references/ARTIFACTS.md).
80
78
  - Use `flywheel_prepare_artifact_uploads` (MCP) or `flywheel artifacts:upload:prepare` (CLI).
@@ -107,25 +105,24 @@ Before execution, recover or establish these inputs:
107
105
  - Before every termination path, persist `stop_reason` in control node `content` as one of: `budget_exhausted`, `objective_met`, `no_viable_branch`, `user_cancelled`, `runtime_error`.
108
106
 
109
107
  9. Commit after the node snapshot is coherent with `flywheel_commit_node` (MCP) or `flywheel nodes:commit` (CLI).
110
- - Commit resolved insight nodes only when they have non-empty `insights`.
111
- - Commit resolved empirical nodes only when outcome and artifact rules are satisfied.
108
+ - Commit resolved nodes once `content`, `summary`, artifacts, tags, executions, and graph edges make the snapshot coherent.
112
109
  - Leave unresolved plan nodes staged.
113
110
 
114
111
  ## Result Contract
115
112
 
116
113
  When the skill completes a pass, it should leave behind:
117
114
 
118
- - One persisted `insight` control node containing the canonical run contract.
115
+ - One persisted control node containing the canonical run contract.
119
116
  - Zero or more staged frontier nodes up to the current `n` and `k` limits.
120
- - Zero or more committed resolved nodes, but only when their commit contracts are satisfied.
121
- - Uploaded artifacts for completed empirical work, or an explicit `no_artifacts_reason` when artifacts are absent by design.
117
+ - Zero or more committed resolved nodes, once their durable content and artifacts are coherent.
118
+ - Uploaded artifacts for completed empirical work when evidence exists, or an explicit artifact-free rationale in node content when artifacts are absent by design.
122
119
  - Released managed compute if any lease was acquired during the pass.
123
120
  - An explicit `stop_reason` recorded in node state so a later pass can resume graph-locally.
124
121
  - If the no-branch stop clause is used, a per-candidate rejection log recorded in control node `content`.
125
122
 
126
123
  ## Persisted Control Contract
127
124
 
128
- Use a dedicated `insight` node as the durable run controller for the current
125
+ Use a dedicated node as the durable run controller for the current
129
126
  frontier. Do not rely on unstated product fields or fresh chat context.
130
127
 
131
128
  For the canonical entity model and public contract terminology behind this
@@ -137,8 +134,7 @@ Use this storage convention:
137
134
  otherwise create one with `flywheel_commit_new_node` (MCP) or `flywheel nodes:commit-new` (CLI).
138
135
  2. Put the canonical contract in node `content`.
139
136
  3. Put a one-line synopsis in `summary`.
140
- 4. Put the run rationale, continuation rule, or prioritization logic in
141
- `insights` so the `insight` commit contract is satisfied.
137
+ 4. Put the run rationale, continuation rule, or prioritization logic in `content`.
142
138
  5. Before committing control-node edits, acquire or refresh the stage lease with `flywheel_acquire_stage_lease` (and `flywheel_heartbeat_stage_lease` for long edits) — or in CLI mode, `flywheel nodes:stage:lease:acquire` and `flywheel nodes:stage:lease:heartbeat`.
143
139
  6. Read the control node with `flywheel_get_node` (MCP) or `flywheel nodes:get` (CLI) before later replans that need
144
140
  a fresh `expected_revision` revision token for optimistic-locking writes.
@@ -19,9 +19,10 @@ Canonical reference for Flywheel MCP public interfaces and contract pointers.
19
19
  ## Canonical Entity Model
20
20
 
21
21
  - Canonical durable entity: `node`.
22
- - Node kind values: `untyped`, `empirical`, `insight`.
22
+ - Canonical node body fields: `title`, Markdown `content`, and optional `summary`.
23
23
  - Node references: `node_id`, `slug_name`.
24
24
  - `slug_name` format: `adjective-noun-####` (immutable when present).
25
+ - Removed typed node body fields (`kind`, `node_type`, `hypothesis`, `insights`, `no_artifacts_reason`) are not write fields.
25
26
  - Approval sessions and compute grants are distinct entities; approvals are session-scoped bindings.
26
27
  - Campaign projections are derived from root config and attempt submission JSON artifacts.
27
28
 
@@ -94,7 +94,7 @@ For exploratory work, instead check:
94
94
 
95
95
  Additional checks when relevant:
96
96
 
97
- - an artifact plan or `no_artifacts_reason` exists
97
+ - an artifact plan exists, or the node content states why the run is intentionally artifact-free
98
98
  - the run shape matches the question and is not changing too many important things without purpose
99
99
  - an interpretation rule or next branch is defined
100
100
 
@@ -134,7 +134,7 @@ Typical flow:
134
134
 
135
135
  ### Execution layer
136
136
 
137
- Only after the design gate passes, create or branch the `empirical` node for the runnable part of the work.
137
+ Only after the design gate passes, create or branch the node for the runnable part of the work.
138
138
 
139
139
  Typical flow:
140
140
 
@@ -149,10 +149,10 @@ Typical flow:
149
149
 
150
150
  Important notes:
151
151
 
152
- - Exploratory work can stay in `insight` nodes until a specific empirical probe is ready.
153
- - Because `empirical` commits require a non-empty `hypothesis`, turn each runnable exploratory probe into a concrete local question or hypothesis for that branch.
152
+ - Exploratory work can stay as planning content until a specific empirical probe is ready.
153
+ - Record each runnable exploratory probe as a concrete local question or hypothesis in the branch content.
154
154
  - For multi-stage or multi-arm work, use branches to represent stages or arms and keep summaries clear about how each branch feeds the next.
155
- - Completed empirical work needs artifacts or a `no_artifacts_reason`.
155
+ - Attach artifacts when empirical work produces evidence; when it is intentionally artifact-free, state that rationale in node content.
156
156
 
157
157
  ## Adaptive question flow
158
158
 
@@ -123,8 +123,6 @@ These commands have no MCP counterpart. They cover auth/profile management, acco
123
123
  - `flywheel nodes:create` (mutating; scopes: `write`): Create a minimal node (title only) and emit graph-change event.
124
124
  - `flywheel nodes:files` (read; scopes: `read`): List files attached to a node.
125
125
  - `flywheel nodes:sharing:summaries` (read; scopes: `read`): Read access summaries for multiple nodes in one batch.
126
- - `flywheel nodes:stage:backfill:hypothesis` (mutating; scopes: `write`): Derive hypothesis from staged node content.
127
- - `flywheel nodes:stage:backfill:insights` (mutating; scopes: `write`): Extract structured insights from staged node content.
128
126
 
129
127
  ### Artifact helpers (CLI-only)
130
128
 
@@ -8,19 +8,17 @@ Flywheel is a graph-based system for tracking research work, decisions, and evid
8
8
 
9
9
  - Use `flywheel_get_contract` + `flywheel_get_contract_section` as canonical contract references.
10
10
  - Node state is canonical durable state; avoid relying on ephemeral transcript state.
11
- - Node kind (`untyped`, `empirical`, `insight`) is an explicit durable field.
11
+ - Node body state is `title`, Markdown `content`, and optional `summary`; represent observations, decisions, experiments, and evidence with Markdown structure, tags, artifacts, and executions.
12
12
  - Node references include immutable `node_id` and optional immutable `slug_name`; prefer communicating both together for human clarity and disambiguation.
13
- - Insight nodes should represent conceptual observations (theoretical insights, intuitions, motivations, decision-relevant framing); empirical nodes should represent experiments with explicit hypotheses and measured outcomes.
14
13
  - Graph topology should encode logical/causal relations between concepts and experiments. Avoid defaulting to shallow root-only branching unless work items are truly independent.
15
14
  - Node staging is local (non-canonical) and commit is the only canonical persistence boundary (`commit_new_node`, `commit_node`).
16
15
  - Mutating node writes are optimistic-locking operations: read latest state, pass `expected_revision` or `base_committed_revision` as required, and handle `409 conflict` with explicit reconciliation.
17
16
  - Mutating operations are idempotent; MCP tool transport auto-manages `Idempotency-Key` on mutating tool calls.
18
17
  - Existing-node field editing may use a session-scoped stage lease (`flywheel_acquire_stage_lease`, `flywheel_heartbeat_stage_lease`, `flywheel_release_stage_lease`) to coordinate local staged state before commit.
19
18
  - Existing-node commit publishes a full staged payload under an active stage lease: commit requests require `stage_session_id`, `base_committed_revision`, and `staged_payload`; conflicts on stale committed revisions are surfaced directly and are not transport-retried.
20
- - Stage/backfill helpers (`stage_backfill_hypothesis`, `stage_backfill_insights`) return non-canonical staged payload patches and explicit status fields (`staged_changes_pending`, `commit_required`, `next_action_hint`).
21
- - Committed node state must still satisfy strict contract (`summary` required; `empirical` requires hypothesis plus artifacts or `no_artifacts_reason`; `insight` requires non-empty insights).
19
+ - Committed node state uses the same canonical body fields for every node; `summary` may be empty when the node body is intentionally represented by content, artifacts, tags, or executions.
22
20
  - When code is involved, pass `repo_url`/`branch_name`/`head_commit_sha` and align git structure with graph topology where practical (without forcing one-to-one mapping).
23
- - Summaries, hypotheses, and artifacts should be reproduction-grade: enough setup, method, evidence, and interpretation for another reader to reproduce or audit results.
21
+ - Content, summaries, and artifacts should be reproduction-grade: enough setup, method, evidence, and interpretation for another reader to reproduce or audit results.
24
22
  - Empirical workflow is hypothesis-driven: launch execution, inspect outcomes, publish evidence artifacts, and commit only after terminal status.
25
23
  - For empirical work, publish evidence with `flywheel_prepare_artifact_uploads`, upload raw file bytes, then `flywheel_finalize_artifact_uploads` before commit.
26
24
  - Artifact metadata records expose a non-empty `title` suitable for display labels; title normalization must never derive from `storage_url`.
@@ -135,7 +133,7 @@ Flywheel is a graph-based system for tracking research work, decisions, and evid
135
133
  8. `flywheel_list_executions`: Poll until execution reaches terminal status.
136
134
  9. `flywheel_prepare_artifact_uploads`: Prepare signed upload URLs for empirical evidence.
137
135
  10. `raw_file_upload`: Upload raw bytes to each signed URL with required headers.
138
- 11. `flywheel_finalize_artifact_uploads`: Finalize prepared uploads before commit, or set `no_artifacts_reason` when intentionally artifact-free.
136
+ 11. `flywheel_finalize_artifact_uploads`: Finalize prepared uploads before commit when the work produced evidence artifacts.
139
137
  12. `flywheel_commit_node`: Commit terminal empirical node once contract requirements are satisfied.
140
138
 
141
139
  ## Runtime Guidance
@@ -64,7 +64,7 @@ Before planning, recover or establish these inputs:
64
64
  - Use artifacts for supporting files and evidence, not as a substitute for the node's main narrative, because the node body should stay readable as the canonical planning record.
65
65
  - Only create graph edges for durable semantic relationships, because graphifying every wiki link floods the graph with noise that hides decision-relevant structure.
66
66
  - Treat the flywheel-lookahead skill as frontier planning only. It expands the Flywheel graph with staged next-step nodes but does not execute them, because execution or compute acquisition changes the job into `$flywheel-auto` or `$flywheel-reproduce`.
67
- - Planned nodes that are expected to produce evidence or artifacts should be typed `empirical`; planned nodes that only encode synthesis, decomposition, or decision structure should be typed `insight`.
67
+ - Planned nodes that are expected to produce evidence or artifacts should say so in `content` and attach artifacts when evidence exists; planned nodes that encode synthesis, decomposition, or decision structure should keep that rationale in `content`.
68
68
  - Ask only the minimum clarification questions needed to establish a coherent planning contract, and ask none when the required answers are already recoverable from user instructions, conversational context, or graph state.
69
69
  - Do not request compute approval, acquire managed compute, or launch execution in this skill, because planning should leave the frontier staged for later work rather than spend budget now.
70
70
 
@@ -76,7 +76,7 @@ Before planning, recover or establish these inputs:
76
76
  - Recover required planning inputs from the current conversation and graph first. Ask only for inputs that remain genuinely missing after that recovery pass.
77
77
  - The flywheel-lookahead skill requires a measurable objective. Ask once if it is missing; if the user refuses to specify one, infer it from the available graph context and state it explicitly before continuing.
78
78
  - Default `n=1` and `k=1` unless the user specified otherwise.
79
- - Persist the planning contract in a dedicated `insight` control node for this frontier. Put the canonical contract in node `content`, keep a one-line synopsis in `summary`, and keep brief planning rationale in `insights` so the commit contract stays valid.
79
+ - Persist the planning contract in a dedicated control node for this frontier. Put the canonical contract and brief planning rationale in node `content`, and keep a one-line synopsis in `summary`.
80
80
  - The control contract must name: objective, decision criterion, start nodes, lookahead depth `n`, step option width `k`, and an explicit terminal condition. Only persist a budget ceiling and unit when the user already supplied one or wants them tracked for later execution.
81
81
  - Later lookahead passes must read the control node `content` first and continue from that persisted contract rather than from chat memory.
82
82
  3. Map each stable page, claim, or concept to a node.
@@ -87,8 +87,7 @@ Before planning, recover or establish these inputs:
87
87
  - Update an existing node with `flywheel_get_node`, `flywheel_acquire_stage_lease`, and `flywheel_commit_node` (MCP) or `flywheel nodes:get`, `flywheel nodes:stage:lease:acquire`, and `flywheel nodes:commit` (CLI).
88
88
  - Use `flywheel_add_parent` (MCP) or `flywheel nodes:add-parent` (CLI) when the chosen option should remain recoverable in topology as an additional parent or selected edge, not prose alone.
89
89
  4. Put the primary page markdown or plan rationale in the node body/readme field (`content`).
90
- - Keep `summary` concise.
91
- - Populate `hypothesis`, `insights`, `outcome`, and similar fields only when the source actually supports them.
90
+ - Put claims, rationale, methods, outcomes, and continuation notes in `content`; keep `summary` concise.
92
91
  5. Publish supporting files with the artifact upload flow.
93
92
  - For exact artifact contract details, load [references/ARTIFACTS.md](references/ARTIFACTS.md).
94
93
  - Use `flywheel_prepare_artifact_uploads` (MCP) or `flywheel artifacts:upload:prepare` (CLI).
@@ -108,22 +107,21 @@ Before planning, recover or establish these inputs:
108
107
  - When one option wins, encode that choice in topology as well as prose: the next hop should be reachable from the chosen option node via a selected edge or additional parent relationship when available on the current Flywheel surface.
109
108
  - Each hop-selector node must record: the `k` considered option nodes, the selection criterion used, and the chosen continuation.
110
109
  8. Commit after the node snapshot is coherent with `flywheel_commit_node` (MCP) or `flywheel nodes:commit` (CLI).
111
- - Commit resolved insight nodes only when they have non-empty `insights`.
112
- - Commit resolved empirical nodes only when outcome and artifact rules are satisfied.
110
+ - Commit resolved nodes once `content`, `summary`, artifacts, tags, executions, and graph edges make the snapshot coherent.
113
111
  - Keep unresolved plan nodes durable and explicitly unresolved in their content; do not rely on uncommitted local drafts to preserve the frontier.
114
112
 
115
113
  ## Result Contract
116
114
 
117
115
  When the skill completes a pass, it should leave behind:
118
116
 
119
- - One persisted `insight` control node containing the canonical planning contract.
117
+ - One persisted control node containing the canonical planning contract.
120
118
  - A single persisted next-step chain up to the current `n` limit where each hop has a selector node plus up to `k` explicit option nodes and one selected continuation.
121
119
  - Updated node summaries, rationale, and selected edges that make the chosen path explicit without turning the graph into `k` parallel continuation chains.
122
120
  - No hidden execution, no compute approval, and no managed compute acquisition.
123
121
 
124
122
  ## Persisted Control Contract
125
123
 
126
- Use a dedicated `insight` node as the durable planning controller for the current frontier. Do not rely on unstated product fields or fresh chat context.
124
+ Use a dedicated node as the durable planning controller for the current frontier. Do not rely on unstated product fields or fresh chat context.
127
125
 
128
126
  For the canonical entity model and public contract terminology behind this controller, load [references/INTERFACES.md](references/INTERFACES.md).
129
127
 
@@ -132,7 +130,7 @@ Use this storage convention:
132
130
  1. Reuse an existing control node when one already governs the same frontier; otherwise create one with `flywheel_commit_new_node` or `flywheel_branch_node` (MCP), or `flywheel nodes:commit-new` or `flywheel nodes:branch` (CLI), depending on whether it should attach to an existing parent.
133
131
  2. Put the canonical contract in node `content`.
134
132
  3. Put a one-line synopsis in `summary`.
135
- 4. Put the planning rationale or branch-selection logic in `insights` so the `insight` commit contract is satisfied.
133
+ 4. Put the planning rationale or branch-selection logic in `content`.
136
134
  5. Update the control node with `flywheel_acquire_stage_lease` + `flywheel_commit_node` (MCP) or `flywheel nodes:stage:lease:acquire` + `flywheel nodes:commit` (CLI).
137
135
  6. Read the control node with `flywheel_get_node` (MCP) or `flywheel nodes:get` (CLI) before later replans that need a fresh `expected_revision`.
138
136
  7. Commit the control node with `flywheel_commit_node` (MCP) or `flywheel nodes:commit` (CLI) once the contract is coherent, even if downstream frontier nodes remain staged.
@@ -19,9 +19,10 @@ Canonical reference for Flywheel MCP public interfaces and contract pointers.
19
19
  ## Canonical Entity Model
20
20
 
21
21
  - Canonical durable entity: `node`.
22
- - Node kind values: `untyped`, `empirical`, `insight`.
22
+ - Canonical node body fields: `title`, Markdown `content`, and optional `summary`.
23
23
  - Node references: `node_id`, `slug_name`.
24
24
  - `slug_name` format: `adjective-noun-####` (immutable when present).
25
+ - Removed typed node body fields (`kind`, `node_type`, `hypothesis`, `insights`, `no_artifacts_reason`) are not write fields.
25
26
  - Approval sessions and compute grants are distinct entities; approvals are session-scoped bindings.
26
27
  - Campaign projections are derived from root config and attempt submission JSON artifacts.
27
28
 
@@ -123,8 +123,6 @@ These commands have no MCP counterpart. They cover auth/profile management, acco
123
123
  - `flywheel nodes:create` (mutating; scopes: `write`): Create a minimal node (title only) and emit graph-change event.
124
124
  - `flywheel nodes:files` (read; scopes: `read`): List files attached to a node.
125
125
  - `flywheel nodes:sharing:summaries` (read; scopes: `read`): Read access summaries for multiple nodes in one batch.
126
- - `flywheel nodes:stage:backfill:hypothesis` (mutating; scopes: `write`): Derive hypothesis from staged node content.
127
- - `flywheel nodes:stage:backfill:insights` (mutating; scopes: `write`): Extract structured insights from staged node content.
128
126
 
129
127
  ### Artifact helpers (CLI-only)
130
128
 
@@ -8,19 +8,17 @@ Flywheel is a graph-based system for tracking research work, decisions, and evid
8
8
 
9
9
  - Use `flywheel_get_contract` + `flywheel_get_contract_section` as canonical contract references.
10
10
  - Node state is canonical durable state; avoid relying on ephemeral transcript state.
11
- - Node kind (`untyped`, `empirical`, `insight`) is an explicit durable field.
11
+ - Node body state is `title`, Markdown `content`, and optional `summary`; represent observations, decisions, experiments, and evidence with Markdown structure, tags, artifacts, and executions.
12
12
  - Node references include immutable `node_id` and optional immutable `slug_name`; prefer communicating both together for human clarity and disambiguation.
13
- - Insight nodes should represent conceptual observations (theoretical insights, intuitions, motivations, decision-relevant framing); empirical nodes should represent experiments with explicit hypotheses and measured outcomes.
14
13
  - Graph topology should encode logical/causal relations between concepts and experiments. Avoid defaulting to shallow root-only branching unless work items are truly independent.
15
14
  - Node staging is local (non-canonical) and commit is the only canonical persistence boundary (`commit_new_node`, `commit_node`).
16
15
  - Mutating node writes are optimistic-locking operations: read latest state, pass `expected_revision` or `base_committed_revision` as required, and handle `409 conflict` with explicit reconciliation.
17
16
  - Mutating operations are idempotent; MCP tool transport auto-manages `Idempotency-Key` on mutating tool calls.
18
17
  - Existing-node field editing may use a session-scoped stage lease (`flywheel_acquire_stage_lease`, `flywheel_heartbeat_stage_lease`, `flywheel_release_stage_lease`) to coordinate local staged state before commit.
19
18
  - Existing-node commit publishes a full staged payload under an active stage lease: commit requests require `stage_session_id`, `base_committed_revision`, and `staged_payload`; conflicts on stale committed revisions are surfaced directly and are not transport-retried.
20
- - Stage/backfill helpers (`stage_backfill_hypothesis`, `stage_backfill_insights`) return non-canonical staged payload patches and explicit status fields (`staged_changes_pending`, `commit_required`, `next_action_hint`).
21
- - Committed node state must still satisfy strict contract (`summary` required; `empirical` requires hypothesis plus artifacts or `no_artifacts_reason`; `insight` requires non-empty insights).
19
+ - Committed node state uses the same canonical body fields for every node; `summary` may be empty when the node body is intentionally represented by content, artifacts, tags, or executions.
22
20
  - When code is involved, pass `repo_url`/`branch_name`/`head_commit_sha` and align git structure with graph topology where practical (without forcing one-to-one mapping).
23
- - Summaries, hypotheses, and artifacts should be reproduction-grade: enough setup, method, evidence, and interpretation for another reader to reproduce or audit results.
21
+ - Content, summaries, and artifacts should be reproduction-grade: enough setup, method, evidence, and interpretation for another reader to reproduce or audit results.
24
22
  - Empirical workflow is hypothesis-driven: launch execution, inspect outcomes, publish evidence artifacts, and commit only after terminal status.
25
23
  - For empirical work, publish evidence with `flywheel_prepare_artifact_uploads`, upload raw file bytes, then `flywheel_finalize_artifact_uploads` before commit.
26
24
  - Artifact metadata records expose a non-empty `title` suitable for display labels; title normalization must never derive from `storage_url`.
@@ -135,7 +133,7 @@ Flywheel is a graph-based system for tracking research work, decisions, and evid
135
133
  8. `flywheel_list_executions`: Poll until execution reaches terminal status.
136
134
  9. `flywheel_prepare_artifact_uploads`: Prepare signed upload URLs for empirical evidence.
137
135
  10. `raw_file_upload`: Upload raw bytes to each signed URL with required headers.
138
- 11. `flywheel_finalize_artifact_uploads`: Finalize prepared uploads before commit, or set `no_artifacts_reason` when intentionally artifact-free.
136
+ 11. `flywheel_finalize_artifact_uploads`: Finalize prepared uploads before commit when the work produced evidence artifacts.
139
137
  12. `flywheel_commit_node`: Commit terminal empirical node once contract requirements are satisfied.
140
138
 
141
139
  ## Runtime Guidance
@@ -63,7 +63,7 @@ Before execution, recover or establish these inputs:
63
63
  - Recover required execution inputs from the current conversation and graph first. Ask only for inputs that remain genuinely missing after that recovery pass.
64
64
  - The flywheel-reproduce skill requires a measurable objective and a hard max budget. Ask once for missing prerequisites; if the user refuses to specify an objective, infer it from the available graph context and state it explicitly before continuing.
65
65
  - Run the design gate from [references/experiment-design-protocol.md](references/experiment-design-protocol.md) before any compute request: confirm objective, decision criterion, evidence plan, branch strategy, and budget readiness.
66
- - Persist the validation contract in a dedicated `insight` control node for this source or claim family. Put the canonical contract in node `content`, keep a one-line synopsis in `summary`, and keep brief validation rationale in `insights` so the commit contract stays valid.
66
+ - Persist the validation contract in a dedicated control node for this source or claim family. Put the canonical contract and brief validation rationale in node `content`, and keep a one-line synopsis in `summary`.
67
67
  - The control contract must name: objective, decision criterion, source or claim nodes under test, budget ceiling and unit, and an explicit stopping criterion.
68
68
  - Later reproduce passes must read the control node `content` first and continue from that persisted contract rather than from chat memory.
69
69
  3. Classify the source.
@@ -78,7 +78,7 @@ Before execution, recover or establish these inputs:
78
78
  - Update an existing node with `flywheel_get_node` + `flywheel_acquire_stage_lease` + `flywheel_commit_node` (MCP) or `flywheel nodes:get` + `flywheel nodes:stage:lease:acquire` + `flywheel nodes:commit` (CLI) when continuing work.
79
79
  5. Put the primary page markdown or validation rationale in the node body/readme field (`content`).
80
80
  - Keep `summary` concise.
81
- - Populate `hypothesis`, `insights`, `outcome`, and similar fields only when the source actually supports them.
81
+ - Put claims, rationale, methods, outcomes, and continuation notes in `content`; keep `summary` concise.
82
82
  6. Publish supporting files with the artifact upload flow.
83
83
  - For exact artifact contract details, load [references/ARTIFACTS.md](references/ARTIFACTS.md).
84
84
  - Use `flywheel_prepare_artifact_uploads` (MCP) or `flywheel artifacts:upload:prepare` (CLI).
@@ -101,8 +101,7 @@ Before execution, recover or establish these inputs:
101
101
  - Stop when the core claim is resolved or the budget ceiling is reached.
102
102
 
103
103
  9. Commit after the node snapshot is coherent with `flywheel_commit_node` (MCP) or `flywheel nodes:commit` (CLI).
104
- - Commit resolved insight nodes only when they have non-empty `insights`.
105
- - Commit resolved empirical nodes only when outcome and artifact rules are satisfied.
104
+ - Commit resolved nodes once `content`, `summary`, artifacts, tags, executions, and graph edges make the snapshot coherent.
106
105
  - Leave unresolved plan nodes staged.
107
106
 
108
107
  ## Result Contract
@@ -110,14 +109,14 @@ Before execution, recover or establish these inputs:
110
109
  When the skill completes a pass, it should leave behind:
111
110
 
112
111
  - Graphified source nodes or updated claim nodes that preserve the source material legibly in `content`.
113
- - One persisted `insight` control node containing the canonical validation contract.
112
+ - One persisted control node containing the canonical validation contract.
114
113
  - Zero or more explicit validation branches staged or resolved under the hard max budget.
115
- - Coherent committed empirical or insight nodes, with artifacts attached where required by the outcome contract.
114
+ - Coherent committed nodes, with artifacts attached when evidence exists.
116
115
  - Released managed compute if any lease was acquired during the pass.
117
116
 
118
117
  ## Persisted Validation Contract
119
118
 
120
- Use a dedicated `insight` node as the durable validation controller for the current source or claim family. Do not rely on unstated product fields or fresh chat context.
119
+ Use a dedicated node as the durable validation controller for the current source or claim family. Do not rely on unstated product fields or fresh chat context.
121
120
 
122
121
  For the canonical entity model and public contract terminology behind this controller, load [references/INTERFACES.md](references/INTERFACES.md).
123
122
 
@@ -126,7 +125,7 @@ Use this storage convention:
126
125
  1. Reuse an existing control node when one already governs the same source or claim family; otherwise create one with `flywheel_commit_new_node` (MCP) or `flywheel nodes:commit-new` (CLI).
127
126
  2. Put the canonical contract in node `content`.
128
127
  3. Put a one-line synopsis in `summary`.
129
- 4. Put the validation rationale, branch-priority logic, or continuation rule in `insights` so the `insight` commit contract is satisfied.
128
+ 4. Put the validation rationale, branch-priority logic, or continuation rule in `content`.
130
129
  5. Before committing control-node edits, acquire or refresh the stage lease with `flywheel_acquire_stage_lease` (and `flywheel_heartbeat_stage_lease` for long edits) — or in CLI mode, `flywheel nodes:stage:lease:acquire` and `flywheel nodes:stage:lease:heartbeat`.
131
130
  6. Read the control node with `flywheel_get_node` (MCP) or `flywheel nodes:get` (CLI) before later passes that need a fresh `expected_revision`.
132
131
  7. Commit the control node with `flywheel_commit_node` (MCP) or `flywheel nodes:commit` (CLI) once the contract is coherent, even if downstream validation branches remain staged or in progress.
@@ -19,9 +19,10 @@ Canonical reference for Flywheel MCP public interfaces and contract pointers.
19
19
  ## Canonical Entity Model
20
20
 
21
21
  - Canonical durable entity: `node`.
22
- - Node kind values: `untyped`, `empirical`, `insight`.
22
+ - Canonical node body fields: `title`, Markdown `content`, and optional `summary`.
23
23
  - Node references: `node_id`, `slug_name`.
24
24
  - `slug_name` format: `adjective-noun-####` (immutable when present).
25
+ - Removed typed node body fields (`kind`, `node_type`, `hypothesis`, `insights`, `no_artifacts_reason`) are not write fields.
25
26
  - Approval sessions and compute grants are distinct entities; approvals are session-scoped bindings.
26
27
  - Campaign projections are derived from root config and attempt submission JSON artifacts.
27
28
 
@@ -94,7 +94,7 @@ For exploratory work, instead check:
94
94
 
95
95
  Additional checks when relevant:
96
96
 
97
- - an artifact plan or `no_artifacts_reason` exists
97
+ - an artifact plan exists, or the node content states why the run is intentionally artifact-free
98
98
  - the run shape matches the question and is not changing too many important things without purpose
99
99
  - an interpretation rule or next branch is defined
100
100
 
@@ -134,7 +134,7 @@ Typical flow:
134
134
 
135
135
  ### Execution layer
136
136
 
137
- Only after the design gate passes, create or branch the `empirical` node for the runnable part of the work.
137
+ Only after the design gate passes, create or branch the node for the runnable part of the work.
138
138
 
139
139
  Typical flow:
140
140
 
@@ -149,10 +149,10 @@ Typical flow:
149
149
 
150
150
  Important notes:
151
151
 
152
- - Exploratory work can stay in `insight` nodes until a specific empirical probe is ready.
153
- - Because `empirical` commits require a non-empty `hypothesis`, turn each runnable exploratory probe into a concrete local question or hypothesis for that branch.
152
+ - Exploratory work can stay as planning content until a specific empirical probe is ready.
153
+ - Record each runnable exploratory probe as a concrete local question or hypothesis in the branch content.
154
154
  - For multi-stage or multi-arm work, use branches to represent stages or arms and keep summaries clear about how each branch feeds the next.
155
- - Completed empirical work needs artifacts or a `no_artifacts_reason`.
155
+ - Attach artifacts when empirical work produces evidence; when it is intentionally artifact-free, state that rationale in node content.
156
156
 
157
157
  ## Adaptive question flow
158
158