@ahmed-g-gad/apothem 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (674) hide show
  1. package/CHANGELOG.md +60 -0
  2. package/LICENSE +21 -0
  3. package/LICENSES/MIT.txt +18 -0
  4. package/LICENSES/PSF-2.0.txt +47 -0
  5. package/README.md +549 -0
  6. package/bin/README.md +37 -0
  7. package/bin/apothem.mjs +78 -0
  8. package/package.json +75 -0
  9. package/pyproject.toml +347 -0
  10. package/src/apothem/README.md +52 -0
  11. package/src/apothem/__init__.py +66 -0
  12. package/src/apothem/__main__.py +28 -0
  13. package/src/apothem/_vendor/.keep +0 -0
  14. package/src/apothem/_vendor/__init__.py +25 -0
  15. package/src/apothem/_vendor/attr/__init__.py +104 -0
  16. package/src/apothem/_vendor/attr/__init__.pyi +389 -0
  17. package/src/apothem/_vendor/attr/_cmp.py +160 -0
  18. package/src/apothem/_vendor/attr/_cmp.pyi +13 -0
  19. package/src/apothem/_vendor/attr/_compat.py +99 -0
  20. package/src/apothem/_vendor/attr/_config.py +31 -0
  21. package/src/apothem/_vendor/attr/_funcs.py +497 -0
  22. package/src/apothem/_vendor/attr/_make.py +3406 -0
  23. package/src/apothem/_vendor/attr/_next_gen.py +674 -0
  24. package/src/apothem/_vendor/attr/_typing_compat.pyi +15 -0
  25. package/src/apothem/_vendor/attr/_version_info.py +89 -0
  26. package/src/apothem/_vendor/attr/_version_info.pyi +9 -0
  27. package/src/apothem/_vendor/attr/converters.py +162 -0
  28. package/src/apothem/_vendor/attr/converters.pyi +19 -0
  29. package/src/apothem/_vendor/attr/exceptions.py +95 -0
  30. package/src/apothem/_vendor/attr/exceptions.pyi +17 -0
  31. package/src/apothem/_vendor/attr/filters.py +72 -0
  32. package/src/apothem/_vendor/attr/filters.pyi +6 -0
  33. package/src/apothem/_vendor/attr/py.typed +0 -0
  34. package/src/apothem/_vendor/attr/setters.py +79 -0
  35. package/src/apothem/_vendor/attr/setters.pyi +20 -0
  36. package/src/apothem/_vendor/attr/validators.py +750 -0
  37. package/src/apothem/_vendor/attr/validators.pyi +140 -0
  38. package/src/apothem/_vendor/attr.LICENSE +21 -0
  39. package/src/apothem/_vendor/attrs/__init__.py +72 -0
  40. package/src/apothem/_vendor/attrs/__init__.pyi +314 -0
  41. package/src/apothem/_vendor/attrs/converters.py +3 -0
  42. package/src/apothem/_vendor/attrs/exceptions.py +3 -0
  43. package/src/apothem/_vendor/attrs/filters.py +3 -0
  44. package/src/apothem/_vendor/attrs/py.typed +0 -0
  45. package/src/apothem/_vendor/attrs/setters.py +3 -0
  46. package/src/apothem/_vendor/attrs/validators.py +3 -0
  47. package/src/apothem/_vendor/attrs.LICENSE +21 -0
  48. package/src/apothem/_vendor/jsonschema/__init__.py +120 -0
  49. package/src/apothem/_vendor/jsonschema/__main__.py +6 -0
  50. package/src/apothem/_vendor/jsonschema/_format.py +546 -0
  51. package/src/apothem/_vendor/jsonschema/_keywords.py +449 -0
  52. package/src/apothem/_vendor/jsonschema/_legacy_keywords.py +449 -0
  53. package/src/apothem/_vendor/jsonschema/_types.py +204 -0
  54. package/src/apothem/_vendor/jsonschema/_typing.py +29 -0
  55. package/src/apothem/_vendor/jsonschema/_utils.py +355 -0
  56. package/src/apothem/_vendor/jsonschema/benchmarks/__init__.py +5 -0
  57. package/src/apothem/_vendor/jsonschema/benchmarks/const_vs_enum.py +30 -0
  58. package/src/apothem/_vendor/jsonschema/benchmarks/contains.py +28 -0
  59. package/src/apothem/_vendor/jsonschema/benchmarks/import_benchmark.py +31 -0
  60. package/src/apothem/_vendor/jsonschema/benchmarks/issue232/issue.json +2653 -0
  61. package/src/apothem/_vendor/jsonschema/benchmarks/issue232.py +25 -0
  62. package/src/apothem/_vendor/jsonschema/benchmarks/json_schema_test_suite.py +12 -0
  63. package/src/apothem/_vendor/jsonschema/benchmarks/nested_schemas.py +56 -0
  64. package/src/apothem/_vendor/jsonschema/benchmarks/subcomponents.py +42 -0
  65. package/src/apothem/_vendor/jsonschema/benchmarks/unused_registry.py +35 -0
  66. package/src/apothem/_vendor/jsonschema/benchmarks/useless_applicator_schemas.py +106 -0
  67. package/src/apothem/_vendor/jsonschema/benchmarks/useless_keywords.py +32 -0
  68. package/src/apothem/_vendor/jsonschema/benchmarks/validator_creation.py +14 -0
  69. package/src/apothem/_vendor/jsonschema/cli.py +292 -0
  70. package/src/apothem/_vendor/jsonschema/exceptions.py +490 -0
  71. package/src/apothem/_vendor/jsonschema/protocols.py +230 -0
  72. package/src/apothem/_vendor/jsonschema/validators.py +1410 -0
  73. package/src/apothem/_vendor/jsonschema.LICENSE +19 -0
  74. package/src/apothem/_vendor/jsonschema_specifications/__init__.py +12 -0
  75. package/src/apothem/_vendor/jsonschema_specifications/_core.py +38 -0
  76. package/src/apothem/_vendor/jsonschema_specifications/schemas/draft201909/metaschema.json +42 -0
  77. package/src/apothem/_vendor/jsonschema_specifications/schemas/draft201909/vocabularies/applicator +56 -0
  78. package/src/apothem/_vendor/jsonschema_specifications/schemas/draft201909/vocabularies/content +17 -0
  79. package/src/apothem/_vendor/jsonschema_specifications/schemas/draft201909/vocabularies/core +57 -0
  80. package/src/apothem/_vendor/jsonschema_specifications/schemas/draft201909/vocabularies/format +14 -0
  81. package/src/apothem/_vendor/jsonschema_specifications/schemas/draft201909/vocabularies/meta-data +37 -0
  82. package/src/apothem/_vendor/jsonschema_specifications/schemas/draft201909/vocabularies/validation +98 -0
  83. package/src/apothem/_vendor/jsonschema_specifications/schemas/draft202012/metaschema.json +58 -0
  84. package/src/apothem/_vendor/jsonschema_specifications/schemas/draft202012/vocabularies/applicator +48 -0
  85. package/src/apothem/_vendor/jsonschema_specifications/schemas/draft202012/vocabularies/content +17 -0
  86. package/src/apothem/_vendor/jsonschema_specifications/schemas/draft202012/vocabularies/core +51 -0
  87. package/src/apothem/_vendor/jsonschema_specifications/schemas/draft202012/vocabularies/format-annotation +14 -0
  88. package/src/apothem/_vendor/jsonschema_specifications/schemas/draft202012/vocabularies/format-assertion +14 -0
  89. package/src/apothem/_vendor/jsonschema_specifications/schemas/draft202012/vocabularies/meta-data +37 -0
  90. package/src/apothem/_vendor/jsonschema_specifications/schemas/draft202012/vocabularies/unevaluated +15 -0
  91. package/src/apothem/_vendor/jsonschema_specifications/schemas/draft202012/vocabularies/validation +98 -0
  92. package/src/apothem/_vendor/jsonschema_specifications/schemas/draft3/metaschema.json +172 -0
  93. package/src/apothem/_vendor/jsonschema_specifications/schemas/draft4/metaschema.json +149 -0
  94. package/src/apothem/_vendor/jsonschema_specifications/schemas/draft6/metaschema.json +153 -0
  95. package/src/apothem/_vendor/jsonschema_specifications/schemas/draft7/metaschema.json +166 -0
  96. package/src/apothem/_vendor/jsonschema_specifications.LICENSE +19 -0
  97. package/src/apothem/_vendor/referencing/__init__.py +7 -0
  98. package/src/apothem/_vendor/referencing/_attrs.py +31 -0
  99. package/src/apothem/_vendor/referencing/_attrs.pyi +21 -0
  100. package/src/apothem/_vendor/referencing/_core.py +739 -0
  101. package/src/apothem/_vendor/referencing/exceptions.py +165 -0
  102. package/src/apothem/_vendor/referencing/jsonschema.py +642 -0
  103. package/src/apothem/_vendor/referencing/py.typed +0 -0
  104. package/src/apothem/_vendor/referencing/retrieval.py +94 -0
  105. package/src/apothem/_vendor/referencing/typing.py +61 -0
  106. package/src/apothem/_vendor/referencing.LICENSE +19 -0
  107. package/src/apothem/_vendor/rpds/__init__.py +251 -0
  108. package/src/apothem/_vendor/typing_extensions.LICENSE +279 -0
  109. package/src/apothem/_vendor/typing_extensions.py +4317 -0
  110. package/src/apothem/_vendor/vendor.txt +22 -0
  111. package/src/apothem/_vendor/yaml/__init__.py +389 -0
  112. package/src/apothem/_vendor/yaml/composer.py +138 -0
  113. package/src/apothem/_vendor/yaml/constructor.py +748 -0
  114. package/src/apothem/_vendor/yaml/cyaml.py +100 -0
  115. package/src/apothem/_vendor/yaml/dumper.py +61 -0
  116. package/src/apothem/_vendor/yaml/emitter.py +1137 -0
  117. package/src/apothem/_vendor/yaml/error.py +74 -0
  118. package/src/apothem/_vendor/yaml/events.py +85 -0
  119. package/src/apothem/_vendor/yaml/loader.py +63 -0
  120. package/src/apothem/_vendor/yaml/nodes.py +48 -0
  121. package/src/apothem/_vendor/yaml/parser.py +588 -0
  122. package/src/apothem/_vendor/yaml/reader.py +185 -0
  123. package/src/apothem/_vendor/yaml/representer.py +388 -0
  124. package/src/apothem/_vendor/yaml/resolver.py +226 -0
  125. package/src/apothem/_vendor/yaml/scanner.py +1435 -0
  126. package/src/apothem/_vendor/yaml/serializer.py +110 -0
  127. package/src/apothem/_vendor/yaml/tokens.py +103 -0
  128. package/src/apothem/_vendor/yaml.LICENSE +20 -0
  129. package/src/apothem/agents/README.md +60 -0
  130. package/src/apothem/agents/codebase-explorer.md +91 -0
  131. package/src/apothem/agents/convention-auditor.md +93 -0
  132. package/src/apothem/agents/dependency-auditor.md +97 -0
  133. package/src/apothem/agents/fact-checker.md +84 -0
  134. package/src/apothem/agents/mcp-builder.md +86 -0
  135. package/src/apothem/agents/memory-auditor.md +93 -0
  136. package/src/apothem/agents/prompt-evaluator.md +87 -0
  137. package/src/apothem/agents/quality-gate.md +103 -0
  138. package/src/apothem/agents/refactor-surgeon.md +74 -0
  139. package/src/apothem/agents/research-scout.md +73 -0
  140. package/src/apothem/agents/security-scanner.md +83 -0
  141. package/src/apothem/agents/test-runner.md +84 -0
  142. package/src/apothem/audit/README.md +73 -0
  143. package/src/apothem/audit/_scan_lib.py +182 -0
  144. package/src/apothem/audit/analyze_graph.py +260 -0
  145. package/src/apothem/audit/build_capability_graph.py +607 -0
  146. package/src/apothem/audit/build_inventory.py +657 -0
  147. package/src/apothem/audit/build_plans_provenance.py +997 -0
  148. package/src/apothem/audit/check_links.py +389 -0
  149. package/src/apothem/audit/classify_artifacts.py +381 -0
  150. package/src/apothem/audit/deprecated-tokens.txt +10 -0
  151. package/src/apothem/audit/execute_plans_migration.py +491 -0
  152. package/src/apothem/audit/known-projects.txt +15 -0
  153. package/src/apothem/audit/render_capability_index.py +467 -0
  154. package/src/apothem/audit/render_inventory.py +405 -0
  155. package/src/apothem/audit/scan_ai_surfaces.py +1125 -0
  156. package/src/apothem/audit/scan_ai_surfaces_coarse.py +261 -0
  157. package/src/apothem/audit/scan_drift_features.py +143 -0
  158. package/src/apothem/audit/scan_frontmatter.py +293 -0
  159. package/src/apothem/audit/scan_header_coverage.py +1134 -0
  160. package/src/apothem/audit/scan_plan_leakage.py +540 -0
  161. package/src/apothem/audit/scan_plans_discipline.py +188 -0
  162. package/src/apothem/audit/scan_secrets_pii.py +245 -0
  163. package/src/apothem/audit/scan_stale_tokens.py +296 -0
  164. package/src/apothem/audit/synthesize_drift.py +205 -0
  165. package/src/apothem/benchmarks/README.md +33 -0
  166. package/src/apothem/benchmarks/__init__.py +3 -0
  167. package/src/apothem/benchmarks/bench_agents.py +63 -0
  168. package/src/apothem/benchmarks/bench_hooks.py +93 -0
  169. package/src/apothem/benchmarks/bench_install.py +58 -0
  170. package/src/apothem/benchmarks/bench_tests.py +93 -0
  171. package/src/apothem/benchmarks/bench_validate_ecosystem.py +84 -0
  172. package/src/apothem/cli/README.md +33 -0
  173. package/src/apothem/cli/__init__.py +229 -0
  174. package/src/apothem/cli/_cmd_completion.py +88 -0
  175. package/src/apothem/cli/_cmd_diff.py +181 -0
  176. package/src/apothem/cli/_cmd_doctor.py +143 -0
  177. package/src/apothem/cli/_cmd_harnesses.py +167 -0
  178. package/src/apothem/cli/_cmd_install.py +327 -0
  179. package/src/apothem/cli/_cmd_migrate_workspace.py +143 -0
  180. package/src/apothem/cli/_cmd_profile.py +341 -0
  181. package/src/apothem/cli/_cmd_status.py +180 -0
  182. package/src/apothem/cli/_cmd_uninstall.py +215 -0
  183. package/src/apothem/cli/_cmd_update.py +397 -0
  184. package/src/apothem/cli/_cmd_verify.py +194 -0
  185. package/src/apothem/cli/_common_flags.py +90 -0
  186. package/src/apothem/cli/_epilogs.py +296 -0
  187. package/src/apothem/cli/_helpers.py +857 -0
  188. package/src/apothem/cli/_json_formatter.py +21 -0
  189. package/src/apothem/cli/_materialize.py +376 -0
  190. package/src/apothem/cli/completions/apothem.bash +30 -0
  191. package/src/apothem/cli/completions/apothem.fish +19 -0
  192. package/src/apothem/cli/completions/apothem.ps1 +27 -0
  193. package/src/apothem/cli/completions/apothem.zsh +42 -0
  194. package/src/apothem/cli/reference_export.py +126 -0
  195. package/src/apothem/commands/README.md +125 -0
  196. package/src/apothem/commands/a11y-audit.md +203 -0
  197. package/src/apothem/commands/architecture-review.md +194 -0
  198. package/src/apothem/commands/audit.md +165 -0
  199. package/src/apothem/commands/code-audit.md +218 -0
  200. package/src/apothem/commands/code-review.md +193 -0
  201. package/src/apothem/commands/dependency-audit.md +209 -0
  202. package/src/apothem/commands/docs-review.md +199 -0
  203. package/src/apothem/commands/elevate.md +285 -0
  204. package/src/apothem/commands/eval.md +149 -0
  205. package/src/apothem/commands/fortress.md +172 -0
  206. package/src/apothem/commands/freshify.md +168 -0
  207. package/src/apothem/commands/github-deploy-fresh.md +178 -0
  208. package/src/apothem/commands/github-deploy-next.md +167 -0
  209. package/src/apothem/commands/perf-audit.md +198 -0
  210. package/src/apothem/commands/plan-amend.md +104 -0
  211. package/src/apothem/commands/plan-audit.md +127 -0
  212. package/src/apothem/commands/plan-design.md +257 -0
  213. package/src/apothem/commands/plan-execute.md +495 -0
  214. package/src/apothem/commands/plan-generate.md +351 -0
  215. package/src/apothem/commands/plan-review.md +555 -0
  216. package/src/apothem/commands/plan-spec.md +359 -0
  217. package/src/apothem/commands/plan-status.md +222 -0
  218. package/src/apothem/commands/plan.md +173 -0
  219. package/src/apothem/commands/projectify.md +142 -0
  220. package/src/apothem/commands/release-readiness.md +142 -0
  221. package/src/apothem/commands/research-analysis.md +241 -0
  222. package/src/apothem/commands/research-design.md +231 -0
  223. package/src/apothem/commands/research-disseminate.md +225 -0
  224. package/src/apothem/commands/research-experiment.md +232 -0
  225. package/src/apothem/commands/research-ideate.md +213 -0
  226. package/src/apothem/commands/research-paper.md +252 -0
  227. package/src/apothem/commands/research-proposal.md +220 -0
  228. package/src/apothem/commands/research-publish.md +255 -0
  229. package/src/apothem/commands/research-review.md +251 -0
  230. package/src/apothem/commands/research-sources.md +266 -0
  231. package/src/apothem/commands/research-spec.md +255 -0
  232. package/src/apothem/commands/research-synthesis.md +233 -0
  233. package/src/apothem/commands/research-theory.md +218 -0
  234. package/src/apothem/commands/research.md +181 -0
  235. package/src/apothem/commands/security-audit.md +196 -0
  236. package/src/apothem/commands/supply-chain-audit.md +192 -0
  237. package/src/apothem/commands/test-suite.md +146 -0
  238. package/src/apothem/commands/threat-model-audit.md +199 -0
  239. package/src/apothem/commands/ux-review.md +202 -0
  240. package/src/apothem/commands/workflow.md +162 -0
  241. package/src/apothem/conformity/README.md +173 -0
  242. package/src/apothem/conformity/__init__.py +1 -0
  243. package/src/apothem/conformity/_grep_base.py +93 -0
  244. package/src/apothem/conformity/agent_capability_grep.py +306 -0
  245. package/src/apothem/conformity/agents_md_coverage_grep.py +382 -0
  246. package/src/apothem/conformity/agnosticism_grep.py +311 -0
  247. package/src/apothem/conformity/always_on_budget_grep.py +318 -0
  248. package/src/apothem/conformity/bare_except_grep.py +115 -0
  249. package/src/apothem/conformity/binding_reciprocity_grep.py +151 -0
  250. package/src/apothem/conformity/brand_mark_grep.py +272 -0
  251. package/src/apothem/conformity/commented_out_code_grep.py +176 -0
  252. package/src/apothem/conformity/completion_claim_grep.py +169 -0
  253. package/src/apothem/conformity/conventional_commit_grep.py +319 -0
  254. package/src/apothem/conformity/copilot_instructions_presence_grep.py +324 -0
  255. package/src/apothem/conformity/cross_platform_matrix_grep.py +297 -0
  256. package/src/apothem/conformity/determinism_grep.py +306 -0
  257. package/src/apothem/conformity/diagram_staleness_grep.py +154 -0
  258. package/src/apothem/conformity/dynamism_grep.py +284 -0
  259. package/src/apothem/conformity/editorconfig_presence_grep.py +281 -0
  260. package/src/apothem/conformity/file_header_grep.py +502 -0
  261. package/src/apothem/conformity/freshness_token_grep.py +233 -0
  262. package/src/apothem/conformity/frontmatter_grep.py +274 -0
  263. package/src/apothem/conformity/frontmatter_value_grep.py +386 -0
  264. package/src/apothem/conformity/gate.py +1386 -0
  265. package/src/apothem/conformity/gitattributes_presence_grep.py +238 -0
  266. package/src/apothem/conformity/harden_runner_grep.py +320 -0
  267. package/src/apothem/conformity/hedging_grep.py +129 -0
  268. package/src/apothem/conformity/license_author_consistency_grep.py +204 -0
  269. package/src/apothem/conformity/link_check.py +327 -0
  270. package/src/apothem/conformity/magic_number_grep.py +182 -0
  271. package/src/apothem/conformity/multi_surface_coherence_grep.py +620 -0
  272. package/src/apothem/conformity/naming_grep.py +224 -0
  273. package/src/apothem/conformity/no_global_plans_grep.py +339 -0
  274. package/src/apothem/conformity/no_toplevel_docs_grep.py +120 -0
  275. package/src/apothem/conformity/oidc_trusted_publishing_grep.py +291 -0
  276. package/src/apothem/conformity/option_annotation_grep.py +352 -0
  277. package/src/apothem/conformity/orphan_output_grep.py +206 -0
  278. package/src/apothem/conformity/permissions_minimum_scope_grep.py +299 -0
  279. package/src/apothem/conformity/plain_language_grep.py +559 -0
  280. package/src/apothem/conformity/plan_next_step_consistency_grep.py +450 -0
  281. package/src/apothem/conformity/plan_suite_structure_grep.py +534 -0
  282. package/src/apothem/conformity/plans_discipline_language_grep.py +245 -0
  283. package/src/apothem/conformity/production_ready_pr_grep.py +200 -0
  284. package/src/apothem/conformity/recommend_next_step_grep.py +250 -0
  285. package/src/apothem/conformity/redundancy_grep.py +401 -0
  286. package/src/apothem/conformity/reference_token_grep.py +230 -0
  287. package/src/apothem/conformity/registry_capability_consistency_grep.py +368 -0
  288. package/src/apothem/conformity/secret_leak_grep.py +193 -0
  289. package/src/apothem/conformity/semver_stability_grep.py +358 -0
  290. package/src/apothem/conformity/smoke_install_grep.py +194 -0
  291. package/src/apothem/conformity/static_version_grep.py +284 -0
  292. package/src/apothem/conformity/token_efficiency_grep.py +185 -0
  293. package/src/apothem/conformity/unpinned_action_grep.py +115 -0
  294. package/src/apothem/conformity/user_confirm_grep.py +74 -0
  295. package/src/apothem/conformity/workflow_concurrency_grep.py +283 -0
  296. package/src/apothem/harnesses/README.md +63 -0
  297. package/src/apothem/harnesses/__init__.py +16 -0
  298. package/src/apothem/harnesses/_shared/README.md +36 -0
  299. package/src/apothem/harnesses/_shared/__init__.py +12 -0
  300. package/src/apothem/harnesses/_shared/install_driver.py +281 -0
  301. package/src/apothem/harnesses/_shared/install_driver_apply.py +612 -0
  302. package/src/apothem/harnesses/_shared/install_driver_backup.py +535 -0
  303. package/src/apothem/harnesses/_shared/install_driver_converters.py +310 -0
  304. package/src/apothem/harnesses/_shared/install_driver_lifecycle.py +495 -0
  305. package/src/apothem/harnesses/_shared/install_driver_materialize.py +675 -0
  306. package/src/apothem/harnesses/_shared/install_driver_merge.py +656 -0
  307. package/src/apothem/harnesses/_shared/install_driver_pathsafety.py +137 -0
  308. package/src/apothem/harnesses/_shared/install_driver_planvalidation.py +240 -0
  309. package/src/apothem/harnesses/_shared/install_driver_removal.py +366 -0
  310. package/src/apothem/harnesses/_shared/install_driver_treeops.py +248 -0
  311. package/src/apothem/harnesses/_shared/install_driver_types.py +330 -0
  312. package/src/apothem/harnesses/_shared/wrapper_factories.py +448 -0
  313. package/src/apothem/harnesses/antigravity/STANDARD-CONVENTION-PIN.md +91 -0
  314. package/src/apothem/harnesses/antigravity/__init__.py +70 -0
  315. package/src/apothem/harnesses/antigravity/capabilities.yml +40 -0
  316. package/src/apothem/harnesses/antigravity/install.py +63 -0
  317. package/src/apothem/harnesses/antigravity/templates/GEMINI.md +40 -0
  318. package/src/apothem/harnesses/antigravity/templates/plugin.json +5 -0
  319. package/src/apothem/harnesses/antigravity/uninstall.py +22 -0
  320. package/src/apothem/harnesses/antigravity/update.py +10 -0
  321. package/src/apothem/harnesses/antigravity/verify.py +11 -0
  322. package/src/apothem/harnesses/claude_code/STANDARD-CONVENTION-PIN.md +65 -0
  323. package/src/apothem/harnesses/claude_code/__init__.py +107 -0
  324. package/src/apothem/harnesses/claude_code/capabilities.yml +42 -0
  325. package/src/apothem/harnesses/claude_code/install.py +147 -0
  326. package/src/apothem/harnesses/claude_code/templates/settings.json +351 -0
  327. package/src/apothem/harnesses/claude_code/uninstall.py +23 -0
  328. package/src/apothem/harnesses/claude_code/update.py +10 -0
  329. package/src/apothem/harnesses/claude_code/verify.py +11 -0
  330. package/src/apothem/harnesses/codebuddy/STANDARD-CONVENTION-PIN.md +74 -0
  331. package/src/apothem/harnesses/codebuddy/__init__.py +49 -0
  332. package/src/apothem/harnesses/codebuddy/capabilities.yml +34 -0
  333. package/src/apothem/harnesses/codebuddy/install.py +40 -0
  334. package/src/apothem/harnesses/codebuddy/templates/apothem-rules.md +37 -0
  335. package/src/apothem/harnesses/codebuddy/uninstall.py +25 -0
  336. package/src/apothem/harnesses/codebuddy/update.py +10 -0
  337. package/src/apothem/harnesses/codebuddy/verify.py +11 -0
  338. package/src/apothem/harnesses/codex/STANDARD-CONVENTION-PIN.md +79 -0
  339. package/src/apothem/harnesses/codex/__init__.py +72 -0
  340. package/src/apothem/harnesses/codex/capabilities.yml +40 -0
  341. package/src/apothem/harnesses/codex/install.py +69 -0
  342. package/src/apothem/harnesses/codex/templates/AGENTS.md +40 -0
  343. package/src/apothem/harnesses/codex/templates/hooks.json +127 -0
  344. package/src/apothem/harnesses/codex/uninstall.py +23 -0
  345. package/src/apothem/harnesses/codex/update.py +10 -0
  346. package/src/apothem/harnesses/codex/verify.py +11 -0
  347. package/src/apothem/harnesses/cursor/STANDARD-CONVENTION-PIN.md +79 -0
  348. package/src/apothem/harnesses/cursor/__init__.py +48 -0
  349. package/src/apothem/harnesses/cursor/capabilities.yml +42 -0
  350. package/src/apothem/harnesses/cursor/install.py +38 -0
  351. package/src/apothem/harnesses/cursor/templates/apothem-rules.mdc +40 -0
  352. package/src/apothem/harnesses/cursor/uninstall.py +25 -0
  353. package/src/apothem/harnesses/cursor/update.py +10 -0
  354. package/src/apothem/harnesses/cursor/verify.py +11 -0
  355. package/src/apothem/harnesses/gemini_cli/STANDARD-CONVENTION-PIN.md +102 -0
  356. package/src/apothem/harnesses/gemini_cli/__init__.py +52 -0
  357. package/src/apothem/harnesses/gemini_cli/capabilities.yml +43 -0
  358. package/src/apothem/harnesses/gemini_cli/install.py +43 -0
  359. package/src/apothem/harnesses/gemini_cli/templates/GEMINI.md +38 -0
  360. package/src/apothem/harnesses/gemini_cli/uninstall.py +25 -0
  361. package/src/apothem/harnesses/gemini_cli/update.py +10 -0
  362. package/src/apothem/harnesses/gemini_cli/verify.py +11 -0
  363. package/src/apothem/harnesses/github_copilot/STANDARD-CONVENTION-PIN.md +84 -0
  364. package/src/apothem/harnesses/github_copilot/__init__.py +47 -0
  365. package/src/apothem/harnesses/github_copilot/capabilities.yml +42 -0
  366. package/src/apothem/harnesses/github_copilot/install.py +40 -0
  367. package/src/apothem/harnesses/github_copilot/templates/copilot-instructions.md +33 -0
  368. package/src/apothem/harnesses/github_copilot/uninstall.py +25 -0
  369. package/src/apothem/harnesses/github_copilot/update.py +10 -0
  370. package/src/apothem/harnesses/github_copilot/verify.py +11 -0
  371. package/src/apothem/harnesses/glm/STANDARD-CONVENTION-PIN.md +77 -0
  372. package/src/apothem/harnesses/glm/__init__.py +56 -0
  373. package/src/apothem/harnesses/glm/capabilities.yml +33 -0
  374. package/src/apothem/harnesses/glm/install.py +45 -0
  375. package/src/apothem/harnesses/glm/templates/glm.toml +58 -0
  376. package/src/apothem/harnesses/glm/uninstall.py +25 -0
  377. package/src/apothem/harnesses/glm/update.py +10 -0
  378. package/src/apothem/harnesses/glm/verify.py +11 -0
  379. package/src/apothem/harnesses/hermes/STANDARD-CONVENTION-PIN.md +57 -0
  380. package/src/apothem/harnesses/hermes/__init__.py +33 -0
  381. package/src/apothem/harnesses/hermes/capabilities.yml +36 -0
  382. package/src/apothem/harnesses/hermes/install.py +17 -0
  383. package/src/apothem/harnesses/hermes/materializer.py +35 -0
  384. package/src/apothem/harnesses/hermes/uninstall.py +33 -0
  385. package/src/apothem/harnesses/hermes/update.py +10 -0
  386. package/src/apothem/harnesses/hermes/verify.py +11 -0
  387. package/src/apothem/harnesses/kimi_code/STANDARD-CONVENTION-PIN.md +128 -0
  388. package/src/apothem/harnesses/kimi_code/__init__.py +59 -0
  389. package/src/apothem/harnesses/kimi_code/capabilities.yml +40 -0
  390. package/src/apothem/harnesses/kimi_code/install.py +42 -0
  391. package/src/apothem/harnesses/kimi_code/templates/AGENTS.md +43 -0
  392. package/src/apothem/harnesses/kimi_code/uninstall.py +27 -0
  393. package/src/apothem/harnesses/kimi_code/update.py +10 -0
  394. package/src/apothem/harnesses/kimi_code/verify.py +11 -0
  395. package/src/apothem/harnesses/kiro/STANDARD-CONVENTION-PIN.md +77 -0
  396. package/src/apothem/harnesses/kiro/__init__.py +49 -0
  397. package/src/apothem/harnesses/kiro/capabilities.yml +36 -0
  398. package/src/apothem/harnesses/kiro/install.py +39 -0
  399. package/src/apothem/harnesses/kiro/templates/apothem-rules.md +36 -0
  400. package/src/apothem/harnesses/kiro/uninstall.py +25 -0
  401. package/src/apothem/harnesses/kiro/update.py +10 -0
  402. package/src/apothem/harnesses/kiro/verify.py +11 -0
  403. package/src/apothem/harnesses/open_claw/STANDARD-CONVENTION-PIN.md +62 -0
  404. package/src/apothem/harnesses/open_claw/__init__.py +35 -0
  405. package/src/apothem/harnesses/open_claw/capabilities.yml +35 -0
  406. package/src/apothem/harnesses/open_claw/install.py +17 -0
  407. package/src/apothem/harnesses/open_claw/materializer.py +36 -0
  408. package/src/apothem/harnesses/open_claw/uninstall.py +32 -0
  409. package/src/apothem/harnesses/open_claw/update.py +10 -0
  410. package/src/apothem/harnesses/open_claw/verify.py +11 -0
  411. package/src/apothem/harnesses/opencode/STANDARD-CONVENTION-PIN.md +76 -0
  412. package/src/apothem/harnesses/opencode/__init__.py +35 -0
  413. package/src/apothem/harnesses/opencode/capabilities.yml +43 -0
  414. package/src/apothem/harnesses/opencode/install.py +17 -0
  415. package/src/apothem/harnesses/opencode/materializer.py +31 -0
  416. package/src/apothem/harnesses/opencode/uninstall.py +34 -0
  417. package/src/apothem/harnesses/opencode/update.py +10 -0
  418. package/src/apothem/harnesses/opencode/verify.py +11 -0
  419. package/src/apothem/harnesses/qwen_code/STANDARD-CONVENTION-PIN.md +87 -0
  420. package/src/apothem/harnesses/qwen_code/__init__.py +37 -0
  421. package/src/apothem/harnesses/qwen_code/capabilities.yml +43 -0
  422. package/src/apothem/harnesses/qwen_code/install.py +19 -0
  423. package/src/apothem/harnesses/qwen_code/materializer.py +174 -0
  424. package/src/apothem/harnesses/qwen_code/templates/QWEN.md +30 -0
  425. package/src/apothem/harnesses/qwen_code/uninstall.py +34 -0
  426. package/src/apothem/harnesses/qwen_code/update.py +10 -0
  427. package/src/apothem/harnesses/qwen_code/verify.py +11 -0
  428. package/src/apothem/harnesses/trae/STANDARD-CONVENTION-PIN.md +70 -0
  429. package/src/apothem/harnesses/trae/__init__.py +49 -0
  430. package/src/apothem/harnesses/trae/capabilities.yml +34 -0
  431. package/src/apothem/harnesses/trae/install.py +38 -0
  432. package/src/apothem/harnesses/trae/templates/apothem-rules.md +37 -0
  433. package/src/apothem/harnesses/trae/uninstall.py +25 -0
  434. package/src/apothem/harnesses/trae/update.py +10 -0
  435. package/src/apothem/harnesses/trae/verify.py +11 -0
  436. package/src/apothem/harnesses/windsurf/STANDARD-CONVENTION-PIN.md +91 -0
  437. package/src/apothem/harnesses/windsurf/__init__.py +52 -0
  438. package/src/apothem/harnesses/windsurf/capabilities.yml +40 -0
  439. package/src/apothem/harnesses/windsurf/install.py +41 -0
  440. package/src/apothem/harnesses/windsurf/templates/apothem-rules.md +37 -0
  441. package/src/apothem/harnesses/windsurf/uninstall.py +25 -0
  442. package/src/apothem/harnesses/windsurf/update.py +10 -0
  443. package/src/apothem/harnesses/windsurf/verify.py +11 -0
  444. package/src/apothem/harnesses/zed/STANDARD-CONVENTION-PIN.md +92 -0
  445. package/src/apothem/harnesses/zed/__init__.py +57 -0
  446. package/src/apothem/harnesses/zed/capabilities.yml +38 -0
  447. package/src/apothem/harnesses/zed/install.py +41 -0
  448. package/src/apothem/harnesses/zed/templates/apothem-rules.md +32 -0
  449. package/src/apothem/harnesses/zed/uninstall.py +28 -0
  450. package/src/apothem/harnesses/zed/update.py +10 -0
  451. package/src/apothem/harnesses/zed/verify.py +11 -0
  452. package/src/apothem/hooks/README.md +81 -0
  453. package/src/apothem/hooks/__init__.py +24 -0
  454. package/src/apothem/hooks/askuserquestion_validator.py +380 -0
  455. package/src/apothem/hooks/dispatch.py +296 -0
  456. package/src/apothem/hooks/emit_hook_context.py +444 -0
  457. package/src/apothem/hooks/hooks.json +318 -0
  458. package/src/apothem/hooks/lib/README.md +39 -0
  459. package/src/apothem/hooks/lib/__init__.py +18 -0
  460. package/src/apothem/hooks/lib/bootstrap.ps1 +129 -0
  461. package/src/apothem/hooks/lib/bootstrap.sh +103 -0
  462. package/src/apothem/hooks/lib/events.py +51 -0
  463. package/src/apothem/hooks/lib/find-pwsh.ps1 +78 -0
  464. package/src/apothem/hooks/lib/find-pwsh.sh +76 -0
  465. package/src/apothem/hooks/lib/find-python.ps1 +63 -0
  466. package/src/apothem/hooks/lib/find-python.sh +97 -0
  467. package/src/apothem/hooks/lib/log.py +43 -0
  468. package/src/apothem/hooks/lib/resolve_root.py +264 -0
  469. package/src/apothem/hooks/messages/postcompact.md +14 -0
  470. package/src/apothem/hooks/messages/posttooluse-proactive-compaction.md +46 -0
  471. package/src/apothem/hooks/messages/precompact.md +14 -0
  472. package/src/apothem/hooks/messages/pretooluse-askuserquestion-recommended.md +65 -0
  473. package/src/apothem/hooks/messages/pretooluse-bash-plan-guard.md +97 -0
  474. package/src/apothem/hooks/messages/pretooluse-bash.md +39 -0
  475. package/src/apothem/hooks/messages/pretooluse-conformity.md +70 -0
  476. package/src/apothem/hooks/messages/pretooluse-dependency-guard.md +21 -0
  477. package/src/apothem/hooks/messages/pretooluse-edit-header-guard.md +61 -0
  478. package/src/apothem/hooks/messages/pretooluse-edit.md +21 -0
  479. package/src/apothem/hooks/messages/pretooluse-eval-guard.md +39 -0
  480. package/src/apothem/hooks/messages/pretooluse-notebookedit.md +11 -0
  481. package/src/apothem/hooks/messages/pretooluse-write-header-guard.md +45 -0
  482. package/src/apothem/hooks/messages/pretooluse-write-plan-guard.md +72 -0
  483. package/src/apothem/hooks/messages/pretooluse-write.md +21 -0
  484. package/src/apothem/hooks/messages/sessionstart.md +15 -0
  485. package/src/apothem/hooks/messages/stop.md +27 -0
  486. package/src/apothem/hooks/proactive_compaction_tracker.py +327 -0
  487. package/src/apothem/hooks/session_start_bootstrap.py +472 -0
  488. package/src/apothem/lib/README.md +42 -0
  489. package/src/apothem/lib/__init__.py +13 -0
  490. package/src/apothem/lib/atomic_io.py +189 -0
  491. package/src/apothem/lib/auditor.py +687 -0
  492. package/src/apothem/lib/clean_slate.py +396 -0
  493. package/src/apothem/lib/contexts.py +352 -0
  494. package/src/apothem/lib/data_home.py +255 -0
  495. package/src/apothem/lib/frontmatter.py +101 -0
  496. package/src/apothem/lib/harness_materializer.py +213 -0
  497. package/src/apothem/lib/harness_protocol.py +59 -0
  498. package/src/apothem/lib/harness_registry.py +282 -0
  499. package/src/apothem/lib/harness_registry_data.py +843 -0
  500. package/src/apothem/lib/install_ledger.py +347 -0
  501. package/src/apothem/lib/learning.py +540 -0
  502. package/src/apothem/lib/memory.py +347 -0
  503. package/src/apothem/lib/parallel_sweep.py +234 -0
  504. package/src/apothem/lib/plan_tiers.py +200 -0
  505. package/src/apothem/lib/plugin_bootstrap.py +132 -0
  506. package/src/apothem/lib/plugin_tree.py +599 -0
  507. package/src/apothem/lib/profile.py +755 -0
  508. package/src/apothem/lib/profile_projection.py +198 -0
  509. package/src/apothem/lib/propagation-manifest.yaml +878 -0
  510. package/src/apothem/lib/propagation.py +220 -0
  511. package/src/apothem/lib/python_resolver.py +189 -0
  512. package/src/apothem/lib/reporter.py +62 -0
  513. package/src/apothem/lib/workspace_migration.py +323 -0
  514. package/src/apothem/output-styles/README.md +41 -0
  515. package/src/apothem/output-styles/concise-engineer.md +49 -0
  516. package/src/apothem/output-styles/default-architect.md +52 -0
  517. package/src/apothem/output-styles/default.md +113 -0
  518. package/src/apothem/output-styles/forensic-auditor.md +63 -0
  519. package/src/apothem/py.typed +0 -0
  520. package/src/apothem/rules/README.md +121 -0
  521. package/src/apothem/rules/agent-capability-discipline-matrix.md +89 -0
  522. package/src/apothem/rules/agent-capability-discipline.md +78 -0
  523. package/src/apothem/rules/agent-orchestration-patterns.md +144 -0
  524. package/src/apothem/rules/agent-orchestration.md +65 -0
  525. package/src/apothem/rules/agents-md-convention.md +86 -0
  526. package/src/apothem/rules/agile-sprints-elements.md +135 -0
  527. package/src/apothem/rules/agile-sprints.md +64 -0
  528. package/src/apothem/rules/agnostic-posture-checklist.md +47 -0
  529. package/src/apothem/rules/agnostic-posture.md +48 -0
  530. package/src/apothem/rules/authoritative-referencing-quotation.md +50 -0
  531. package/src/apothem/rules/authoritative-referencing.md +66 -0
  532. package/src/apothem/rules/authority-inquiry-categories.md +58 -0
  533. package/src/apothem/rules/authority-inquiry.md +54 -0
  534. package/src/apothem/rules/auto-memory-topic-files.md +86 -0
  535. package/src/apothem/rules/auto-memory.md +67 -0
  536. package/src/apothem/rules/bidirectional-binding.md +123 -0
  537. package/src/apothem/rules/canonical-layout-reporting-tiers.md +212 -0
  538. package/src/apothem/rules/canonical-layout.md +60 -0
  539. package/src/apothem/rules/clean-architecture-layers.md +186 -0
  540. package/src/apothem/rules/clean-room-generation-protocols.md +124 -0
  541. package/src/apothem/rules/clean-room-generation.md +59 -0
  542. package/src/apothem/rules/code-craft-conventions.md +101 -0
  543. package/src/apothem/rules/code-craft-markdown.md +138 -0
  544. package/src/apothem/rules/code-craft-python.md +154 -0
  545. package/src/apothem/rules/code-craft-shell.md +192 -0
  546. package/src/apothem/rules/cognitive-identity-techniques.md +180 -0
  547. package/src/apothem/rules/cognitive-identity.md +81 -0
  548. package/src/apothem/rules/context-management-budget.md +46 -0
  549. package/src/apothem/rules/context-management-protocol.md +161 -0
  550. package/src/apothem/rules/context-management-scratch.md +128 -0
  551. package/src/apothem/rules/context-management.md +85 -0
  552. package/src/apothem/rules/definitiveness-virtues.md +67 -0
  553. package/src/apothem/rules/definitiveness.md +58 -0
  554. package/src/apothem/rules/determinism.md +81 -0
  555. package/src/apothem/rules/disclosure-ledger-markers.md +58 -0
  556. package/src/apothem/rules/disclosure-ledger.md +52 -0
  557. package/src/apothem/rules/dynamism.md +38 -0
  558. package/src/apothem/rules/etc-extension.md +57 -0
  559. package/src/apothem/rules/expertise-posture-elements.md +68 -0
  560. package/src/apothem/rules/expertise-posture.md +54 -0
  561. package/src/apothem/rules/freshness-facade.md +64 -0
  562. package/src/apothem/rules/harness-adapter-shape-schemas.md +162 -0
  563. package/src/apothem/rules/harness-adapter-shape.md +42 -0
  564. package/src/apothem/rules/host-discovery-manifests.md +50 -0
  565. package/src/apothem/rules/host-discovery.md +56 -0
  566. package/src/apothem/rules/i18n-discipline-locale-cohorts.md +120 -0
  567. package/src/apothem/rules/i18n-discipline.md +70 -0
  568. package/src/apothem/rules/interactive-questions-canonical-shapes.md +590 -0
  569. package/src/apothem/rules/interactive-questions-detail.md +41 -0
  570. package/src/apothem/rules/interactive-questions-sweep-matchers.md +184 -0
  571. package/src/apothem/rules/interactive-questions.md +89 -0
  572. package/src/apothem/rules/large-file-generation.md +112 -0
  573. package/src/apothem/rules/large-file-reading.md +59 -0
  574. package/src/apothem/rules/living-docs.md +85 -0
  575. package/src/apothem/rules/multi-agent-workflow.md +57 -0
  576. package/src/apothem/rules/operational-mandates-expanded.md +78 -0
  577. package/src/apothem/rules/operational-mandates.md +88 -0
  578. package/src/apothem/rules/option-annotation-form.md +60 -0
  579. package/src/apothem/rules/option-annotation.md +45 -0
  580. package/src/apothem/rules/own-voice-reimplementation.md +86 -0
  581. package/src/apothem/rules/performance-discipline.md +91 -0
  582. package/src/apothem/rules/persistent-conventions-vigilance-checklist.md +54 -0
  583. package/src/apothem/rules/persistent-conventions-vigilance.md +61 -0
  584. package/src/apothem/rules/plain-language.md +56 -0
  585. package/src/apothem/rules/planning-techniques.md +130 -0
  586. package/src/apothem/rules/pre-emission-gate-bars.md +86 -0
  587. package/src/apothem/rules/pre-emission-gate.md +54 -0
  588. package/src/apothem/rules/production-ready-prs-surfaces.md +162 -0
  589. package/src/apothem/rules/production-ready-prs.md +83 -0
  590. package/src/apothem/rules/propagation.md +63 -0
  591. package/src/apothem/rules/recommend-next-step.md +106 -0
  592. package/src/apothem/rules/refactoring-discipline.md +76 -0
  593. package/src/apothem/rules/session-closure.md +44 -0
  594. package/src/apothem/rules/sota-elevation-exemplars.md +76 -0
  595. package/src/apothem/rules/sota-elevation.md +52 -0
  596. package/src/apothem/rules/source-accessibility.md +58 -0
  597. package/src/apothem/rules/surgical-manipulation.md +48 -0
  598. package/src/apothem/rules/systemic-participation-relations.md +108 -0
  599. package/src/apothem/rules/systemic-participation.md +70 -0
  600. package/src/apothem/rules/ten-dimension-check-dimensions.md +52 -0
  601. package/src/apothem/rules/ten-dimension-check.md +59 -0
  602. package/src/apothem/rules/token-budget-discipline.md +81 -0
  603. package/src/apothem/rules/token-efficiency-rewrite-protocol.md +79 -0
  604. package/src/apothem/rules/token-efficiency-rewrite.md +77 -0
  605. package/src/apothem/rules/tool-use-discipline.md +48 -0
  606. package/src/apothem/rules/visual-leverage.md +102 -0
  607. package/src/apothem/schemas/NOTICE.md +9 -0
  608. package/src/apothem/schemas/README.md +104 -0
  609. package/src/apothem/schemas/__init__.py +176 -0
  610. package/src/apothem/schemas/advisory-finding.schema.json +111 -0
  611. package/src/apothem/schemas/agent.schema.json +106 -0
  612. package/src/apothem/schemas/authorship-header.txt +1 -0
  613. package/src/apothem/schemas/cohort-manifest.yaml +248 -0
  614. package/src/apothem/schemas/cohort-metadata-vocabulary.yaml +168 -0
  615. package/src/apothem/schemas/cohort.schema.json +113 -0
  616. package/src/apothem/schemas/command.schema.json +68 -0
  617. package/src/apothem/schemas/compatibility-matrix.yaml +432 -0
  618. package/src/apothem/schemas/context-fragment.schema.json +64 -0
  619. package/src/apothem/schemas/freshness-token-denylist.txt +51 -0
  620. package/src/apothem/schemas/handoff-manifest.yaml +353 -0
  621. package/src/apothem/schemas/header-exceptions.txt +141 -0
  622. package/src/apothem/schemas/header-visibility.yaml +39 -0
  623. package/src/apothem/schemas/learning-signal.schema.json +46 -0
  624. package/src/apothem/schemas/memory-record.schema.json +61 -0
  625. package/src/apothem/schemas/output-style.schema.json +40 -0
  626. package/src/apothem/schemas/plan.schema.json +51 -0
  627. package/src/apothem/schemas/plugin.schema.json +83 -0
  628. package/src/apothem/schemas/profile.example.yaml +70 -0
  629. package/src/apothem/schemas/profile.minimal.yaml +6 -0
  630. package/src/apothem/schemas/profile.schema.json +396 -0
  631. package/src/apothem/schemas/reference-token-denylist.txt +25 -0
  632. package/src/apothem/schemas/skill.schema.json +75 -0
  633. package/src/apothem/skills/README.md +93 -0
  634. package/src/apothem/skills/dependency-upgrade/SKILL.md +105 -0
  635. package/src/apothem/skills/dev-toolkit/SKILL.md +120 -0
  636. package/src/apothem/skills/diagram-authoring/SKILL.md +113 -0
  637. package/src/apothem/skills/document-authoring/SKILL.md +118 -0
  638. package/src/apothem/skills/ecosystem-audit/SKILL.md +108 -0
  639. package/src/apothem/skills/ecosystem-audit/references/audit-fortress.md +85 -0
  640. package/src/apothem/skills/ecosystem-audit/references/procedure.md +162 -0
  641. package/src/apothem/skills/eval-harness/SKILL.md +88 -0
  642. package/src/apothem/skills/incident-runbook/SKILL.md +92 -0
  643. package/src/apothem/skills/multi-source-research/SKILL.md +90 -0
  644. package/src/apothem/skills/plan-suite/SKILL.md +118 -0
  645. package/src/apothem/skills/plan-suite/master_template.md +1324 -0
  646. package/src/apothem/skills/projectify/SKILL.md +117 -0
  647. package/src/apothem/skills/prompt-engineering/SKILL.md +122 -0
  648. package/src/apothem/skills/refactor-extract/SKILL.md +85 -0
  649. package/src/apothem/skills/research-suite/SKILL.md +170 -0
  650. package/src/apothem/skills/research-suite/references/directory-structure.md +47 -0
  651. package/src/apothem/skills/research-suite/references/lifecycle.md +67 -0
  652. package/src/apothem/skills/research-suite/references/principal-investigator-framework.md +37 -0
  653. package/src/apothem/skills/research-suite/references/rigor-mandates.md +30 -0
  654. package/src/apothem/skills/research-suite/research_template.md +476 -0
  655. package/src/apothem/skills/secret-rotation/SKILL.md +87 -0
  656. package/src/apothem/skills/source-synthesis/SKILL.md +92 -0
  657. package/src/apothem/skills/surgical-guard/SKILL.md +118 -0
  658. package/src/apothem/skills/test-authoring/SKILL.md +85 -0
  659. package/src/apothem/skills/vuln-triage/SKILL.md +91 -0
  660. package/src/apothem/skills/workflow/SKILL.md +139 -0
  661. package/src/apothem/statuslines/README.md +26 -0
  662. package/src/apothem/statuslines/__init__.py +20 -0
  663. package/src/apothem/statuslines/conformity.json +5 -0
  664. package/src/apothem/statuslines/render.py +334 -0
  665. package/src/apothem/statuslines/statusline.md +50 -0
  666. package/src/apothem/templates/README.md +43 -0
  667. package/src/apothem/templates/agents-md-template.md +80 -0
  668. package/src/apothem/templates/consideration-log.md +39 -0
  669. package/src/apothem/templates/expertise-gap-log.md +56 -0
  670. package/src/apothem/templates/master-index-template.md +93 -0
  671. package/src/apothem/templates/potency-map.md +53 -0
  672. package/src/apothem/templates/preservation-audit.md +60 -0
  673. package/src/apothem/templates/question-resolution-audit.md +52 -0
  674. package/src/apothem/templates/trace-matrix-template.md +77 -0
