wtf-p 0.7.3 → 0.8.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 (241) hide show
  1. package/README.md +16 -12
  2. package/bin/commands/install-logic.js +1 -1
  3. package/bin/lib/adapter-compiler.js +175 -56
  4. package/bin/lib/clio-registration.js +127 -36
  5. package/bin/lib/manifest.js +11 -3
  6. package/bin/uninstall.js +3 -2
  7. package/package.json +1 -1
  8. package/protocol/actions/research-gap.json +1 -1
  9. package/protocol/roles/research-synthesizer.md +1 -1
  10. package/protocol/skills/wtfp-plan-section/references/actions.md +1 -1
  11. package/protocol/skills/wtfp-research-literature/references/actions.md +1 -1
  12. package/protocol/skills/wtfp-write-section/references/actions.md +1 -1
  13. package/protocol/workflows/plan-section.md +3 -2
  14. package/protocol/workflows/research-gap.md +2 -2
  15. package/protocol/workflows/write-section.md +1 -1
  16. package/vendors/antigravity/.wtfp-generated.json +18 -14
  17. package/vendors/antigravity/actions/research-gap.json +1 -1
  18. package/vendors/antigravity/agents/wtfp-research-synthesizer.md +1 -1
  19. package/vendors/antigravity/commands/wtfp-plan-section.md +3 -2
  20. package/vendors/antigravity/commands/wtfp-write-section.md +1 -1
  21. package/vendors/antigravity/plugin.json +1 -1
  22. package/vendors/antigravity/roles/research-synthesizer.md +1 -1
  23. package/vendors/antigravity/skills/wtfp-plan-section/references/actions.md +1 -1
  24. package/vendors/antigravity/skills/wtfp-research-literature/references/actions.md +1 -1
  25. package/vendors/antigravity/skills/wtfp-write-section/references/actions.md +1 -1
  26. package/vendors/antigravity/tools/README.md +1 -1
  27. package/vendors/antigravity/tools/package.json +1 -0
  28. package/vendors/antigravity/workflows/plan-section.md +3 -2
  29. package/vendors/antigravity/workflows/research-gap.md +2 -2
  30. package/vendors/antigravity/workflows/write-section.md +1 -1
  31. package/vendors/claude/.claude-plugin/marketplace.json +2 -2
  32. package/vendors/claude/.claude-plugin/plugin.json +1 -1
  33. package/vendors/claude/.wtfp-generated.json +33 -29
  34. package/vendors/claude/actions/research-gap.json +1 -1
  35. package/vendors/claude/agents/wtfp-research-synthesizer.md +1 -1
  36. package/vendors/claude/ai.iowarp.clio/agents/wtfp-research-synthesizer.md +1 -1
  37. package/vendors/claude/ai.iowarp.clio/prompts/wtfp/analyze-bib.md +2 -0
  38. package/vendors/claude/ai.iowarp.clio/prompts/wtfp/check-refs.md +2 -0
  39. package/vendors/claude/ai.iowarp.clio/prompts/wtfp/create-outline.md +2 -0
  40. package/vendors/claude/ai.iowarp.clio/prompts/wtfp/execute-outline.md +2 -0
  41. package/vendors/claude/ai.iowarp.clio/prompts/wtfp/help.md +1 -1
  42. package/vendors/claude/ai.iowarp.clio/prompts/wtfp/plan-section.md +5 -2
  43. package/vendors/claude/ai.iowarp.clio/prompts/wtfp/polish-prose.md +2 -0
  44. package/vendors/claude/ai.iowarp.clio/prompts/wtfp/quick.md +2 -0
  45. package/vendors/claude/ai.iowarp.clio/prompts/wtfp/research-gap.md +8 -2
  46. package/vendors/claude/ai.iowarp.clio/prompts/wtfp/review-section.md +2 -0
  47. package/vendors/claude/ai.iowarp.clio/prompts/wtfp/write-section.md +3 -1
  48. package/vendors/claude/commands/plan-section.md +3 -2
  49. package/vendors/claude/commands/research-gap.md +2 -2
  50. package/vendors/claude/commands/write-section.md +1 -1
  51. package/vendors/claude/plugin.json +1 -1
  52. package/vendors/claude/roles/research-synthesizer.md +1 -1
  53. package/vendors/claude/skills/wtfp-plan-section/references/actions.md +1 -1
  54. package/vendors/claude/skills/wtfp-research-literature/references/actions.md +1 -1
  55. package/vendors/claude/skills/wtfp-write-section/references/actions.md +1 -1
  56. package/vendors/claude/tools/README.md +1 -1
  57. package/vendors/claude/tools/package.json +1 -0
  58. package/vendors/claude/workflows/plan-section.md +3 -2
  59. package/vendors/claude/workflows/research-gap.md +2 -2
  60. package/vendors/claude/workflows/write-section.md +1 -1
  61. package/vendors/clio-extension/.wtfp-generated.json +228 -0
  62. package/vendors/clio-extension/actions/add-todo.json +52 -0
  63. package/vendors/clio-extension/actions/analyze-bib.json +97 -0
  64. package/vendors/clio-extension/actions/audit-milestone.json +63 -0
  65. package/vendors/clio-extension/actions/check-refs.json +80 -0
  66. package/vendors/clio-extension/actions/check-todos.json +52 -0
  67. package/vendors/clio-extension/actions/checkpoint.json +76 -0
  68. package/vendors/clio-extension/actions/contribute.json +57 -0
  69. package/vendors/clio-extension/actions/create-outline.json +84 -0
  70. package/vendors/clio-extension/actions/create-poster.json +54 -0
  71. package/vendors/clio-extension/actions/create-slides.json +54 -0
  72. package/vendors/clio-extension/actions/discuss-section.json +76 -0
  73. package/vendors/clio-extension/actions/execute-outline.json +116 -0
  74. package/vendors/clio-extension/actions/export-latex.json +65 -0
  75. package/vendors/clio-extension/actions/help.json +30 -0
  76. package/vendors/clio-extension/actions/insert-section.json +61 -0
  77. package/vendors/clio-extension/actions/list-assumptions.json +35 -0
  78. package/vendors/clio-extension/actions/map-project.json +71 -0
  79. package/vendors/clio-extension/actions/new-paper.json +70 -0
  80. package/vendors/clio-extension/actions/pause-writing.json +71 -0
  81. package/vendors/clio-extension/actions/plan-milestone-gaps.json +57 -0
  82. package/vendors/clio-extension/actions/plan-revision.json +58 -0
  83. package/vendors/clio-extension/actions/plan-section.json +100 -0
  84. package/vendors/clio-extension/actions/polish-prose.json +69 -0
  85. package/vendors/clio-extension/actions/progress.json +51 -0
  86. package/vendors/clio-extension/actions/quick.json +70 -0
  87. package/vendors/clio-extension/actions/remove-section.json +63 -0
  88. package/vendors/clio-extension/actions/report-bug.json +47 -0
  89. package/vendors/clio-extension/actions/request-feature.json +47 -0
  90. package/vendors/clio-extension/actions/research-gap.json +102 -0
  91. package/vendors/clio-extension/actions/resume-writing.json +65 -0
  92. package/vendors/clio-extension/actions/review-section.json +83 -0
  93. package/vendors/clio-extension/actions/settings.json +47 -0
  94. package/vendors/clio-extension/actions/submit-milestone.json +77 -0
  95. package/vendors/clio-extension/actions/update.json +42 -0
  96. package/vendors/clio-extension/actions/verify-work.json +63 -0
  97. package/vendors/clio-extension/actions/write-section.json +115 -0
  98. package/vendors/clio-extension/clio-coder-extension.yaml +53 -0
  99. package/vendors/clio-extension/compatibility/action-availability.json +295 -0
  100. package/vendors/clio-extension/project/schemas/checkpoint.schema.json +102 -0
  101. package/vendors/clio-extension/project/schemas/common.schema.json +33 -0
  102. package/vendors/clio-extension/project/schemas/config.schema.json +69 -0
  103. package/vendors/clio-extension/project/schemas/decisions.schema.json +31 -0
  104. package/vendors/clio-extension/project/schemas/evidence.schema.json +48 -0
  105. package/vendors/clio-extension/project/schemas/manifest.schema.json +102 -0
  106. package/vendors/clio-extension/project/schemas/outline.schema.json +67 -0
  107. package/vendors/clio-extension/project/schemas/section.schema.json +95 -0
  108. package/vendors/clio-extension/project/schemas/source.schema.json +73 -0
  109. package/vendors/clio-extension/project/schemas/state.schema.json +58 -0
  110. package/vendors/clio-extension/project/schemas/validation.schema.json +74 -0
  111. package/vendors/clio-extension/runtime/extension.test.ts +248 -0
  112. package/vendors/clio-extension/runtime/extension.ts +1321 -0
  113. package/vendors/clio-extension/runtime/json-schema.cjs +304 -0
  114. package/vendors/clio-extension/runtime/package.json +3 -0
  115. package/vendors/clio-extension/runtime/write-guard.json +21 -0
  116. package/vendors/clio-extension/skins/wtfp.json +20 -0
  117. package/vendors/codex/plugins/wtfp/.codex-plugin/plugin.json +1 -1
  118. package/vendors/codex/plugins/wtfp/.wtfp-generated.json +17 -13
  119. package/vendors/codex/plugins/wtfp/actions/research-gap.json +1 -1
  120. package/vendors/codex/plugins/wtfp/agents/wtfp-research-synthesizer.toml +1 -1
  121. package/vendors/codex/plugins/wtfp/plugin.json +1 -1
  122. package/vendors/codex/plugins/wtfp/roles/research-synthesizer.md +1 -1
  123. package/vendors/codex/plugins/wtfp/skills/wtfp-plan-section/references/actions.md +1 -1
  124. package/vendors/codex/plugins/wtfp/skills/wtfp-research-literature/references/actions.md +1 -1
  125. package/vendors/codex/plugins/wtfp/skills/wtfp-write-section/references/actions.md +1 -1
  126. package/vendors/codex/plugins/wtfp/tools/README.md +1 -1
  127. package/vendors/codex/plugins/wtfp/tools/package.json +1 -0
  128. package/vendors/codex/plugins/wtfp/workflows/plan-section.md +3 -2
  129. package/vendors/codex/plugins/wtfp/workflows/research-gap.md +2 -2
  130. package/vendors/codex/plugins/wtfp/workflows/write-section.md +1 -1
  131. package/vendors/copilot/.wtfp-generated.json +14 -14
  132. package/vendors/copilot/marketplace.json +2 -2
  133. package/vendors/copilot/plugins/wtfp/.claude-plugin/plugin.json +1 -1
  134. package/vendors/copilot/plugins/wtfp/.wtfp-generated.json +18 -14
  135. package/vendors/copilot/plugins/wtfp/actions/research-gap.json +1 -1
  136. package/vendors/copilot/plugins/wtfp/agents/wtfp-research-synthesizer.md +1 -1
  137. package/vendors/copilot/plugins/wtfp/commands/wtfp-plan-section.md +3 -2
  138. package/vendors/copilot/plugins/wtfp/commands/wtfp-write-section.md +1 -1
  139. package/vendors/copilot/plugins/wtfp/roles/research-synthesizer.md +1 -1
  140. package/vendors/copilot/plugins/wtfp/skills/wtfp-plan-section/references/actions.md +1 -1
  141. package/vendors/copilot/plugins/wtfp/skills/wtfp-research-literature/references/actions.md +1 -1
  142. package/vendors/copilot/plugins/wtfp/skills/wtfp-write-section/references/actions.md +1 -1
  143. package/vendors/copilot/plugins/wtfp/tools/README.md +1 -1
  144. package/vendors/copilot/plugins/wtfp/tools/package.json +1 -0
  145. package/vendors/copilot/plugins/wtfp/workflows/plan-section.md +3 -2
  146. package/vendors/copilot/plugins/wtfp/workflows/research-gap.md +2 -2
  147. package/vendors/copilot/plugins/wtfp/workflows/write-section.md +1 -1
  148. package/vendors/copilot/project/.github/agents/wtfp-research-synthesizer.agent.md +1 -1
  149. package/vendors/copilot/project/.github/skills/wtfp-plan-section/references/actions.md +1 -1
  150. package/vendors/copilot/project/.github/skills/wtfp-research-literature/references/actions.md +1 -1
  151. package/vendors/copilot/project/.github/skills/wtfp-write-section/references/actions.md +1 -1
  152. package/vendors/copilot/project/.github/wtfp/actions/research-gap.json +1 -1
  153. package/vendors/copilot/project/.github/wtfp/roles/research-synthesizer.md +1 -1
  154. package/vendors/copilot/project/.github/wtfp/skills/wtfp-plan-section/references/actions.md +1 -1
  155. package/vendors/copilot/project/.github/wtfp/skills/wtfp-research-literature/references/actions.md +1 -1
  156. package/vendors/copilot/project/.github/wtfp/skills/wtfp-write-section/references/actions.md +1 -1
  157. package/vendors/copilot/project/.github/wtfp/workflows/plan-section.md +3 -2
  158. package/vendors/copilot/project/.github/wtfp/workflows/research-gap.md +2 -2
  159. package/vendors/copilot/project/.github/wtfp/workflows/write-section.md +1 -1
  160. package/vendors/gemini/.wtfp-generated.json +24 -20
  161. package/vendors/gemini/actions/research-gap.json +1 -1
  162. package/vendors/gemini/agents/wtfp-research-synthesizer.md +1 -1
  163. package/vendors/gemini/commands/wtfp/discuss-section.toml +1 -1
  164. package/vendors/gemini/commands/wtfp/execute-outline.toml +1 -1
  165. package/vendors/gemini/commands/wtfp/insert-section.toml +1 -1
  166. package/vendors/gemini/commands/wtfp/list-assumptions.toml +1 -1
  167. package/vendors/gemini/commands/wtfp/plan-revision.toml +1 -1
  168. package/vendors/gemini/commands/wtfp/plan-section.toml +4 -3
  169. package/vendors/gemini/commands/wtfp/quick.toml +1 -1
  170. package/vendors/gemini/commands/wtfp/write-section.toml +2 -2
  171. package/vendors/gemini/gemini-extension.json +1 -1
  172. package/vendors/gemini/roles/research-synthesizer.md +1 -1
  173. package/vendors/gemini/skills/wtfp-plan-section/references/actions.md +1 -1
  174. package/vendors/gemini/skills/wtfp-research-literature/references/actions.md +1 -1
  175. package/vendors/gemini/skills/wtfp-write-section/references/actions.md +1 -1
  176. package/vendors/gemini/tools/README.md +1 -1
  177. package/vendors/gemini/tools/package.json +1 -0
  178. package/vendors/gemini/workflows/plan-section.md +3 -2
  179. package/vendors/gemini/workflows/research-gap.md +2 -2
  180. package/vendors/gemini/workflows/write-section.md +1 -1
  181. package/vendors/opencode/.wtfp-generated.json +23 -19
  182. package/vendors/opencode/actions/research-gap.json +1 -1
  183. package/vendors/opencode/agents/wtfp/research-synthesizer.md +1 -1
  184. package/vendors/opencode/commands/wtfp/discuss-section.md +1 -1
  185. package/vendors/opencode/commands/wtfp/execute-outline.md +1 -1
  186. package/vendors/opencode/commands/wtfp/insert-section.md +1 -1
  187. package/vendors/opencode/commands/wtfp/list-assumptions.md +1 -1
  188. package/vendors/opencode/commands/wtfp/plan-revision.md +1 -1
  189. package/vendors/opencode/commands/wtfp/plan-section.md +4 -3
  190. package/vendors/opencode/commands/wtfp/quick.md +1 -1
  191. package/vendors/opencode/commands/wtfp/write-section.md +2 -2
  192. package/vendors/opencode/roles/research-synthesizer.md +1 -1
  193. package/vendors/opencode/skills/wtfp-plan-section/references/actions.md +1 -1
  194. package/vendors/opencode/skills/wtfp-research-literature/references/actions.md +1 -1
  195. package/vendors/opencode/skills/wtfp-write-section/references/actions.md +1 -1
  196. package/vendors/opencode/tools/README.md +1 -1
  197. package/vendors/opencode/tools/package.json +1 -0
  198. package/vendors/opencode/workflows/plan-section.md +3 -2
  199. package/vendors/opencode/workflows/research-gap.md +2 -2
  200. package/vendors/opencode/workflows/write-section.md +1 -1
  201. package/vendors/plugin/.wtfp-generated.json +44 -40
  202. package/vendors/plugin/actions/research-gap.json +1 -1
  203. package/vendors/plugin/ai.iowarp.clio/agents/wtfp-research-synthesizer.md +1 -1
  204. package/vendors/plugin/ai.iowarp.clio/prompts/wtfp/add-todo.md +6 -12
  205. package/vendors/plugin/ai.iowarp.clio/prompts/wtfp/analyze-bib.md +9 -19
  206. package/vendors/plugin/ai.iowarp.clio/prompts/wtfp/audit-milestone.md +7 -25
  207. package/vendors/plugin/ai.iowarp.clio/prompts/wtfp/check-refs.md +9 -15
  208. package/vendors/plugin/ai.iowarp.clio/prompts/wtfp/check-todos.md +9 -13
  209. package/vendors/plugin/ai.iowarp.clio/prompts/wtfp/checkpoint.md +7 -27
  210. package/vendors/plugin/ai.iowarp.clio/prompts/wtfp/create-outline.md +9 -25
  211. package/vendors/plugin/ai.iowarp.clio/prompts/wtfp/discuss-section.md +7 -17
  212. package/vendors/plugin/ai.iowarp.clio/prompts/wtfp/execute-outline.md +10 -27
  213. package/vendors/plugin/ai.iowarp.clio/prompts/wtfp/help.md +2 -2
  214. package/vendors/plugin/ai.iowarp.clio/prompts/wtfp/insert-section.md +7 -13
  215. package/vendors/plugin/ai.iowarp.clio/prompts/wtfp/map-project.md +6 -14
  216. package/vendors/plugin/ai.iowarp.clio/prompts/wtfp/new-paper.md +7 -17
  217. package/vendors/plugin/ai.iowarp.clio/prompts/wtfp/pause-writing.md +6 -18
  218. package/vendors/plugin/ai.iowarp.clio/prompts/wtfp/plan-milestone-gaps.md +7 -15
  219. package/vendors/plugin/ai.iowarp.clio/prompts/wtfp/plan-section.md +12 -29
  220. package/vendors/plugin/ai.iowarp.clio/prompts/wtfp/polish-prose.md +10 -15
  221. package/vendors/plugin/ai.iowarp.clio/prompts/wtfp/quick.md +10 -15
  222. package/vendors/plugin/ai.iowarp.clio/prompts/wtfp/research-gap.md +15 -23
  223. package/vendors/plugin/ai.iowarp.clio/prompts/wtfp/resume-writing.md +7 -23
  224. package/vendors/plugin/ai.iowarp.clio/prompts/wtfp/review-section.md +9 -19
  225. package/vendors/plugin/ai.iowarp.clio/prompts/wtfp/settings.md +7 -9
  226. package/vendors/plugin/ai.iowarp.clio/prompts/wtfp/submit-milestone.md +7 -25
  227. package/vendors/plugin/ai.iowarp.clio/prompts/wtfp/verify-work.md +7 -15
  228. package/vendors/plugin/ai.iowarp.clio/prompts/wtfp/write-section.md +11 -29
  229. package/vendors/plugin/compatibility/action-availability.json +16 -1
  230. package/vendors/plugin/plugin.json +7 -7
  231. package/vendors/plugin/roles/research-synthesizer.md +1 -1
  232. package/vendors/plugin/skills/wtfp-plan-section/references/actions.md +1 -1
  233. package/vendors/plugin/skills/wtfp-research-literature/references/actions.md +1 -1
  234. package/vendors/plugin/skills/wtfp-write-section/references/actions.md +1 -1
  235. package/vendors/plugin/tools/README.md +1 -1
  236. package/vendors/plugin/tools/package.json +1 -0
  237. package/vendors/plugin/workflows/plan-section.md +3 -2
  238. package/vendors/plugin/workflows/research-gap.md +2 -2
  239. package/vendors/plugin/workflows/write-section.md +1 -1
  240. /package/vendors/plugin/ai.iowarp.clio/{fleets → playbooks}/wtfp-draft-review.md +0 -0
  241. /package/vendors/plugin/ai.iowarp.clio/{fleets → playbooks}/wtfp-plan-section.md +0 -0
