wtf-p 0.7.3 → 0.7.4

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 (164) hide show
  1. package/README.md +15 -11
  2. package/bin/lib/adapter-compiler.js +13 -2
  3. package/package.json +1 -1
  4. package/protocol/actions/research-gap.json +1 -1
  5. package/protocol/roles/research-synthesizer.md +1 -1
  6. package/protocol/skills/wtfp-plan-section/references/actions.md +1 -1
  7. package/protocol/skills/wtfp-research-literature/references/actions.md +1 -1
  8. package/protocol/skills/wtfp-write-section/references/actions.md +1 -1
  9. package/protocol/workflows/plan-section.md +3 -2
  10. package/protocol/workflows/research-gap.md +2 -2
  11. package/protocol/workflows/write-section.md +1 -1
  12. package/vendors/antigravity/.wtfp-generated.json +18 -14
  13. package/vendors/antigravity/actions/research-gap.json +1 -1
  14. package/vendors/antigravity/agents/wtfp-research-synthesizer.md +1 -1
  15. package/vendors/antigravity/commands/wtfp-plan-section.md +3 -2
  16. package/vendors/antigravity/commands/wtfp-write-section.md +1 -1
  17. package/vendors/antigravity/plugin.json +1 -1
  18. package/vendors/antigravity/roles/research-synthesizer.md +1 -1
  19. package/vendors/antigravity/skills/wtfp-plan-section/references/actions.md +1 -1
  20. package/vendors/antigravity/skills/wtfp-research-literature/references/actions.md +1 -1
  21. package/vendors/antigravity/skills/wtfp-write-section/references/actions.md +1 -1
  22. package/vendors/antigravity/tools/README.md +1 -1
  23. package/vendors/antigravity/tools/package.json +1 -0
  24. package/vendors/antigravity/workflows/plan-section.md +3 -2
  25. package/vendors/antigravity/workflows/research-gap.md +2 -2
  26. package/vendors/antigravity/workflows/write-section.md +1 -1
  27. package/vendors/claude/.claude-plugin/marketplace.json +2 -2
  28. package/vendors/claude/.claude-plugin/plugin.json +1 -1
  29. package/vendors/claude/.wtfp-generated.json +33 -29
  30. package/vendors/claude/actions/research-gap.json +1 -1
  31. package/vendors/claude/agents/wtfp-research-synthesizer.md +1 -1
  32. package/vendors/claude/ai.iowarp.clio/agents/wtfp-research-synthesizer.md +1 -1
  33. package/vendors/claude/ai.iowarp.clio/prompts/wtfp/analyze-bib.md +2 -0
  34. package/vendors/claude/ai.iowarp.clio/prompts/wtfp/check-refs.md +2 -0
  35. package/vendors/claude/ai.iowarp.clio/prompts/wtfp/create-outline.md +2 -0
  36. package/vendors/claude/ai.iowarp.clio/prompts/wtfp/execute-outline.md +2 -0
  37. package/vendors/claude/ai.iowarp.clio/prompts/wtfp/help.md +1 -1
  38. package/vendors/claude/ai.iowarp.clio/prompts/wtfp/plan-section.md +5 -2
  39. package/vendors/claude/ai.iowarp.clio/prompts/wtfp/polish-prose.md +2 -0
  40. package/vendors/claude/ai.iowarp.clio/prompts/wtfp/quick.md +2 -0
  41. package/vendors/claude/ai.iowarp.clio/prompts/wtfp/research-gap.md +8 -2
  42. package/vendors/claude/ai.iowarp.clio/prompts/wtfp/review-section.md +2 -0
  43. package/vendors/claude/ai.iowarp.clio/prompts/wtfp/write-section.md +3 -1
  44. package/vendors/claude/commands/plan-section.md +3 -2
  45. package/vendors/claude/commands/research-gap.md +2 -2
  46. package/vendors/claude/commands/write-section.md +1 -1
  47. package/vendors/claude/plugin.json +1 -1
  48. package/vendors/claude/roles/research-synthesizer.md +1 -1
  49. package/vendors/claude/skills/wtfp-plan-section/references/actions.md +1 -1
  50. package/vendors/claude/skills/wtfp-research-literature/references/actions.md +1 -1
  51. package/vendors/claude/skills/wtfp-write-section/references/actions.md +1 -1
  52. package/vendors/claude/tools/README.md +1 -1
  53. package/vendors/claude/tools/package.json +1 -0
  54. package/vendors/claude/workflows/plan-section.md +3 -2
  55. package/vendors/claude/workflows/research-gap.md +2 -2
  56. package/vendors/claude/workflows/write-section.md +1 -1
  57. package/vendors/codex/plugins/wtfp/.codex-plugin/plugin.json +1 -1
  58. package/vendors/codex/plugins/wtfp/.wtfp-generated.json +17 -13
  59. package/vendors/codex/plugins/wtfp/actions/research-gap.json +1 -1
  60. package/vendors/codex/plugins/wtfp/agents/wtfp-research-synthesizer.toml +1 -1
  61. package/vendors/codex/plugins/wtfp/plugin.json +1 -1
  62. package/vendors/codex/plugins/wtfp/roles/research-synthesizer.md +1 -1
  63. package/vendors/codex/plugins/wtfp/skills/wtfp-plan-section/references/actions.md +1 -1
  64. package/vendors/codex/plugins/wtfp/skills/wtfp-research-literature/references/actions.md +1 -1
  65. package/vendors/codex/plugins/wtfp/skills/wtfp-write-section/references/actions.md +1 -1
  66. package/vendors/codex/plugins/wtfp/tools/README.md +1 -1
  67. package/vendors/codex/plugins/wtfp/tools/package.json +1 -0
  68. package/vendors/codex/plugins/wtfp/workflows/plan-section.md +3 -2
  69. package/vendors/codex/plugins/wtfp/workflows/research-gap.md +2 -2
  70. package/vendors/codex/plugins/wtfp/workflows/write-section.md +1 -1
  71. package/vendors/copilot/.wtfp-generated.json +14 -14
  72. package/vendors/copilot/marketplace.json +2 -2
  73. package/vendors/copilot/plugins/wtfp/.claude-plugin/plugin.json +1 -1
  74. package/vendors/copilot/plugins/wtfp/.wtfp-generated.json +18 -14
  75. package/vendors/copilot/plugins/wtfp/actions/research-gap.json +1 -1
  76. package/vendors/copilot/plugins/wtfp/agents/wtfp-research-synthesizer.md +1 -1
  77. package/vendors/copilot/plugins/wtfp/commands/wtfp-plan-section.md +3 -2
  78. package/vendors/copilot/plugins/wtfp/commands/wtfp-write-section.md +1 -1
  79. package/vendors/copilot/plugins/wtfp/roles/research-synthesizer.md +1 -1
  80. package/vendors/copilot/plugins/wtfp/skills/wtfp-plan-section/references/actions.md +1 -1
  81. package/vendors/copilot/plugins/wtfp/skills/wtfp-research-literature/references/actions.md +1 -1
  82. package/vendors/copilot/plugins/wtfp/skills/wtfp-write-section/references/actions.md +1 -1
  83. package/vendors/copilot/plugins/wtfp/tools/README.md +1 -1
  84. package/vendors/copilot/plugins/wtfp/tools/package.json +1 -0
  85. package/vendors/copilot/plugins/wtfp/workflows/plan-section.md +3 -2
  86. package/vendors/copilot/plugins/wtfp/workflows/research-gap.md +2 -2
  87. package/vendors/copilot/plugins/wtfp/workflows/write-section.md +1 -1
  88. package/vendors/copilot/project/.github/agents/wtfp-research-synthesizer.agent.md +1 -1
  89. package/vendors/copilot/project/.github/skills/wtfp-plan-section/references/actions.md +1 -1
  90. package/vendors/copilot/project/.github/skills/wtfp-research-literature/references/actions.md +1 -1
  91. package/vendors/copilot/project/.github/skills/wtfp-write-section/references/actions.md +1 -1
  92. package/vendors/copilot/project/.github/wtfp/actions/research-gap.json +1 -1
  93. package/vendors/copilot/project/.github/wtfp/roles/research-synthesizer.md +1 -1
  94. package/vendors/copilot/project/.github/wtfp/skills/wtfp-plan-section/references/actions.md +1 -1
  95. package/vendors/copilot/project/.github/wtfp/skills/wtfp-research-literature/references/actions.md +1 -1
  96. package/vendors/copilot/project/.github/wtfp/skills/wtfp-write-section/references/actions.md +1 -1
  97. package/vendors/copilot/project/.github/wtfp/workflows/plan-section.md +3 -2
  98. package/vendors/copilot/project/.github/wtfp/workflows/research-gap.md +2 -2
  99. package/vendors/copilot/project/.github/wtfp/workflows/write-section.md +1 -1
  100. package/vendors/gemini/.wtfp-generated.json +24 -20
  101. package/vendors/gemini/actions/research-gap.json +1 -1
  102. package/vendors/gemini/agents/wtfp-research-synthesizer.md +1 -1
  103. package/vendors/gemini/commands/wtfp/discuss-section.toml +1 -1
  104. package/vendors/gemini/commands/wtfp/execute-outline.toml +1 -1
  105. package/vendors/gemini/commands/wtfp/insert-section.toml +1 -1
  106. package/vendors/gemini/commands/wtfp/list-assumptions.toml +1 -1
  107. package/vendors/gemini/commands/wtfp/plan-revision.toml +1 -1
  108. package/vendors/gemini/commands/wtfp/plan-section.toml +4 -3
  109. package/vendors/gemini/commands/wtfp/quick.toml +1 -1
  110. package/vendors/gemini/commands/wtfp/write-section.toml +2 -2
  111. package/vendors/gemini/gemini-extension.json +1 -1
  112. package/vendors/gemini/roles/research-synthesizer.md +1 -1
  113. package/vendors/gemini/skills/wtfp-plan-section/references/actions.md +1 -1
  114. package/vendors/gemini/skills/wtfp-research-literature/references/actions.md +1 -1
  115. package/vendors/gemini/skills/wtfp-write-section/references/actions.md +1 -1
  116. package/vendors/gemini/tools/README.md +1 -1
  117. package/vendors/gemini/tools/package.json +1 -0
  118. package/vendors/gemini/workflows/plan-section.md +3 -2
  119. package/vendors/gemini/workflows/research-gap.md +2 -2
  120. package/vendors/gemini/workflows/write-section.md +1 -1
  121. package/vendors/opencode/.wtfp-generated.json +23 -19
  122. package/vendors/opencode/actions/research-gap.json +1 -1
  123. package/vendors/opencode/agents/wtfp/research-synthesizer.md +1 -1
  124. package/vendors/opencode/commands/wtfp/discuss-section.md +1 -1
  125. package/vendors/opencode/commands/wtfp/execute-outline.md +1 -1
  126. package/vendors/opencode/commands/wtfp/insert-section.md +1 -1
  127. package/vendors/opencode/commands/wtfp/list-assumptions.md +1 -1
  128. package/vendors/opencode/commands/wtfp/plan-revision.md +1 -1
  129. package/vendors/opencode/commands/wtfp/plan-section.md +4 -3
  130. package/vendors/opencode/commands/wtfp/quick.md +1 -1
  131. package/vendors/opencode/commands/wtfp/write-section.md +2 -2
  132. package/vendors/opencode/roles/research-synthesizer.md +1 -1
  133. package/vendors/opencode/skills/wtfp-plan-section/references/actions.md +1 -1
  134. package/vendors/opencode/skills/wtfp-research-literature/references/actions.md +1 -1
  135. package/vendors/opencode/skills/wtfp-write-section/references/actions.md +1 -1
  136. package/vendors/opencode/tools/README.md +1 -1
  137. package/vendors/opencode/tools/package.json +1 -0
  138. package/vendors/opencode/workflows/plan-section.md +3 -2
  139. package/vendors/opencode/workflows/research-gap.md +2 -2
  140. package/vendors/opencode/workflows/write-section.md +1 -1
  141. package/vendors/plugin/.wtfp-generated.json +27 -23
  142. package/vendors/plugin/actions/research-gap.json +1 -1
  143. package/vendors/plugin/ai.iowarp.clio/agents/wtfp-research-synthesizer.md +1 -1
  144. package/vendors/plugin/ai.iowarp.clio/prompts/wtfp/analyze-bib.md +2 -0
  145. package/vendors/plugin/ai.iowarp.clio/prompts/wtfp/check-refs.md +2 -0
  146. package/vendors/plugin/ai.iowarp.clio/prompts/wtfp/create-outline.md +2 -0
  147. package/vendors/plugin/ai.iowarp.clio/prompts/wtfp/execute-outline.md +2 -0
  148. package/vendors/plugin/ai.iowarp.clio/prompts/wtfp/help.md +1 -1
  149. package/vendors/plugin/ai.iowarp.clio/prompts/wtfp/plan-section.md +5 -2
  150. package/vendors/plugin/ai.iowarp.clio/prompts/wtfp/polish-prose.md +2 -0
  151. package/vendors/plugin/ai.iowarp.clio/prompts/wtfp/quick.md +2 -0
  152. package/vendors/plugin/ai.iowarp.clio/prompts/wtfp/research-gap.md +8 -2
  153. package/vendors/plugin/ai.iowarp.clio/prompts/wtfp/review-section.md +2 -0
  154. package/vendors/plugin/ai.iowarp.clio/prompts/wtfp/write-section.md +3 -1
  155. package/vendors/plugin/plugin.json +1 -1
  156. package/vendors/plugin/roles/research-synthesizer.md +1 -1
  157. package/vendors/plugin/skills/wtfp-plan-section/references/actions.md +1 -1
  158. package/vendors/plugin/skills/wtfp-research-literature/references/actions.md +1 -1
  159. package/vendors/plugin/skills/wtfp-write-section/references/actions.md +1 -1
  160. package/vendors/plugin/tools/README.md +1 -1
  161. package/vendors/plugin/tools/package.json +1 -0
  162. package/vendors/plugin/workflows/plan-section.md +3 -2
  163. package/vendors/plugin/workflows/research-gap.md +2 -2
  164. package/vendors/plugin/workflows/write-section.md +1 -1
