@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,37 @@
1
+ ---
2
+ trigger: always_on
3
+ description: "Apothem governance and convention surface for the Trae harness — applied every session to honour project-wide engineering discipline."
4
+ ---
5
+
6
+ <!-- SPDX-License-Identifier: MIT -->
7
+
8
+ # Apothem — Trae Bootstrap
9
+
10
+ This file is materialised by `apothem install --harness trae --project <path>` and lands at `<project>/.trae/rules/apothem-rules.md`, a dedicated Apothem rules file inside the current Trae project rules directory per https://docs.trae.ai/ide/rules. It sits alongside the operator-owned `project_rules.md` and `user_rules.md` anchors and never clobbers them.
11
+
12
+ ## What Apothem governs in this project
13
+
14
+ Apothem propagates a shared governance and convention surface across every supported AI harness in this project's host environment. Inside Trae, the surface manifests as this `always_on` rule file:
15
+
16
+ - **Rules** — engineering rules applied on every interaction (`trigger: always_on`). The full rule cohort lives at the apothem source repository under `src/apothem/rules/`; this Trae-facing anchor names the disciplines the operator may consult in detail.
17
+ - **Skills, commands, agents** — reusable techniques, slash-style workflows, and persistent sub-agent definitions. Apothem's canonical-master cohort at the apothem source repository defines them; Trae does not auto-discover them as separate surfaces, so they manifest here as referenced discipline.
18
+ - **MCP** — Trae's tool-server surface (`.trae/mcp.json`) is operator-authored, not apothem-managed.
19
+ - **Skills directory** — Trae's skill surface (`.trae/skills/`) is operator-authored, not apothem-managed.
20
+
21
+ ## Engineering disciplines in force
22
+
23
+ Apothem's foundational mandates apply uniformly across every harness, including Trae:
24
+
25
+ - **Plans-Locality.** Plan-suite artefacts (PROGRESS.md, PLAN-NOTES.md, PHASE.md, REPORT.md) live under `<project>/.apothem/plans/{suite}/` — the sole canonical home; a legacy `<project>/.plans/` tree upgrades via `apothem migrate-workspace`. They never land in a global plans directory or any other global-ecosystem location.
26
+ - **Authority hygiene.** Never fabricate identity, scope, security posture, or version-pin data. Surface ambiguity through a question instead of inventing a plausible-looking value.
27
+ - **Definitiveness.** Hedging vocabulary (`maybe`, `might`, `usually`, `generally`, `typically`, `probably`) is eliminated where binding prescription is possible. Pre / post / failure conditions are stated on every contract.
28
+ - **Production-ready discipline.** Every change ships in production-ready form — tests, docs, CHANGELOG entry, conformant commit message, CI green — in the same change-set.
29
+ - **Plain-language.** Codebase artefacts and user-facing prose read as natural domain language with zero trace of internal planning structure.
30
+ - **Human-only authorship.** Git commit messages, PR descriptions, branch names, and tag annotations carry human contributors only — never the underlying language model, runtime, IDE extension, or any automated tool as a co-author.
31
+ - **Lean-context delegation.** Where the host provides delegated-worker dispatch, broad reads and heavy workloads route to a spawned worker by default so the main working context stays lean. The heavy parallel apparatus stays opt-in; routing delegable work away from the main thread is the standing posture once dispatch is available.
32
+ - **Observe-decide-act discipline.** Tool use runs as a loop — observe the current state, decide the next move from what was observed, then act — never an edit before a read or a result asserted before a check. Independent reads and searches run together in one pass, not one per turn; the loop closes on a verifiable condition (a gate green, a read confirmed), never a fixed number of tries. Advisory, never an auto-applied behavior.
33
+ - **Source accessibility.** When the authoritative source for a claim, convention, or version pin is closed, paywalled, login-gated, or otherwise unreachable, ask the operator for it in full rather than substituting a lower-trust open page. Trust outranks reachability.
34
+
35
+ ## Refreshing the file
36
+
37
+ Re-run `apothem install --harness trae --project <this-project-root>` to overwrite this file with the latest apothem template. The operation is idempotent. `apothem uninstall --harness trae --project <this-project-root>` renames the file to a timestamped backup; `apothem verify --harness trae --project <this-project-root>` checks the file is present and non-empty.
@@ -0,0 +1,25 @@
1
+ # SPDX-License-Identifier: MIT
2
+
3
+ """Uninstall logic for the trae harness adapter."""
4
+
5
+ from __future__ import annotations
6
+
7
+ from pathlib import Path
8
+
9
+ from apothem.harnesses._shared import install_driver
10
+
11
+ _HARNESS_NAME: str = "trae"
12
+
13
+
14
+ def uninstall(output_path: Path, *, project: Path | None = None) -> None:
15
+ """Remove Apothem-managed Trae targets surgically.
16
+
17
+ The apothem-rules ``sentinel_merge`` anchor is cleaned by the shared driver,
18
+ which strips only Apothem's managed block (operator prose survives), deletes
19
+ an Apothem-only file, and backs the file up under the Apothem backup root —
20
+ no whole-file ``.bak`` sibling is left beside the operator's file.
21
+ """
22
+ install_driver.run_uninstall(
23
+ _HARNESS_NAME,
24
+ project_root=project or output_path.parents[2],
25
+ )
@@ -0,0 +1,10 @@
1
+ # SPDX-License-Identifier: MIT
2
+
3
+ """Update logic for the trae harness adapter."""
4
+
5
+ from __future__ import annotations
6
+
7
+ from apothem.harnesses._shared.wrapper_factories import make_update_project
8
+ from apothem.harnesses.trae.install import install
9
+
10
+ update = make_update_project(install)
@@ -0,0 +1,11 @@
1
+ # SPDX-License-Identifier: MIT
2
+
3
+ """Verify logic for the trae harness adapter."""
4
+
5
+ from __future__ import annotations
6
+
7
+ from apothem.harnesses._shared.wrapper_factories import make_verify_project
8
+
9
+ _HARNESS_NAME: str = "trae"
10
+
11
+ verify = make_verify_project(_HARNESS_NAME)
@@ -0,0 +1,91 @@
1
+ <!-- SPDX-License-Identifier: MIT -->
2
+
3
+ # Windsurf Standard Convention Pin
4
+
5
+ ## Snapshot
6
+
7
+ - Snapshot date: 2026-06-25
8
+ - Adapter source: `src/apothem/harnesses/windsurf/`
9
+ - Evidence level: adapter-local projection; no vendor-native UI claim is made here.
10
+
11
+ ## Official Surface Refresh
12
+
13
+ - Refreshed live 2026-06-25 against the current vendor documentation
14
+ (`docs.devin.ai`). The windsurf harness rebranded to **Devin Desktop**
15
+ (OTA rollout 2026-06-02); the docs authority host moved from
16
+ `docs.windsurf.com` to the first-party Devin host `docs.devin.ai`. No
17
+ immutable version pin is exposed (mutable docs site), so every captured
18
+ convention carries a no-immutable-source exception. The harness slug stays
19
+ `windsurf`.
20
+ - **Write-target migration.** The vendor's current docs make
21
+ `<project>/.devin/rules/*.md` the **preferred** workspace-rules surface, which
22
+ **takes precedence** over the retained backward-compat fallback at
23
+ `<project>/.windsurf/rules/*.md`. The adapter migrated its canonical write
24
+ target to `<project>/.devin/rules/apothem-rules.md` so the merged rules file is
25
+ never silently shadowed by any `.devin/rules/` content the operator already
26
+ keeps. Evidence: vendor-doc-url
27
+ <https://docs.devin.ai/desktop/cascade/workspace-rules>; snapshot-id living
28
+ docs; snapshot-date 2026-06-25.
29
+ - Config-root correction: the global config root is `~/.codeium/windsurf/`
30
+ (global rules, MCP, skills, memories), not `~/.windsurf/`. The workspace
31
+ directory carries both the preferred `.devin/` tree (rules, skills) and the
32
+ retained `.windsurf/` fallback tree.
33
+ - MCP is now recognized: `~/.codeium/windsurf/mcp_config.json` (stdio / HTTP /
34
+ SSE / OAuth) is operator-owned; the adapter recognizes it but does not author
35
+ entries. `capabilities.yml` `mcp_servers` and the shared capability matrix were
36
+ refreshed accordingly.
37
+ - Workspace rules are a `*.md` directory (12k char per file), not a single file;
38
+ `layered_context_surface` names the preferred `.devin/rules/*.md` directory
39
+ with the `.windsurf/rules/` backward-compat fallback noted.
40
+ - Native skills are a documented vendor surface at
41
+ `.windsurf/skills/<name>/SKILL.md` (Markdown SKILL.md with YAML frontmatter
42
+ carrying `name` + `description`); workflows (`.windsurf/workflows/`) and a
43
+ `hooks.json` hook surface are also vendor-side. The adapter delivers only the
44
+ project rules file and authors none of those cohorts (deliberate rules-only
45
+ posture). The `hooks.json` surface is **unverified against current docs** —
46
+ it could not be confirmed in the current official `docs.devin.ai` documentation
47
+ and is carried as a tracked claim pending re-verification. Settings,
48
+ agent-dispatch, plugins, and status-lines remain undocumented as file surfaces.
49
+ - Web-fetch / browser-retrieval (`web_fetch` = **yes**): the Cascade agent
50
+ ships Web Search + URL Read (page fetch/chunk) tools, forced via `@web` and
51
+ `@docs`, gated by the "Enable Web Search" admin setting — the backing dimension
52
+ for `rules/source-accessibility.md` step 1. Evidence: vendor-doc-url
53
+ <https://docs.devin.ai/desktop/cascade/web-search>; snapshot-id living docs;
54
+ snapshot-date 2026-06-25.
55
+
56
+ ## Recommended Postfix Rendering
57
+
58
+ - Status: supported as plain text.
59
+ - Mechanism: Apothem emits the literal ` (Recommended)` suffix in the option label. Windsurf rule templates preserve that suffix as authored.
60
+ - Boundary: this pin does not claim a harness-native recommended-option widget. It only pins the text-rendered convention used by `rules/interactive-questions.md`.
61
+
62
+ ## Long Context and Compaction
63
+
64
+ - Status: profile-managed.
65
+ - Mechanism: Apothem keeps full-suite `/plan-execute` runs continuous by externalizing state to `.apothem/plans/`, compacting or restarting the harness session at phase boundaries as needed, and restoring via the Blind Bootstrap sequence.
66
+ - Boundary: this pin does not claim vendor-native autocompaction or a long-context size. It pins the adapter-local state handoff and compaction-restoration convention used by `rules/context-management.md`.
67
+
68
+ ## Large-Codebase Practice Projection
69
+
70
+ - Layered context: declared in `capabilities.yml` under `layered_context_surface`; no vendor-native hierarchy is claimed beyond the adapter's documented file/template surface.
71
+ - LSP symbol navigation: `tracked-gap` until a vendor-ratified plugin or tool surface is pinned.
72
+ - Hook learning capture: routed through the `persistent-conventions-vigilance` artifact-evolution cycle; pass-class hooks stay silent and recurring findings become rule, skill, hook, or documentation updates.
73
+
74
+ ## Plugin-alone Persistence
75
+
76
+ Windsurf (Devin Desktop) exposes **no vendor plugin or extension install surface**
77
+ that Apothem ships. The adapter is project-scope rules-only: it writes a single
78
+ merged rules file at `<project>/.devin/rules/apothem-rules.md` (the preferred
79
+ surface; `.windsurf/rules/` is the backward-compat fallback) and authors no other
80
+ cohort. There is no standalone-installable bundle; every artifact requires the
81
+ full `apothem install --harness windsurf --project <path>` engine run.
82
+
83
+ | Artifact class | Persists standalone? | Mechanism / limit |
84
+ |---|---|---|
85
+ | Rules | No — requires `apothem install` | The merged `apothem-rules.md` (carrying the embedded behavioral mandates) is written only by the engine into the preferred `.devin/rules/` directory (`.windsurf/rules/` backward-compat fallback). Nothing persists before that run. |
86
+ | Commands / Skills / Agents | No — platform limit | The vendor documents native skills (`.windsurf/skills/<name>/SKILL.md`), workflows, and an unverified `hooks.json` surface but no command/agent primitive Apothem targets; these cohorts are not materialized for this harness (deliberate rules-only posture). |
87
+ | Hooks / MCP / Settings | No — operator-owned / platform limit | `~/.codeium/windsurf/mcp_config.json` (MCP) is operator-owned and the `hooks.json` surface is unverified against current docs; the adapter authors no entries. |
88
+
89
+ Platform limit: Windsurf ships no marketplace/extension channel, so a
90
+ plugin-alone story does not exist — the merged rules file via `apothem install`
91
+ is the sole persistence surface.
@@ -0,0 +1,52 @@
1
+ # SPDX-License-Identifier: MIT
2
+
3
+ """Apothem harness adapter for windsurf — project-scope install.
4
+
5
+ Materializes the apothem rules surface into the operator-supplied
6
+ project root at ``<project>/.devin/rules/apothem-rules.md`` — the
7
+ preferred workspace-rules surface per the vendor's current docs
8
+ (https://docs.devin.ai/desktop/cascade/workspace-rules). The windsurf
9
+ harness rebranded to Devin Desktop (OTA 2026-06-02); ``.devin/rules/``
10
+ now TAKES PRECEDENCE over the retained backward-compat fallback at
11
+ ``.windsurf/rules/``, so Apothem writes the canonical target into
12
+ ``.devin/rules/`` to avoid being silently shadowed. The harness slug stays
13
+ ``windsurf``. The legacy single-file ``.windsurfrules`` user-scope target is
14
+ excluded; Windsurf / Devin workflows and memories are out of apothem's adapter
15
+ scope.
16
+
17
+ The adapter opts into the project-scope contract via
18
+ ``requires_project = True``; the CLI rejects an install / update /
19
+ uninstall / verify invocation that omits ``--project <path>``. Delegates
20
+ install logic to :mod:`apothem.harnesses.windsurf.install`, which
21
+ consumes the canonical propagation manifest at
22
+ ``src/apothem/lib/propagation-manifest.yaml``.
23
+ """
24
+
25
+ from __future__ import annotations
26
+
27
+ from pathlib import Path
28
+
29
+ from apothem.harnesses._shared.wrapper_factories import make_project_scope_adapter
30
+ from apothem.harnesses.windsurf.install import install as _install
31
+ from apothem.harnesses.windsurf.install import plan as _plan
32
+ from apothem.harnesses.windsurf.uninstall import uninstall as _uninstall
33
+ from apothem.harnesses.windsurf.update import update as _update
34
+ from apothem.harnesses.windsurf.verify import verify as _verify
35
+
36
+ # Sentinel relative path used by ``output_path`` for display purposes
37
+ # only. The real target is resolved per-install via
38
+ # ``resolve_output_path(project)`` once the operator supplies
39
+ # ``--project <path>``.
40
+ _SENTINEL_RELATIVE: Path = Path(".devin") / "rules" / "apothem-rules.md"
41
+
42
+ WindsurfAdapter = make_project_scope_adapter(
43
+ "windsurf",
44
+ error_label="windsurf",
45
+ relative_target=_SENTINEL_RELATIVE,
46
+ install_fn=_install,
47
+ plan_fn=_plan,
48
+ uninstall_fn=_uninstall,
49
+ update_fn=_update,
50
+ verify_fn=_verify,
51
+ class_name="WindsurfAdapter",
52
+ )
@@ -0,0 +1,40 @@
1
+ # SPDX-License-Identifier: MIT
2
+
3
+ # Per rules/agent-capability-discipline.md §1 / §3 / §7. Windsurf
4
+ # ratifies MCP via ~/.codeium/windsurf/mcp_config.json (operator-owned;
5
+ # the adapter recognizes it but does not author entries). The windsurf
6
+ # harness rebranded to Devin Desktop (OTA 2026-06-02); the adapter delivers a
7
+ # single project rules file under the preferred .devin/rules/ surface (which
8
+ # takes precedence over the .windsurf/rules/ backward-compat fallback) and does
9
+ # not dispatch sub-agents or author workflow/skill/hook cohorts.
10
+
11
+ mcp_servers:
12
+ - user-scope-~/.codeium/windsurf/mcp_config.json
13
+ # Operator-owned MCP surface: the adapter recognizes it but authors no entries.
14
+ mcp_servers_authored: false
15
+ sub_agent_dispatch: false
16
+ custom_command_support: "no"
17
+ recommended_postfix_rendering: "plain-text"
18
+ long_context_compaction: "profile-managed"
19
+ context_ignore_surface: "not-documented-in-current-pin"
20
+ layered_context_surface: ".devin/rules/*.md directory (preferred; .windsurf/rules/ backward-compat fallback)"
21
+ lsp_symbol_navigation: "tracked-gap-no-adapter-owned-LSP-surface"
22
+ hook_learning_capture: "artifact-evolution-cycle"
23
+ standard_convention_pin: "STANDARD-CONVENTION-PIN.md"
24
+ # web-fetch / browser-retrieval surface — the backing capability dimension for
25
+ # rules/source-accessibility.md step 1 ("retrieve through the host's browser /
26
+ # fetch capability"). Vendor-confirmed: Windsurf's Cascade agent ships Web Search
27
+ # + URL Read (page fetch/chunk) tools, forced via `@web` and `@docs`, gated by
28
+ # the "Enable Web Search" admin setting. Evidence triple — vendor-doc-url:
29
+ # https://docs.windsurf.com/windsurf/cascade/web-search (307-redirects to the
30
+ # Devin-branded first-party host docs.devin.ai post-acquisition; both first-party);
31
+ # snapshot-id: living docs; snapshot-date: 2026-06-21. Canonical evidence home is
32
+ # STANDARD-CONVENTION-PIN.md per rules/agent-capability-discipline-matrix.md §1A;
33
+ # pin refresh tracked as a follow-up.
34
+ web_fetch: "yes"
35
+ tool_surface_restrictions:
36
+ - secrets-paths
37
+ - destructive-shell-ops
38
+ - network-write-unsigned
39
+ system_prompt_template_path: "templates/apothem-rules.md"
40
+ agent_memory_surface: "n/a"
@@ -0,0 +1,41 @@
1
+ # SPDX-License-Identifier: MIT
2
+
3
+ """Install logic for the windsurf harness adapter.
4
+
5
+ Materializes the apothem Windsurf rules surface into the operator-supplied
6
+ project root. The windsurf harness rebranded to Devin Desktop (OTA
7
+ 2026-06-02); its preferred workspace-rules surface is now the project-scope
8
+ multi-file format at ``<project>/.devin/rules/*.md`` (per
9
+ https://docs.devin.ai/desktop/cascade/workspace-rules), which TAKES
10
+ PRECEDENCE over the retained backward-compat fallback at
11
+ ``<project>/.windsurf/rules/*.md``. Apothem writes the canonical target into
12
+ ``.devin/rules/`` to avoid being silently shadowed. The harness slug stays
13
+ ``windsurf``. The legacy single-file ``.windsurfrules`` target is excluded.
14
+
15
+ The propagation contract is declared in the canonical manifest at
16
+ ``src/apothem/lib/propagation-manifest.yaml`` under the ``windsurf`` key
17
+ (a single ``sentinel_merge`` operation targeting
18
+ ``${PROJECT_ROOT}/.devin/rules/apothem-rules.md``) and applied by the
19
+ shared driver at ``apothem.harnesses._shared.install_driver``. The
20
+ ``${PROJECT_ROOT}`` placeholder is substituted with the operator-supplied
21
+ ``--project <path>`` value the CLI threads through; absence of
22
+ ``--project`` is rejected upstream at ``apothem.cli._materialize`` via the
23
+ ``requires_project`` opt-in.
24
+ """
25
+
26
+ from __future__ import annotations
27
+
28
+ from apothem.harnesses._shared.wrapper_factories import (
29
+ make_project_scope_install,
30
+ make_project_scope_plan,
31
+ )
32
+
33
+ # Manifest harness key for this adapter.
34
+ _HARNESS_NAME: str = "windsurf"
35
+
36
+ install = make_project_scope_install(
37
+ _HARNESS_NAME,
38
+ error_message="windsurf adapter requires --project <path>; CLI must thread it through",
39
+ )
40
+
41
+ plan = make_project_scope_plan(_HARNESS_NAME)
@@ -0,0 +1,37 @@
1
+ ---
2
+ trigger: always_on
3
+ description: "Apothem governance and convention surface for the Windsurf harness — applied every session to honour project-wide engineering discipline."
4
+ ---
5
+
6
+ <!-- SPDX-License-Identifier: MIT -->
7
+
8
+ # Apothem — Windsurf Bootstrap
9
+
10
+ This file is materialised by `apothem install --harness windsurf --project <path>` and lands at `<project>/.devin/rules/apothem-rules.md`, the preferred workspace-rules surface per the vendor's current docs (https://docs.devin.ai/desktop/cascade/workspace-rules). The windsurf harness rebranded to Devin Desktop (OTA 2026-06-02); `.devin/rules/` now takes precedence over the retained backward-compat fallback at `.windsurf/rules/`. The legacy single-file `.windsurfrules` target is excluded because Apothem targets the multi-file project rules directory.
11
+
12
+ ## What Apothem governs in this project
13
+
14
+ Apothem propagates a shared governance and convention surface across every supported AI harness in this project's host environment. Inside Windsurf, the surface manifests as this `always_on` rule file:
15
+
16
+ - **Rules** — engineering rules applied on every interaction (`trigger: always_on`). The full rule cohort lives at the apothem source repository under `src/apothem/rules/`; this Windsurf-facing anchor names the disciplines the operator may consult in detail.
17
+ - **Skills, commands, agents** — reusable techniques, slash-style workflows, and persistent sub-agent definitions. Apothem's canonical-master cohort at the apothem source repository defines them; Windsurf does not auto-discover them as separate surfaces, so they manifest here as referenced discipline.
18
+ - **Workflows** — Windsurf's slash-command surface (`.windsurf/workflows/`) is operator-authored, not apothem-managed.
19
+ - **Memories** — Windsurf's memory surface (`~/.codeium/windsurf/memories/`) is machine-local, not apothem-managed.
20
+
21
+ ## Engineering disciplines in force
22
+
23
+ Apothem's foundational mandates apply uniformly across every harness, including Windsurf:
24
+
25
+ - **Plans-Locality.** Plan-suite artefacts (PROGRESS.md, PLAN-NOTES.md, PHASE.md, REPORT.md) live under `<project>/.apothem/plans/{suite}/` — the sole canonical home; a legacy `<project>/.plans/` tree upgrades via `apothem migrate-workspace`. They never land in a global plans directory or any other global-ecosystem location.
26
+ - **Authority hygiene.** Never fabricate identity, scope, security posture, or version-pin data. Surface ambiguity through a question instead of inventing a plausible-looking value.
27
+ - **Definitiveness.** Hedging vocabulary (`maybe`, `might`, `usually`, `generally`, `typically`, `probably`) is eliminated where binding prescription is possible. Pre / post / failure conditions are stated on every contract.
28
+ - **Production-ready discipline.** Every change ships in production-ready form — tests, docs, CHANGELOG entry, conformant commit message, CI green — in the same change-set.
29
+ - **Plain-language.** Codebase artefacts and user-facing prose read as natural domain language with zero trace of internal planning structure.
30
+ - **Human-only authorship.** Git commit messages, PR descriptions, branch names, and tag annotations carry human contributors only — never the underlying language model, runtime, IDE extension, or any automated tool as a co-author.
31
+ - **Lean-context delegation.** Where the host provides delegated-worker dispatch, broad reads and heavy workloads route to a spawned worker by default so the main working context stays lean. The heavy parallel apparatus stays opt-in; routing delegable work away from the main thread is the standing posture once dispatch is available.
32
+ - **Observe-decide-act discipline.** Tool use runs as a loop — observe the current state, decide the next move from what was observed, then act — never an edit before a read or a result asserted before a check. Independent reads and searches run together in one pass, not one per turn; the loop closes on a verifiable condition (a gate green, a read confirmed), never a fixed number of tries. Advisory, never an auto-applied behavior.
33
+ - **Source accessibility.** When the authoritative source for a claim, convention, or version pin is closed, paywalled, login-gated, or otherwise unreachable, ask the operator for it in full rather than substituting a lower-trust open page. Trust outranks reachability.
34
+
35
+ ## Refreshing the file
36
+
37
+ Re-run `apothem install --harness windsurf --project <this-project-root>` to overwrite this file with the latest apothem template. The operation is idempotent. `apothem uninstall --harness windsurf --project <this-project-root>` renames the file to a timestamped backup; `apothem verify --harness windsurf --project <this-project-root>` checks the file is present and non-empty.
@@ -0,0 +1,25 @@
1
+ # SPDX-License-Identifier: MIT
2
+
3
+ """Uninstall logic for the windsurf harness adapter."""
4
+
5
+ from __future__ import annotations
6
+
7
+ from pathlib import Path
8
+
9
+ from apothem.harnesses._shared import install_driver
10
+
11
+ _HARNESS_NAME: str = "windsurf"
12
+
13
+
14
+ def uninstall(output_path: Path, *, project: Path | None = None) -> None:
15
+ """Remove Apothem-managed Windsurf targets surgically.
16
+
17
+ The apothem-rules ``sentinel_merge`` anchor is cleaned by the shared driver,
18
+ which strips only Apothem's managed block (operator prose survives), deletes
19
+ an Apothem-only file, and backs the file up under the Apothem backup root —
20
+ no whole-file ``.bak`` sibling is left beside the operator's file.
21
+ """
22
+ install_driver.run_uninstall(
23
+ _HARNESS_NAME,
24
+ project_root=project or output_path.parents[2],
25
+ )
@@ -0,0 +1,10 @@
1
+ # SPDX-License-Identifier: MIT
2
+
3
+ """Update logic for the windsurf harness adapter."""
4
+
5
+ from __future__ import annotations
6
+
7
+ from apothem.harnesses._shared.wrapper_factories import make_update_project
8
+ from apothem.harnesses.windsurf.install import install
9
+
10
+ update = make_update_project(install)
@@ -0,0 +1,11 @@
1
+ # SPDX-License-Identifier: MIT
2
+
3
+ """Verify logic for the windsurf harness adapter."""
4
+
5
+ from __future__ import annotations
6
+
7
+ from apothem.harnesses._shared.wrapper_factories import make_verify_project
8
+
9
+ _HARNESS_NAME: str = "windsurf"
10
+
11
+ verify = make_verify_project(_HARNESS_NAME)
@@ -0,0 +1,92 @@
1
+ <!-- SPDX-License-Identifier: MIT -->
2
+
3
+ # Zed Standard Convention Pin
4
+
5
+ ## Snapshot
6
+
7
+ - Snapshot date: 2026-06-25
8
+ - Adapter source: `src/apothem/harnesses/zed/`
9
+ - Evidence level: adapter-local projection; no vendor-native UI claim is made here.
10
+ - canonical-filename: `.rules`
11
+ - vendor-doc-url: https://zed.dev/docs/ai/instructions
12
+
13
+ ## Official Surface Refresh
14
+
15
+ - Captured 2026-06-25 against the current Zed documentation (`zed.dev/docs`).
16
+ No authority-host move; no immutable version pin is exposed (mutable docs
17
+ site), so every captured convention carries a no-immutable-source exception.
18
+ - Zed reorganized its AI docs (Reusable Rules → Skills, Always-on Rules →
19
+ Instructions, ~v1.4.0): `zed.dev/docs/ai/instructions`, `.../ai/skills`, and
20
+ `.../ai/rules` now coexist (the `ai/rules` page still resolves and documents
21
+ `.rules` / `.cursorrules` / `CLAUDE.md` / `AGENTS.md`). The `.rules`
22
+ project-root file behavior is unchanged and current — Zed still auto-includes
23
+ the flat `.rules` file as agent instructions; only the docs were reorganized
24
+ (re-verified live 2026-06-25 against `zed.dev/docs`).
25
+ - Surface: Zed auto-includes a single flat project-root file `.rules` as agent
26
+ instructions (alongside the `AGENTS.md` / `CLAUDE.md` family). The format is
27
+ free-form plaintext / Markdown with no schema. The global surface is
28
+ `~/.config/zed/AGENTS.md`.
29
+ - DIVERGENCE (flat file, no dedicated apothem file): unlike the cohort's
30
+ rules-directory shape (a dedicated `apothem-rules.md` inside a `rules/`
31
+ directory), Zed reads one flat `.rules` file at the project root. The adapter
32
+ therefore writes `<project>/.rules` directly. There is no per-tool rules
33
+ subdirectory to scope the apothem block into.
34
+ - DIVERGENCE (backup-on-replace): because `.rules` is a single shared file an
35
+ operator may already maintain, the shared install driver backs up any
36
+ pre-existing `.rules` to a timestamped copy under `~/.apothem/backups/`
37
+ before replacement (and `apothem uninstall` renames the live file to a
38
+ timestamped sibling backup). The operator's prior instruction file is never
39
+ silently lost.
40
+ - MCP is recognized: Zed's context servers are configured via
41
+ `.zed/settings.json` (and global settings) under `context_servers`
42
+ (operator-owned). The adapter recognizes the surface but does not author
43
+ entries. `capabilities.yml` `mcp_servers` and the shared capability matrix
44
+ reflect this.
45
+ - The vendor documents threads, agent profiles, and MCP context servers as
46
+ separate surfaces. The adapter delivers only the project `.rules` file and
47
+ authors none of those cohorts (deliberate rules-only posture). Sub-agent
48
+ dispatch, hooks, skills, and output-styles remain undocumented as
49
+ adapter-owned file surfaces.
50
+ - Skills (`discovery-pending`): Zed now documents a native Skills surface at
51
+ `zed.dev/docs/ai/skills` (the Reusable Rules → Skills migration). The adapter
52
+ does not yet author skill files for this harness; the surface is recognized
53
+ but its adapter-owned shape is discovery-pending against a pinned snapshot.
54
+ No absence is asserted — the surface exists and awaits a discovery pass.
55
+
56
+ ## Recommended Postfix Rendering
57
+
58
+ - Status: supported as plain text.
59
+ - Mechanism: Apothem emits the literal ` (Recommended)` suffix in the option label. Zed instruction files preserve that suffix as authored.
60
+ - Boundary: this pin does not claim a harness-native recommended-option widget. It only pins the text-rendered convention used by `rules/interactive-questions.md`.
61
+
62
+ ## Long Context and Compaction
63
+
64
+ - Status: profile-managed.
65
+ - Mechanism: Apothem keeps full-suite `/plan-execute` runs continuous by externalizing state to `.apothem/plans/`, compacting or restarting the harness session at phase boundaries as needed, and restoring via the Blind Bootstrap sequence.
66
+ - Boundary: this pin does not claim vendor-native autocompaction or a long-context size. It pins the adapter-local state handoff and compaction-restoration convention used by `rules/context-management.md`.
67
+
68
+ ## Large-Codebase Practice Projection
69
+
70
+ - Layered context: declared in `capabilities.yml` under `layered_context_surface`; Zed reads a single flat `.rules` file, so no vendor-native rule hierarchy is claimed beyond that file and template surface.
71
+ - LSP symbol navigation: `tracked-gap` until a vendor-ratified plugin or tool surface is pinned.
72
+ - Hook learning capture: routed through the `persistent-conventions-vigilance` artifact-evolution cycle; pass-class hooks stay silent and recurring findings become rule, skill, hook, or documentation updates.
73
+
74
+ ## Plugin-alone Persistence
75
+
76
+ Zed exposes **no vendor plugin or extension install surface** that Apothem ships
77
+ for its instruction surface. The adapter is project-scope rules-only: it writes a
78
+ single flat merged file at `<project>/.rules` (backing up any pre-existing
79
+ `.rules` first) and authors no other cohort. There is no standalone-installable
80
+ bundle; every artifact requires the full
81
+ `apothem install --harness zed --project <path>` engine run.
82
+
83
+ | Artifact class | Persists standalone? | Mechanism / limit |
84
+ |---|---|---|
85
+ | Rules (flat `.rules`) | No — requires `apothem install` | The merged `.rules` file (carrying the embedded behavioral mandates) is written only by the engine to the project root. Nothing persists before that run. |
86
+ | Commands / Skills / Agents | No — platform limit | Zed documents threads, agent profiles, and MCP context servers but no command/skill/agent file primitive Apothem targets; these cohorts are not materialized for this harness. |
87
+ | Hooks / MCP / Settings | No — operator-owned / platform limit | `context_servers` in `.zed/settings.json` (MCP) is operator-owned; the adapter authors no entries. |
88
+
89
+ Platform limit: Zed's editor extensions are language/theme plugins, not an
90
+ instruction-cohort channel; a plugin-alone story does not exist for the
91
+ governance surface — the merged `.rules` file via `apothem install` is the sole
92
+ persistence surface.
@@ -0,0 +1,57 @@
1
+ # SPDX-License-Identifier: MIT
2
+
3
+ """Apothem harness adapter for zed — project-scope install.
4
+
5
+ Materializes the apothem rules surface into the operator-supplied
6
+ project root at ``<project>/.rules`` — the canonical Zed project
7
+ agent-instruction file per https://zed.dev/docs/ai/instructions. Zed diverges
8
+ from the cohort's rules-directory shape: it auto-includes a single flat
9
+ project-root file (``.rules``, alongside the ``AGENTS.md`` / ``CLAUDE.md``
10
+ family) as agent instructions, with no dedicated per-tool rules
11
+ subdirectory. The adapter therefore writes a flat ``.rules`` file rather
12
+ than a dedicated ``apothem-rules.md`` inside a rules directory. The
13
+ global ``~/.config/zed/AGENTS.md`` surface and Zed's MCP context-server
14
+ block (``.zed/settings.json`` ``context_servers``) are out of apothem's
15
+ adapter scope.
16
+
17
+ The shared install driver backs up any pre-existing ``.rules`` file
18
+ before replace (timestamped copy under ``~/.apothem/backups/``), so an
19
+ operator's existing instruction file is preserved.
20
+
21
+ The adapter opts into the project-scope contract via
22
+ ``requires_project = True``; the CLI rejects an install / update /
23
+ uninstall / verify invocation that omits ``--project <path>``. Delegates
24
+ install logic to :mod:`apothem.harnesses.zed.install`, which consumes the
25
+ canonical propagation manifest at
26
+ ``src/apothem/lib/propagation-manifest.yaml``.
27
+ """
28
+
29
+ from __future__ import annotations
30
+
31
+ from pathlib import Path
32
+
33
+ from apothem.harnesses._shared.wrapper_factories import make_project_scope_adapter
34
+ from apothem.harnesses.zed.install import install as _install
35
+ from apothem.harnesses.zed.install import plan as _plan
36
+ from apothem.harnesses.zed.uninstall import uninstall as _uninstall
37
+ from apothem.harnesses.zed.update import update as _update
38
+ from apothem.harnesses.zed.verify import verify as _verify
39
+
40
+ # Sentinel relative path used by ``output_path`` for display purposes
41
+ # only. The real target is resolved per-install via
42
+ # ``resolve_output_path(project)`` once the operator supplies
43
+ # ``--project <path>``. Zed's flat-file divergence: the sentinel is the
44
+ # bare dotfile ``.rules`` at the project root, not a nested rules file.
45
+ _SENTINEL_RELATIVE: Path = Path(".rules")
46
+
47
+ ZedAdapter = make_project_scope_adapter(
48
+ "zed",
49
+ error_label="zed",
50
+ relative_target=_SENTINEL_RELATIVE,
51
+ install_fn=_install,
52
+ plan_fn=_plan,
53
+ uninstall_fn=_uninstall,
54
+ update_fn=_update,
55
+ verify_fn=_verify,
56
+ class_name="ZedAdapter",
57
+ )
@@ -0,0 +1,38 @@
1
+ # SPDX-License-Identifier: MIT
2
+
3
+ # Per rules/agent-capability-discipline.md §1 / §3 / §7. Zed ratifies
4
+ # MCP context servers via .zed/settings.json (and global settings)
5
+ # `context_servers` (operator-owned; the adapter recognizes it but does
6
+ # not author entries). DIVERGENCE: Zed reads a single flat project-root
7
+ # `.rules` file (alongside the AGENTS.md / CLAUDE.md family) as agent
8
+ # instructions — not a dedicated Apothem file inside a rules directory.
9
+ # The adapter writes that flat `.rules` file, backing up any pre-existing
10
+ # `.rules` before replace, and does not dispatch sub-agents or author
11
+ # workflow/skill/hook cohorts.
12
+
13
+ mcp_servers:
14
+ - project-scope-.zed/settings.json#context_servers
15
+ # Operator-owned MCP surface: the adapter recognizes it but authors no entries.
16
+ mcp_servers_authored: false
17
+ sub_agent_dispatch: false
18
+ custom_command_support: "no"
19
+ recommended_postfix_rendering: "plain-text"
20
+ long_context_compaction: "profile-managed"
21
+ context_ignore_surface: "not-documented-in-current-pin"
22
+ layered_context_surface: "project-root .rules flat file (no rules directory)"
23
+ lsp_symbol_navigation: "tracked-gap-no-adapter-owned-LSP-surface"
24
+ hook_learning_capture: "artifact-evolution-cycle"
25
+ standard_convention_pin: "STANDARD-CONVENTION-PIN.md"
26
+ # web-fetch / browser-retrieval surface — the backing capability dimension for
27
+ # rules/source-accessibility.md step 1 ("retrieve through the host's browser /
28
+ # fetch capability"). The pinned snapshot catalogs config-materialization
29
+ # surfaces, not the vendor tool surface, so the web-fetch tool is not yet
30
+ # discovered against the pin — discovery-pending per
31
+ # rules/agent-capability-discipline-matrix.md §1.
32
+ web_fetch: "discovery-pending"
33
+ tool_surface_restrictions:
34
+ - secrets-paths
35
+ - destructive-shell-ops
36
+ - network-write-unsigned
37
+ system_prompt_template_path: "templates/apothem-rules.md"
38
+ agent_memory_surface: "n/a"
@@ -0,0 +1,41 @@
1
+ # SPDX-License-Identifier: MIT
2
+
3
+ """Install logic for the zed harness adapter.
4
+
5
+ Materializes the apothem Zed rules surface into the operator-supplied
6
+ project root. Zed's canonical agent-instruction surface is a single flat
7
+ project-root file at ``<project>/.rules`` (per
8
+ https://zed.dev/docs/ai/instructions) — a divergence from the cohort's
9
+ rules-directory shape: Zed auto-includes one flat ``.rules`` file
10
+ (alongside the ``AGENTS.md`` / ``CLAUDE.md`` family) rather than a
11
+ per-tool rules subdirectory. The global ``~/.config/zed/AGENTS.md``
12
+ target is excluded because Apothem targets the current project surface.
13
+
14
+ The propagation contract is declared in the canonical manifest at
15
+ ``src/apothem/lib/propagation-manifest.yaml`` under the ``zed`` key
16
+ (a single ``sentinel_merge`` operation targeting
17
+ ``${PROJECT_ROOT}/.rules``) and applied by the shared driver at
18
+ ``apothem.harnesses._shared.install_driver``, which backs up any
19
+ pre-existing ``.rules`` before replace. The ``${PROJECT_ROOT}``
20
+ placeholder is substituted with the operator-supplied ``--project
21
+ <path>`` value the CLI threads through; absence of ``--project`` is
22
+ rejected upstream at ``apothem.cli._materialize`` via the
23
+ ``requires_project`` opt-in.
24
+ """
25
+
26
+ from __future__ import annotations
27
+
28
+ from apothem.harnesses._shared.wrapper_factories import (
29
+ make_project_scope_install,
30
+ make_project_scope_plan,
31
+ )
32
+
33
+ # Manifest harness key for this adapter.
34
+ _HARNESS_NAME: str = "zed"
35
+
36
+ install = make_project_scope_install(
37
+ _HARNESS_NAME,
38
+ error_message="zed adapter requires --project <path>; CLI must thread it through",
39
+ )
40
+
41
+ plan = make_project_scope_plan(_HARNESS_NAME)