@@ -5,26 +5,25 @@ argument-hint: "[arguments]"
5
5
 
6
6
  # Plan a section
7
7
 
8
- @${pluginRoot}/project/README.md
9
8
  @${pluginRoot}/skills/wtfp-plan-section/SKILL.md
10
- @${pluginRoot}/skills/wtfp-plan-section/references/actions.md
11
9
 
12
10
  ## Record contract
13
11
 
14
12
  Read: `project://manifest`, `project://config`, `project://state`, `project://decisions`, `project://structure/outline`, `project://validations/*`, `project://sections/{section}`, `project://sections/{section}/context`, `project://sections/{section}/research`, `project://sections/{section}/summary`, `project://sources/{source}`, `project://evidence/{evidence}`.
15
13
  Produce: `project://sections/{section}/plans/{plan}` (create), `project://validations/{validation}` (create), `project://checkpoints/{checkpoint}` (create), `project://sections/{section}` (update), `project://state` (update).
16
14
 
17
- Resolve every logical URI through the host adapter. Portable v1 JSON records are the source of truth: schema-validate before a write, preserve stable IDs, update revision and timestamps where required, and replace records atomically. Never pass a literal logical URI to a shell command or infer record state from a legacy Markdown control file.
15
+ Use `extension_wtfp__record` for each declared JSON record write: pass its logical `uri`, complete `record`, and the revision read as `expect_revision` for revisioned updates. It validates, bumps revisions/timestamps, replaces atomically and reads back; preserve stable IDs and author decisions.
18
16
 
