wtf-p 0.7.4 → 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 (109) hide show
  1. package/README.md +10 -10
  2. package/bin/commands/install-logic.js +1 -1
  3. package/bin/lib/adapter-compiler.js +163 -55
  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/vendors/antigravity/.wtfp-generated.json +2 -2
  9. package/vendors/antigravity/plugin.json +1 -1
  10. package/vendors/claude/.claude-plugin/marketplace.json +2 -2
  11. package/vendors/claude/.claude-plugin/plugin.json +1 -1
  12. package/vendors/claude/.wtfp-generated.json +5 -5
  13. package/vendors/claude/ai.iowarp.clio/prompts/wtfp/help.md +1 -1
  14. package/vendors/claude/plugin.json +1 -1
  15. package/vendors/clio-extension/.wtfp-generated.json +228 -0
  16. package/vendors/clio-extension/actions/add-todo.json +52 -0
  17. package/vendors/clio-extension/actions/analyze-bib.json +97 -0
  18. package/vendors/clio-extension/actions/audit-milestone.json +63 -0
  19. package/vendors/clio-extension/actions/check-refs.json +80 -0
  20. package/vendors/clio-extension/actions/check-todos.json +52 -0
  21. package/vendors/clio-extension/actions/checkpoint.json +76 -0
  22. package/vendors/clio-extension/actions/contribute.json +57 -0
  23. package/vendors/clio-extension/actions/create-outline.json +84 -0
  24. package/vendors/clio-extension/actions/create-poster.json +54 -0
  25. package/vendors/clio-extension/actions/create-slides.json +54 -0
  26. package/vendors/clio-extension/actions/discuss-section.json +76 -0
  27. package/vendors/clio-extension/actions/execute-outline.json +116 -0
  28. package/vendors/clio-extension/actions/export-latex.json +65 -0
  29. package/vendors/clio-extension/actions/help.json +30 -0
  30. package/vendors/clio-extension/actions/insert-section.json +61 -0
  31. package/vendors/clio-extension/actions/list-assumptions.json +35 -0
  32. package/vendors/clio-extension/actions/map-project.json +71 -0
  33. package/vendors/clio-extension/actions/new-paper.json +70 -0
  34. package/vendors/clio-extension/actions/pause-writing.json +71 -0
  35. package/vendors/clio-extension/actions/plan-milestone-gaps.json +57 -0
  36. package/vendors/clio-extension/actions/plan-revision.json +58 -0
  37. package/vendors/clio-extension/actions/plan-section.json +100 -0
  38. package/vendors/clio-extension/actions/polish-prose.json +69 -0
  39. package/vendors/clio-extension/actions/progress.json +51 -0
  40. package/vendors/clio-extension/actions/quick.json +70 -0
  41. package/vendors/clio-extension/actions/remove-section.json +63 -0
  42. package/vendors/clio-extension/actions/report-bug.json +47 -0
  43. package/vendors/clio-extension/actions/request-feature.json +47 -0
  44. package/vendors/clio-extension/actions/research-gap.json +102 -0
  45. package/vendors/clio-extension/actions/resume-writing.json +65 -0
  46. package/vendors/clio-extension/actions/review-section.json +83 -0
  47. package/vendors/clio-extension/actions/settings.json +47 -0
  48. package/vendors/clio-extension/actions/submit-milestone.json +77 -0
  49. package/vendors/clio-extension/actions/update.json +42 -0
  50. package/vendors/clio-extension/actions/verify-work.json +63 -0
  51. package/vendors/clio-extension/actions/write-section.json +115 -0
  52. package/vendors/clio-extension/clio-coder-extension.yaml +53 -0
  53. package/vendors/clio-extension/compatibility/action-availability.json +295 -0
  54. package/vendors/clio-extension/project/schemas/checkpoint.schema.json +102 -0
  55. package/vendors/clio-extension/project/schemas/common.schema.json +33 -0
  56. package/vendors/clio-extension/project/schemas/config.schema.json +69 -0
  57. package/vendors/clio-extension/project/schemas/decisions.schema.json +31 -0
  58. package/vendors/clio-extension/project/schemas/evidence.schema.json +48 -0
  59. package/vendors/clio-extension/project/schemas/manifest.schema.json +102 -0
  60. package/vendors/clio-extension/project/schemas/outline.schema.json +67 -0
  61. package/vendors/clio-extension/project/schemas/section.schema.json +95 -0
  62. package/vendors/clio-extension/project/schemas/source.schema.json +73 -0
  63. package/vendors/clio-extension/project/schemas/state.schema.json +58 -0
  64. package/vendors/clio-extension/project/schemas/validation.schema.json +74 -0
  65. package/vendors/clio-extension/runtime/extension.test.ts +248 -0
  66. package/vendors/clio-extension/runtime/extension.ts +1321 -0
  67. package/vendors/clio-extension/runtime/json-schema.cjs +304 -0
  68. package/vendors/clio-extension/runtime/package.json +3 -0
  69. package/vendors/clio-extension/runtime/write-guard.json +21 -0
  70. package/vendors/clio-extension/skins/wtfp.json +20 -0
  71. package/vendors/codex/plugins/wtfp/.codex-plugin/plugin.json +1 -1
  72. package/vendors/codex/plugins/wtfp/.wtfp-generated.json +3 -3
  73. package/vendors/codex/plugins/wtfp/plugin.json +1 -1
  74. package/vendors/copilot/.wtfp-generated.json +2 -2
  75. package/vendors/copilot/marketplace.json +2 -2
  76. package/vendors/copilot/plugins/wtfp/.claude-plugin/plugin.json +1 -1
  77. package/vendors/copilot/plugins/wtfp/.wtfp-generated.json +2 -2
  78. package/vendors/gemini/.wtfp-generated.json +2 -2
  79. package/vendors/gemini/gemini-extension.json +1 -1
  80. package/vendors/plugin/.wtfp-generated.json +30 -30
  81. package/vendors/plugin/ai.iowarp.clio/prompts/wtfp/add-todo.md +6 -12
  82. package/vendors/plugin/ai.iowarp.clio/prompts/wtfp/analyze-bib.md +7 -19
  83. package/vendors/plugin/ai.iowarp.clio/prompts/wtfp/audit-milestone.md +7 -25
  84. package/vendors/plugin/ai.iowarp.clio/prompts/wtfp/check-refs.md +7 -15
  85. package/vendors/plugin/ai.iowarp.clio/prompts/wtfp/check-todos.md +9 -13
  86. package/vendors/plugin/ai.iowarp.clio/prompts/wtfp/checkpoint.md +7 -27
  87. package/vendors/plugin/ai.iowarp.clio/prompts/wtfp/create-outline.md +7 -25
  88. package/vendors/plugin/ai.iowarp.clio/prompts/wtfp/discuss-section.md +7 -17
  89. package/vendors/plugin/ai.iowarp.clio/prompts/wtfp/execute-outline.md +8 -27
  90. package/vendors/plugin/ai.iowarp.clio/prompts/wtfp/help.md +2 -2
  91. package/vendors/plugin/ai.iowarp.clio/prompts/wtfp/insert-section.md +7 -13
  92. package/vendors/plugin/ai.iowarp.clio/prompts/wtfp/map-project.md +6 -14
  93. package/vendors/plugin/ai.iowarp.clio/prompts/wtfp/new-paper.md +7 -17
  94. package/vendors/plugin/ai.iowarp.clio/prompts/wtfp/pause-writing.md +6 -18
  95. package/vendors/plugin/ai.iowarp.clio/prompts/wtfp/plan-milestone-gaps.md +7 -15
  96. package/vendors/plugin/ai.iowarp.clio/prompts/wtfp/plan-section.md +7 -27
  97. package/vendors/plugin/ai.iowarp.clio/prompts/wtfp/polish-prose.md +8 -15
  98. package/vendors/plugin/ai.iowarp.clio/prompts/wtfp/quick.md +8 -15
  99. package/vendors/plugin/ai.iowarp.clio/prompts/wtfp/research-gap.md +7 -21
  100. package/vendors/plugin/ai.iowarp.clio/prompts/wtfp/resume-writing.md +7 -23
  101. package/vendors/plugin/ai.iowarp.clio/prompts/wtfp/review-section.md +7 -19
  102. package/vendors/plugin/ai.iowarp.clio/prompts/wtfp/settings.md +7 -9
  103. package/vendors/plugin/ai.iowarp.clio/prompts/wtfp/submit-milestone.md +7 -25
  104. package/vendors/plugin/ai.iowarp.clio/prompts/wtfp/verify-work.md +7 -15
  105. package/vendors/plugin/ai.iowarp.clio/prompts/wtfp/write-section.md +8 -28
  106. package/vendors/plugin/compatibility/action-availability.json +16 -1
  107. package/vendors/plugin/plugin.json +7 -7
  108. /package/vendors/plugin/ai.iowarp.clio/{fleets → playbooks}/wtfp-draft-review.md +0 -0
  109. /package/vendors/plugin/ai.iowarp.clio/{fleets → playbooks}/wtfp-plan-section.md +0 -0