@@ -169,7 +169,7 @@ Contract: [protocol/actions/plan-section.json](../../../actions/plan-section.jso
169
169
  2. Read the complete planning context before decomposing work: manifest, config, state, decisions, outline, section record, context, research, source/evidence records, relevant prior summaries, and the bounded `project://validations/*` collection.
170
170
  3. Before any specialist dispatch, filter the validation 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.
171
171
  4. 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.
172
- 5. If the section is literature-heavy and research obligations remain empty, offer `research-gap`; do not manufacture citations to keep planning moving.
172
+ 5. If the section is literature-heavy, require a section-specific research artifact and resolvable source/evidence records for its planned claims before dispatch or approval. Run `research-gap` with the configured CiteNexus backend when available; if coverage remains insufficient, record a research checkpoint and stop. Search candidates alone are not verified citations. Do not manufacture citations to keep planning moving.
173
173
  6. Summarize the section goal, claims, evidence, manuscript artifact, dependencies, and open decisions at `config.gates.confirm_plan`.
174
174
  7. After the prerequisites pass, require `section-planner` in a bounded delegated pass to create one or more immutable Markdown `project://sections/{section}/plans/{plan}` artifacts. Each plan must declare:
175
175
  - stable section and plan identifiers;
@@ -169,7 +169,7 @@ Contract: [protocol/actions/plan-section.json](../../../actions/plan-section.jso
169
169
  2. Read the complete planning context before decomposing work: manifest, config, state, decisions, outline, section record, context, research, source/evidence records, relevant prior summaries, and the bounded `project://validations/*` collection.
170
170
  3. Before any specialist dispatch, filter the validation 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.
171
171
  4. 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.
172
- 5. If the section is literature-heavy and research obligations remain empty, offer `research-gap`; do not manufacture citations to keep planning moving.
172
+ 5. If the section is literature-heavy, require a section-specific research artifact and resolvable source/evidence records for its planned claims before dispatch or approval. Run `research-gap` with the configured CiteNexus backend when available; if coverage remains insufficient, record a research checkpoint and stop. Search candidates alone are not verified citations. Do not manufacture citations to keep planning moving.
173
173
  6. Summarize the section goal, claims, evidence, manuscript artifact, dependencies, and open decisions at `config.gates.confirm_plan`.
174
174
  7. After the prerequisites pass, require `section-planner` in a bounded delegated pass to create one or more immutable Markdown `project://sections/{section}/plans/{plan}` artifacts. Each plan must declare:
175
175
  - stable section and plan identifiers;
@@ -252,8 +252,9 @@ Manuscript prose and supporting context, research, plan, review, summary, handof
252
252
  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.
253
253
  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.
254
254
  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.
255
- 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.
256
- 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.
255
+ 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.
256
+ 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.
257
+ 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.
257
258
 
258
259
  ## Safety and completion
259
260
 
@@ -128,7 +128,7 @@ Contract: [protocol/actions/write-section.json](../../../actions/write-section.j
128
128
 
129
129
  1. Require an exact `project://sections/{section}/plans/{plan}` artifact linked from `project://sections/{section}` and verify its declared inputs, outputs, dependencies, validation, and approval state.
130
130
  2. If a corresponding summary or manuscript output exists, show the overwrite or merge impact and require explicit re-execution approval.
131
- 3. Read the plan, `project://manifest`, `project://state`, `project://decisions`, `project://structure/outline`, section context and research, relevant source/evidence records, and enough neighboring prose to maintain continuity.
131
+ 3. Read the plan, `project://manifest`, `project://state`, `project://decisions`, `project://structure/outline`, section context and research, relevant source/evidence records, and enough neighboring prose to maintain continuity. For a literature-heavy section, require research and verified source/evidence coverage of the plan's factual claims before drafting. Route missing coverage through `research-gap` and a checkpoint; do not substitute model memory or search candidates for source records.
132
132
  4. Present the plan objective, output path, target words, evidence obligations, and checkpoints at the configured writing gate.
133
133
  5. Execute tasks in order against the exact `project://paper/{artifact}` output. For each task:
134
134
  - establish the paragraph or subsection's rhetorical job;
@@ -128,7 +128,7 @@ Contract: [protocol/actions/write-section.json](../../../actions/write-section.j
128
128
 
129
129
  1. Require an exact `project://sections/{section}/plans/{plan}` artifact linked from `project://sections/{section}` and verify its declared inputs, outputs, dependencies, validation, and approval state.
130
130
  2. If a corresponding summary or manuscript output exists, show the overwrite or merge impact and require explicit re-execution approval.
131
- 3. Read the plan, `project://manifest`, `project://state`, `project://decisions`, `project://structure/outline`, section context and research, relevant source/evidence records, and enough neighboring prose to maintain continuity.
131
+ 3. Read the plan, `project://manifest`, `project://state`, `project://decisions`, `project://structure/outline`, section context and research, relevant source/evidence records, and enough neighboring prose to maintain continuity. For a literature-heavy section, require research and verified source/evidence coverage of the plan's factual claims before drafting. Route missing coverage through `research-gap` and a checkpoint; do not substitute model memory or search candidates for source records.
132
132
  4. Present the plan objective, output path, target words, evidence obligations, and checkpoints at the configured writing gate.
133
133
  5. Execute tasks in order against the exact `project://paper/{artifact}` output. For each task:
134
134
  - establish the paragraph or subsection's rhetorical job;
@@ -201,7 +201,7 @@ Manuscript prose and supporting context, research, plan, review, summary, handof
201
201
  ## Procedure
202
202
 
203
203
  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.
204
- 2. Draft only the declared manuscript artifact; cite only resolvable sources, preserve author constraints, and stop at blocking decisions.
204
+ 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.
205
205
  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.
206
206
  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.
207
207
  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.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "wtfp",
3
- "version": "0.7.3",
3
+ "version": "0.7.4",
4
4
  "description": "Portable academic research and writing workflows for Gemini CLI.",
5
5
  "contextFileName": "GEMINI.md"
6
6
  }
@@ -42,7 +42,7 @@ Investigate the literature needed to plan and write a specific section well. The
42
42
  ## Boundaries
43
43
 
44
44
  - This is a `mutation-report` role. It may write only the research and suggestion artifacts authorized by the invoking action.
45
- - When external literature search is approved, `citation-search` may run with `--backend=cite-nexus` and an explicit `--providers` list after the gate. Returned results stay candidates, and this role never performs a bibliography write.
45
+ - An operator-configured, trusted read-only CiteNexus MCP connection may search bounded public scholarly metadata without a second per-query gate. In an explicitly selected full-auto host session for this research action, `citation-search --backend=cite-nexus` may also search `crossref`, `datacite`, `europe_pmc`, or `arxiv` without another gate. Other providers or modes require explicit network approval naming providers and query bounds. Honor offline flags and host refusals. Returned results stay candidates, and this role never performs a bibliography write.
46
46
  - Never fabricate a citation, identifier, quotation, metadata field, source conclusion, or claim of exhaustive coverage.
47
47
  - Never overwrite an existing `project://sources/{source}` record. Additions remain provisional until identity and provenance are verified by an authorized action.
48
48
  - Do not explore alternatives that author decisions explicitly deferred or rejected.
@@ -62,7 +62,7 @@ Contract: [protocol/actions/plan-section.json](../../../actions/plan-section.jso
62
62
  2. Read the complete planning context before decomposing work: manifest, config, state, decisions, outline, section record, context, research, source/evidence records, relevant prior summaries, and the bounded `project://validations/*` collection.
63
63
  3. Before any specialist dispatch, filter the validation 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.
64
64
  4. 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.
65
- 5. If the section is literature-heavy and research obligations remain empty, offer `research-gap`; do not manufacture citations to keep planning moving.
65
+ 5. If the section is literature-heavy, require a section-specific research artifact and resolvable source/evidence records for its planned claims before dispatch or approval. Run `research-gap` with the configured CiteNexus backend when available; if coverage remains insufficient, record a research checkpoint and stop. Search candidates alone are not verified citations. Do not manufacture citations to keep planning moving.
66
66
  6. Summarize the section goal, claims, evidence, manuscript artifact, dependencies, and open decisions at `config.gates.confirm_plan`.
67
67
  7. After the prerequisites pass, require `section-planner` in a bounded delegated pass to create one or more immutable Markdown `project://sections/{section}/plans/{plan}` artifacts. Each plan must declare:
68
68
  - stable section and plan identifiers;
@@ -54,7 +54,7 @@ Contract: [protocol/actions/research-gap.json](../../../actions/research-gap.jso
54
54
  - `standard`: run a focused, reproducible search across the most relevant categories;
55
55
  - `deep`: map foundational, recent, competing, gap-defining, and methodological work, including important disagreements and intellectual lineage.
56
56
  5. Form search questions and inclusion criteria before searching. Record databases or corpora, query strings, date, filters, and stopping rule.
57
- 6. Search authoritative scholarly sources only after disclosing and receiving approval for the external 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. Deduplicate candidates by persistent identifier, then normalized title.
57
+ 6. Search authoritative scholarly sources with bounded queries. Two routes need no second per-query author gate: a host connection the operator already configured and authorized for read-only public scholarly metadata search, or the bundled CiteNexus dispatcher in a host session explicitly set to full-auto for this research action when every selected provider is a free, no-key public index (`crossref`, `datacite`, `europe_pmc`, or `arxiv`). Record provider IDs, query strings, date, and result limits in the research artifact. Do not send unpublished manuscript text, private notes, or credentials as search terms. Outside those routes, first disclose the providers and bounded query set and obtain explicit author approval. The dispatcher runs only `citation-search --backend=cite-nexus` with an explicit `--providers` list; honor an operator-set offline flag or any host refusal. Returned results stay candidates, and this action performs no bibliography write. Deduplicate candidates by persistent identifier, then normalized title.
58
58
  7. Verify each retained source from its primary record or publication. Create a `project://sources/{source}` record with title, creators, year, source kind, identifiers, citation key, status, provenance, inspection depth, and verification time.
59
59
  8. Read enough of each source to distinguish its actual claim, method, population, result, and limitation. Do not cite an abstract-only impression as full-paper evidence.
60
60
  9. Create `project://evidence/{evidence}` separately for each retained claim-level interpretation, with relation, locator, limitations, confidence, and inspection depth. Synthesize by question rather than listing papers; identify consensus, disagreement, methodological differences, missing evidence, and defensible positioning.
@@ -8,7 +8,7 @@ Contract: [protocol/actions/write-section.json](../../../actions/write-section.j
8
8
 
9
9
  1. Require an exact `project://sections/{section}/plans/{plan}` artifact linked from `project://sections/{section}` and verify its declared inputs, outputs, dependencies, validation, and approval state.
10
10
  2. If a corresponding summary or manuscript output exists, show the overwrite or merge impact and require explicit re-execution approval.
11
- 3. Read the plan, `project://manifest`, `project://state`, `project://decisions`, `project://structure/outline`, section context and research, relevant source/evidence records, and enough neighboring prose to maintain continuity.
11
+ 3. Read the plan, `project://manifest`, `project://state`, `project://decisions`, `project://structure/outline`, section context and research, relevant source/evidence records, and enough neighboring prose to maintain continuity. For a literature-heavy section, require research and verified source/evidence coverage of the plan's factual claims before drafting. Route missing coverage through `research-gap` and a checkpoint; do not substitute model memory or search candidates for source records.
12
12
  4. Present the plan objective, output path, target words, evidence obligations, and checkpoints at the configured writing gate.
13
13
  5. Execute tasks in order against the exact `project://paper/{artifact}` output. For each task:
14
14
  - establish the paragraph or subsection's rhetorical job;
@@ -31,6 +31,6 @@ Run it with no argument, or with `list`, to print the declared command set as JS
31
31
  - `s2-search --query=<text> [--limit=<1-25>] [--year=<yyyy>] [--timeout=<seconds>]` → `citation.semantic-scholar` (network.fetch, network.search)
32
32
  - `rank <papers.json> [--intent=<seminal|recent|balanced>]` → `citation.rank` (no declared effects)
33
33
 
34
- For approved scholarly discovery, `citation-search --backend=cite-nexus --query="<topic>"` uses the separately installed `cite-nexus-wtfp` companion and its real MCP stdio server. Defaults are Crossref, DataCite and Europe PMC. Select optional vendors explicitly with `--providers`; include selected providers and query scope in the action approval. CiteNexus supports only balanced provider ordering, so omit `--intent` or use `--intent=balanced`. Results remain candidates: retain `citeNexus.sources`, field attribution, metrics, warnings and `metadata.errors`; do not infer verification or combine citation counts. The result limit is a displayed total; `metadata.total` counts the fetched deduplicated page, not the full corpus. Unavailable enrichment fails explicitly without falling back to another vendor. `WTFP_CITE_NEXUS_COMMAND` may name an absolute installed companion executable; it is operator configuration, never source content. No package is installed, server registered, or user profile changed by a tool call. Offline mode refuses this backend before process launch. Host capability blockers still apply.
34
+ For declared scholarly discovery, `citation-search --backend=cite-nexus --query="<topic>"` uses the separately installed `cite-nexus-wtfp` companion and its real MCP stdio server. Defaults are Crossref, DataCite and Europe PMC. Select providers explicitly with `--providers`. The `research-gap` full-auto route may use only free no-key public indexes (`crossref`, `datacite`, `europe_pmc`, `arxiv`) without another per-query gate; other routes require action approval naming providers and query scope. CiteNexus supports only balanced provider ordering, so omit `--intent` or use `--intent=balanced`. Results remain candidates: retain `citeNexus.sources`, field attribution, metrics, warnings and `metadata.errors`; do not infer verification or combine citation counts. The result limit is a displayed total; `metadata.total` counts the fetched deduplicated page, not the full corpus. Unavailable enrichment fails explicitly without falling back to another vendor. `WTFP_CITE_NEXUS_COMMAND` may name an absolute installed companion executable; it is operator configuration, never source content. No package is installed, server registered, or user profile changed by a tool call. Offline mode refuses this backend before process launch. Host capability blockers still apply.
35
35
 
36
36
  Every command prints one JSON document on stdout and reports failures as `{"error": "..."}` on stderr with exit status 1. Queries are capped at 512 characters, file paths at 4096, and result limits at 25. A symlinked file is accepted and read through its resolved target, which must be a regular file. Commands whose effects include `network.*` perform outbound requests to the declared scholarly indexes; pass `--offline` or set `WTFP_TOOL_OFFLINE=1` to refuse them, which is the mechanical form of "do not invoke a network-capable bibliography tool through a filesystem-only permission path". Each network command has a hard wall clock, `--timeout=<seconds>` (default 20, maximum 600); on expiry it reports `{"error": "<command> timed out after N s"}` on stderr and exits 124. `bib-impact` reports batch progress on stderr. `bib-index` flags repeated keys with `duplicate: true` and lists them under `duplicates`; `--key` refuses an ambiguous key. `bib-format` emits a standard BibTeX entry (`@article`, `@inproceedings`, ...) by default; `--style=al-folio` selects the Jekyll al-folio projection, which is not valid BibTeX. Do not execute any other module in this package directly, and do not pass a logical `project://` or `wtfp://` URI as a shell argument.
@@ -0,0 +1 @@
1
+ {"type":"commonjs"}
@@ -24,8 +24,9 @@ Manuscript prose and supporting context, research, plan, review, summary, handof
24
24
  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.
25
25
  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.
26
26
  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.
27
- 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.
28
- 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.
27
+ 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.
28
+ 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.
29
+ 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.
29
30
 
30
31
  ## Safety and completion
31
32
 
@@ -22,7 +22,7 @@ Manuscript prose and supporting context, research, plan, review, summary, handof
22
22
  ## Procedure
23
23
 
24
24
  1. Resolve the research question and section scope against locked/deferred decisions; agree on depth and source constraints.
25
- 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.
25
+ 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.
26
26
  3. Synthesize supported, conflicting, and missing evidence into a Markdown research artifact; link new records and disclose limitations.
27
27
 
28
28
  ## Bundled tool execution
@@ -33,7 +33,7 @@ The declared `tool.execute` effect authorises exactly one command, run from the
33
33
  node protocol://tools/wtfp-tool.js [--offline] <command> [arguments]
34
34
  ```
35
35
 
36
- Run it with `list` first to read the declared commands, their arguments, their bounds, and the effects each one applies; `protocol://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.
36
+ Run it with `list` first to read the declared commands, their arguments, their bounds, and the effects each one applies; `protocol://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.
37
37
 
38
38
  ## Safety and completion
39
39
 
@@ -22,7 +22,7 @@ Manuscript prose and supporting context, research, plan, review, summary, handof
22
22
  ## Procedure
23
23
 
24
24
  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.
25
- 2. Draft only the declared manuscript artifact; cite only resolvable sources, preserve author constraints, and stop at blocking decisions.
25
+ 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.
26
26
  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.
27
27
  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.
28
28
  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.
@@ -2,7 +2,7 @@
2
2
  "schema": "wtfp.generated-adapter/v1",
3
3
  "generatorVersion": 5,
4
4
  "target": "opencode",
5
- "sourceHash": "65bebd0311978db810467a6ee777df2c91770e8ab2dcdb16714107a2a3e8df53",
5
+ "sourceHash": "e4ca25636ced7d6fee6312f9edce382aaa7207945e3280a57fc4bcc561568b63",
6
6
  "files": [
7
7
  {
8
8
  "path": "actions/add-todo.json",
@@ -118,7 +118,7 @@
118
118
  },
119
119
  {
120
120
  "path": "actions/research-gap.json",
121
- "sha256": "80659531e18fb60dd46620c8b35aa27ce0f966c467f0d3073ae8c6519084153e"
121
+ "sha256": "0c26fa663f1d2526cbefcc9750b0a176ddf1ca538a46585a1de48c763fbb1a13"
122
122
  },
123
123
  {
124
124
  "path": "actions/resume-writing.json",
@@ -178,7 +178,7 @@
178
178
  },
179
179
  {
180
180
  "path": "agents/wtfp/research-synthesizer.md",
181
- "sha256": "ae63d3170606cf0aa9486e2780cd4fbdcb78aad1abe8dea4caab435e2ca6ed39"
181
+ "sha256": "72e2c5cfda7e838948e85909829ecf1290a17400cf9beac95b16bd4c03e1e075"
182
182
  },
183
183
  {
184
184
  "path": "agents/wtfp/section-planner.md",
@@ -242,11 +242,11 @@
242
242
  },
243
243
  {
244
244
  "path": "commands/wtfp/discuss-section.md",
245
- "sha256": "8dea1e8c77578eda07df8791b60ec705525017658128fecd5b0e9b220ddce701"
245
+ "sha256": "a09545263a592269938bd08a22f9bf57eace44b426d6cd0c214eb545b26e5299"
246
246
  },
247
247
  {
248
248
  "path": "commands/wtfp/execute-outline.md",
249
- "sha256": "ba871cd9bccb5c43e734fa99bf796ed08c1dbdf176e1802261ec2a1748819954"
249
+ "sha256": "eeac5d1fc2f103562ed54eedb493f129fb34af076aefa63a76f16cbed20689b1"
250
250
  },
251
251
  {
252
252
  "path": "commands/wtfp/export-latex.md",
@@ -258,11 +258,11 @@
258
258
  },
259
259
  {
260
260
  "path": "commands/wtfp/insert-section.md",
261
- "sha256": "00fda18dc2e457cd0f33ba3bb5d67e23fc8cd5f7bd4b0ea01d18250466888bab"
261
+ "sha256": "573bc5eee9cc0f7e7ac8ae4c64d407d35b48e7488dfec94bc112a1a689409a3b"
262
262
  },
263
263
  {
264
264
  "path": "commands/wtfp/list-assumptions.md",
265
- "sha256": "14819e3a3126d3c069142e6ed2e6320a36c353b54b6506da5edf1558633eb3aa"
265
+ "sha256": "fa52b0242206b6eb48fc90da0fa5f9027a2406afadec421f31d7eaf0fdf5af8a"
266
266
  },
267
267
  {
268
268
  "path": "commands/wtfp/map-project.md",
@@ -282,11 +282,11 @@
282
282
  },
283
283
  {
284
284
  "path": "commands/wtfp/plan-revision.md",
285
- "sha256": "f38a02759d8457e535145f463117db3b631012efdfc3eef3559e9e4b82226b4b"
285
+ "sha256": "555138157af0ae51850e883ac15953402b0ede8785246079f09f20387a547bb1"
286
286
  },
287
287
  {
288
288
  "path": "commands/wtfp/plan-section.md",
289
- "sha256": "8d57631cd0f40a3374c61865f29e6804f0d294eb511f520ace552db5ccf25e27"
289
+ "sha256": "3c11e88eba43b1b970068dfbdb60d76c4fb8d041a0768c535bfbd760d4d3d8ec"
290
290
  },
291
291
  {
292
292
  "path": "commands/wtfp/polish-prose.md",
@@ -298,7 +298,7 @@
298
298
  },
299
299
  {
300
300
  "path": "commands/wtfp/quick.md",
301
- "sha256": "9fd0409372abaa8074c1464475103d02477460962b69e3c4a707fce79350db2f"
301
+ "sha256": "c2d93c2504dbba2aebbcafa2311c628b9173e7c207b2a0133d8323cf8fbe2d2e"
302
302
  },
303
303
  {
304
304
  "path": "commands/wtfp/remove-section.md",
@@ -342,7 +342,7 @@
342
342
  },
343
343
  {
344
344
  "path": "commands/wtfp/write-section.md",
345
- "sha256": "4990768332e7b713cecabc96e2f4fc0f1579b2cf45bda5912834f601900602e8"
345
+ "sha256": "3e204fe76ce2a3faaf0eac37ad5895a3b1fee1d28247a2e32ccab1dca14b9f9a"
346
346
  },
347
347
  {
348
348
  "path": "compatibility/action-availability.json",
@@ -482,7 +482,7 @@
482
482
  },
483
483
  {
484
484
  "path": "roles/research-synthesizer.md",
485
- "sha256": "011feaa1fdb967c267713f4fa4b0c45b27e66a62f71d1f24c4f44360442aef57"
485
+ "sha256": "7aa6922f5f819918374b1a87dbda5c12fa6d424be64fc13b4019c380e011306c"
486
486
  },
487
487
  {
488
488
  "path": "roles/section-planner.md",
@@ -550,7 +550,7 @@
550
550
  },
551
551
  {
552
552
  "path": "skills/wtfp-plan-section/references/actions.md",
553
- "sha256": "02a9e560970091cde2053fbcd765e68046a828b08bdf8abda2c0e72b0330ad2b"
553
+ "sha256": "bda6fee21d51a21c0e33d6c149ac5b34ea1569a270d576655953630c750996c0"
554
554
  },
555
555
  {
556
556
  "path": "skills/wtfp-plan-section/SKILL.md",
@@ -562,7 +562,7 @@
562
562
  },
563
563
  {
564
564
  "path": "skills/wtfp-research-literature/references/actions.md",
565
- "sha256": "ebe21c6facfa34a6a99e61cbd8b48190164286cf897fdc1179c01dda5702915d"
565
+ "sha256": "2f88bf10948007f582774275b81c93d0e3836d9819a72d1c69eb578dcb3f8144"
566
566
  },
567
567
  {
568
568
  "path": "skills/wtfp-research-literature/SKILL.md",
@@ -598,7 +598,7 @@
598
598
  },
599
599
  {
600
600
  "path": "skills/wtfp-write-section/references/actions.md",
601
- "sha256": "367b9144ce76b4e6116d9a2566c02070e80bbb57325a43bf5aa22447e6cb83f5"
601
+ "sha256": "1fe6f8d50a1abd7a0b338772560317404942874ddd67be458ca24182ea20f7a4"
602
602
  },
603
603
  {
604
604
  "path": "skills/wtfp-write-section/SKILL.md",
@@ -656,9 +656,13 @@
656
656
  "path": "tools/citation/semantic-scholar.js",
657
657
  "sha256": "df4c1f3d69a28e06dd5285ba46c116bb2731aa940e16b9438c822846f38646f5"
658
658
  },
659
+ {
660
+ "path": "tools/package.json",
661
+ "sha256": "dbf8353f77358bc12169b7bb7301e1978d5b503e002ee927229a8993672818fc"
662
+ },
659
663
  {
660
664
  "path": "tools/README.md",
661
- "sha256": "997889703a61599a3d6267b1ddbd571ac354b55e7fe3a9dc2ebbf00b6c6d2106"
665
+ "sha256": "eb99d2ef30209b409e8c0dbfccaabdf301b6bc50f17013cd8fa381c3c1d69ae2"
662
666
  },
663
667
  {
664
668
  "path": "tools/support/cite-nexus-client.js",
@@ -754,7 +758,7 @@
754
758
  },
755
759
  {
756
760
  "path": "workflows/plan-section.md",
757
- "sha256": "02311226aa784dea4a6a5219ef59fcea6c904f92566318e3327aa4e883228446"
761
+ "sha256": "831c20c8afd147a8ba149a46f54591b6f07732983ee916a56c66701c8c701aa2"
758
762
  },
759
763
  {
760
764
  "path": "workflows/polish-prose.md",
@@ -782,7 +786,7 @@
782
786
  },
783
787
  {
784
788
  "path": "workflows/research-gap.md",
785
- "sha256": "a1736edb7e739708a92e5ef11c2d7c7a87fe8e6e4d6586e8ce9b1db3ae5bb428"
789
+ "sha256": "02ffe236ba7de12e4b3abbac308c0e1cfc409147147d509616b95baec3fef012"
786
790
  },
787
791
  {
788
792
  "path": "workflows/resume-writing.md",
@@ -810,7 +814,7 @@
810
814
  },
811
815
  {
812
816
  "path": "workflows/write-section.md",
813
- "sha256": "cfb3a0f9c61830d62cebdf8be5dacd17cef996d99cbab1df18267313ca05aacc"
817
+ "sha256": "5a2f0efcd11d7f41d941f54b80798ad481773820907fee68bea47f28b7af7bc3"
814
818
  }
815
819
  ]
816
820
  }
@@ -96,7 +96,7 @@
96
96
  },
97
97
  {
98
98
  "id": "user.gate",
99
- "scope": "the external providers, bounded query set, and research scope and depth"
99
+ "scope": "unapproved or paid external providers and bounded query set, plus author-owned research scope and depth decisions"
100
100
  }
101
101
  ]
102
102
  }
@@ -42,7 +42,7 @@ Investigate the literature needed to plan and write a specific section well. The
42
42
  ## Boundaries
43
43
 
44
44
  - This is a `mutation-report` role. It may write only the research and suggestion artifacts authorized by the invoking action.
45
- - When external literature search is approved, `citation-search` may run with `--backend=cite-nexus` and an explicit `--providers` list after the gate. Returned results stay candidates, and this role never performs a bibliography write.
45
+ - An operator-configured, trusted read-only CiteNexus MCP connection may search bounded public scholarly metadata without a second per-query gate. In an explicitly selected full-auto host session for this research action, `citation-search --backend=cite-nexus` may also search `crossref`, `datacite`, `europe_pmc`, or `arxiv` without another gate. Other providers or modes require explicit network approval naming providers and query bounds. Honor offline flags and host refusals. Returned results stay candidates, and this role never performs a bibliography write.
46
46
  - Never fabricate a citation, identifier, quotation, metadata field, source conclusion, or claim of exhaustive coverage.
47
47
  - Never overwrite an existing `project://sources/{source}` record. Additions remain provisional until identity and provenance are verified by an authorized action.
48
48
  - Do not explore alternatives that author decisions explicitly deferred or rejected.
@@ -172,7 +172,7 @@ Contract: [protocol/actions/plan-section.json](../../../actions/plan-section.jso
172
172
  2. Read the complete planning context before decomposing work: manifest, config, state, decisions, outline, section record, context, research, source/evidence records, relevant prior summaries, and the bounded `project://validations/*` collection.
173
173
  3. Before any specialist dispatch, filter the validation 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.
174
174
  4. 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.
175
- 5. If the section is literature-heavy and research obligations remain empty, offer `research-gap`; do not manufacture citations to keep planning moving.
175
+ 5. If the section is literature-heavy, require a section-specific research artifact and resolvable source/evidence records for its planned claims before dispatch or approval. Run `research-gap` with the configured CiteNexus backend when available; if coverage remains insufficient, record a research checkpoint and stop. Search candidates alone are not verified citations. Do not manufacture citations to keep planning moving.
176
176
  6. Summarize the section goal, claims, evidence, manuscript artifact, dependencies, and open decisions at `config.gates.confirm_plan`.
177
177
  7. After the prerequisites pass, require `section-planner` in a bounded delegated pass to create one or more immutable Markdown `project://sections/{section}/plans/{plan}` artifacts. Each plan must declare:
178
178
  - stable section and plan identifiers;
@@ -131,7 +131,7 @@ Contract: [protocol/actions/write-section.json](../../../actions/write-section.j
131
131
 
132
132
  1. Require an exact `project://sections/{section}/plans/{plan}` artifact linked from `project://sections/{section}` and verify its declared inputs, outputs, dependencies, validation, and approval state.
133
133
  2. If a corresponding summary or manuscript output exists, show the overwrite or merge impact and require explicit re-execution approval.
134
- 3. Read the plan, `project://manifest`, `project://state`, `project://decisions`, `project://structure/outline`, section context and research, relevant source/evidence records, and enough neighboring prose to maintain continuity.
134
+ 3. Read the plan, `project://manifest`, `project://state`, `project://decisions`, `project://structure/outline`, section context and research, relevant source/evidence records, and enough neighboring prose to maintain continuity. For a literature-heavy section, require research and verified source/evidence coverage of the plan's factual claims before drafting. Route missing coverage through `research-gap` and a checkpoint; do not substitute model memory or search candidates for source records.
135
135
  4. Present the plan objective, output path, target words, evidence obligations, and checkpoints at the configured writing gate.
136
136
  5. Execute tasks in order against the exact `project://paper/{artifact}` output. For each task:
137
137
  - establish the paragraph or subsection's rhetorical job;
@@ -172,7 +172,7 @@ Contract: [protocol/actions/plan-section.json](../../../actions/plan-section.jso
172
172
  2. Read the complete planning context before decomposing work: manifest, config, state, decisions, outline, section record, context, research, source/evidence records, relevant prior summaries, and the bounded `project://validations/*` collection.
173
173
  3. Before any specialist dispatch, filter the validation 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.
174
174
  4. 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.
175
- 5. If the section is literature-heavy and research obligations remain empty, offer `research-gap`; do not manufacture citations to keep planning moving.
175
+ 5. If the section is literature-heavy, require a section-specific research artifact and resolvable source/evidence records for its planned claims before dispatch or approval. Run `research-gap` with the configured CiteNexus backend when available; if coverage remains insufficient, record a research checkpoint and stop. Search candidates alone are not verified citations. Do not manufacture citations to keep planning moving.
176
176
  6. Summarize the section goal, claims, evidence, manuscript artifact, dependencies, and open decisions at `config.gates.confirm_plan`.
177
177
  7. After the prerequisites pass, require `section-planner` in a bounded delegated pass to create one or more immutable Markdown `project://sections/{section}/plans/{plan}` artifacts. Each plan must declare:
178
178
  - stable section and plan identifiers;
@@ -172,7 +172,7 @@ Contract: [protocol/actions/plan-section.json](../../../actions/plan-section.jso
172
172
  2. Read the complete planning context before decomposing work: manifest, config, state, decisions, outline, section record, context, research, source/evidence records, relevant prior summaries, and the bounded `project://validations/*` collection.
173
173
  3. Before any specialist dispatch, filter the validation 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.
174
174
  4. 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.
175
- 5. If the section is literature-heavy and research obligations remain empty, offer `research-gap`; do not manufacture citations to keep planning moving.
175
+ 5. If the section is literature-heavy, require a section-specific research artifact and resolvable source/evidence records for its planned claims before dispatch or approval. Run `research-gap` with the configured CiteNexus backend when available; if coverage remains insufficient, record a research checkpoint and stop. Search candidates alone are not verified citations. Do not manufacture citations to keep planning moving.
176
176
  6. Summarize the section goal, claims, evidence, manuscript artifact, dependencies, and open decisions at `config.gates.confirm_plan`.
177
177
  7. After the prerequisites pass, require `section-planner` in a bounded delegated pass to create one or more immutable Markdown `project://sections/{section}/plans/{plan}` artifacts. Each plan must declare:
178
178
  - stable section and plan identifiers;
@@ -172,7 +172,7 @@ Contract: [protocol/actions/plan-section.json](../../../actions/plan-section.jso
172
172
  2. Read the complete planning context before decomposing work: manifest, config, state, decisions, outline, section record, context, research, source/evidence records, relevant prior summaries, and the bounded `project://validations/*` collection.
173
173
  3. Before any specialist dispatch, filter the validation 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.
174
174
  4. 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.
175
- 5. If the section is literature-heavy and research obligations remain empty, offer `research-gap`; do not manufacture citations to keep planning moving.
175
+ 5. If the section is literature-heavy, require a section-specific research artifact and resolvable source/evidence records for its planned claims before dispatch or approval. Run `research-gap` with the configured CiteNexus backend when available; if coverage remains insufficient, record a research checkpoint and stop. Search candidates alone are not verified citations. Do not manufacture citations to keep planning moving.
176
176
  6. Summarize the section goal, claims, evidence, manuscript artifact, dependencies, and open decisions at `config.gates.confirm_plan`.
177
177
  7. After the prerequisites pass, require `section-planner` in a bounded delegated pass to create one or more immutable Markdown `project://sections/{section}/plans/{plan}` artifacts. Each plan must declare:
178
178
  - stable section and plan identifiers;
@@ -172,7 +172,7 @@ Contract: [protocol/actions/plan-section.json](../../../actions/plan-section.jso
172
172
  2. Read the complete planning context before decomposing work: manifest, config, state, decisions, outline, section record, context, research, source/evidence records, relevant prior summaries, and the bounded `project://validations/*` collection.
173
173
  3. Before any specialist dispatch, filter the validation 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.
174
174
  4. 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.
175
- 5. If the section is literature-heavy and research obligations remain empty, offer `research-gap`; do not manufacture citations to keep planning moving.
175
+ 5. If the section is literature-heavy, require a section-specific research artifact and resolvable source/evidence records for its planned claims before dispatch or approval. Run `research-gap` with the configured CiteNexus backend when available; if coverage remains insufficient, record a research checkpoint and stop. Search candidates alone are not verified citations. Do not manufacture citations to keep planning moving.
176
176
  6. Summarize the section goal, claims, evidence, manuscript artifact, dependencies, and open decisions at `config.gates.confirm_plan`.
177
177
  7. After the prerequisites pass, require `section-planner` in a bounded delegated pass to create one or more immutable Markdown `project://sections/{section}/plans/{plan}` artifacts. Each plan must declare:
178
178
  - stable section and plan identifiers;
@@ -255,8 +255,9 @@ Manuscript prose and supporting context, research, plan, review, summary, handof
255
255
  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.
256
256
  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.
257
257
  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.
258
- 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.
259
- 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.
258
+ 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.
259
+ 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.
260
+ 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.
260
261
 
261
262
  ## Safety and completion
262
263
 
@@ -131,7 +131,7 @@ Contract: [protocol/actions/write-section.json](../../../actions/write-section.j
131
131
 
132
132
  1. Require an exact `project://sections/{section}/plans/{plan}` artifact linked from `project://sections/{section}` and verify its declared inputs, outputs, dependencies, validation, and approval state.
133
133
  2. If a corresponding summary or manuscript output exists, show the overwrite or merge impact and require explicit re-execution approval.
134
- 3. Read the plan, `project://manifest`, `project://state`, `project://decisions`, `project://structure/outline`, section context and research, relevant source/evidence records, and enough neighboring prose to maintain continuity.
134
+ 3. Read the plan, `project://manifest`, `project://state`, `project://decisions`, `project://structure/outline`, section context and research, relevant source/evidence records, and enough neighboring prose to maintain continuity. For a literature-heavy section, require research and verified source/evidence coverage of the plan's factual claims before drafting. Route missing coverage through `research-gap` and a checkpoint; do not substitute model memory or search candidates for source records.
135
135
  4. Present the plan objective, output path, target words, evidence obligations, and checkpoints at the configured writing gate.
136
136
  5. Execute tasks in order against the exact `project://paper/{artifact}` output. For each task:
137
137
  - establish the paragraph or subsection's rhetorical job;
@@ -131,7 +131,7 @@ Contract: [protocol/actions/write-section.json](../../../actions/write-section.j
131
131
 
132
132
  1. Require an exact `project://sections/{section}/plans/{plan}` artifact linked from `project://sections/{section}` and verify its declared inputs, outputs, dependencies, validation, and approval state.
133
133
  2. If a corresponding summary or manuscript output exists, show the overwrite or merge impact and require explicit re-execution approval.
134
- 3. Read the plan, `project://manifest`, `project://state`, `project://decisions`, `project://structure/outline`, section context and research, relevant source/evidence records, and enough neighboring prose to maintain continuity.
134
+ 3. Read the plan, `project://manifest`, `project://state`, `project://decisions`, `project://structure/outline`, section context and research, relevant source/evidence records, and enough neighboring prose to maintain continuity. For a literature-heavy section, require research and verified source/evidence coverage of the plan's factual claims before drafting. Route missing coverage through `research-gap` and a checkpoint; do not substitute model memory or search candidates for source records.
135
135
  4. Present the plan objective, output path, target words, evidence obligations, and checkpoints at the configured writing gate.
136
136
  5. Execute tasks in order against the exact `project://paper/{artifact}` output. For each task:
137
137
  - establish the paragraph or subsection's rhetorical job;
@@ -204,7 +204,7 @@ Manuscript prose and supporting context, research, plan, review, summary, handof
204
204
  ## Procedure
205
205
 
206
206
  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.
207
- 2. Draft only the declared manuscript artifact; cite only resolvable sources, preserve author constraints, and stop at blocking decisions.
207
+ 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.
208
208
  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.
209
209
  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.
210
210
  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.
@@ -42,7 +42,7 @@ Investigate the literature needed to plan and write a specific section well. The
42
42
  ## Boundaries
43
43
 
44
44
  - This is a `mutation-report` role. It may write only the research and suggestion artifacts authorized by the invoking action.
45
- - When external literature search is approved, `citation-search` may run with `--backend=cite-nexus` and an explicit `--providers` list after the gate. Returned results stay candidates, and this role never performs a bibliography write.
45
+ - An operator-configured, trusted read-only CiteNexus MCP connection may search bounded public scholarly metadata without a second per-query gate. In an explicitly selected full-auto host session for this research action, `citation-search --backend=cite-nexus` may also search `crossref`, `datacite`, `europe_pmc`, or `arxiv` without another gate. Other providers or modes require explicit network approval naming providers and query bounds. Honor offline flags and host refusals. Returned results stay candidates, and this role never performs a bibliography write.
46
46
  - Never fabricate a citation, identifier, quotation, metadata field, source conclusion, or claim of exhaustive coverage.
47
47
  - Never overwrite an existing `project://sources/{source}` record. Additions remain provisional until identity and provenance are verified by an authorized action.
48
48
  - Do not explore alternatives that author decisions explicitly deferred or rejected.
@@ -62,7 +62,7 @@ Contract: [protocol/actions/plan-section.json](../../../actions/plan-section.jso
62
62
  2. Read the complete planning context before decomposing work: manifest, config, state, decisions, outline, section record, context, research, source/evidence records, relevant prior summaries, and the bounded `project://validations/*` collection.
63
63
  3. Before any specialist dispatch, filter the validation 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.
64
64
  4. 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.
65
- 5. If the section is literature-heavy and research obligations remain empty, offer `research-gap`; do not manufacture citations to keep planning moving.
65
+ 5. If the section is literature-heavy, require a section-specific research artifact and resolvable source/evidence records for its planned claims before dispatch or approval. Run `research-gap` with the configured CiteNexus backend when available; if coverage remains insufficient, record a research checkpoint and stop. Search candidates alone are not verified citations. Do not manufacture citations to keep planning moving.
66
66
  6. Summarize the section goal, claims, evidence, manuscript artifact, dependencies, and open decisions at `config.gates.confirm_plan`.
67
67
  7. After the prerequisites pass, require `section-planner` in a bounded delegated pass to create one or more immutable Markdown `project://sections/{section}/plans/{plan}` artifacts. Each plan must declare:
68
68
  - stable section and plan identifiers;
@@ -54,7 +54,7 @@ Contract: [protocol/actions/research-gap.json](../../../actions/research-gap.jso
54
54
  - `standard`: run a focused, reproducible search across the most relevant categories;
55
55
  - `deep`: map foundational, recent, competing, gap-defining, and methodological work, including important disagreements and intellectual lineage.
56
56
  5. Form search questions and inclusion criteria before searching. Record databases or corpora, query strings, date, filters, and stopping rule.
57
- 6. Search authoritative scholarly sources only after disclosing and receiving approval for the external 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. Deduplicate candidates by persistent identifier, then normalized title.
57
+ 6. Search authoritative scholarly sources with bounded queries. Two routes need no second per-query author gate: a host connection the operator already configured and authorized for read-only public scholarly metadata search, or the bundled CiteNexus dispatcher in a host session explicitly set to full-auto for this research action when every selected provider is a free, no-key public index (`crossref`, `datacite`, `europe_pmc`, or `arxiv`). Record provider IDs, query strings, date, and result limits in the research artifact. Do not send unpublished manuscript text, private notes, or credentials as search terms. Outside those routes, first disclose the providers and bounded query set and obtain explicit author approval. The dispatcher runs only `citation-search --backend=cite-nexus` with an explicit `--providers` list; honor an operator-set offline flag or any host refusal. Returned results stay candidates, and this action performs no bibliography write. Deduplicate candidates by persistent identifier, then normalized title.
58
58
  7. Verify each retained source from its primary record or publication. Create a `project://sources/{source}` record with title, creators, year, source kind, identifiers, citation key, status, provenance, inspection depth, and verification time.
59
59
  8. Read enough of each source to distinguish its actual claim, method, population, result, and limitation. Do not cite an abstract-only impression as full-paper evidence.
60
60
  9. Create `project://evidence/{evidence}` separately for each retained claim-level interpretation, with relation, locator, limitations, confidence, and inspection depth. Synthesize by question rather than listing papers; identify consensus, disagreement, methodological differences, missing evidence, and defensible positioning.
@@ -8,7 +8,7 @@ Contract: [protocol/actions/write-section.json](../../../actions/write-section.j
8
8
 
9
9
  1. Require an exact `project://sections/{section}/plans/{plan}` artifact linked from `project://sections/{section}` and verify its declared inputs, outputs, dependencies, validation, and approval state.
10
10
  2. If a corresponding summary or manuscript output exists, show the overwrite or merge impact and require explicit re-execution approval.
11
- 3. Read the plan, `project://manifest`, `project://state`, `project://decisions`, `project://structure/outline`, section context and research, relevant source/evidence records, and enough neighboring prose to maintain continuity.
11
+ 3. Read the plan, `project://manifest`, `project://state`, `project://decisions`, `project://structure/outline`, section context and research, relevant source/evidence records, and enough neighboring prose to maintain continuity. For a literature-heavy section, require research and verified source/evidence coverage of the plan's factual claims before drafting. Route missing coverage through `research-gap` and a checkpoint; do not substitute model memory or search candidates for source records.
12
12
  4. Present the plan objective, output path, target words, evidence obligations, and checkpoints at the configured writing gate.
13
13
  5. Execute tasks in order against the exact `project://paper/{artifact}` output. For each task:
14
14
  - establish the paragraph or subsection's rhetorical job;