19
- Manuscript prose and supporting context, research, plan, review, summary, handoff, and deliverable artifacts retain their authored format (normally Markdown). Link them from the relevant v1 record; do not convert manuscript prose into project-state JSON.
17
+ Write prose and linked artifacts with native file tools; keep their authored formats. The record tool handles JSON records only, never manuscript text, deletion or archives.
20
18
 
21
19
  ## Procedure
22
20
 
23
21
  1. Resolve one section record, load its linked context, research, evidence, decisions, and outline constraints, and enumerate the bounded `project://validations/*` collection before any specialist dispatch.
24
22
  2. Filter those records to candidates whose `subject_uri` is exactly `project://structure/outline` and whose `action_id` is exactly `create-outline`. A candidate is current only when `executed_at >= outline.updated_at`. Because the v1 validation schema carries no outline revision or content hash, disclose that this timestamp test is a conservative freshness proxy.
25
23
  3. Require exactly one current candidate and require its `status` to be `passed`. Separately verify that the current outline and target section are consistent with all current locked and deferred author choices: honor locked choices and do not treat deferred choices as resolved. A missing, stale, ambiguous, or non-passing candidate, or a decision contradiction, blocks all specialist dispatch and every plan, section, state, or validation write. Only a recovery checkpoint may be proposed on this blocked path, and it may be written only after a complete record preview and explicit author approval.
26
- 4. Only after those prerequisites pass, delegate a bounded plan to `section-planner`, then require a fresh `plan-checker` pass over claim coverage, dependencies, file scope, citations, and decision fidelity.
27
- 5. At confirm_plan, preview the plan and validation; on approval link the plan, update section status to planned, and reconcile state. Create a checkpoint for unresolved judgment instead of bypassing the required checker.
24
+ 4. For a literature-heavy section, first require a section-specific research artifact plus resolvable source/evidence records that cover the planned claims. If they are absent or insufficient, run `research-gap` with the configured CiteNexus backend when available, verify candidate metadata against the returned records, and stop planning with an explicit research checkpoint if evidence remains insufficient. Never invent citations or treat search candidates as verified sources.
25
+ 5. Only after those prerequisites pass, delegate a bounded plan to `section-planner`, then require a fresh `plan-checker` pass over claim coverage, dependencies, file scope, citations, and decision fidelity. Dispatch the exact WTF-P specialist roles; generic coder and verifier roles do not satisfy this workflow.
26
+ 6. At confirm_plan, preview the plan and validation; on approval link the plan, update section status to planned, and reconcile state. Create a checkpoint for unresolved judgment instead of bypassing the required checker.
28
27
 
29
28
  ## Safety and completion
30
29
 
@@ -32,30 +31,12 @@ Do not initialize a repository or run branch, stage, commit, merge, push, or pub
32
31
 
33
32
  Report the logical resources read, created, updated, archived, or deleted; the gates crossed; validation results; unresolved checkpoints; and the safest next action. Never claim a mutation that was not verified.
34
33
 
35
- ## Bound action contract and schemas
34
+ Discover the named tools with `gateway(op="describe", capability="extension_wtfp__record")` (and the corresponding `measure_section` or `gate` name), then use `gateway(op="call", capability="<exact name>", args={...})`. A present tool's error or refusal stops the action; never bypass it with a manual write or shell script.
35
+ If desk tools are absent, follow `${pluginRoot}/workflows/plan-section.md` and `${pluginRoot}/project/README.md` with native tools and `ask_user` gates.
36
+
37
+ ## Bound action contract
36
38
 