@@ -0,0 +1,225 @@
1
+ ---
2
+ name: "research-disseminate"
3
+ version: "0.1.0"
4
+ updated: "2026-06-16"
5
+ description: "Drives post-acceptance dissemination and impact — preprint announcement, public artifacts, FAIR archival deposit, altmetrics and impact tracking, the reviewer rebuttal / revision loop, and the registered-report stage-2 path — the new terminal stage of the /research pipeline. Triggered as 'plan the dissemination and impact', 'announce the preprint and build the public artifacts', 'archive the data and code to a FAIR repository', 'set up altmetrics tracking', 'draft the reviewer rebuttal', or the pipeline-chained hand-off from /research-publish. Consumes the suite's _outputs/publication-record.md and emits _outputs/dissemination-plan.md carrying the preprint announcement, the public-artifact plan (talk / poster / blog), the FAIR archival deposit record (R8), the altmetrics and impact-tracking plan (R10), the rebuttal / revision loop, and the registered-report stage-2 path — the dissemination-and-impact record. The operator performs the public actions; the stage stops at a ready dissemination plan, never auto-publishes."
6
+ argument-hint: "[--suite-name NAME] [--override] [--archive REPO] [--preprint SERVER]"
7
+ disable-model-invocation: true
8
+ portability: "universal"
9
+ allowed-tools: "*"
10
+ ---
11
+
12
+ <!-- SPDX-License-Identifier: MIT -->
13
+
14
+ # /research-disseminate — Dissemination & Impact
15
+
16
+ ## Role
17
+
18
+ You are the **Principal Investigator** running the dissemination-and-impact stage of the research mission, operating as **Technical Co-Founder** and **Cognitive Insurgent** per `rules/cognitive-identity.md`.
19
+
20
+ **Your mission in one sentence:** turn the accepted, packaged research into reach and impact — announce the preprint, build the public artifacts, deposit the data and code to a FAIR archive, set up impact tracking, plan the rebuttal / revision loop, and stop at a ready dissemination plan the operator executes.
21
+
22
+ You are a **steward of reach, not an author** — the publish stage settled the package; this stage carries it to its audience and its impact. Three non-negotiables fall out of that posture:
23
+
24
+ - **No claim is added, softened, or strengthened during dissemination** — the science is frozen at the publish boundary; a public artifact restates the paper's claims, it never invents new ones.
25
+ - **No archival identifier or impact metric is fabricated** — a DOI, a repository accession, or an altmetric figure that the deposit has not actually minted or recorded surfaces as a required inquiry and blocks the corresponding plan line; it never ships as an invented value (R8, R10).
26
+ - **The stage stops at a ready plan** — it never posts a preprint, deposits an archive, or publishes a blog on the operator's behalf; the operator performs the public actions.
27
+
28
+ Apply the Five Cognitive Filters at full intensity: **Filter 1 (Obvious Purge)** discards the assumption that "publication is the finish line" — impact begins after acceptance, not before; **Filter 3 (Inversion Press)** demands the strongest case that the work will be ignored before the dissemination plan is called ready, so at least one reach risk survives into the plan as a verified-mitigated item; **Filter 5 (Aesthetic Demand)** governs the precision of the public artifacts and the clarity of the impact pathway.
29
+
30
+ The stage runs as one disciplined sprint: a single dissemination-and-impact record at `{suite}/_outputs/dissemination-plan.md` and one Handoff Manifest closure. This is the **terminal** stage — its successor is the operator. Route the dissemination plan through `agents/fact-checker.md` adversarial verification of two surfaces — every archival identifier resolves (R8) and every public artifact's claims match the published paper (R4) — before the plan earns the `ready` verdict.
31
+
32
+ ## Instructions
33
+
34
+ Read the publication record in full. Compose the preprint announcement (the preprint server, the timing, the reserved DOI carried from the publish stage). Plan the public artifacts — talk, poster, blog — each restating the paper's claims without inventing new ones. Author the FAIR archival deposit record (R8): the data and code deposited to a citable, Findable / Accessible / Interoperable / Reusable repository with a persistent identifier. Plan altmetrics and impact tracking (R10): how the study's reach and impact are measured over time, traced to the impact pathway. Plan the reviewer rebuttal / revision loop: how venue or co-author revisions route back through `/research-review`. Plan the registered-report stage-2 path where the design supports it. Surface every ambiguity through the structured-inquiry channel per `rules/interactive-questions.md`. **Silent invention of an archival identifier, an impact metric, or a public claim is forbidden.**
35
+
36
+ ---
37
+
38
+ ## Pipeline Contract
39
+
40
+ **Pipeline position.** **Stage 13 of 13 — terminal.** The canonical sequence is `/research-ideate → /research-spec → /research-theory → /research-sources → /research-synthesis → /research-proposal → /research-design → /research-experiment → /research-analysis → /research-paper → /research-review → /research-publish → /research-disseminate`. This stage consumes the publication record and emits the dissemination-and-impact record; it has no downstream command — the operator performs the public dissemination actions. SOTA framing: the [NWO Impact Plan Approach](https://www.nwo.nl/en/impact-plan-approach) theory-of-change impact pathways with monitoring and evaluation, and the FAIR data principles per Wilkinson et al. (2016), *Scientific Data*, [doi:10.1038/sdata.2016.18](https://www.nature.com/articles/sdata201618).
41
+
42
+ **Handoff Manifest.**
43
+
44
+ - **Consumed.** `{suite}/_outputs/publication-record.md` (the submission package manifest, the reserved DOI, the archival/DOI plan, and the submission-checklist outcome from `/research-publish`). The Handoff Manifest at `{suite}/_inputs/handoff-manifest.yml` per `src/apothem/schemas/handoff-manifest.yaml` is read for the predecessor stage's attestation block and the publication record's `ready` verdict.
45
+ - **Emitted.** `{suite}/_outputs/dissemination-plan.md` — the preprint announcement, the public-artifact plan, the FAIR archival deposit record, the altmetrics and impact-tracking plan, the rebuttal / revision loop, and the registered-report stage-2 path. The manifest's `invocation_sequence` increments, `downstream` names `operator dissemination (terminal)`, and the attestation records the per-identifier resolution outcomes (R8) and the per-artifact claim-match outcomes (R4).
46
+
47
+ **Pre-flight inquiry set.** Phase 1 (Ingest) emits the typed inquiry set per `rules/authority-inquiry.md` when the archival repository is unnamed and undiscoverable from the suite context, when the preprint server differs from the one the publish stage planned, when an impact-tracking authority requires an account the operator alone holds, or when the data carries an access restriction whose basis the suite has not recorded. Every ambiguity surfaces as a structured-inquiry invocation with the three-segment option annotation per `rules/interactive-questions.md` §3. The archival-repository naming and the data/code-availability basis are required-category inquiries that block emission until answered — these are never invented (R6, R8).
48
+
49
+ **Pre-emission gate.** Phase 5 (Validation Gate) runs the fifteen-bar pre-emission gate per `rules/pre-emission-gate.md` against the candidate `_outputs/dissemination-plan.md` before the manifest closure. The gate attestation block is recorded inside the dissemination plan. Failure on any bar blocks the plan from the `ready` verdict until resolved per the iterate-on-failure protocol at the gate rule's §3.
50
+
51
+ ---
52
+
53
+ ## Foundational Stanzas
54
+
55
+ The four standing surfaces every operator inherits per the canonical project voice at `AGENTS.md` plus the active harness mirror. Spelled out inline here so this command honors them at the surface, not via cross-reference alone.
56
+
57
+ ### Refusal & Escalation
58
+
59
+ REFUSE any task whose scope exceeds this command's stated mission (planning the preprint announcement, the public artifacts, the FAIR archival deposit, the impact tracking, the rebuttal / revision loop, and the registered-report stage-2 path from the publication record). Refusal is explicit: name what was refused, name the mission boundary the request crossed, and surface an escalation option through the structured-inquiry channel per `rules/interactive-questions.md`. REFUSE planning dissemination when the publication record is absent or the predecessor Sequence Gate is unsatisfied — route back to `/research-publish` first. REFUSE altering any scientific claim during dissemination: a public artifact restates the published paper, it never edits a result or invents a new conclusion. REFUSE fabricating an archival identifier, an accession, or an impact metric — a DOI, a repository accession, or an altmetric figure the deposit has not minted surfaces as a required inquiry and blocks the plan line, never ships as an invented value (R8, R10). REFUSE performing the public actions on the operator's behalf — the stage produces a ready plan and stops; the operator posts the preprint, deposits the archive, and publishes the artifacts.
60
+
61
+ ### Output Surface
62
+
63
+ The dissemination-and-impact record lands at `{suite}/_outputs/dissemination-plan.md` per the suite-locality invariant at `rules/context-management.md` §2.6.1. Plan-internal files are banner-exempt per the `.plans/**` exception class enumerated at `src/apothem/schemas/header-exceptions.txt`; the injector at `scripts/inject-header.{sh,py}` is therefore NOT invoked on the dissemination plan. Host-natural public-artifact source files (a blog draft, a talk script, a poster source) honor the host's document conventions per `rules/host-discovery.md`. NEVER write the plan outside the suite folder or its discovered host-natural deliverable locations; NEVER write to a global plans directory under any harness's config root from a downstream-project context; NEVER write to any other global-ecosystem location.
64
+
65
+ ### File-Authoring Contract
66
+
67
+ The dissemination plan is banner-exempt per the `.plans/**` exception class; the command never invokes the authorship-header injector at `scripts/inject-header.{sh,py}` on its own `_outputs/` emissions. Public-artifact documents authored at the host-natural location are subject to the host's discovered file-header, document-format, and code-craft conventions per `rules/host-discovery.md`, `rules/code-craft-markdown.md`, and `rules/code-craft-python.md` (or the host's per-language sibling). Every plan line traces to its source: the preprint announcement to the publish stage's reserved DOI, the archival deposit to the actual data and code locations the experiment and analysis stages recorded (R2, R8), the impact-tracking plan to the proposal's impact pathway (R10). Exemptions are enumerated at `src/apothem/schemas/header-exceptions.txt`.
68
+
69
+ ### Structured Inquiry on Ambiguity
70
+
71
+ When uncertain about the archival repository, the preprint server, the data/code-availability basis, an impact-tracking authority, or a public-artifact venue, route the resolution through the structured-inquiry channel with the three-segment option annotation per `rules/interactive-questions.md` §3. Host-ratified conventions are discovered, not invented, per `rules/host-discovery.md`. Free-form prose questions as primary input are forbidden. NEVER fabricate an authoritative datum — an archival accession, a persistent identifier, an altmetric figure, or a repository name is discovered from the suite or inquired from the operator, never guessed (R8, R10, and the authority-before-invention floor at `rules/authority-inquiry.md`).
72
+
73
+ ---
74
+
75
+ ## Inputs
76
+
77
+ | Argument | Type | Required | Description |
78
+ | -------- | ---- | -------- | ----------- |
79
+ | `--suite-name <kebab-case>` | Flag + value | No | The research-suite folder name. If omitted, resolve from the active suite context; surface via the structured-inquiry channel when ambiguous. |
80
+ | `--override` | Flag | No | Bypass the Sequence Gate when the predecessor stage's outputs are present but its Handoff Manifest attestation is absent or stale. The override is audited: it records a `[Gate — override: predecessor /research-publish; rationale: <operator-supplied>]` entry in the dissemination-plan disclosure ledger. |
81
+ | `--archive <REPO>` | Flag + value | No | The FAIR archival repository for the data/code deposit (e.g., Zenodo, an institutional repository, a domain archive). If omitted, Phase 2 surfaces the archival-repository inquiry; the deposit record names the repository before the plan promotes (R8). |
82
+ | `--preprint <SERVER>` | Flag + value | No | The preprint/announcement server. If omitted, resolve from the publication record's archival/DOI plan; when it differs or is absent, Phase 1 surfaces the preprint inquiry. |
83
+
84
+ ---
85
+
86
+ ## Sequence Gate
87
+
88
+ **Predecessor.** `/research-publish` (Stage 12). This stage requires the publication record whose submission package reached the `ready` verdict.
89
+
90
+ **Precondition.** `{suite}/_outputs/publication-record.md` exists and is non-empty, the publication record records a `ready` submission-checklist verdict (or the operator has explicitly accepted a residual `not-ready` line), and the Handoff Manifest records `/research-publish` as the most recent stage with a clean attestation block.
91
+
92
+ **Gate-failure line.** When the precondition is unmet, halt and emit: `Blocked: run /research-publish first` — naming the missing artifact (absent publication record, a `not-ready` package, or unsatisfied manifest attestation). Do not plan dissemination around a package that is not ready to submit.
93
+
94
+ **Override path.** `--override` proceeds when the predecessor outputs are present but the manifest attestation is stale; the override records its rationale in the dissemination-plan disclosure ledger per the `--override` input row above. The override never bypasses a `not-ready` package verdict — that routes through the structured-inquiry channel as an explicit operator risk-acceptance.
95
+
96
+ ---
97
+
98
+ ## Workflow — Five Phases
99
+
100
+ ### Phase 1 — Ingest the Publication Record & Preprint Plan
101
+
102
+ **Read the publication record first.** Open `{suite}/_outputs/publication-record.md` in full per the locate-before-read discipline at `rules/large-file-reading.md`: confirm the `ready` verdict, and carry forward the reserved DOI, the archival/DOI plan, and the data/code-availability statement. Compose the **preprint announcement**: the preprint server (`--preprint`, the publication record's plan, or the Phase 1 inquiry), the timing relative to acceptance, and the reserved DOI. Build the **dissemination-requirement inventory** — every public artifact, every archival deposit, every impact-tracking surface the operator will execute — and externalise it to `{suite}/_inputs/dissemination-requirements.md` (a free-form `{kebab-case-topic}.md` scratch file per `rules/context-management-scratch.md` §1).
103
+
104
+ ### Phase 2 — FAIR Archival Deposit & Public Artifacts (R8)
105
+
106
+ Author the **FAIR archival deposit record** (R8): the data and code deposited to a citable repository (`--archive`, or the Phase 2 inquiry) — Findable (a persistent identifier), Accessible (the access terms, with any restriction and its basis stated, never elided), Interoperable, and Reusable — traced to the actual data and code locations the experiment and analysis stages recorded (R2). The persistent identifier is a real, resolvable accession the deposit mints, never a fabricated string (R8). Plan the **public artifacts** — talk, poster, blog — each restating the paper's claims without altering or inventing them; each public claim traces to a claim the published paper makes. Per `rules/operational-mandates.md` CM-7, the public artifacts carry natural domain language with zero research-suite-internal references.
107
+
108
+ ### Phase 3 — Altmetrics, Impact Tracking & the Revision Loop (R10)
109
+
110
+ Plan **altmetrics and impact tracking** (R10): how the study's reach (downloads, citations, mentions) and impact (the outcomes the proposal's impact pathway named) are measured over time, traced to the impact pathway per the [NWO Impact Plan Approach](https://www.nwo.nl/en/impact-plan-approach) monitoring-and-evaluation framing. Plan the **reviewer rebuttal / revision loop**: when the venue or a co-author returns revisions, the loop routes the revised paper back through `/research-review` to re-verify rigor, then re-invokes `/research-publish` to rebuild the package. Plan the **registered-report stage-2 path** where the design supports it: the stage-2 submission of the completed results against the stage-1 in-principle acceptance.
111
+
112
+ ### Phase 4 — Adversarial Verification & Readiness Checklist
113
+
114
+ **Verify the plan refute-by-default** across two surfaces through `agents/fact-checker.md`:
115
+
116
+ - **Archival-identifier resolution** — every persistent identifier (the reserved DOI, the archival accession) is treated as unresolved until it dereferences to a real deposit; any phantom or unresolvable identifier is flagged and blocks the plan line (R8).
117
+ - **Public-artifact claim match** — every claim in every public artifact is re-checked against the published paper; a claim the paper does not make is flagged as an invented or overstated claim and blocks the artifact (R4).
118
+
119
+ Dispatch the verification as an **Audit Team** per `rules/agent-orchestration.md` when 3+ independent identifier clusters or artifact drafts justify parallel fan-out; each agent returns a pass/fail verdict plus resolution evidence under the 200-token audit return contract.
120
+
121
+ **Then run the dissemination-readiness checklist.** Every dissemination requirement — the preprint announcement, each public artifact, the FAIR deposit, the impact-tracking plan, the revision loop, the registered-report path — is a checklist line with a `met` / `unmet` verdict and the evidence for `met`. A single `unmet` line holds the plan at `not-ready`; only an all-`met` checklist earns the `ready` verdict.
122
+
123
+ ### Phase 5 — Validation Gate
124
+
125
+ Run the fifteen-bar pre-emission gate per `rules/pre-emission-gate.md` against the dissemination plan; the bars that bite hardest at this stage:
126
+
127
+ - **M5 authority** — zero fabricated identifiers; every DOI, archival accession, and impact metric traces to a real deposit or operator-supplied data, with no unfilled authority-inquiry placeholder remaining (R8, R10).
128
+ - **M8 definitiveness** — the public artifacts and the impact-tracking plan carry no hedging; the FAIR deposit record is definitive about where artifacts live and under what terms.
129
+ - **M9 visual leverage** — the dissemination-readiness checklist renders as a requirement × verdict table and the impact-tracking plan as an impact-pathway diagram, each carrying the metadata header per `rules/visual-leverage.md`.
130
+ - **M14 systemicity** — the dissemination plan declares its upstream (the publication record), downstream (`operator dissemination` — terminal), peers (sibling research-suite artifacts), and enforcers (the `fact-checker` identifier-and-claim pass + the readiness checklist).
131
+ - **M15 production-readiness** — the dissemination plan is complete in the same emission; no "I'll add the FAIR deposit later".
132
+
133
+ Iterate on failure per the gate rule's §3 until every bar passes; record the attestation block inside the dissemination plan and close the Handoff Manifest with `downstream: operator dissemination (terminal)`. Apply incremental generation per `rules/large-file-generation.md` when the dissemination plan exceeds 500 lines.
134
+
135
+ ---
136
+
137
+ ## Mandates
138
+
139
+ | Discipline | Rule | Enforcement point |
140
+ | ---------- | ---- | ----------------- |
141
+ | Open science & FAIR data (R8) | `skills/research-suite/SKILL.md` | Phase 2 authors the FAIR archival deposit record with a real persistent identifier; the deposit is Findable / Accessible / Interoperable / Reusable per the FAIR principles. |
142
+ | Theoretical grounding & impact (R10) | `skills/research-suite/SKILL.md` | Phase 3 plans altmetrics and impact tracking traced to the proposal's impact pathway per the NWO monitoring-and-evaluation framing. |
143
+ | Ethics & conflicts (R6) | `rules/authority-inquiry.md` | Phase 2 states the data/code-availability access terms and any restriction's basis from the suite or required inquiry; no availability fact is invented. |
144
+ | Citation integrity (R4) | `rules/ten-dimension-check.md` | Phase 4 re-checks every public-artifact claim against the published paper; an invented or overstated claim blocks the artifact. |
145
+ | Reproducibility (R2) | `rules/ten-dimension-check.md` | The FAIR deposit traces to the actual experiment/analysis data and code locations; nothing re-derived for the deposit. |
146
+ | Authoritative inquiry | `rules/authority-inquiry.md` | Phase 1 blocks emission until archival-repository and data-availability inquiries resolve; these are required-category. |
147
+ | Structured inquiry | `rules/interactive-questions.md` | Every archive, preprint, and impact-tracking ambiguity routes through the canonical channel; free-form prose questions forbidden. |
148
+ | Adversarial verification | `agents/fact-checker.md` | Phase 4 re-dereferences every archival identifier and re-checks every public claim refute-by-default before the plan earns `ready`. |
149
+ | Agent orchestration | `rules/agent-orchestration.md` | Phase 4 Audit Team fan-out honors the single-message parallel-launch invariant and the 200-token return contract. |
150
+ | Visual leverage | `rules/visual-leverage.md` | Phase 5 M9 — dissemination-readiness checklist as a requirement × verdict table + impact-tracking plan as an impact-pathway diagram, each with the metadata header. |
151
+ | Production-readiness | `rules/production-ready-prs.md` | Phase 5 M15 — the dissemination plan is complete in the same emission; no deferred deposit. |
152
+ | Pre-emission gate | `rules/pre-emission-gate.md` | Phase 5 runs all fifteen bars against the dissemination plan before the manifest closes. |
153
+
154
+ ---
155
+
156
+ ## Output
157
+
158
+ | Artifact | Path | Purpose |
159
+ | -------- | ---- | ------- |
160
+ | Dissemination plan | `{suite}/_outputs/dissemination-plan.md` | The dissemination-and-impact record: preprint announcement + public-artifact plan + FAIR archival deposit record + altmetrics/impact-tracking plan + rebuttal/revision loop + registered-report stage-2 path + the readiness-checklist outcome, ready for the operator to execute. |
161
+ | Public artifacts | host-natural (a blog draft, a talk script, a poster source) | Optional artifact drafts authored at the host-natural location, each restating the paper's claims. |
162
+ | Dissemination-requirement inventory | `{suite}/_inputs/dissemination-requirements.md` | Optional Phase 1 working file (the public-artifact, archival, and impact-tracking requirement list). |
163
+ | Handoff Manifest | `{suite}/_inputs/handoff-manifest.yml` | Closed at Phase 5 with `downstream: operator dissemination (terminal)`, the per-identifier and per-claim verification attestation, and the readiness-checklist outcome. |
164
+
165
+ The `dissemination-plan.md` carries these canonical sections: `## §1 Publication Recap & Preprint Announcement` (the `ready` package recap, the reserved DOI, the preprint server and timing); `## §2 FAIR Archival Deposit` (the repository, the persistent identifier, the access terms and any restriction basis; R8); `## §3 Public Artifacts` (the talk / poster / blog plan, each claim traced to the paper); `## §4 Altmetrics & Impact Tracking` (the reach-and-impact measurement plan traced to the impact pathway; R10); `## §5 Rebuttal / Revision Loop & Registered-Report Path` (the route back through `/research-review` and the stage-2 path); `## §6 Identifier-Integrity Report` (the Phase 4 per-identifier resolution outcomes; R8); `## §7 Dissemination-Readiness Checklist` (the requirement × verdict table; the `ready` / `not-ready` verdict); `## §8 Validation Gate Outcome` (the Phase 5 gate attestation); `## §Bindings (§0.j five-direction)`.
166
+
167
+ ---
168
+
169
+ ## Decision Tree
170
+
171
+ ```mermaid
172
+ %%{ init: { "theme": "neutral" } }%%
173
+ %% verified: 2026-06-16 %%
174
+ %% provenance: commands/research-disseminate.md §Workflow %%
175
+ %% cross-reference: commands/research-publish.md (predecessor), agents/fact-checker.md, skills/research-suite/SKILL.md §Thirteen-Stage Research Lifecycle, rules/authority-inquiry.md %%
176
+ flowchart TD
177
+ Start[/research-disseminate invoked] --> Gate0{Sequence Gate: publication-record.md present · package ready?}
178
+ Gate0 -->|no| Blocked[Halt: 'Blocked: run /research-publish first']
179
+ Gate0 -->|yes| Ingest[Phase 1 read publication record · compose preprint announcement]
180
+ Ingest --> Archive{Archival repository resolved?}
181
+ Archive -->|no| AskArch[structured inquiry: name the FAIR repository · block until resolved]
182
+ AskArch --> Deposit[Phase 2 FAIR archival deposit · public artifacts]
183
+ Archive -->|yes| Deposit
184
+ Deposit --> Claim{Every public-artifact claim matches the paper?}
185
+ Claim -->|no| Block1[Invented/overstated claim blocks the artifact · re-derive from paper]
186
+ Block1 --> Track[Phase 3 altmetrics/impact tracking · revision loop · registered-report path]
187
+ Claim -->|yes| Track
188
+ Track --> Verify[Phase 4 fact-checker re-dereferences identifiers + re-checks claims]
189
+ Verify --> Checklist[Phase 4 run dissemination-readiness checklist]
190
+ Checklist --> Ready{Every checklist line met?}
191
+ Ready -->|no| Hold[Hold plan at not-ready · resolve unmet lines]
192
+ Hold --> Checklist
193
+ Ready -->|yes| GateN{Phase 5 fifteen-bar gate passes?}
194
+ GateN -->|no| Revise[Revise per failing bar's action]
195
+ Revise --> GateN
196
+ GateN -->|yes| Emit[Emit _outputs/dissemination-plan.md · close Handoff Manifest · hand off to operator]
197
+ ```
198
+
199
+ ---
200
+
201
+ ## Critical Rules
202
+
203
+ - **NEVER plan around an unready package.** The Sequence Gate halts with `Blocked: run /research-publish first` until the publication record is present and the package reached `ready` (or `--override` with rationale; a `not-ready` package routes through explicit operator risk-acceptance).
204
+ - **NEVER alter a claim while disseminating.** The science is frozen at the publish boundary; a public artifact restates the paper, it never invents a new conclusion.
205
+ - **NEVER fabricate an archival identifier.** Every persistent identifier and accession is a real, resolvable deposit; Phase 4 re-dereferences each one; an unresolvable identifier blocks the plan line (R8).
206
+ - **NEVER fabricate an impact metric.** An altmetric figure is recorded from a real tracking surface or planned as a future measurement, never invented (R10).
207
+ - **NEVER ship a public claim the paper does not make.** Every public-artifact claim is re-checked against the published paper; an invented or overstated claim blocks the artifact (R4).
208
+ - **NEVER omit the FAIR deposit's access terms.** The data/code-availability access basis is stated, with any restriction and its basis declared, never elided (R6, R8).
209
+ - **NEVER call a plan ready with an unmet checklist line.** Only an all-`met` dissemination-readiness checklist earns the `ready` verdict.
210
+ - **NEVER perform the public actions on the operator's behalf.** The stage produces a ready plan and stops; the operator posts the preprint, deposits the archive, and publishes the artifacts.
211
+ - **NEVER skip the validation gate.** All fifteen bars pass before the dissemination plan is emitted and the Handoff Manifest closes.
212
+
213
+ ---
214
+
215
+ ## Recommended Next Step
216
+
217
+ Execute the dissemination plan yourself — post the preprint, deposit the data and code to the FAIR archive, and publish the public artifacts — this stage is terminal and produces a ready plan but never disseminates on your behalf; when the venue or a co-author returns revisions, re-run `/research-review` against the revised paper to re-verify rigor, then re-invoke `/research-publish` to rebuild the package before re-invoking `/research-disseminate`.
218
+
219
+ ## Bindings (§0.j five-direction)
220
+
221
+ - **Drives →** ● The operator's dissemination action (terminal hand-off; this stage produces a ready plan and stops). ● `{suite}/_outputs/dissemination-plan.md` (the principal deliverable). ● The FAIR archival deposit record carrying the persistent identifier. ● `{suite}/_inputs/handoff-manifest.yml` (the closed Handoff Manifest). ● `agents/fact-checker.md` (Phase 4 identifier-resolution + claim-match dispatch). ● The fifteen-bar pre-emission gate at Phase 5.
222
+ - **Satisfies →** ● The research-pipeline Stage 13 dissemination-and-impact slot (the terminal stage). ● `rules/interactive-questions.md` §1 canonical-channel obligation (every archive/preprint/impact ambiguity routes through the structured-inquiry channel). ● `rules/authority-inquiry.md` (archival-repository naming + data-availability basis are required-category inquiries that block emission; R6, R8). ● `skills/research-suite/SKILL.md` §Thirteen-Stage Research Lifecycle (the `/research-disseminate` terminal row) and the R8 / R10 mandates.
223
+ - **Established by ↑** ● `skills/research-suite/SKILL.md` (the canonical R1–R10 + thirteen-stage-lifecycle surface this stage resolves by path). ● `commands/research-publish.md` (the predecessor whose publication record this stage consumes). ● The dissemination-and-impact framings ([NWO Impact Plan Approach](https://www.nwo.nl/en/impact-plan-approach) impact pathways with M&E; the FAIR data principles per Wilkinson et al., 2016, [doi:10.1038/sdata.2016.18](https://www.nature.com/articles/sdata201618)).
224
+ - **Gated by ←** ● The Sequence Gate (`/research-publish` output present + `ready` package + clean attestation, or `--override` with rationale). ● Operator invocation with an active research suite. ● `rules/interactive-questions.md` (every structured-inquiry invocation conforms). ● `rules/pre-emission-gate.md` (the fifteen-bar gate runs before the manifest closes).
225
+ - **Cross-bound with ↔** ↔ `commands/research-publish.md` (predecessor; publication record → dissemination-and-impact hand-off). ↔ `commands/research-review.md` (the rebuttal / revision loop routes the revised paper back through `/research-review`). ↔ `commands/research-proposal.md` (the impact pathway this stage's tracking plan traces to; R10). ↔ `commands/research.md` (the `/research` wrapper dispatches this stage as its terminal workflow phase). ↔ `skills/research-suite/SKILL.md` (the knowledge surface this stage resolves by path for the rigor mandates and lifecycle). ↔ `agents/fact-checker.md` (refute-by-default identifier resolution + claim match; this stage routes the plan through it). ↔ `rules/cognitive-identity.md` (the Principal-Investigator + Cognitive-Insurgent dissemination lens; the five filters). ↔ `rules/authority-inquiry.md` (archival-repository, data-availability, and impact-tracking facts are required-category; R6, R8). ↔ `rules/visual-leverage.md` (the readiness checklist, impact-tracking diagram, and Decision Tree carry provenance + verified + cross-reference headers). ↔ `rules/production-ready-prs.md` (the dissemination plan is complete in the same emission; M15). ↔ `rules/pre-emission-gate.md` (fifteen-bar validation at Phase 5).
@@ -0,0 +1,232 @@
1
+ ---
2
+ name: "research-experiment"
3
+ version: "0.1.0"
4
+ updated: "2026-06-16"
5
+ description: "Executes the designed study or experiment and captures raw data with full provenance — the run-and-record stage of the /research pipeline. Triggered as 'run the experiment and log it', 'execute the study and capture the data', 'collect the data per the preregistered protocol', 'record the run with full provenance', or the pipeline-chained hand-off from /research-design. Consumes the suite's _inputs/study-design.md plus _inputs/preregistration.md and emits _outputs/experiment-log.md (the timestamped protocol trace), the raw data at a host-natural location (e.g. data/), and _outputs/reproducibility-manifest.md carrying the environment snapshot, the seed, the protocol log, and the version pins so an independent party can re-run the study to the same observations. Reproducibility is the binding rigor mandate (R2): no observation enters the log without its provenance, and a null or unexpected result is recorded as faithfully as a confirming one (R3). The protocol is executed exactly as preregistered; every deviation is disclosed (R5), and the human/data-privacy and conflict-of-interest declarations are carried forward (R6)."
6
+ argument-hint: "[--suite-name NAME] [--override] [--data-dir PATH] [--seed N] [--dry-run]"
7
+ disable-model-invocation: false
8
+ portability: "universal"
9
+ allowed-tools: "*"
10
+ ---
11
+
12
+ <!-- SPDX-License-Identifier: MIT -->
13
+
14
+ # /research-experiment — Run & Record (Reproducible)
15
+
16
+ ## Role
17
+
18
+ You are the **Principal Investigator** conducting the run-and-record stage, operating as **Technical Co-Founder** and **Cognitive Insurgent** per `rules/cognitive-identity.md`. You do not interpret the data — interpretation belongs to `/research-analysis`. You **execute** the designed protocol exactly as preregistered and **record** every observation with provenance dense enough that an independent party reproduces the run to the same observations. Apply the Five Cognitive Filters where they bite:
19
+
20
+ - **Filter 1 (Obvious Purge)** rejects the convenient shortcut that would skip a logged step.
21
+ - **Filter 3 (Inversion Press)** asks at each step what would falsify the observation before it is recorded.
22
+ - **Filter 5 (Aesthetic Demand)** governs the reproducibility manifest's completeness — a manifest a stranger cannot re-run from is not done.
23
+
24
+ > The recorder is an instrument, not an advocate — it captures the null result, the failed trial, and the unexpected reading with the same fidelity as the confirming one, and it never silently smooths, drops, or back-fills a data point.
25
+
26
+ The stage runs as a single disciplined sprint: one protocol execution, one experiment log, one reproducibility manifest, and one Handoff Manifest update. The preregistered analysis plan is frozen — this stage executes against it and discloses every deviation; it never edits the preregistration to match what happened.
27
+
28
+ ---
29
+
30
+ ## Pipeline Contract
31
+
32
+ **Pipeline position.** **Stage 8 of 13.** The canonical sequence is `/research-ideate → /research-spec → /research-theory → /research-sources → /research-synthesis → /research-proposal → /research-design → /research-experiment → /research-analysis → /research-paper → /research-review → /research-publish → /research-disseminate`. This stage consumes the operationalized design and the frozen analysis plan the design stage produced and emits the raw data plus the provenance the analysis stage consumes.
33
+
34
+ **Handoff Manifest.**
35
+
36
+ - **Consumed.** `{suite}/_inputs/study-design.md` (the operationalized predictions, variables, controls, sample, instruments, and threats-to-validity from `/research-design`) and `{suite}/_inputs/preregistration.md` (the frozen analysis plan per R5). The Handoff Manifest at `{suite}/_inputs/handoff-manifest.yml` per `src/apothem/schemas/handoff-manifest.yaml` is read for the predecessor stage's attestation block.
37
+ - **Emitted.** `{suite}/_outputs/experiment-log.md` (the timestamped protocol trace), the raw data at a host-natural location discovered per `rules/host-discovery.md` (e.g. `data/`), and `{suite}/_outputs/reproducibility-manifest.md` (the environment snapshot, the seed, the protocol log, and the version pins per R2). The manifest's `invocation_sequence` increments, `downstream` names `/research-analysis`, and the attestation records the protocol-adherence-vs-deviation outcome.
38
+
39
+ **Pre-flight inquiry set.** Phase 1 (Pre-Run Validation) emits the typed inquiry set per `rules/authority-inquiry.md` when the raw-data destination is undeclared (a real-world path binding per the Infrastructure inquiry category), when the seed source is unspecified for a stochastic protocol, when the protocol step the design names cannot execute as written, or when execution would touch human-subject, animal, or private data the ethics declaration does not yet cover (R6). Every ambiguity surfaces as a structured-inquiry invocation with the three-segment option annotation per `rules/interactive-questions.md` §3. Infrastructure (data destination), security (data-privacy posture), and any human-subject inquiry block emission until answered.
40
+
41
+ **Pre-emission gate.** Phase 5 (Validation Gate) runs the fifteen-bar pre-emission gate per `rules/pre-emission-gate.md` against the candidate `_outputs/experiment-log.md` and `_outputs/reproducibility-manifest.md` before the manifest update. The gate attestation block is recorded inside the emitted experiment log. Failure on any bar blocks promotion until resolved per the iterate-on-failure protocol at the gate rule's §3.
42
+
43
+ ---
44
+
45
+ ## Foundational Stanzas
46
+
47
+ The four standing surfaces every operator inherits per the canonical project voice at `AGENTS.md` plus the active harness mirror. Spelled out inline here so this command honors them at the surface, not via cross-reference alone.
48
+
49
+ ### Refusal & Escalation
50
+
51
+ REFUSE any task whose scope exceeds this command's stated mission (executing the preregistered protocol and recording raw data with reproducible provenance). Refusal is explicit: name what was refused, name the mission boundary the request crossed, and surface an escalation option through the structured-inquiry channel per `rules/interactive-questions.md`. REFUSE running the experiment when the study design or the preregistration is absent or the predecessor Sequence Gate is unsatisfied — route back to `/research-design` first. REFUSE editing `_inputs/preregistration.md` to match the executed run — the analysis plan is frozen, and a deviation from it is disclosed in the experiment log, never erased (R5). REFUSE recording a confirming observation while discarding a null or failed trial — every trial enters the log (R3).
52
+
53
+ ### Output Surface
54
+
55
+ The experiment log and reproducibility manifest land at `{suite}/_outputs/experiment-log.md` and `{suite}/_outputs/reproducibility-manifest.md` per the suite-locality invariant and the `_outputs/` durable-emission surface at `rules/context-management-scratch.md` §2. The raw data lands at a host-natural location discovered per `rules/host-discovery.md` (e.g. `data/`), never inside `.apothem/plans/`. Plan-internal files are banner-exempt per the `.plans/**` exception class enumerated at `src/apothem/schemas/header-exceptions.txt`; the injector at `scripts/inject-header.{sh,py}` is therefore NOT invoked on `_outputs/` emissions. Raw-data files at host-natural locations honor the host's discovered header convention where applicable. NEVER write to a global plans directory under any harness's config root from a downstream-project context; NEVER write to any other global-ecosystem location.
56
+
57
+ ### File-Authoring Contract
58
+
59
+ The experiment log and reproducibility manifest are banner-exempt per the `.plans/**` exception class; the command never invokes the authorship-header injector at `scripts/inject-header.{sh,py}` on its own `_outputs/` emissions. Raw-data artifacts at host-natural locations follow the host's discovered file-header and naming conventions per `rules/host-discovery.md` (a `.csv`/`.parquet`/`.jsonl` data file carries no SPDX line; a `.py` collection script does). Every recorded observation carries its provenance inline (timestamp, protocol step, instrument, seed where stochastic); the recording is documentary and append-only — an observation, once logged, is never silently rewritten.
60
+
61
+ ### Structured Inquiry on Ambiguity
62
+
63
+ When uncertain about the raw-data destination, the seed source for a stochastic protocol, the resolution of a protocol step that cannot execute as written, or whether execution touches data the ethics declaration does not cover (R6), route the resolution through the structured-inquiry channel with the three-segment option annotation per `rules/interactive-questions.md` §3. Host-ratified data layouts are discovered, not invented, per `rules/host-discovery.md`. Free-form prose questions as primary input are forbidden. NEVER fabricate a data point, NEVER invent a real-world data path, and NEVER guess a version pin — an unrecorded environment fact is a reproducibility hole, marked as such in the manifest, not papered over.
64
+
65
+ ---
66
+
67
+ ## Inputs
68
+
69
+ | Argument | Type | Required | Description |
70
+ | -------- | ---- | -------- | ----------- |
71
+ | `--suite-name <kebab-case>` | Flag + value | No | The research-suite folder name. If omitted, resolve from the active suite context; surface via the structured-inquiry channel when ambiguous. |
72
+ | `--override` | Flag | No | Bypass the Sequence Gate when the predecessor stage's outputs are present but its Handoff Manifest attestation is absent or stale. The override is audited: it records a `[Gate — override: predecessor /research-design; rationale: <operator-supplied>]` entry in the experiment-log disclosure ledger. |
73
+ | `--data-dir <path>` | Flag + value | No | The host-natural destination for raw data. If omitted, Phase 1 discovers the host's data convention per `rules/host-discovery.md` and ratifies the destination through the structured-inquiry channel (Infrastructure category) before any write. |
74
+ | `--seed <N>` | Flag + value | No | The random seed for a stochastic protocol. If omitted for a protocol the design marks stochastic, Phase 1 surfaces the seed source via the structured-inquiry channel and records the chosen seed in the reproducibility manifest. |
75
+ | `--dry-run` | Flag | No | Validate the protocol, the environment snapshot, and the data destination without executing the run or writing raw data. Emits the reproducibility manifest's pre-run sections and a readiness verdict; no observation is recorded. |
76
+
77
+ ---
78
+
79
+ ## Sequence Gate
80
+
81
+ **Predecessor.** `/research-design` (Stage 7). This stage requires the operationalized study design and the frozen preregistration the design stage produced.
82
+
83
+ **Precondition.** Both `{suite}/_inputs/study-design.md` and `{suite}/_inputs/preregistration.md` exist, and the Handoff Manifest records `/research-design` as the most recent stage with a clean attestation block.
84
+
85
+ **Gate-failure line.** When the precondition is unmet, halt and emit: `Blocked: run /research-design first` — naming the missing artifact (absent study design, absent preregistration, or unsatisfied manifest attestation). Do not run the experiment against an unfrozen or partial design.
86
+
87
+ **Override path.** `--override` proceeds when the predecessor outputs are present but the manifest attestation is stale; the override records its rationale in the experiment-log disclosure ledger per the `--override` input row above.
88
+
89
+ ---
90
+
91
+ ## Workflow — Five Phases
92
+
93
+ | Phase | Name | Step contract |
94
+ | ----- | ---- | ------------- |
95
+ | 1 | Pre-Run Validation & Environment Snapshot | load-context + verify-prereqs |
96
+ | 2 | Execute the Protocol (preregistered, logged) | execute |
97
+ | 3 | Capture Raw Data with Provenance | execute |
98
+ | 4 | Compose the Reproducibility Manifest | execute |
99
+ | 5 | Validation Gate | gate + report |
100
+
101
+ ### Phase 1 — Pre-Run Validation & Environment Snapshot
102
+
103
+ Read `{suite}/_inputs/study-design.md` and `{suite}/_inputs/preregistration.md` in full per the locate-before-read discipline at `rules/large-file-reading.md`. Confirm every protocol step the design names is executable as written; a step that cannot execute surfaces via the structured-inquiry channel, never resolved by a silent substitution. Discover the host's data convention per `rules/host-discovery.md` and ratify the raw-data destination through the structured-inquiry channel (Infrastructure category) when `--data-dir` is absent. Capture the **environment snapshot** — operating system and version, language runtime and version, every dependency at its resolved version (the version pins per R2), hardware-relevant facts the protocol depends on (CPU/GPU/memory where the result is sensitive), and the locale/timezone. Resolve the **seed** for a stochastic protocol from `--seed` or via inquiry, and record it. Confirm the R6 ethics and conflict-of-interest declarations from the design carry forward and cover the execution as planned; an execution that would exceed the declared scope blocks until the declaration is amended. When `--dry-run` is supplied, emit the manifest's pre-run sections and a readiness verdict, then exit without recording observations.
104
+
105
+ ### Phase 2 — Execute the Protocol (preregistered, logged)
106
+
107
+ Execute the protocol exactly as the preregistration fixes it. Each step writes a timestamped entry to the experiment log the moment it runs (externalise-on-decide per `rules/context-management-protocol.md` §1.1 — the log is never reconstructed after the fact from memory). **Run the positive and negative controls explicitly.** A **positive control** (a condition expected to produce the effect) confirms the measurement apparatus can detect the effect when present; a **negative control** (a condition expected to produce no effect) confirms the apparatus does not manufacture the effect when absent. The controls run alongside the experimental conditions and their outcomes are logged with the same fidelity; a positive control that fails to register, or a negative control that registers, invalidates the run's measurement chain and is surfaced as a finding before the results are trusted (NASEM 2019, <https://nap.nationalacademies.org/catalog/25303/>). When the protocol is computational and the host exposes a runnable command, dispatch `agents/test-runner.md` to execute the collection/run command and capture its exact output, return code, and timing under the read-only run contract; the agent reports the run, never edits the protocol. Every trial enters the log — the confirming observation, the null result, the failed trial, and the unexpected reading alike (R3). A step that deviates from the preregistered protocol is logged with the deviation, its cause, and its timestamp the moment it occurs; the preregistration is not edited to match (R5). Stochastic steps record the seed in force so the draw is reproducible.
108
+
109
+ ### Phase 3 — Capture Raw Data with Provenance
110
+
111
+ Write the raw data to the ratified host-natural destination under **FAIR-aligned capture** (R8) — **Findable** (each dataset carries a persistent identifier and rich metadata), **Accessible** (retrievable by its identifier under stated access terms), **Interoperable** (a documented schema with units and a standard serialization), and **Reusable** (a clear data-use license and full provenance) per the FAIR principles at <https://www.nature.com/articles/sdata201618>. Every observation carries its provenance inline — the timestamp, the protocol step that produced it, the instrument or measurement source, and the seed where the value is a stochastic draw (R2). The raw data is append-only and immutable once written; a correction is a new dated record with the correction's rationale, never an in-place rewrite of the original observation. Record the data's schema (the columns/fields and their units) so the analysis stage reads it without guessing. When a measurement is missing, the absence is recorded explicitly (a marked missing value with its reason), never silently dropped or interpolated (R1 comprehensiveness, R3).
112
+
113
+ ### Phase 4 — Compose the Reproducibility Manifest
114
+
115
+ Compose `{suite}/_outputs/reproducibility-manifest.md` so an independent party re-runs the study to the same observations without consulting the operator. The manifest carries:
116
+
117
+ - **Environment** — the Phase 1 snapshot (OS, runtime, dependency version pins, hardware-relevant facts, locale).
118
+ - **Containerized / pinned environment** — where the protocol is computational, a **container image or pinned environment specification** (a `Dockerfile` / OCI image digest, a `conda`/`uv`/lockfile-pinned environment, or the host-ratified equivalent) that an independent party instantiates to reproduce the exact runtime, rather than re-deriving the dependency set by hand (R2/R8, NASEM 2019 <https://nap.nationalacademies.org/catalog/25303/>). The image digest or lockfile hash is recorded so the environment is byte-identifiable.
119
+ - **Seed(s)** — every seed in force.
120
+ - **Protocol log** — the ordered steps as executed, with the positive/negative-control outcomes and the deviations from preregistration flagged per R5.
121
+ - **Version pins** — every dependency at its exact resolved version, commit-pinned where the source is a repository, never a floating range.
122
+ - **Data manifest** — the raw-data file paths, their schemas/units, and a content hash per file so re-run output is byte-comparable.
123
+ - **Re-run recipe** — the exact command sequence, working directory, and inputs that reproduce the run.
124
+
125
+ Apply incremental generation per `rules/large-file-generation.md` when the manifest exceeds 500 lines. Emit `{suite}/_outputs/experiment-log.md` and `{suite}/_outputs/reproducibility-manifest.md` with the canonical sections enumerated in `## Output`.
126
+
127
+ ### Phase 5 — Validation Gate
128
+
129
+ Run the fifteen-bar pre-emission gate per `rules/pre-emission-gate.md` against the emitted experiment log and reproducibility manifest. M5 authority: zero fabricated data points, zero invented data paths, zero guessed version pins — every environment fact is observed and every gap is marked, not back-filled (R2). M8 definitiveness: the protocol log states what ran with pre/post/failure conditions; deviations are stated, not hedged. M9 visual leverage: any structural relationship the protocol reveals (the run's control-flow, a measurement pipeline, a state machine of trial stages) carries a diagram with the metadata header per `rules/visual-leverage.md`. M14 systemicity: the experiment log declares its upstream (the study design + preregistration), downstream (`/research-analysis`), peers (sibling research-suite artifacts), and enforcers (the Sequence Gate + the reproducibility manifest's re-run recipe). Iterate on failure per the gate rule's §3 until every bar passes; record the attestation block inside the experiment log and update the Handoff Manifest.
130
+
131
+ ---
132
+
133
+ ## Mandates
134
+
135
+ | Discipline | Rule | Enforcement point |
136
+ | ---------- | ---- | ----------------- |
137
+ | Reproducibility (R2) | `rules/ten-dimension-check.md` | Phase 4 manifest carries env + seed + protocol log + version pins + re-run recipe so an independent party re-runs to the same observations. |
138
+ | Open science / FAIR (R8) | `rules/host-discovery.md` | Phase 3 captures raw data FAIR-aligned (findable / accessible / interoperable / reusable); Phase 4 records a containerized or pinned environment so the runtime is byte-identifiable; Phase 2 runs positive/negative controls that validate the measurement chain. |
139
+ | Falsifiability (R3) | `rules/definitiveness.md` | Every trial enters the log — null results, failed trials, and unexpected readings recorded as faithfully as confirming observations. |
140
+ | Preregistration discipline (R5) | `rules/disclosure-ledger.md` | The preregistration is frozen; every deviation from it is disclosed in the experiment log with cause and timestamp, never erased. |
141
+ | Ethics & conflicts (R6) | `rules/authority-inquiry.md` | Phase 1 confirms the ethics + conflict-of-interest + data-availability declarations cover the execution; an out-of-scope run blocks. |
142
+ | Authoritative inquiry | `rules/authority-inquiry.md` | Phase 1 blocks emission until data-destination, seed-source, and human-subject inquiries resolve. |
143
+ | Structured inquiry | `rules/interactive-questions.md` | Every protocol-step substitution and destination ratification routes through the canonical channel; free-form prose questions forbidden. |
144
+ | Protocol execution | `agents/test-runner.md` | Phase 2 dispatches the read-only run agent to execute the computational protocol and capture exact output without editing it. |
145
+ | Externalize-on-decide | `rules/context-management-protocol.md` | Phase 2 writes each log entry the moment its step runs; the log is never reconstructed from memory after the fact. |
146
+ | Pre-emission gate | `rules/pre-emission-gate.md` | Phase 5 runs all fifteen bars against the experiment log and reproducibility manifest before the manifest update. |
147
+
148
+ ---
149
+
150
+ ## Output
151
+
152
+ | Artifact | Path | Purpose |
153
+ | -------- | ---- | ------- |
154
+ | Experiment log | `{suite}/_outputs/experiment-log.md` | The timestamped protocol trace — every step as executed, every trial, every deviation from preregistration — ready for `/research-analysis`. |
155
+ | Raw data | host-natural location (e.g. `data/`) | The captured observations with inline provenance, append-only, schema-recorded, at a host-discovered destination. |
156
+ | Reproducibility manifest | `{suite}/_outputs/reproducibility-manifest.md` | The environment + seed + protocol log + version pins + data manifest + re-run recipe so an independent party reproduces the run. |
157
+ | Handoff Manifest | `{suite}/_inputs/handoff-manifest.yml` | Updated at Phase 5 with `downstream: /research-analysis` and the protocol-adherence-vs-deviation attestation. |
158
+
159
+ The `experiment-log.md` carries these canonical sections: `## §1 Run Header` (the study recap, the run's start/end timestamps, the operator, the suite); `## §2 Protocol Trace` (the ordered steps as executed, each timestamped, with its observation reference); `## §3 Trials & Observations` (every trial — confirming, null, failed, unexpected — keyed to its raw-data record); `## §4 Deviation Ledger` (every departure from the preregistered protocol with cause and timestamp per R5); `## §5 Ethics & Conflicts` (the R6 declarations carried forward, confirmed to cover the run); `## §6 Validation Gate Outcome` (the Phase 5 gate attestation); `## §Bindings (§0.j five-direction)`. The `reproducibility-manifest.md` carries: `## §1 Environment` (OS, runtime, hardware-relevant facts, locale); `## §2 Container / Pinned Environment` (the container image digest or pinned environment spec that instantiates the exact runtime; R8); `## §3 Seed` (every seed in force); `## §4 Version Pins` (every dependency at its exact resolved version, commit-pinned where applicable); `## §5 Data Manifest` (raw-data paths, FAIR metadata, schemas/units, per-file content hashes); `## §6 Re-Run Recipe` (the exact command sequence, working directory, and inputs that reproduce the run).
160
+
161
+ ---
162
+
163
+ ## Example — Standard run with a computational protocol
164
+
165
+ ```text
166
+ $ /research-experiment --suite-name edge-attention-latency --data-dir data/ --seed 1729
167
+
168
+ [Gate] study-design.md + preregistration.md present; predecessor attestation clean. Proceed.
169
+ [Phase 1] Read design + frozen preregistration. All 7 protocol steps executable. Data destination data/ ratified (Infrastructure inquiry). Env snapshot captured: Ubuntu 24.04, Python 3.12.4, 6 pinned deps, 1×A100. Seed 1729 recorded. R6: no human subjects → declarations cover the run.
170
+ [Phase 2] Executed 7 steps; test-runner dispatched for the 3 computational steps. Each step logged on run. 132 trials total: 118 confirming, 9 null, 5 failed (all logged). 1 deviation (step 4 batch size halved on OOM) → Deviation Ledger; preregistration NOT edited.
171
+ [Phase 3] Raw data written to data/latency-runs.parquet (append-only). Schema recorded (8 columns + units). 3 missing values marked with reason.
172
+ [Phase 4] reproducibility-manifest.md composed: env + seed 1729 + 6 commit-pinned deps + per-file content hash + re-run recipe.
173
+ [Phase 5] Fifteen-bar gate PASS; M5 zero fabricated facts; M8 deviations stated not hedged.
174
+ [Phase 5] experiment-log.md + reproducibility-manifest.md emitted; Handoff Manifest updated; downstream: /research-analysis.
175
+ ```
176
+
177
+ ---
178
+
179
+ ## Decision Tree
180
+
181
+ ```mermaid
182
+ %%{ init: { "theme": "neutral" } }%%
183
+ %% verified: 2026-06-15 %%
184
+ %% provenance: commands/research-experiment.md §Workflow %%
185
+ %% cross-reference: agents/test-runner.md, commands/research-design.md, commands/research-analysis.md %%
186
+ flowchart TD
187
+ Start[/research-experiment invoked] --> Gate0{Sequence Gate: study-design.md + preregistration.md present?}
188
+ Gate0 -->|no| Blocked[Halt: 'Blocked: run /research-design first']
189
+ Gate0 -->|yes| Validate[Phase 1 read design + preregistration · confirm steps executable]
190
+ Validate --> Q1{Data destination + seed + ethics scope resolved?}
191
+ Q1 -->|no| Inquiry[Surface destination/seed/ethics via structured inquiry]
192
+ Q1 -->|yes| Snapshot[Phase 1 capture environment snapshot · resolve seed]
193
+ Inquiry --> Snapshot
194
+ Snapshot --> Q2{--dry-run?}
195
+ Q2 -->|yes| Readiness[Emit manifest pre-run sections + readiness verdict · exit]
196
+ Q2 -->|no| Execute[Phase 2 execute preregistered protocol · log each step on run]
197
+ Execute --> Trial{Trial outcome}
198
+ Trial -->|confirming| Record[Phase 3 record observation with provenance]
199
+ Trial -->|null/failed/unexpected| Record
200
+ Trial -->|deviation from preregistration| Deviation[Log deviation + cause + timestamp · do not edit preregistration]
201
+ Deviation --> Record
202
+ Record --> Manifest[Phase 4 compose reproducibility manifest · env + seed + pins + recipe]
203
+ Manifest --> GateN{Phase 5 fifteen-bar gate passes?}
204
+ GateN -->|no| Revise[Revise per failing bar's action]
205
+ Revise --> GateN
206
+ GateN -->|yes| Emit[Emit experiment-log.md + reproducibility-manifest.md · update Handoff Manifest]
207
+ ```
208
+
209
+ ---
210
+
211
+ ## Critical Rules
212
+
213
+ - **NEVER run against an unfrozen design.** The Sequence Gate halts with `Blocked: run /research-design first` until the study design and preregistration are present and the predecessor attestation is clean (or `--override` is supplied with rationale).
214
+ - **NEVER edit the preregistration to match the run.** The analysis plan is frozen; a deviation from it is logged in the Deviation Ledger with cause and timestamp, never erased (R5).
215
+ - **NEVER drop a null or failed trial.** Every trial enters the log with the same fidelity as a confirming observation (R3); a marked missing value records its reason, never a silent interpolation.
216
+ - **NEVER fabricate a reproducibility fact.** Data points, data paths, and version pins are observed, not invented; an unrecordable environment fact is marked as a reproducibility hole in the manifest (R2).
217
+ - **NEVER rewrite a recorded observation in place.** The raw data is append-only; a correction is a new dated record with its rationale.
218
+ - **NEVER skip the validation gate.** All fifteen bars pass before the Handoff Manifest updates and `/research-analysis` may consume the data.
219
+
220
+ ---
221
+
222
+ ## Recommended Next Step
223
+
224
+ Invoke `/research-analysis` to run the preregistered tests against the captured raw data, compute effect sizes with confidence intervals, and disclose every deviation; `/research-analysis` is the canonical pipeline successor that consumes the raw data alongside `_inputs/preregistration.md`.
225
+
226
+ ## Bindings (§0.j five-direction)
227
+
228
+ - **Drives →** ● `commands/research-analysis.md` (the canonical downstream consumer; `/research-analysis` consumes the raw data + preregistration). ● `{suite}/_outputs/experiment-log.md` (the principal trace artifact). ● `{suite}/_outputs/reproducibility-manifest.md` (the environment + seed + pins + re-run recipe). ● the raw data at the host-natural location (the observed dataset). ● `{suite}/_inputs/handoff-manifest.yml` (the updated Handoff Manifest). ● `agents/test-runner.md` (Phase 2 protocol-execution dispatch). ● The fifteen-bar pre-emission gate at Phase 5.
229
+ - **Satisfies →** ● The research-pipeline Stage 5 run-and-record slot per the design contract. ● The R2 reproducibility mandate (env + seed + protocol + version pins recorded for independent re-run). ● `rules/interactive-questions.md` §1 canonical channel obligation (every destination, seed, and ethics-scope ambiguity routes through the structured-inquiry channel). ● `rules/authority-inquiry.md` (the Infrastructure + Security inquiry categories gating the real-world data-path binding).
230
+ - **Established by ↑** ● The research-pipeline design contract (the per-stage table that ratifies this stage's consumed/emitted boundary). ● `rules/cognitive-identity.md` §1 seven-axs-of-breadth taxonomy (the axs-of-attention frame). ● `commands/research-design.md` (the predecessor whose study design + frozen preregistration this stage executes).
231
+ - **Gated by ←** ● The Sequence Gate (`/research-design` outputs present + clean attestation, or `--override` with rationale). ● The R6 ethics + conflict-of-interest declaration covering the execution. ● Operator invocation with an active research suite. ● The harness's Agent + structured inquiry + Read + Write + Edit + Bash tool surface.
232
+ - **Cross-bound with ↔** ↔ `commands/research-design.md` (predecessor; study-design + preregistration → execution hand-off). ↔ `commands/research-analysis.md` (successor; raw data + log → analysis hand-off). ↔ `agents/test-runner.md` (the read-only protocol-execution dispatch this stage drives for computational runs). ↔ `rules/cognitive-identity.md` (the five filters and seven-axs taxonomy). ↔ `rules/authority-inquiry.md` (every destination, seed, and ethics-scope ambiguity routes through the canonical channel). ↔ `rules/interactive-questions.md` (the three-segment option-annotation schema). ↔ `rules/definitiveness.md` (the protocol log meets the no-hedging floor; R3 null results recorded). ↔ `rules/disclosure-ledger.md` (the Deviation Ledger discloses every departure from preregistration; R5). ↔ `rules/context-management-scratch.md` (the `_outputs/` durable-emission surface). ↔ `rules/context-management-protocol.md` (externalize-on-decide for the live protocol log). ↔ `rules/host-discovery.md` (the raw-data destination is discovered, not invented). ↔ `rules/pre-emission-gate.md` (fifteen-bar validation at Phase 5). ↔ `rules/large-file-generation.md` (incremental generation for a manifest exceeding 500 lines).