@@ -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,7 +46,7 @@ $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
 
@@ -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,7 +46,7 @@ $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
 
@@ -5,18 +5,16 @@ 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
 
@@ -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,7 +55,7 @@ $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.
73
59
 
74
60
  ## Clio CiteNexus binding
75
61
 
@@ -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,7 +46,7 @@ $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
 
@@ -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. -->
@@ -5,18 +5,16 @@ argument-hint: "[arguments]"
5
5
 
6
6
  # Verify written work
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://state`, `project://sections/{section}`, `project://sections/{section}/plans/{plan}`, `project://evidence/{evidence}`, `project://paper/{artifact}`.
15
13
  Produce: `project://validations/{validation}` (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
 
@@ -30,18 +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/verify-work.md` and `${pluginRoot}/project/README.md` with native tools and `ask_user` gates.
33
+
34
+ ## Bound action contract
34
35
 
35
36
  @${pluginRoot}/actions/verify-work.json
36
- @${pluginRoot}/project/schemas/common.schema.json
37
- @${pluginRoot}/project/schemas/evidence.schema.json
38
- @${pluginRoot}/project/templates/evidence.json
39
- @${pluginRoot}/project/schemas/section.schema.json
40
- @${pluginRoot}/project/templates/section.json
41
- @${pluginRoot}/project/schemas/state.schema.json
42
- @${pluginRoot}/project/templates/state.json
43
- @${pluginRoot}/project/schemas/validation.schema.json
44
- @${pluginRoot}/project/templates/validation.json
45
37
 
46
38
  ## Invocation input
47
39
 
@@ -53,6 +45,6 @@ $ARGUMENTS
53
45
 
54
46
  ## Clio user-gate binding
55
47
 
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.
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.
57
49
 
58
50
  <!-- Generated by WTF-P adapter compiler v5 from protocol/actions/verify-work; do not edit. -->
@@ -5,24 +5,22 @@ argument-hint: "[arguments]"
5
5
 
6
6
  # Write a section
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://config`, `project://state`, `project://decisions`, `project://structure/outline`, `project://sections/{section}`, `project://sections/{section}/context`, `project://sections/{section}/research`, `project://sections/{section}/plans/{plan}`, `project://sections/{section}/summary`, `project://sources/{source}`, `project://evidence/{evidence}`, `project://paper/{artifact}`.
15
13
  Produce: `project://paper/{artifact}` (create), `project://paper/{artifact}` (update), `project://manifest` (update), `project://sections/{section}/summary` (create), `project://sections/{section}/summary` (update), `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. Require one approved plan and resolve all linked context, research, source/evidence records, decisions, prior summary, existing target, and necessary neighboring prose before choosing create or update.
24
22
  2. Before drafting a literature-heavy section, verify that its linked research artifact and source/evidence records cover the plan's factual claims. If coverage is missing, use the declared research workflow and pause at a checkpoint until verified records exist. Draft only the declared manuscript artifact; cite only resolvable sources, preserve author constraints, and stop at blocking decisions. A plausible bibliography entry, search candidate, or model memory is not a verified citation.
25
- 3. Read the persisted manuscript text back and calculate its actual body word count with one deterministic method; never copy a worker self-report, plan target, or summary count into project records. Validate the persisted draft against its plan and word budget.
23
+ 3. Read back the persisted manuscript, call `extension_wtfp__measure_section` with its section ID, and use the returned body count and target tolerance for validation and the summary; never use a worker self-report or hand-count words.
26
24
  4. Create or update the required Markdown summary with that measured count, then read back both manuscript and summary. Missing, empty, or inconsistent output is a failed completion condition, not permission to link a path that does not exist.
27
25
  5. Persist the validation, synchronize the manuscript URI in `manifest.artifacts.manuscripts`, and reconcile section/state records only after manuscript, summary, and validation readback succeeds. If blocked, create the declared checkpoint and stop; do not commit or merge automatically.
28
26
 
@@ -32,30 +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/write-section.md` and `${pluginRoot}/project/README.md` with native tools and `ask_user` gates.
35
+
36
+ ## Bound action contract
36
37
 
37
38
  @${pluginRoot}/actions/write-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
39
 
60
40
  ## Invocation input
61
41
 
@@ -67,7 +47,7 @@ $ARGUMENTS
67
47
 
68
48
  ## Clio user-gate binding
69
49
 
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.
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.
71
51
 
72
52
  ## Clio role-result binding
73
53
 
@@ -291,5 +291,20 @@
291
291
  "unavailableCapabilities": [],
292
292
  "unavailableEffects": []
293
293
  }
294
- ]
294
+ ],
295
+ "runtimeBindings": {
296
+ "plugin": "wtfp",
297
+ "extension": "wtfp",
298
+ "capabilities": {
299
+ "user.interaction": "clio:extension-interview"
300
+ },
301
+ "approvals": {
302
+ "explicit": "clio:extension-interview"
303
+ },
304
+ "tools": {
305
+ "record": "extension_wtfp__record",
306
+ "measure_section": "extension_wtfp__measure_section",
307
+ "gate": "extension_wtfp__gate"
308
+ }
309
+ }
295
310
  }