37
39
  @${pluginRoot}/actions/plan-section.json
38
- @${pluginRoot}/project/schemas/common.schema.json
39
- @${pluginRoot}/project/schemas/checkpoint.schema.json
40
- @${pluginRoot}/project/templates/checkpoint.json
41
- @${pluginRoot}/project/schemas/config.schema.json
42
- @${pluginRoot}/project/templates/config.json
43
- @${pluginRoot}/project/schemas/decisions.schema.json
44
- @${pluginRoot}/project/templates/decisions.json
45
- @${pluginRoot}/project/schemas/evidence.schema.json
46
- @${pluginRoot}/project/templates/evidence.json
47
- @${pluginRoot}/project/schemas/manifest.schema.json
48
- @${pluginRoot}/project/templates/manifest.json
49
- @${pluginRoot}/project/schemas/outline.schema.json
50
- @${pluginRoot}/project/templates/outline.json
51
- @${pluginRoot}/project/schemas/section.schema.json
52
- @${pluginRoot}/project/templates/section.json
53
- @${pluginRoot}/project/schemas/source.schema.json
54
- @${pluginRoot}/project/templates/source.json
55
- @${pluginRoot}/project/schemas/state.schema.json
56
- @${pluginRoot}/project/templates/state.json
57
- @${pluginRoot}/project/schemas/validation.schema.json
58
- @${pluginRoot}/project/templates/validation.json
59
40
 
60
41
  ## Invocation input
61
42
 
@@ -67,10 +48,12 @@ $ARGUMENTS
67
48
 
68
49
  ## Clio user-gate binding
69
50
 
70
- Call `ask_user` whenever this workflow reaches a declared `user.gate`; only the structured value returned by that tool satisfies the gate. Invocation arguments, assistant prose, silence, or a report artifact do not count as a selection. Apply no gated mutation before `ask_user` returns. After any permitted mutation, perform the workflow-required readback before reporting success.
51
+ For a pending checkpoint in the declared gate's exact scope, call `extension_wtfp__gate` with its ID. Create a missing pending checkpoint through `extension_wtfp__record` only when this action declares checkpoint creation; otherwise use `ask_user` for the unpersisted author decision and do not invent an undeclared output. Only the structured author answer satisfies the gate; cancelled, retained or expired checkpoints authorize nothing. Never write `resolution.resolved_by: author` yourself or infer approval from invocation text, prose or silence. Read back a persisted resolution before applying its gated mutation.
71
52
 
72
53
  ## Clio role-result binding
73
54
 
55
+ Dispatch the declared specialist roles using these exact Clio agent IDs: `wtfp-section-planner`, `wtfp-plan-checker`. Do not substitute generic coder or verifier agents. If a named agent is unavailable, report that blocker and stop instead of silently changing roles.
56
+
74
57
  Read the single wtfp.role-result entry in native validations/checks and parse its evidence string as portable role-result JSON. Validate its schema, role and action against the dispatched task. Missing, duplicate or malformed outcomes fail closed. On needs_input ask the author through ask_user and redispatch with the response; on blocked or failed stop and report the issue. Only completed permits downstream work, and it never substitutes for an author gate or artifact readback.
75
58
 
76
59
  <!-- Generated by WTF-P adapter compiler v5 from protocol/actions/plan-section; do not edit. -->
@@ -5,18 +5,16 @@ argument-hint: "[arguments]"
5
5
 
6
6
  # Polish prose
7
7
 
8
- @${pluginRoot}/project/README.md
9
8
  @${pluginRoot}/skills/wtfp-review-manuscript/SKILL.md
10
- @${pluginRoot}/skills/wtfp-review-manuscript/references/actions.md
11
9
 
12
10
  ## Record contract
13
11
 
14
12
  Read: `project://manifest`, `project://config`, `project://decisions`, `project://paper/{artifact}`.
15
13
  Produce: `project://paper/{artifact}` (update), `project://validations/{validation}` (create).
16
14
 
17
- Resolve every logical URI through the host adapter. Portable v1 JSON records are the source of truth: schema-validate before a write, preserve stable IDs, update revision and timestamps where required, and replace records atomically. Never pass a literal logical URI to a shell command or infer record state from a legacy Markdown control file.
15
+ Use `extension_wtfp__record` for each declared JSON record write: pass its logical `uri`, complete `record`, and the revision read as `expect_revision` for revisioned updates. It validates, bumps revisions/timestamps, replaces atomically and reads back; preserve stable IDs and author decisions.
18
16
 
19
- Manuscript prose and supporting context, research, plan, review, summary, handoff, and deliverable artifacts retain their authored format (normally Markdown). Link them from the relevant v1 record; do not convert manuscript prose into project-state JSON.
17
+ Write prose and linked artifacts with native file tools; keep their authored formats. The record tool handles JSON records only, never manuscript text, deletion or archives.
20
18
 
21
19
  ## Procedure
22
20
 
@@ -30,18 +28,13 @@ Do not initialize a repository or run branch, stage, commit, merge, push, or pub
30
28
 
31
29
  Report the logical resources read, created, updated, archived, or deleted; the gates crossed; validation results; unresolved checkpoints; and the safest next action. Never claim a mutation that was not verified.
32
30
 
33
- ## Bound action contract and schemas
31
+ Discover the named tools with `gateway(op="describe", capability="extension_wtfp__record")` (and the corresponding `measure_section` or `gate` name), then use `gateway(op="call", capability="<exact name>", args={...})`. A present tool's error or refusal stops the action; never bypass it with a manual write or shell script.
32
+ After changing a linked section manuscript, call `extension_wtfp__measure_section` with that section ID; it persists the desk's body-word count in the section and state.
33
+ If desk tools are absent, follow `${pluginRoot}/workflows/polish-prose.md` and `${pluginRoot}/project/README.md` with native tools and `ask_user` gates.
34
+
35
+ ## Bound action contract
34
36
 
35
37
  @${pluginRoot}/actions/polish-prose.json
36
- @${pluginRoot}/project/schemas/common.schema.json
37
- @${pluginRoot}/project/schemas/config.schema.json
38
- @${pluginRoot}/project/templates/config.json
39
- @${pluginRoot}/project/schemas/decisions.schema.json
40
- @${pluginRoot}/project/templates/decisions.json
41
- @${pluginRoot}/project/schemas/manifest.schema.json
42
- @${pluginRoot}/project/templates/manifest.json
43
- @${pluginRoot}/project/schemas/validation.schema.json
44
- @${pluginRoot}/project/templates/validation.json
45
38
 
46
39
  ## Invocation input
47
40
 
@@ -53,10 +46,12 @@ $ARGUMENTS
53
46
 
54
47
  ## Clio user-gate binding
55
48
 
56
- Call `ask_user` whenever this workflow reaches a declared `user.gate`; only the structured value returned by that tool satisfies the gate. Invocation arguments, assistant prose, silence, or a report artifact do not count as a selection. Apply no gated mutation before `ask_user` returns. After any permitted mutation, perform the workflow-required readback before reporting success.
49
+ For a pending checkpoint in the declared gate's exact scope, call `extension_wtfp__gate` with its ID. Create a missing pending checkpoint through `extension_wtfp__record` only when this action declares checkpoint creation; otherwise use `ask_user` for the unpersisted author decision and do not invent an undeclared output. Only the structured author answer satisfies the gate; cancelled, retained or expired checkpoints authorize nothing. Never write `resolution.resolved_by: author` yourself or infer approval from invocation text, prose or silence. Read back a persisted resolution before applying its gated mutation.
57
50
 
58
51
  ## Clio role-result binding
59
52
 
53
+ Dispatch the declared specialist roles using these exact Clio agent IDs: `wtfp-prose-polisher`. Do not substitute generic coder or verifier agents. If a named agent is unavailable, report that blocker and stop instead of silently changing roles.
54
+
60
55
  Read the single wtfp.role-result entry in native validations/checks and parse its evidence string as portable role-result JSON. Validate its schema, role and action against the dispatched task. Missing, duplicate or malformed outcomes fail closed. On needs_input ask the author through ask_user and redispatch with the response; on blocked or failed stop and report the issue. Only completed permits downstream work, and it never substitutes for an author gate or artifact readback.
61
56
 
62
57
  <!-- Generated by WTF-P adapter compiler v5 from protocol/actions/polish-prose; do not edit. -->
@@ -5,18 +5,16 @@ argument-hint: "[arguments]"
5
5
 
6
6
  # Make a quick writing change
7
7
 
8
- @${pluginRoot}/project/README.md
9
8
  @${pluginRoot}/skills/wtfp-write-section/SKILL.md
10
- @${pluginRoot}/skills/wtfp-write-section/references/actions.md
11
9
 
12
10
  ## Record contract
13
11
 
14
12
  Read: `project://manifest`, `project://state`, `project://decisions`, `project://sections/{section}`, `project://paper/{artifact}`.
15
13
  Produce: `project://paper/{artifact}` (update), `project://sections/{section}` (update), `project://state` (update).
16
14
 
17
- Resolve every logical URI through the host adapter. Portable v1 JSON records are the source of truth: schema-validate before a write, preserve stable IDs, update revision and timestamps where required, and replace records atomically. Never pass a literal logical URI to a shell command or infer record state from a legacy Markdown control file.
15
+ Use `extension_wtfp__record` for each declared JSON record write: pass its logical `uri`, complete `record`, and the revision read as `expect_revision` for revisioned updates. It validates, bumps revisions/timestamps, replaces atomically and reads back; preserve stable IDs and author decisions.
18
16
 
19
- Manuscript prose and supporting context, research, plan, review, summary, handoff, and deliverable artifacts retain their authored format (normally Markdown). Link them from the relevant v1 record; do not convert manuscript prose into project-state JSON.
17
+ Write prose and linked artifacts with native file tools; keep their authored formats. The record tool handles JSON records only, never manuscript text, deletion or archives.
20
18
 
21
19
  ## Procedure
22
20
 
@@ -30,18 +28,13 @@ Do not initialize a repository or run branch, stage, commit, merge, push, or pub
30
28
 
31
29
  Report the logical resources read, created, updated, archived, or deleted; the gates crossed; validation results; unresolved checkpoints; and the safest next action. Never claim a mutation that was not verified.
32
30
 
33
- ## Bound action contract and schemas
31
+ Discover the named tools with `gateway(op="describe", capability="extension_wtfp__record")` (and the corresponding `measure_section` or `gate` name), then use `gateway(op="call", capability="<exact name>", args={...})`. A present tool's error or refusal stops the action; never bypass it with a manual write or shell script.
32
+ After changing a linked section manuscript, call `extension_wtfp__measure_section` with that section ID; it persists the desk's body-word count in the section and state.
33
+ If desk tools are absent, follow `${pluginRoot}/workflows/quick.md` and `${pluginRoot}/project/README.md` with native tools and `ask_user` gates.
34
+
35
+ ## Bound action contract
34
36
 
35
37
  @${pluginRoot}/actions/quick.json
36
- @${pluginRoot}/project/schemas/common.schema.json
37
- @${pluginRoot}/project/schemas/decisions.schema.json
38
- @${pluginRoot}/project/templates/decisions.json
39
- @${pluginRoot}/project/schemas/manifest.schema.json
40
- @${pluginRoot}/project/templates/manifest.json
41
- @${pluginRoot}/project/schemas/section.schema.json
42
- @${pluginRoot}/project/templates/section.json
43
- @${pluginRoot}/project/schemas/state.schema.json
44
- @${pluginRoot}/project/templates/state.json
45
38
 
46
39
  ## Invocation input
47
40
 
@@ -53,10 +46,12 @@ $ARGUMENTS
53
46
 
54
47
  ## Clio user-gate binding
55
48
 
56
- Call `ask_user` whenever this workflow reaches a declared `user.gate`; only the structured value returned by that tool satisfies the gate. Invocation arguments, assistant prose, silence, or a report artifact do not count as a selection. Apply no gated mutation before `ask_user` returns. After any permitted mutation, perform the workflow-required readback before reporting success.
49
+ For a pending checkpoint in the declared gate's exact scope, call `extension_wtfp__gate` with its ID. Create a missing pending checkpoint through `extension_wtfp__record` only when this action declares checkpoint creation; otherwise use `ask_user` for the unpersisted author decision and do not invent an undeclared output. Only the structured author answer satisfies the gate; cancelled, retained or expired checkpoints authorize nothing. Never write `resolution.resolved_by: author` yourself or infer approval from invocation text, prose or silence. Read back a persisted resolution before applying its gated mutation.
57
50
 
58
51
  ## Clio role-result binding
59
52
 
53
+ Dispatch the declared specialist roles using these exact Clio agent IDs: `wtfp-section-writer`. Do not substitute generic coder or verifier agents. If a named agent is unavailable, report that blocker and stop instead of silently changing roles.
54
+
60
55
  Read the single wtfp.role-result entry in native validations/checks and parse its evidence string as portable role-result JSON. Validate its schema, role and action against the dispatched task. Missing, duplicate or malformed outcomes fail closed. On needs_input ask the author through ask_user and redispatch with the response; on blocked or failed stop and report the issue. Only completed permits downstream work, and it never substitutes for an author gate or artifact readback.
61
56
 
62
57
  <!-- Generated by WTF-P adapter compiler v5 from protocol/actions/quick; do not edit. -->
@@ -5,23 +5,21 @@ argument-hint: "[arguments]"
5
5
 
6
6
  # Research a section gap
7
7
 
8
- @${pluginRoot}/project/README.md
9
8
  @${pluginRoot}/skills/wtfp-research-literature/SKILL.md
10
- @${pluginRoot}/skills/wtfp-research-literature/references/actions.md
11
9
 
12
10
  ## Record contract
13
11
 
14
12
  Read: `project://manifest`, `project://config`, `project://decisions`, `project://structure/outline`, `project://sections/{section}`, `project://sections/{section}/context`, `project://sources/{source}`, `project://evidence/{evidence}`.
15
13
  Produce: `project://sources/{source}` (create), `project://evidence/{evidence}` (create), `project://sections/{section}/research` (create), `project://sections/{section}` (update).
16
14
 
17
- Resolve every logical URI through the host adapter. Portable v1 JSON records are the source of truth: schema-validate before a write, preserve stable IDs, update revision and timestamps where required, and replace records atomically. Never pass a literal logical URI to a shell command or infer record state from a legacy Markdown control file.
15
+ Use `extension_wtfp__record` for each declared JSON record write: pass its logical `uri`, complete `record`, and the revision read as `expect_revision` for revisioned updates. It validates, bumps revisions/timestamps, replaces atomically and reads back; preserve stable IDs and author decisions.
18
16
 
19
- Manuscript prose and supporting context, research, plan, review, summary, handoff, and deliverable artifacts retain their authored format (normally Markdown). Link them from the relevant v1 record; do not convert manuscript prose into project-state JSON.
17
+ Write prose and linked artifacts with native file tools; keep their authored formats. The record tool handles JSON records only, never manuscript text, deletion or archives.
20
18
 
21
19
  ## Procedure
22
20
 
23
21
  1. Resolve the research question and section scope against locked/deferred decisions; agree on depth and source constraints.
24
- 2. Search declared scholarly services only after the gate names the providers and bounded query set. When using the bundled dispatcher, `citation-search` may run with `--backend=cite-nexus` and an explicit `--providers` list after this gate. Returned results stay candidates, and this action performs no bibliography write. Verify source identity and inspection depth, and separate source records from claim-level evidence.
22
+ 2. Prefer an operator-configured, trusted read-only CiteNexus MCP connection for bounded public metadata searches when the host has already authorized it. In an explicitly selected full-auto host session for this research action, the bundled CiteNexus dispatcher may also search the free no-key public indexes `crossref`, `datacite`, `europe_pmc`, and `arxiv` without a second per-query author gate; use only selected relevant indexes with an explicit `--providers` list. Record provider IDs, queries, date, and result limits; never send unpublished manuscript text or private notes as search terms. For any other route, first obtain explicit author approval naming the providers and bounded query set. Results remain candidates and this action performs no bibliography write. Verify source identity and inspection depth, and separate source records from claim-level evidence.
25
23
  3. Synthesize supported, conflicting, and missing evidence into a Markdown research artifact; link new records and disclose limitations.
26
24
 
27
25
  ## Bundled tool execution
@@ -32,7 +30,7 @@ The declared `tool.execute` effect authorises exactly one command, run from the
32
30
  node ${pluginRoot}/tools/wtfp-tool.js [--offline] <command> [arguments]
33
31
  ```
34
32
 
35
- Run it with `list` first to read the declared commands, their arguments, their bounds, and the effects each one applies; `${pluginRoot}/tools/README.md` carries the same table. A command whose effects include `network.*` performs outbound requests. Until network use has been approved for this run, pass `--offline` (or set `WTFP_TOOL_OFFLINE=1`), which makes the dispatcher refuse those commands instead of relying on prose restraint. Never execute another module in this package, never pass a logical `project://` or `wtfp://` URI as a shell argument, and treat every returned record as candidate evidence until it is verified and written to a source or evidence record.
33
+ Run it with `list` first to read the declared commands, their arguments, their bounds, and the effects each one applies; `${pluginRoot}/tools/README.md` carries the same table. A command whose effects include `network.*` performs outbound requests. Pass `--offline` (or set `WTFP_TOOL_OFFLINE=1`) until the provider/query gate is approved, except for this action's explicit full-auto public-index route. On that route omit `--offline` only for `citation-search --backend=cite-nexus` with bounded queries and `--providers` drawn from `crossref,datacite,europe_pmc,arxiv`; never override an operator-set offline flag or a host refusal. Never execute another module in this package, never pass a logical `project://` or `wtfp://` URI as a shell argument, and treat every returned record as candidate evidence until it is verified and written to a source or evidence record.
36
34
 
37
35
  ## Safety and completion
38
36
 
@@ -40,24 +38,12 @@ Do not initialize a repository or run branch, stage, commit, merge, push, or pub
40
38
 
41
39
  Report the logical resources read, created, updated, archived, or deleted; the gates crossed; validation results; unresolved checkpoints; and the safest next action. Never claim a mutation that was not verified.
42
40
 
43
- ## Bound action contract and schemas
41
+ Discover the named tools with `gateway(op="describe", capability="extension_wtfp__record")` (and the corresponding `measure_section` or `gate` name), then use `gateway(op="call", capability="<exact name>", args={...})`. A present tool's error or refusal stops the action; never bypass it with a manual write or shell script.
42
+ If desk tools are absent, follow `${pluginRoot}/workflows/research-gap.md` and `${pluginRoot}/project/README.md` with native tools and `ask_user` gates.
43
+
44
+ ## Bound action contract
44
45
 
45
46
  @${pluginRoot}/actions/research-gap.json
46
- @${pluginRoot}/project/schemas/common.schema.json
47
- @${pluginRoot}/project/schemas/config.schema.json
48
- @${pluginRoot}/project/templates/config.json
49
- @${pluginRoot}/project/schemas/decisions.schema.json
50
- @${pluginRoot}/project/templates/decisions.json
51
- @${pluginRoot}/project/schemas/evidence.schema.json
52
- @${pluginRoot}/project/templates/evidence.json
53
- @${pluginRoot}/project/schemas/manifest.schema.json
54
- @${pluginRoot}/project/templates/manifest.json
55
- @${pluginRoot}/project/schemas/outline.schema.json
56
- @${pluginRoot}/project/templates/outline.json
57
- @${pluginRoot}/project/schemas/section.schema.json
58
- @${pluginRoot}/project/templates/section.json
59
- @${pluginRoot}/project/schemas/source.schema.json
60
- @${pluginRoot}/project/templates/source.json
61
47
 
62
48
  ## Invocation input
63
49
 
@@ -69,10 +55,16 @@ $ARGUMENTS
69
55
 
70
56
  ## Clio user-gate binding
71
57
 
72
- Call `ask_user` whenever this workflow reaches a declared `user.gate`; only the structured value returned by that tool satisfies the gate. Invocation arguments, assistant prose, silence, or a report artifact do not count as a selection. Apply no gated mutation before `ask_user` returns. After any permitted mutation, perform the workflow-required readback before reporting success.
58
+ For a pending checkpoint in the declared gate's exact scope, call `extension_wtfp__gate` with its ID. Create a missing pending checkpoint through `extension_wtfp__record` only when this action declares checkpoint creation; otherwise use `ask_user` for the unpersisted author decision and do not invent an undeclared output. Only the structured author answer satisfies the gate; cancelled, retained or expired checkpoints authorize nothing. Never write `resolution.resolved_by: author` yourself or infer approval from invocation text, prose or silence. Read back a persisted resolution before applying its gated mutation.
59
+
60
+ ## Clio CiteNexus binding
61
+
62
+ In full-auto, the main agent first calls `gateway(op="find", query="cite-nexus")`. If a CiteNexus server is present and its tools are admitted as read-class through the operator's user configuration, call `gateway(op="describe", capability="<search-papers capability>")`, then `gateway(op="call", capability="<search-papers capability>", args={...})` with bounded public metadata queries. Use the capability name and argument schema returned by the gateway, not a guessed name. MCP connections are session-owned and unavailable in delegated workers, so pass the returned candidates and provenance to `wtfp-research-synthesizer` instead of asking that worker to discover the MCP server. This user-configured read connection is prior authorization for those searches; do not call `ask_user` again for each query. If no read-class CiteNexus connection is available and no gateway call has been refused, full-auto may instead run the bundled `citation-search --backend=cite-nexus` through its declared dispatcher with bounded public queries and an explicit `--providers` list containing only `crossref`, `datacite`, `europe_pmc`, or `arxiv`; pass those candidates to the same specialist. An operator-set offline flag, unavailable companion, or host refusal stops this route. Other providers and modes follow the declared user gate. Never bypass a gateway refusal by rerunning the same denied request through `bash`. Record the exact provider IDs, queries, limits, date, and provenance; verify each retained candidate before citing it.
73
63
 
74
64
  ## Clio role-result binding
75
65
 
66
+ Dispatch the declared specialist roles using these exact Clio agent IDs: `wtfp-research-synthesizer`. Do not substitute generic coder or verifier agents. If a named agent is unavailable, report that blocker and stop instead of silently changing roles.
67
+
76
68
  Read the single wtfp.role-result entry in native validations/checks and parse its evidence string as portable role-result JSON. Validate its schema, role and action against the dispatched task. Missing, duplicate or malformed outcomes fail closed. On needs_input ask the author through ask_user and redispatch with the response; on blocked or failed stop and report the issue. Only completed permits downstream work, and it never substitutes for an author gate or artifact readback.
77
69
 
78
70
  <!-- Generated by WTF-P adapter compiler v5 from protocol/actions/research-gap; do not edit. -->
@@ -5,18 +5,16 @@ argument-hint: "[arguments]"
5
5
 
6
6
  # Resume writing
7
7
 
8
- @${pluginRoot}/project/README.md
9
8
  @${pluginRoot}/skills/wtfp-manage-project/SKILL.md
10
- @${pluginRoot}/skills/wtfp-manage-project/references/actions.md
11
9
 
12
10
  ## Record contract
13
11
 
14
12
  Read: `project://manifest`, `project://config`, `project://state`, `project://decisions`, `project://structure/outline`, `project://checkpoints/{checkpoint}`, `project://sections/{section}`, `project://sections/{section}/plans/{plan}`, `project://sections/{section}/reviews/{review}`, `project://sections/{section}/handoff`, `project://sections/{section}/summary`, `project://validations/{validation}`, `project://paper/{artifact}`.
15
13
  Produce: `project://checkpoints/{checkpoint}` (update), `project://state` (update).
16
14
 
17
- Resolve every logical URI through the host adapter. Portable v1 JSON records are the source of truth: schema-validate before a write, preserve stable IDs, update revision and timestamps where required, and replace records atomically. Never pass a literal logical URI to a shell command or infer record state from a legacy Markdown control file.
15
+ Use `extension_wtfp__record` for each declared JSON record write: pass its logical `uri`, complete `record`, and the revision read as `expect_revision` for revisioned updates. It validates, bumps revisions/timestamps, replaces atomically and reads back; preserve stable IDs and author decisions.
18
16
 
19
- Manuscript prose and supporting context, research, plan, review, summary, handoff, and deliverable artifacts retain their authored format (normally Markdown). Link them from the relevant v1 record; do not convert manuscript prose into project-state JSON.
17
+ Write prose and linked artifacts with native file tools; keep their authored formats. The record tool handles JSON records only, never manuscript text, deletion or archives.
20
18
 
21
19
  ## Procedure
22
20
 
@@ -32,26 +30,12 @@ Do not initialize a repository or run branch, stage, commit, merge, push, or pub
32
30
 
33
31
  Report the logical resources read, created, updated, archived, or deleted; the gates crossed; validation results; unresolved checkpoints; and the safest next action. Never claim a mutation that was not verified.
34
32
 
35
- ## Bound action contract and schemas
33
+ Discover the named tools with `gateway(op="describe", capability="extension_wtfp__record")` (and the corresponding `measure_section` or `gate` name), then use `gateway(op="call", capability="<exact name>", args={...})`. A present tool's error or refusal stops the action; never bypass it with a manual write or shell script.
34
+ If desk tools are absent, follow `${pluginRoot}/workflows/resume-writing.md` and `${pluginRoot}/project/README.md` with native tools and `ask_user` gates.
35
+
36
+ ## Bound action contract
36
37
 
37
38
  @${pluginRoot}/actions/resume-writing.json
38
- @${pluginRoot}/project/schemas/common.schema.json
39
- @${pluginRoot}/project/schemas/checkpoint.schema.json
40
- @${pluginRoot}/project/templates/checkpoint.json
41
- @${pluginRoot}/project/schemas/config.schema.json
42
- @${pluginRoot}/project/templates/config.json
43
- @${pluginRoot}/project/schemas/decisions.schema.json
44
- @${pluginRoot}/project/templates/decisions.json
45
- @${pluginRoot}/project/schemas/manifest.schema.json
46
- @${pluginRoot}/project/templates/manifest.json
47
- @${pluginRoot}/project/schemas/outline.schema.json
48
- @${pluginRoot}/project/templates/outline.json
49
- @${pluginRoot}/project/schemas/section.schema.json
50
- @${pluginRoot}/project/templates/section.json
51
- @${pluginRoot}/project/schemas/state.schema.json
52
- @${pluginRoot}/project/templates/state.json
53
- @${pluginRoot}/project/schemas/validation.schema.json
54
- @${pluginRoot}/project/templates/validation.json
55
39
 
56
40
  ## Invocation input
57
41
 
@@ -63,6 +47,6 @@ $ARGUMENTS
63
47
 
64
48
  ## Clio user-gate binding
65
49
 
66
- Call `ask_user` whenever this workflow reaches a declared `user.gate`; only the structured value returned by that tool satisfies the gate. Invocation arguments, assistant prose, silence, or a report artifact do not count as a selection. Apply no gated mutation before `ask_user` returns. After any permitted mutation, perform the workflow-required readback before reporting success.
50
+ For a pending checkpoint in the declared gate's exact scope, call `extension_wtfp__gate` with its ID. Create a missing pending checkpoint through `extension_wtfp__record` only when this action declares checkpoint creation; otherwise use `ask_user` for the unpersisted author decision and do not invent an undeclared output. Only the structured author answer satisfies the gate; cancelled, retained or expired checkpoints authorize nothing. Never write `resolution.resolved_by: author` yourself or infer approval from invocation text, prose or silence. Read back a persisted resolution before applying its gated mutation.
67
51
 
68
52
  <!-- Generated by WTF-P adapter compiler v5 from protocol/actions/resume-writing; do not edit. -->
@@ -5,18 +5,16 @@ argument-hint: "[arguments]"
5
5
 
6
6
  # Review a section
7
7
 
8
- @${pluginRoot}/project/README.md
9
8
  @${pluginRoot}/skills/wtfp-review-manuscript/SKILL.md
10
- @${pluginRoot}/skills/wtfp-review-manuscript/references/actions.md
11
9
 
12
10
  ## Record contract
13
11
 
14
12
  Read: `project://manifest`, `project://decisions`, `project://structure/outline`, `project://sections/{section}`, `project://sections/{section}/context`, `project://sections/{section}/plans/{plan}`, `project://sections/{section}/research`, `project://sections/{section}/summary`, `project://evidence/{evidence}`, `project://paper/{artifact}`.
15
13
  Produce: `project://sections/{section}/reviews/{review}` (create), `project://validations/{validation}` (create), `project://sections/{section}` (update).
16
14
 
17
- Resolve every logical URI through the host adapter. Portable v1 JSON records are the source of truth: schema-validate before a write, preserve stable IDs, update revision and timestamps where required, and replace records atomically. Never pass a literal logical URI to a shell command or infer record state from a legacy Markdown control file.
15
+ Use `extension_wtfp__record` for each declared JSON record write: pass its logical `uri`, complete `record`, and the revision read as `expect_revision` for revisioned updates. It validates, bumps revisions/timestamps, replaces atomically and reads back; preserve stable IDs and author decisions.
18
16
 
19
- Manuscript prose and supporting context, research, plan, review, summary, handoff, and deliverable artifacts retain their authored format (normally Markdown). Link them from the relevant v1 record; do not convert manuscript prose into project-state JSON.
17
+ Write prose and linked artifacts with native file tools; keep their authored formats. The record tool handles JSON records only, never manuscript text, deletion or archives.
20
18
 
21
19
  ## Procedure
22
20
 
@@ -31,22 +29,12 @@ Do not initialize a repository or run branch, stage, commit, merge, push, or pub
31
29
 
32
30
  Report the logical resources read, created, updated, archived, or deleted; the gates crossed; validation results; unresolved checkpoints; and the safest next action. Never claim a mutation that was not verified.
33
31
 
34
- ## Bound action contract and schemas
32
+ Discover the named tools with `gateway(op="describe", capability="extension_wtfp__record")` (and the corresponding `measure_section` or `gate` name), then use `gateway(op="call", capability="<exact name>", args={...})`. A present tool's error or refusal stops the action; never bypass it with a manual write or shell script.
33
+ If desk tools are absent, follow `${pluginRoot}/workflows/review-section.md` and `${pluginRoot}/project/README.md` with native tools and `ask_user` gates.
34
+
35
+ ## Bound action contract
35
36
 
36
37
  @${pluginRoot}/actions/review-section.json
37
- @${pluginRoot}/project/schemas/common.schema.json
38
- @${pluginRoot}/project/schemas/decisions.schema.json
39
- @${pluginRoot}/project/templates/decisions.json
40
- @${pluginRoot}/project/schemas/evidence.schema.json
41
- @${pluginRoot}/project/templates/evidence.json
42
- @${pluginRoot}/project/schemas/manifest.schema.json
43
- @${pluginRoot}/project/templates/manifest.json
44
- @${pluginRoot}/project/schemas/outline.schema.json
45
- @${pluginRoot}/project/templates/outline.json
46
- @${pluginRoot}/project/schemas/section.schema.json
47
- @${pluginRoot}/project/templates/section.json
48
- @${pluginRoot}/project/schemas/validation.schema.json
49
- @${pluginRoot}/project/templates/validation.json
50
38
 
51
39
  ## Invocation input
52
40
 
@@ -58,10 +46,12 @@ $ARGUMENTS
58
46
 
59
47
  ## Clio user-gate binding
60
48
 
61
- Call `ask_user` whenever this workflow reaches a declared `user.gate`; only the structured value returned by that tool satisfies the gate. Invocation arguments, assistant prose, silence, or a report artifact do not count as a selection. Apply no gated mutation before `ask_user` returns. After any permitted mutation, perform the workflow-required readback before reporting success.
49
+ For a pending checkpoint in the declared gate's exact scope, call `extension_wtfp__gate` with its ID. Create a missing pending checkpoint through `extension_wtfp__record` only when this action declares checkpoint creation; otherwise use `ask_user` for the unpersisted author decision and do not invent an undeclared output. Only the structured author answer satisfies the gate; cancelled, retained or expired checkpoints authorize nothing. Never write `resolution.resolved_by: author` yourself or infer approval from invocation text, prose or silence. Read back a persisted resolution before applying its gated mutation.
62
50
 
63
51
  ## Clio role-result binding
64
52
 
53
+ Dispatch the declared specialist roles using these exact Clio agent IDs: `wtfp-section-reviewer`. Do not substitute generic coder or verifier agents. If a named agent is unavailable, report that blocker and stop instead of silently changing roles.
54
+
65
55
  Read the single wtfp.role-result entry in native validations/checks and parse its evidence string as portable role-result JSON. Validate its schema, role and action against the dispatched task. Missing, duplicate or malformed outcomes fail closed. On needs_input ask the author through ask_user and redispatch with the response; on blocked or failed stop and report the issue. Only completed permits downstream work, and it never substitutes for an author gate or artifact readback.
66
56
 
67
57
  <!-- Generated by WTF-P adapter compiler v5 from protocol/actions/review-section; do not edit. -->
@@ -5,18 +5,16 @@ argument-hint: "[arguments]"
5
5
 
6
6
  # Manage project settings
7
7
 
8
- @${pluginRoot}/project/README.md
9
8
  @${pluginRoot}/skills/wtfp-manage-project/SKILL.md
10
- @${pluginRoot}/skills/wtfp-manage-project/references/actions.md
11
9
 
12
10
  ## Record contract
13
11
 
14
12
  Read: `project://config`.
15
13
  Produce: `project://config` (update).
16
14
 
17
- Resolve every logical URI through the host adapter. Portable v1 JSON records are the source of truth: schema-validate before a write, preserve stable IDs, update revision and timestamps where required, and replace records atomically. Never pass a literal logical URI to a shell command or infer record state from a legacy Markdown control file.
15
+ Use `extension_wtfp__record` for each declared JSON record write: pass its logical `uri`, complete `record`, and the revision read as `expect_revision` for revisioned updates. It validates, bumps revisions/timestamps, replaces atomically and reads back; preserve stable IDs and author decisions.
18
16
 
19
- Manuscript prose and supporting context, research, plan, review, summary, handoff, and deliverable artifacts retain their authored format (normally Markdown). Link them from the relevant v1 record; do not convert manuscript prose into project-state JSON.
17
+ Write prose and linked artifacts with native file tools; keep their authored formats. The record tool handles JSON records only, never manuscript text, deletion or archives.
20
18
 
21
19
  ## Procedure
22
20
 
@@ -30,12 +28,12 @@ Do not initialize a repository or run branch, stage, commit, merge, push, or pub
30
28
 
31
29
  Report the logical resources read, created, updated, archived, or deleted; the gates crossed; validation results; unresolved checkpoints; and the safest next action. Never claim a mutation that was not verified.
32
30
 
33
- ## Bound action contract and schemas
31
+ Discover the named tools with `gateway(op="describe", capability="extension_wtfp__record")` (and the corresponding `measure_section` or `gate` name), then use `gateway(op="call", capability="<exact name>", args={...})`. A present tool's error or refusal stops the action; never bypass it with a manual write or shell script.
32
+ If desk tools are absent, follow `${pluginRoot}/workflows/settings.md` and `${pluginRoot}/project/README.md` with native tools and `ask_user` gates.
33
+
34
+ ## Bound action contract
34
35
 
35
36
  @${pluginRoot}/actions/settings.json
36
- @${pluginRoot}/project/schemas/common.schema.json
37
- @${pluginRoot}/project/schemas/config.schema.json
38
- @${pluginRoot}/project/templates/config.json
39
37
 
40
38
  ## Invocation input
41
39
 
@@ -47,6 +45,6 @@ $ARGUMENTS
47
45
 
48
46
  ## Clio user-gate binding
49
47
 
50
- Call `ask_user` whenever this workflow reaches a declared `user.gate`; only the structured value returned by that tool satisfies the gate. Invocation arguments, assistant prose, silence, or a report artifact do not count as a selection. Apply no gated mutation before `ask_user` returns. After any permitted mutation, perform the workflow-required readback before reporting success.
48
+ For a pending checkpoint in the declared gate's exact scope, call `extension_wtfp__gate` with its ID. Create a missing pending checkpoint through `extension_wtfp__record` only when this action declares checkpoint creation; otherwise use `ask_user` for the unpersisted author decision and do not invent an undeclared output. Only the structured author answer satisfies the gate; cancelled, retained or expired checkpoints authorize nothing. Never write `resolution.resolved_by: author` yourself or infer approval from invocation text, prose or silence. Read back a persisted resolution before applying its gated mutation.
51
49
 
52
50
  <!-- Generated by WTF-P adapter compiler v5 from protocol/actions/settings; do not edit. -->
@@ -5,18 +5,16 @@ argument-hint: "[arguments]"
5
5
 
6
6
  # Archive a milestone
7
7
 
8
- @${pluginRoot}/project/README.md
9
8
  @${pluginRoot}/skills/wtfp-deliver-research/SKILL.md
10
- @${pluginRoot}/skills/wtfp-deliver-research/references/actions.md
11
9
 
12
10
  ## Record contract
13
11
 
14
12
  Read: `project://manifest`, `project://config`, `project://state`, `project://decisions`, `project://structure/outline`, `project://sections/{section}`, `project://sources/{source}`, `project://evidence/{evidence}`, `project://validations/{validation}`, `project://paper/{artifact}`.
15
13
  Produce: `project://archives/{archive}/{artifact}` (archive), `project://manifest` (update), `project://state` (update), `project://validations/{validation}` (create).
16
14
 
17
- Resolve every logical URI through the host adapter. Portable v1 JSON records are the source of truth: schema-validate before a write, preserve stable IDs, update revision and timestamps where required, and replace records atomically. Never pass a literal logical URI to a shell command or infer record state from a legacy Markdown control file.
15
+ Use `extension_wtfp__record` for each declared JSON record write: pass its logical `uri`, complete `record`, and the revision read as `expect_revision` for revisioned updates. It validates, bumps revisions/timestamps, replaces atomically and reads back; preserve stable IDs and author decisions.
18
16
 
19
- Manuscript prose and supporting context, research, plan, review, summary, handoff, and deliverable artifacts retain their authored format (normally Markdown). Link them from the relevant v1 record; do not convert manuscript prose into project-state JSON.
17
+ Write prose and linked artifacts with native file tools; keep their authored formats. The record tool handles JSON records only, never manuscript text, deletion or archives.
20
18
 
21
19
  ## Procedure
22
20
 
@@ -30,28 +28,12 @@ Do not initialize a repository or run branch, stage, commit, merge, push, or pub
30
28
 
31
29
  Report the logical resources read, created, updated, archived, or deleted; the gates crossed; validation results; unresolved checkpoints; and the safest next action. Never claim a mutation that was not verified.
32
30
 
33
- ## Bound action contract and schemas
31
+ Discover the named tools with `gateway(op="describe", capability="extension_wtfp__record")` (and the corresponding `measure_section` or `gate` name), then use `gateway(op="call", capability="<exact name>", args={...})`. A present tool's error or refusal stops the action; never bypass it with a manual write or shell script.
32
+ If desk tools are absent, follow `${pluginRoot}/workflows/submit-milestone.md` and `${pluginRoot}/project/README.md` with native tools and `ask_user` gates.
33
+
34
+ ## Bound action contract
34
35
 
35
36
  @${pluginRoot}/actions/submit-milestone.json
36
- @${pluginRoot}/project/schemas/common.schema.json
37
- @${pluginRoot}/project/schemas/config.schema.json
38
- @${pluginRoot}/project/templates/config.json
39
- @${pluginRoot}/project/schemas/decisions.schema.json
40
- @${pluginRoot}/project/templates/decisions.json
41
- @${pluginRoot}/project/schemas/evidence.schema.json
42
- @${pluginRoot}/project/templates/evidence.json
43
- @${pluginRoot}/project/schemas/manifest.schema.json
44
- @${pluginRoot}/project/templates/manifest.json
45
- @${pluginRoot}/project/schemas/outline.schema.json
46
- @${pluginRoot}/project/templates/outline.json
47
- @${pluginRoot}/project/schemas/section.schema.json
48
- @${pluginRoot}/project/templates/section.json
49
- @${pluginRoot}/project/schemas/source.schema.json
50
- @${pluginRoot}/project/templates/source.json
51
- @${pluginRoot}/project/schemas/state.schema.json
52
- @${pluginRoot}/project/templates/state.json
53
- @${pluginRoot}/project/schemas/validation.schema.json
54
- @${pluginRoot}/project/templates/validation.json
55
37
 
56
38
  ## Invocation input
57
39
 
@@ -63,6 +45,6 @@ $ARGUMENTS
63
45
 
64
46
  ## Clio user-gate binding
65
47
 
66
- Call `ask_user` whenever this workflow reaches a declared `user.gate`; only the structured value returned by that tool satisfies the gate. Invocation arguments, assistant prose, silence, or a report artifact do not count as a selection. Apply no gated mutation before `ask_user` returns. After any permitted mutation, perform the workflow-required readback before reporting success.
48
+ For a pending checkpoint in the declared gate's exact scope, call `extension_wtfp__gate` with its ID. Create a missing pending checkpoint through `extension_wtfp__record` only when this action declares checkpoint creation; otherwise use `ask_user` for the unpersisted author decision and do not invent an undeclared output. Only the structured author answer satisfies the gate; cancelled, retained or expired checkpoints authorize nothing. Never write `resolution.resolved_by: author` yourself or infer approval from invocation text, prose or silence. Read back a persisted resolution before applying its gated mutation.
67
49
 
68
50
  <!-- Generated by WTF-P adapter compiler v5 from protocol/actions/submit-milestone; do not edit. -->