amicus 0.2.0__tar.gz → 0.3.0__tar.gz

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 (459) hide show
  1. {amicus-0.2.0 → amicus-0.3.0}/.claude-plugin/plugin.json +1 -1
  2. {amicus-0.2.0 → amicus-0.3.0}/.codex-plugin/plugin.json +1 -1
  3. amicus-0.3.0/.github/copilot-instructions.md +42 -0
  4. {amicus-0.2.0 → amicus-0.3.0}/.github/workflows/publish.yml +2 -2
  5. {amicus-0.2.0 → amicus-0.3.0}/.github/workflows/test.yml +1 -1
  6. {amicus-0.2.0 → amicus-0.3.0}/.mcp.json +1 -1
  7. amicus-0.3.0/CHANGELOG.md +538 -0
  8. {amicus-0.2.0 → amicus-0.3.0}/PKG-INFO +18 -8
  9. {amicus-0.2.0 → amicus-0.3.0}/README.md +16 -6
  10. {amicus-0.2.0 → amicus-0.3.0}/commands/amicus/adversarial.md +4 -3
  11. {amicus-0.2.0 → amicus-0.3.0}/commands/amicus/consult.md +4 -3
  12. amicus-0.3.0/commands/amicus/delegate-async.md +36 -0
  13. {amicus-0.2.0 → amicus-0.3.0}/commands/amicus/delegate.md +4 -4
  14. {amicus-0.2.0 → amicus-0.3.0}/commands/amicus/dry-run.md +1 -1
  15. {amicus-0.2.0 → amicus-0.3.0}/commands/amicus/jobs.md +12 -2
  16. {amicus-0.2.0 → amicus-0.3.0}/commands/amicus/review.md +5 -4
  17. {amicus-0.2.0 → amicus-0.3.0}/commands/amicus/status.md +3 -1
  18. {amicus-0.2.0 → amicus-0.3.0}/docs/MIGRATION.md +89 -7
  19. {amicus-0.2.0 → amicus-0.3.0}/docs/RELEASING.md +3 -1
  20. {amicus-0.2.0 → amicus-0.3.0}/docs/adr/0002-backend-options-is-a-closed-superset.md +2 -1
  21. {amicus-0.2.0 → amicus-0.3.0}/docs/adr/0004-tasks-and-jobs.md +1 -0
  22. {amicus-0.2.0 → amicus-0.3.0}/docs/adr/0007-m1-codex-port-decisions.md +3 -1
  23. {amicus-0.2.0 → amicus-0.3.0}/docs/adr/0008-m2-jobs-surface-decisions.md +4 -2
  24. {amicus-0.2.0 → amicus-0.3.0}/docs/adr/0011-m5-tasks-decisions.md +1 -0
  25. {amicus-0.2.0 → amicus-0.3.0}/docs/adr/0017-an-unreadable-machine-enum-falls-to-its-own-floor.md +2 -0
  26. amicus-0.3.0/docs/adr/0019-review-results-disclose-coverage-as-a-field.md +60 -0
  27. amicus-0.3.0/docs/adr/0020-idempotency-keys-on-the-sync-tools.md +70 -0
  28. amicus-0.3.0/docs/adr/0021-repair-arguments-are-a-complete-call.md +53 -0
  29. amicus-0.3.0/docs/adr/0022-consume-reports-its-discard-outcome.md +70 -0
  30. amicus-0.3.0/docs/adr/0023-dependency-loggers-are-owned-at-a-warning-floor.md +61 -0
  31. amicus-0.3.0/docs/adr/0024-prose-list-loss-is-disclosed-never-folded.md +70 -0
  32. amicus-0.3.0/docs/adr/0025-success-meta-is-sparse-on-every-tool.md +46 -0
  33. amicus-0.3.0/docs/adr/0026-a-not-run-review-carries-no-confidence-rating.md +45 -0
  34. amicus-0.3.0/docs/adr/0027-every-instructions-rule-fits-the-shown-prefix.md +61 -0
  35. amicus-0.3.0/docs/adr/0028-a-deprecated-tool-keeps-its-record-beside-one-marker.md +65 -0
  36. amicus-0.3.0/docs/kimi-help/0.42.0/FINDINGS.md +25 -0
  37. amicus-0.3.0/docs/kimi-help/0.42.0/kimi-help.txt +50 -0
  38. amicus-0.3.0/docs/kimi-help/0.42.0/kimi-version.txt +1 -0
  39. amicus-0.3.0/docs/kimi-help/0.42.0/provider-list-shape.json +18 -0
  40. amicus-0.3.0/docs/kimi-help/0.43.1/FINDINGS.md +35 -0
  41. amicus-0.3.0/docs/kimi-help/0.43.1/kimi-help.txt +50 -0
  42. amicus-0.3.0/docs/kimi-help/0.43.1/kimi-version.txt +1 -0
  43. amicus-0.3.0/docs/kimi-help/0.43.1/provider-list-shape.json +18 -0
  44. {amicus-0.2.0 → amicus-0.3.0}/docs/superpowers/specs/2026-09-04-amicus-design.md +19 -22
  45. {amicus-0.2.0 → amicus-0.3.0}/pyproject.toml +8 -2
  46. {amicus-0.2.0 → amicus-0.3.0}/scripts/check_release_state.py +233 -1
  47. {amicus-0.2.0 → amicus-0.3.0}/skills/collaborating-with-amicus/SKILL.md +71 -36
  48. {amicus-0.2.0 → amicus-0.3.0}/skills/collaborating-with-amicus/references/active-workflows.md +5 -5
  49. {amicus-0.2.0 → amicus-0.3.0}/skills/collaborating-with-amicus/references/choosing-a-backend.md +31 -12
  50. {amicus-0.2.0 → amicus-0.3.0}/skills/collaborating-with-amicus/references/options-and-errors.md +32 -11
  51. {amicus-0.2.0 → amicus-0.3.0}/skills/collaborating-with-amicus/references/reading-results.md +85 -21
  52. {amicus-0.2.0 → amicus-0.3.0}/skills/collaborating-with-amicus/references/reviewing-a-returned-diff.md +1 -1
  53. amicus-0.3.0/skills/collaborating-with-amicus/references/sync-vs-async.md +94 -0
  54. {amicus-0.2.0 → amicus-0.3.0}/skills/collaborating-with-amicus/tests/scenarios.md +39 -3
  55. {amicus-0.2.0 → amicus-0.3.0}/src/amicus/__init__.py +1 -1
  56. {amicus-0.2.0 → amicus-0.3.0}/src/amicus/_worker.py +2 -2
  57. {amicus-0.2.0 → amicus-0.3.0}/src/amicus/backends/claude/adapter.py +13 -3
  58. {amicus-0.2.0 → amicus-0.3.0}/src/amicus/backends/claude/adversarial.py +11 -0
  59. {amicus-0.2.0 → amicus-0.3.0}/src/amicus/backends/claude/config.py +3 -1
  60. {amicus-0.2.0 → amicus-0.3.0}/src/amicus/backends/claude/contract.py +11 -4
  61. {amicus-0.2.0 → amicus-0.3.0}/src/amicus/backends/claude/options.py +19 -2
  62. {amicus-0.2.0 → amicus-0.3.0}/src/amicus/backends/codex/contract.py +10 -7
  63. {amicus-0.2.0 → amicus-0.3.0}/src/amicus/backends/codex/normalize.py +6 -8
  64. {amicus-0.2.0 → amicus-0.3.0}/src/amicus/backends/kimi/contract.py +4 -4
  65. amicus-0.3.0/src/amicus/compaction.py +53 -0
  66. {amicus-0.2.0 → amicus-0.3.0}/src/amicus/config/__init__.py +3 -0
  67. {amicus-0.2.0 → amicus-0.3.0}/src/amicus/config/envspec.py +6 -1
  68. {amicus-0.2.0 → amicus-0.3.0}/src/amicus/errors.py +64 -14
  69. {amicus-0.2.0 → amicus-0.3.0}/src/amicus/jobs/delivery.py +37 -19
  70. {amicus-0.2.0 → amicus-0.3.0}/src/amicus/jobs/lifecycle.py +219 -39
  71. {amicus-0.2.0 → amicus-0.3.0}/src/amicus/jobs/lookup.py +5 -2
  72. amicus-0.3.0/src/amicus/jobs/polling.py +36 -0
  73. {amicus-0.2.0 → amicus-0.3.0}/src/amicus/jobs/taskmap.py +5 -0
  74. {amicus-0.2.0 → amicus-0.3.0}/src/amicus/manifest.py +160 -9
  75. {amicus-0.2.0 → amicus-0.3.0}/src/amicus/middleware.py +61 -3
  76. {amicus-0.2.0 → amicus-0.3.0}/src/amicus/obs.py +190 -5
  77. {amicus-0.2.0 → amicus-0.3.0}/src/amicus/orchestration/finalize.py +81 -19
  78. {amicus-0.2.0 → amicus-0.3.0}/src/amicus/orchestration/review.py +70 -23
  79. {amicus-0.2.0 → amicus-0.3.0}/src/amicus/orchestration/run.py +20 -15
  80. {amicus-0.2.0 → amicus-0.3.0}/src/amicus/plugin.py +3 -1
  81. {amicus-0.2.0 → amicus-0.3.0}/src/amicus/result_format_snapshot.py +8 -0
  82. {amicus-0.2.0 → amicus-0.3.0}/src/amicus/schemas/envelope.py +116 -8
  83. {amicus-0.2.0 → amicus-0.3.0}/src/amicus/schemas/fingerprint.py +7 -2
  84. {amicus-0.2.0 → amicus-0.3.0}/src/amicus/schemas/params.py +104 -57
  85. {amicus-0.2.0 → amicus-0.3.0}/src/amicus/schemas/publish.py +7 -10
  86. amicus-0.3.0/src/amicus/schemas/results.py +737 -0
  87. {amicus-0.2.0 → amicus-0.3.0}/src/amicus/schemas/structured.py +19 -2
  88. {amicus-0.2.0 → amicus-0.3.0}/src/amicus/server.py +58 -49
  89. {amicus-0.2.0 → amicus-0.3.0}/src/amicus/tools/__init__.py +5 -1
  90. {amicus-0.2.0 → amicus-0.3.0}/src/amicus/tools/_guard.py +5 -3
  91. {amicus-0.2.0 → amicus-0.3.0}/src/amicus/tools/_meta.py +36 -3
  92. {amicus-0.2.0 → amicus-0.3.0}/src/amicus/tools/_prepare.py +8 -7
  93. {amicus-0.2.0 → amicus-0.3.0}/src/amicus/tools/consult.py +6 -2
  94. {amicus-0.2.0 → amicus-0.3.0}/src/amicus/tools/delegate.py +7 -3
  95. {amicus-0.2.0 → amicus-0.3.0}/src/amicus/tools/discovery.py +88 -32
  96. {amicus-0.2.0 → amicus-0.3.0}/src/amicus/tools/dry_run.py +83 -16
  97. {amicus-0.2.0 → amicus-0.3.0}/src/amicus/tools/jobs.py +22 -12
  98. {amicus-0.2.0 → amicus-0.3.0}/src/amicus/tools/resources.py +75 -28
  99. {amicus-0.2.0 → amicus-0.3.0}/src/amicus/tools/review.py +13 -5
  100. {amicus-0.2.0 → amicus-0.3.0}/src/amicus/wire_shape_snapshot.py +46 -9
  101. {amicus-0.2.0 → amicus-0.3.0}/tests/conftest.py +77 -2
  102. {amicus-0.2.0 → amicus-0.3.0}/tests/fixtures/manifest_snapshot.all.json +1994 -548
  103. {amicus-0.2.0 → amicus-0.3.0}/tests/fixtures/manifest_snapshot.claude.json +1994 -548
  104. {amicus-0.2.0 → amicus-0.3.0}/tests/fixtures/manifest_snapshot.codex-kimi.json +1994 -548
  105. {amicus-0.2.0 → amicus-0.3.0}/tests/fixtures/result_format_snapshot.json +1056 -20
  106. {amicus-0.2.0 → amicus-0.3.0}/tests/fixtures/wire_shape_snapshot.json +102 -69
  107. {amicus-0.2.0 → amicus-0.3.0}/tests/support/claudefixtures.py +15 -0
  108. {amicus-0.2.0 → amicus-0.3.0}/tests/test_adversarial.py +21 -1
  109. {amicus-0.2.0 → amicus-0.3.0}/tests/test_async_tools.py +2 -2
  110. {amicus-0.2.0 → amicus-0.3.0}/tests/test_cache_hints.py +4 -22
  111. {amicus-0.2.0 → amicus-0.3.0}/tests/test_claude_adapter.py +36 -12
  112. {amicus-0.2.0 → amicus-0.3.0}/tests/test_claude_cli.py +11 -0
  113. {amicus-0.2.0 → amicus-0.3.0}/tests/test_claude_contract.py +1 -1
  114. {amicus-0.2.0 → amicus-0.3.0}/tests/test_claude_live.py +66 -5
  115. {amicus-0.2.0 → amicus-0.3.0}/tests/test_claude_plugin.py +16 -1
  116. {amicus-0.2.0 → amicus-0.3.0}/tests/test_claude_sync_tools.py +103 -4
  117. {amicus-0.2.0 → amicus-0.3.0}/tests/test_codes.py +2 -2
  118. {amicus-0.2.0 → amicus-0.3.0}/tests/test_codex_adapter.py +10 -0
  119. {amicus-0.2.0 → amicus-0.3.0}/tests/test_codex_config.py +2 -1
  120. {amicus-0.2.0 → amicus-0.3.0}/tests/test_codex_contract.py +12 -2
  121. {amicus-0.2.0 → amicus-0.3.0}/tests/test_codex_normalize.py +8 -0
  122. {amicus-0.2.0 → amicus-0.3.0}/tests/test_commands.py +57 -4
  123. amicus-0.3.0/tests/test_compaction.py +154 -0
  124. {amicus-0.2.0 → amicus-0.3.0}/tests/test_delivery.py +62 -2
  125. {amicus-0.2.0 → amicus-0.3.0}/tests/test_discovery.py +89 -22
  126. amicus-0.3.0/tests/test_discovery_cost.py +191 -0
  127. amicus-0.3.0/tests/test_dry_run.py +304 -0
  128. {amicus-0.2.0 → amicus-0.3.0}/tests/test_envelope.py +45 -0
  129. {amicus-0.2.0 → amicus-0.3.0}/tests/test_errors.py +108 -0
  130. amicus-0.3.0/tests/test_fastmcp_argument_log.py +448 -0
  131. {amicus-0.2.0 → amicus-0.3.0}/tests/test_finalize.py +227 -28
  132. {amicus-0.2.0 → amicus-0.3.0}/tests/test_fingerprint.py +3 -3
  133. {amicus-0.2.0 → amicus-0.3.0}/tests/test_guard.py +23 -0
  134. {amicus-0.2.0 → amicus-0.3.0}/tests/test_job_tools.py +243 -11
  135. {amicus-0.2.0 → amicus-0.3.0}/tests/test_kimi_contract.py +61 -12
  136. {amicus-0.2.0 → amicus-0.3.0}/tests/test_kimi_live.py +6 -1
  137. {amicus-0.2.0 → amicus-0.3.0}/tests/test_kimi_sync_tools.py +4 -2
  138. {amicus-0.2.0 → amicus-0.3.0}/tests/test_lifecycle.py +520 -4
  139. {amicus-0.2.0 → amicus-0.3.0}/tests/test_lookup.py +18 -1
  140. {amicus-0.2.0 → amicus-0.3.0}/tests/test_manifest.py +128 -8
  141. amicus-0.3.0/tests/test_meta.py +138 -0
  142. {amicus-0.2.0 → amicus-0.3.0}/tests/test_middleware.py +75 -1
  143. {amicus-0.2.0 → amicus-0.3.0}/tests/test_migration_doc.py +54 -0
  144. {amicus-0.2.0 → amicus-0.3.0}/tests/test_packaging.py +30 -3
  145. {amicus-0.2.0 → amicus-0.3.0}/tests/test_paid_tools.py +45 -0
  146. {amicus-0.2.0 → amicus-0.3.0}/tests/test_params.py +35 -1
  147. amicus-0.3.0/tests/test_poll_hint.py +38 -0
  148. {amicus-0.2.0 → amicus-0.3.0}/tests/test_prepare.py +9 -0
  149. {amicus-0.2.0 → amicus-0.3.0}/tests/test_release_state.py +266 -0
  150. {amicus-0.2.0 → amicus-0.3.0}/tests/test_resources.py +22 -6
  151. amicus-0.3.0/tests/test_results.py +265 -0
  152. {amicus-0.2.0 → amicus-0.3.0}/tests/test_review.py +86 -9
  153. {amicus-0.2.0 → amicus-0.3.0}/tests/test_server.py +94 -14
  154. amicus-0.3.0/tests/test_skill_contract.py +360 -0
  155. amicus-0.3.0/tests/test_structured.py +44 -0
  156. amicus-0.3.0/tests/test_surface_honesty.py +326 -0
  157. {amicus-0.2.0 → amicus-0.3.0}/tests/test_sync_tools.py +95 -0
  158. {amicus-0.2.0 → amicus-0.3.0}/tests/test_tasks_client.py +7 -1
  159. {amicus-0.2.0 → amicus-0.3.0}/tests/test_wire_shape.py +32 -1
  160. {amicus-0.2.0 → amicus-0.3.0}/tests/test_worker.py +11 -9
  161. {amicus-0.2.0 → amicus-0.3.0}/uv.lock +420 -53
  162. amicus-0.2.0/CHANGELOG.md +0 -226
  163. amicus-0.2.0/skills/collaborating-with-amicus/references/sync-vs-async.md +0 -67
  164. amicus-0.2.0/src/amicus/schemas/results.py +0 -451
  165. amicus-0.2.0/tests/test_discovery_cost.py +0 -75
  166. amicus-0.2.0/tests/test_dry_run.py +0 -127
  167. amicus-0.2.0/tests/test_meta.py +0 -70
  168. amicus-0.2.0/tests/test_results.py +0 -128
  169. amicus-0.2.0/tests/test_skill_contract.py +0 -119
  170. amicus-0.2.0/tests/test_structured.py +0 -10
  171. amicus-0.2.0/tests/test_surface_honesty.py +0 -104
  172. {amicus-0.2.0 → amicus-0.3.0}/.agents/skills/agent-friendly-docs/SKILL.md +0 -0
  173. {amicus-0.2.0 → amicus-0.3.0}/.agents/skills/agent-friendly-docs/references/design-workflow.md +0 -0
  174. {amicus-0.2.0 → amicus-0.3.0}/.agents/skills/agent-friendly-docs/references/docs-checklist.md +0 -0
  175. {amicus-0.2.0 → amicus-0.3.0}/.agents/skills/agent-friendly-docs/references/examples.md +0 -0
  176. {amicus-0.2.0 → amicus-0.3.0}/.agents/skills/agent-friendly-docs/references/review-workflow.md +0 -0
  177. {amicus-0.2.0 → amicus-0.3.0}/.agents/skills/agent-friendly-docs/tests/scenarios.md +0 -0
  178. {amicus-0.2.0 → amicus-0.3.0}/.agents/skills/agent-friendly-github/SKILL.md +0 -0
  179. {amicus-0.2.0 → amicus-0.3.0}/.agents/skills/agent-friendly-github/decisions/001-github-fact-sheet.md +0 -0
  180. {amicus-0.2.0 → amicus-0.3.0}/.agents/skills/agent-friendly-github/references/audit-workflow.md +0 -0
  181. {amicus-0.2.0 → amicus-0.3.0}/.agents/skills/agent-friendly-github/references/config-checklist.md +0 -0
  182. {amicus-0.2.0 → amicus-0.3.0}/.agents/skills/agent-friendly-github/references/examples/README.md +0 -0
  183. {amicus-0.2.0 → amicus-0.3.0}/.agents/skills/agent-friendly-github/references/examples/codeowners.md +0 -0
  184. {amicus-0.2.0 → amicus-0.3.0}/.agents/skills/agent-friendly-github/references/examples/harness-deny.md +0 -0
  185. {amicus-0.2.0 → amicus-0.3.0}/.agents/skills/agent-friendly-github/references/examples/identity.md +0 -0
  186. {amicus-0.2.0 → amicus-0.3.0}/.agents/skills/agent-friendly-github/references/examples/repo-files.md +0 -0
  187. {amicus-0.2.0 → amicus-0.3.0}/.agents/skills/agent-friendly-github/references/examples/required-checks.md +0 -0
  188. {amicus-0.2.0 → amicus-0.3.0}/.agents/skills/agent-friendly-github/references/examples/rulesets.md +0 -0
  189. {amicus-0.2.0 → amicus-0.3.0}/.agents/skills/agent-friendly-github/references/examples/workflows.md +0 -0
  190. {amicus-0.2.0 → amicus-0.3.0}/.agents/skills/agent-friendly-github/references/operating-playbook.md +0 -0
  191. {amicus-0.2.0 → amicus-0.3.0}/.agents/skills/agent-friendly-github/references/setup-workflow.md +0 -0
  192. {amicus-0.2.0 → amicus-0.3.0}/.agents/skills/agent-friendly-github/references/threat-model.md +0 -0
  193. {amicus-0.2.0 → amicus-0.3.0}/.agents/skills/agent-friendly-github/tests/check_authority.py +0 -0
  194. {amicus-0.2.0 → amicus-0.3.0}/.agents/skills/agent-friendly-github/tests/scenarios.md +0 -0
  195. {amicus-0.2.0 → amicus-0.3.0}/.agents/skills/agent-friendly-mcp/SKILL.md +0 -0
  196. {amicus-0.2.0 → amicus-0.3.0}/.agents/skills/agent-friendly-mcp/decisions/001-mcp-2026-07-28-rebase.md +0 -0
  197. {amicus-0.2.0 → amicus-0.3.0}/.agents/skills/agent-friendly-mcp/decisions/002-machine-code-rename-rationale.md +0 -0
  198. {amicus-0.2.0 → amicus-0.3.0}/.agents/skills/agent-friendly-mcp/decisions/003-offending-value-omission.md +0 -0
  199. {amicus-0.2.0 → amicus-0.3.0}/.agents/skills/agent-friendly-mcp/decisions/004-ownership-boundaries.md +0 -0
  200. {amicus-0.2.0 → amicus-0.3.0}/.agents/skills/agent-friendly-mcp/references/contract-checklist.md +0 -0
  201. {amicus-0.2.0 → amicus-0.3.0}/.agents/skills/agent-friendly-mcp/references/design-workflow.md +0 -0
  202. {amicus-0.2.0 → amicus-0.3.0}/.agents/skills/agent-friendly-mcp/references/examples.md +0 -0
  203. {amicus-0.2.0 → amicus-0.3.0}/.agents/skills/agent-friendly-mcp/references/mcp-2025-11-25-compat.md +0 -0
  204. {amicus-0.2.0 → amicus-0.3.0}/.agents/skills/agent-friendly-mcp/references/mcp-vs-cli.md +0 -0
  205. {amicus-0.2.0 → amicus-0.3.0}/.agents/skills/agent-friendly-mcp/references/native-wire-shapes.md +0 -0
  206. {amicus-0.2.0 → amicus-0.3.0}/.agents/skills/agent-friendly-mcp/references/review-workflow.md +0 -0
  207. {amicus-0.2.0 → amicus-0.3.0}/.agents/skills/agent-friendly-mcp/references/vocabulary.md +0 -0
  208. {amicus-0.2.0 → amicus-0.3.0}/.agents/skills/agent-friendly-mcp/tests/check_fact_sync.py +0 -0
  209. {amicus-0.2.0 → amicus-0.3.0}/.agents/skills/agent-friendly-mcp/tests/check_rule_ids.py +0 -0
  210. {amicus-0.2.0 → amicus-0.3.0}/.agents/skills/agent-friendly-mcp/tests/check_stale_terms.py +0 -0
  211. {amicus-0.2.0 → amicus-0.3.0}/.agents/skills/agent-friendly-mcp/tests/fixtures/github_issues.json +0 -0
  212. {amicus-0.2.0 → amicus-0.3.0}/.agents/skills/agent-friendly-mcp/tests/fixtures/github_repo_resource.json +0 -0
  213. {amicus-0.2.0 → amicus-0.3.0}/.agents/skills/agent-friendly-mcp/tests/rule-ids.txt +0 -0
  214. {amicus-0.2.0 → amicus-0.3.0}/.agents/skills/agent-friendly-mcp/tests/runs/2026-07-11-scenario1-baseline.md +0 -0
  215. {amicus-0.2.0 → amicus-0.3.0}/.agents/skills/agent-friendly-mcp/tests/runs/2026-07-11-scenario1-outputschema-error.md +0 -0
  216. {amicus-0.2.0 → amicus-0.3.0}/.agents/skills/agent-friendly-mcp/tests/runs/2026-07-11-scenario1-with-skill.md +0 -0
  217. {amicus-0.2.0 → amicus-0.3.0}/.agents/skills/agent-friendly-mcp/tests/runs/2026-07-11-scenario2-baseline.md +0 -0
  218. {amicus-0.2.0 → amicus-0.3.0}/.agents/skills/agent-friendly-mcp/tests/runs/2026-07-11-scenario2-with-skill.md +0 -0
  219. {amicus-0.2.0 → amicus-0.3.0}/.agents/skills/agent-friendly-mcp/tests/runs/2026-07-11-scenario3-baseline.md +0 -0
  220. {amicus-0.2.0 → amicus-0.3.0}/.agents/skills/agent-friendly-mcp/tests/runs/2026-07-11-scenario3-with-skill.md +0 -0
  221. {amicus-0.2.0 → amicus-0.3.0}/.agents/skills/agent-friendly-mcp/tests/runs/2026-07-11-scenario4-baseline.md +0 -0
  222. {amicus-0.2.0 → amicus-0.3.0}/.agents/skills/agent-friendly-mcp/tests/runs/2026-07-11-scenario4-with-skill.md +0 -0
  223. {amicus-0.2.0 → amicus-0.3.0}/.agents/skills/agent-friendly-mcp/tests/runs/2026-07-11-scenario5-baseline.md +0 -0
  224. {amicus-0.2.0 → amicus-0.3.0}/.agents/skills/agent-friendly-mcp/tests/runs/2026-07-11-scenario5-with-skill.md +0 -0
  225. {amicus-0.2.0 → amicus-0.3.0}/.agents/skills/agent-friendly-mcp/tests/runs/2026-07-11-scenario6-baseline.md +0 -0
  226. {amicus-0.2.0 → amicus-0.3.0}/.agents/skills/agent-friendly-mcp/tests/runs/2026-07-11-scenario6-with-skill.md +0 -0
  227. {amicus-0.2.0 → amicus-0.3.0}/.agents/skills/agent-friendly-mcp/tests/runs/2026-07-11-scenario7-trigger.md +0 -0
  228. {amicus-0.2.0 → amicus-0.3.0}/.agents/skills/agent-friendly-mcp/tests/runs/2026-07-29-scenario1-baseline.md +0 -0
  229. {amicus-0.2.0 → amicus-0.3.0}/.agents/skills/agent-friendly-mcp/tests/runs/2026-07-29-scenario1-with-skill.md +0 -0
  230. {amicus-0.2.0 → amicus-0.3.0}/.agents/skills/agent-friendly-mcp/tests/runs/2026-07-29-scenario3-baseline.md +0 -0
  231. {amicus-0.2.0 → amicus-0.3.0}/.agents/skills/agent-friendly-mcp/tests/runs/2026-07-29-scenario3-with-skill.md +0 -0
  232. {amicus-0.2.0 → amicus-0.3.0}/.agents/skills/agent-friendly-mcp/tests/runs/2026-07-29-scenario5-baseline.md +0 -0
  233. {amicus-0.2.0 → amicus-0.3.0}/.agents/skills/agent-friendly-mcp/tests/runs/2026-07-29-scenario5-with-skill.md +0 -0
  234. {amicus-0.2.0 → amicus-0.3.0}/.agents/skills/agent-friendly-mcp/tests/runs/2026-07-30-scenario1-with-skill.md +0 -0
  235. {amicus-0.2.0 → amicus-0.3.0}/.agents/skills/agent-friendly-mcp/tests/runs/2026-07-30-scenario8-severity-calibration.md +0 -0
  236. {amicus-0.2.0 → amicus-0.3.0}/.agents/skills/agent-friendly-mcp/tests/scenarios.md +0 -0
  237. {amicus-0.2.0 → amicus-0.3.0}/.agents/skills/agent-friendly-mcp/tests/test_check_fact_sync.py +0 -0
  238. {amicus-0.2.0 → amicus-0.3.0}/.agents/skills/agent-friendly-mcp/tests/test_check_rule_ids.py +0 -0
  239. {amicus-0.2.0 → amicus-0.3.0}/.agents/skills/agent-friendly-mcp/tests/test_validate_fixture.py +0 -0
  240. {amicus-0.2.0 → amicus-0.3.0}/.agents/skills/agent-friendly-mcp/tests/validate_fixture.py +0 -0
  241. {amicus-0.2.0 → amicus-0.3.0}/.agents/skills/separating-context-from-constraints/SKILL.md +0 -0
  242. {amicus-0.2.0 → amicus-0.3.0}/.agents/skills/separating-context-from-constraints/agents/openai.yaml +0 -0
  243. {amicus-0.2.0 → amicus-0.3.0}/.agents/skills/separating-context-from-constraints/references/example-audit.md +0 -0
  244. {amicus-0.2.0 → amicus-0.3.0}/.agents/skills/separating-context-from-constraints/tests/rescore-2026-08-06/preregistration.md +0 -0
  245. {amicus-0.2.0 → amicus-0.3.0}/.agents/skills/separating-context-from-constraints/tests/rescore-2026-08-06/results.md +0 -0
  246. {amicus-0.2.0 → amicus-0.3.0}/.agents/skills/separating-context-from-constraints/tests/runs/2026-07-11-scenario1-baseline.md +0 -0
  247. {amicus-0.2.0 → amicus-0.3.0}/.agents/skills/separating-context-from-constraints/tests/runs/2026-07-11-scenario1-with-skill.md +0 -0
  248. {amicus-0.2.0 → amicus-0.3.0}/.agents/skills/separating-context-from-constraints/tests/runs/2026-07-11-scenario2-baseline.md +0 -0
  249. {amicus-0.2.0 → amicus-0.3.0}/.agents/skills/separating-context-from-constraints/tests/runs/2026-07-11-scenario2-with-skill.md +0 -0
  250. {amicus-0.2.0 → amicus-0.3.0}/.agents/skills/separating-context-from-constraints/tests/runs/2026-07-11-scenario3-baseline.md +0 -0
  251. {amicus-0.2.0 → amicus-0.3.0}/.agents/skills/separating-context-from-constraints/tests/runs/2026-07-11-scenario3-with-skill.md +0 -0
  252. {amicus-0.2.0 → amicus-0.3.0}/.agents/skills/separating-context-from-constraints/tests/runs/2026-07-11-scenario4-baseline.md +0 -0
  253. {amicus-0.2.0 → amicus-0.3.0}/.agents/skills/separating-context-from-constraints/tests/runs/2026-07-11-scenario4-with-skill.md +0 -0
  254. {amicus-0.2.0 → amicus-0.3.0}/.agents/skills/separating-context-from-constraints/tests/runs/2026-07-11-scenario5-baseline.md +0 -0
  255. {amicus-0.2.0 → amicus-0.3.0}/.agents/skills/separating-context-from-constraints/tests/runs/2026-07-11-scenario5-with-skill.md +0 -0
  256. {amicus-0.2.0 → amicus-0.3.0}/.agents/skills/separating-context-from-constraints/tests/runs/2026-07-11-scenario6-baseline.md +0 -0
  257. {amicus-0.2.0 → amicus-0.3.0}/.agents/skills/separating-context-from-constraints/tests/runs/2026-07-11-scenario6-with-skill.md +0 -0
  258. {amicus-0.2.0 → amicus-0.3.0}/.agents/skills/separating-context-from-constraints/tests/runs/2026-07-11-scenario7-baseline.md +0 -0
  259. {amicus-0.2.0 → amicus-0.3.0}/.agents/skills/separating-context-from-constraints/tests/runs/2026-07-11-scenario7-with-skill.md +0 -0
  260. {amicus-0.2.0 → amicus-0.3.0}/.agents/skills/separating-context-from-constraints/tests/runs/2026-07-11-scenario8-baseline.md +0 -0
  261. {amicus-0.2.0 → amicus-0.3.0}/.agents/skills/separating-context-from-constraints/tests/runs/2026-07-11-scenario8-with-skill.md +0 -0
  262. {amicus-0.2.0 → amicus-0.3.0}/.agents/skills/separating-context-from-constraints/tests/runs/2026-07-11-scenario9-trigger.md +0 -0
  263. {amicus-0.2.0 → amicus-0.3.0}/.agents/skills/separating-context-from-constraints/tests/runs/2026-08-06-scenario1-with-skill.md +0 -0
  264. {amicus-0.2.0 → amicus-0.3.0}/.agents/skills/separating-context-from-constraints/tests/runs/2026-08-06-scenario6-with-skill.md +0 -0
  265. {amicus-0.2.0 → amicus-0.3.0}/.agents/skills/separating-context-from-constraints/tests/runs/2026-08-23-confirmation-r1-both-directions.md +0 -0
  266. {amicus-0.2.0 → amicus-0.3.0}/.agents/skills/separating-context-from-constraints/tests/runs/2026-08-23-scenario1-with-skill.md +0 -0
  267. {amicus-0.2.0 → amicus-0.3.0}/.agents/skills/separating-context-from-constraints/tests/runs/2026-08-23-scenario2-with-skill.md +0 -0
  268. {amicus-0.2.0 → amicus-0.3.0}/.agents/skills/separating-context-from-constraints/tests/runs/2026-08-23-scenario5-with-skill.md +0 -0
  269. {amicus-0.2.0 → amicus-0.3.0}/.agents/skills/separating-context-from-constraints/tests/runs/2026-08-23-scenario6-with-skill.md +0 -0
  270. {amicus-0.2.0 → amicus-0.3.0}/.agents/skills/separating-context-from-constraints/tests/runs/2026-08-23-scenario7-with-skill.md +0 -0
  271. {amicus-0.2.0 → amicus-0.3.0}/.agents/skills/separating-context-from-constraints/tests/runs/2026-08-23-scenario8-with-skill.md +0 -0
  272. {amicus-0.2.0 → amicus-0.3.0}/.agents/skills/separating-context-from-constraints/tests/scenarios.md +0 -0
  273. {amicus-0.2.0 → amicus-0.3.0}/.claude-plugin/marketplace.json +0 -0
  274. {amicus-0.2.0 → amicus-0.3.0}/.gitattributes +0 -0
  275. {amicus-0.2.0 → amicus-0.3.0}/.github/CODEOWNERS +0 -0
  276. {amicus-0.2.0 → amicus-0.3.0}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  277. {amicus-0.2.0 → amicus-0.3.0}/.github/dependabot.yml +0 -0
  278. {amicus-0.2.0 → amicus-0.3.0}/.github/workflows/ci.yml +0 -0
  279. {amicus-0.2.0 → amicus-0.3.0}/.github/workflows/codeql.yml +0 -0
  280. {amicus-0.2.0 → amicus-0.3.0}/.github/workflows/dependency-review.yml +0 -0
  281. {amicus-0.2.0 → amicus-0.3.0}/.gitignore +0 -0
  282. {amicus-0.2.0 → amicus-0.3.0}/AGENTS.md +0 -0
  283. {amicus-0.2.0 → amicus-0.3.0}/CLAUDE.md +0 -0
  284. {amicus-0.2.0 → amicus-0.3.0}/LICENSE +0 -0
  285. {amicus-0.2.0 → amicus-0.3.0}/docs/2026-09-04-naming-and-scoping-notes.md +0 -0
  286. {amicus-0.2.0 → amicus-0.3.0}/docs/DEPRECATING-SIBLINGS.md +0 -0
  287. {amicus-0.2.0 → amicus-0.3.0}/docs/adr/0001-annotations-follow-the-worst-enabled-backend.md +0 -0
  288. {amicus-0.2.0 → amicus-0.3.0}/docs/adr/0003-workspace-resolution.md +0 -0
  289. {amicus-0.2.0 → amicus-0.3.0}/docs/adr/0005-error-envelope-and-repair-precedence.md +0 -0
  290. {amicus-0.2.0 → amicus-0.3.0}/docs/adr/0006-fingerprint-and-surface-digest.md +0 -0
  291. {amicus-0.2.0 → amicus-0.3.0}/docs/adr/0009-m3-kimi-port-decisions.md +0 -0
  292. {amicus-0.2.0 → amicus-0.3.0}/docs/adr/0010-m4-claude-port-decisions.md +0 -0
  293. {amicus-0.2.0 → amicus-0.3.0}/docs/adr/0012-m6-packaging-decisions.md +0 -0
  294. {amicus-0.2.0 → amicus-0.3.0}/docs/adr/0013-proceed-without-trademark-clearance.md +0 -0
  295. {amicus-0.2.0 → amicus-0.3.0}/docs/adr/0014-release-predicate-on-the-tag.md +0 -0
  296. {amicus-0.2.0 → amicus-0.3.0}/docs/adr/0015-mcp-json-pins-an-already-published-release.md +0 -0
  297. {amicus-0.2.0 → amicus-0.3.0}/docs/adr/0016-skill-rules-are-a-complete-contract.md +0 -0
  298. {amicus-0.2.0 → amicus-0.3.0}/docs/adr/0018-the-catalog-carries-a-ttl-and-resource-reads-do-not.md +0 -0
  299. {amicus-0.2.0 → amicus-0.3.0}/docs/adr/README.md +0 -0
  300. {amicus-0.2.0 → amicus-0.3.0}/docs/claude-help/2.1.263/FINDINGS.md +0 -0
  301. {amicus-0.2.0 → amicus-0.3.0}/docs/claude-help/2.1.263/claude-help.txt +0 -0
  302. {amicus-0.2.0 → amicus-0.3.0}/docs/claude-help/2.1.263/claude-version.txt +0 -0
  303. {amicus-0.2.0 → amicus-0.3.0}/docs/claude-help/2.1.263/envelope-shape.json +0 -0
  304. {amicus-0.2.0 → amicus-0.3.0}/docs/host-captures/claude-code/2.1.263/FINDINGS.md +0 -0
  305. {amicus-0.2.0 → amicus-0.3.0}/docs/host-captures/claude-code/2.1.263/connection.log +0 -0
  306. {amicus-0.2.0 → amicus-0.3.0}/docs/host-captures/claude-code/2.1.263/host-output.json +0 -0
  307. {amicus-0.2.0 → amicus-0.3.0}/docs/host-captures/codex/0.153.4/FINDINGS.md +0 -0
  308. {amicus-0.2.0 → amicus-0.3.0}/docs/host-captures/codex/0.153.4/connection.log +0 -0
  309. {amicus-0.2.0 → amicus-0.3.0}/docs/host-captures/codex/0.153.4/host-output.jsonl +0 -0
  310. {amicus-0.2.0 → amicus-0.3.0}/docs/host-captures/free-scenarios/claude-code/2.1.263/notes.md +0 -0
  311. {amicus-0.2.0 → amicus-0.3.0}/docs/host-captures/free-scenarios/claude-code/2.1.263/server.log +0 -0
  312. {amicus-0.2.0 → amicus-0.3.0}/docs/host-captures/free-scenarios/claude-code/2.1.263/transcript.md +0 -0
  313. {amicus-0.2.0 → amicus-0.3.0}/docs/host-captures/install-smoke/claude-code/2.1.263/notes.md +0 -0
  314. {amicus-0.2.0 → amicus-0.3.0}/docs/host-captures/install-smoke/claude-code/2.1.263/server.log +0 -0
  315. {amicus-0.2.0 → amicus-0.3.0}/docs/host-captures/install-smoke/claude-code/2.1.263/transcript.md +0 -0
  316. {amicus-0.2.0 → amicus-0.3.0}/docs/host-captures/install-smoke/codex/0.153.4/notes.md +0 -0
  317. {amicus-0.2.0 → amicus-0.3.0}/docs/host-captures/install-smoke/codex/0.153.4/server.log +0 -0
  318. {amicus-0.2.0 → amicus-0.3.0}/docs/host-captures/install-smoke/codex/0.153.4/transcript.md +0 -0
  319. {amicus-0.2.0 → amicus-0.3.0}/docs/host-captures/s6-f3-recon-attempt/claude-code/2.1.265/notes.md +0 -0
  320. {amicus-0.2.0 → amicus-0.3.0}/docs/host-captures/s6-f3-recon-attempt/claude-code/2.1.265/server.log +0 -0
  321. {amicus-0.2.0 → amicus-0.3.0}/docs/host-captures/s6-f3-recon-attempt/claude-code/2.1.265/transcript.md +0 -0
  322. {amicus-0.2.0 → amicus-0.3.0}/docs/host-captures/s6-old-text-new-grader/claude-code/2.1.263/notes.md +0 -0
  323. {amicus-0.2.0 → amicus-0.3.0}/docs/host-captures/s6-old-text-new-grader/claude-code/2.1.263/server.log +0 -0
  324. {amicus-0.2.0 → amicus-0.3.0}/docs/host-captures/s6-old-text-new-grader/claude-code/2.1.263/transcript.md +0 -0
  325. {amicus-0.2.0 → amicus-0.3.0}/docs/host-captures/s6-rerun/claude-code/2.1.263/notes.md +0 -0
  326. {amicus-0.2.0 → amicus-0.3.0}/docs/host-captures/s6-rerun/claude-code/2.1.263/server.log +0 -0
  327. {amicus-0.2.0 → amicus-0.3.0}/docs/host-captures/s6-rerun/claude-code/2.1.263/transcript.md +0 -0
  328. {amicus-0.2.0 → amicus-0.3.0}/docs/host-captures/s6-response-contract/claude-code/2.1.263/notes.md +0 -0
  329. {amicus-0.2.0 → amicus-0.3.0}/docs/host-captures/s6-response-contract/claude-code/2.1.263/server.log +0 -0
  330. {amicus-0.2.0 → amicus-0.3.0}/docs/host-captures/s6-response-contract/claude-code/2.1.263/transcript.md +0 -0
  331. {amicus-0.2.0 → amicus-0.3.0}/docs/host-captures/s7-rule5-recheck/claude-code/2.1.265/notes.md +0 -0
  332. {amicus-0.2.0 → amicus-0.3.0}/docs/host-captures/s7-rule5-recheck/claude-code/2.1.265/server.log +0 -0
  333. {amicus-0.2.0 → amicus-0.3.0}/docs/host-captures/s7-rule5-recheck/claude-code/2.1.265/transcript.md +0 -0
  334. {amicus-0.2.0 → amicus-0.3.0}/docs/kimi-help/0.41.0/FINDINGS.md +0 -0
  335. {amicus-0.2.0 → amicus-0.3.0}/docs/kimi-help/0.41.0/kimi-help.txt +0 -0
  336. {amicus-0.2.0 → amicus-0.3.0}/docs/kimi-help/0.41.0/kimi-version.txt +0 -0
  337. {amicus-0.2.0 → amicus-0.3.0}/docs/kimi-help/0.41.0/provider-list-shape.json +0 -0
  338. {amicus-0.2.0 → amicus-0.3.0}/docs/reviews/2026-09-07-agent-friendly-mcp-walk.md +0 -0
  339. {amicus-0.2.0 → amicus-0.3.0}/docs/superpowers/plans/2026-09-04-amicus-execution-model.md +0 -0
  340. {amicus-0.2.0 → amicus-0.3.0}/prek.toml +0 -0
  341. {amicus-0.2.0 → amicus-0.3.0}/scripts/capture_claude_differentials.py +0 -0
  342. {amicus-0.2.0 → amicus-0.3.0}/scripts/capture_codex_differentials.py +0 -0
  343. {amicus-0.2.0 → amicus-0.3.0}/scripts/capture_kimi_differentials.py +0 -0
  344. {amicus-0.2.0 → amicus-0.3.0}/scripts/check_commit_message.py +0 -0
  345. {amicus-0.2.0 → amicus-0.3.0}/scripts/check_github_actions_pinning.py +0 -0
  346. {amicus-0.2.0 → amicus-0.3.0}/scripts/record_live_gate_evidence.py +0 -0
  347. {amicus-0.2.0 → amicus-0.3.0}/skills/collaborating-with-amicus/references/independent-attempt.md +0 -0
  348. {amicus-0.2.0 → amicus-0.3.0}/skills/collaborating-with-amicus/references/review-revise.md +0 -0
  349. {amicus-0.2.0 → amicus-0.3.0}/skills/collaborating-with-amicus/references/server-down-fallback.md +0 -0
  350. {amicus-0.2.0 → amicus-0.3.0}/src/amicus/appstate.py +0 -0
  351. {amicus-0.2.0 → amicus-0.3.0}/src/amicus/backends/__init__.py +0 -0
  352. {amicus-0.2.0 → amicus-0.3.0}/src/amicus/backends/claude/__init__.py +0 -0
  353. {amicus-0.2.0 → amicus-0.3.0}/src/amicus/backends/claude/binary.py +0 -0
  354. {amicus-0.2.0 → amicus-0.3.0}/src/amicus/backends/claude/cli.py +0 -0
  355. {amicus-0.2.0 → amicus-0.3.0}/src/amicus/backends/claude/models.py +0 -0
  356. {amicus-0.2.0 → amicus-0.3.0}/src/amicus/backends/claude/normalize.py +0 -0
  357. {amicus-0.2.0 → amicus-0.3.0}/src/amicus/backends/claude/status.py +0 -0
  358. {amicus-0.2.0 → amicus-0.3.0}/src/amicus/backends/codex/__init__.py +0 -0
  359. {amicus-0.2.0 → amicus-0.3.0}/src/amicus/backends/codex/adapter.py +0 -0
  360. {amicus-0.2.0 → amicus-0.3.0}/src/amicus/backends/codex/binary.py +0 -0
  361. {amicus-0.2.0 → amicus-0.3.0}/src/amicus/backends/codex/cli.py +0 -0
  362. {amicus-0.2.0 → amicus-0.3.0}/src/amicus/backends/codex/config.py +0 -0
  363. {amicus-0.2.0 → amicus-0.3.0}/src/amicus/backends/codex/models.py +0 -0
  364. {amicus-0.2.0 → amicus-0.3.0}/src/amicus/backends/codex/options.py +0 -0
  365. {amicus-0.2.0 → amicus-0.3.0}/src/amicus/backends/codex/status.py +0 -0
  366. {amicus-0.2.0 → amicus-0.3.0}/src/amicus/backends/kimi/__init__.py +0 -0
  367. {amicus-0.2.0 → amicus-0.3.0}/src/amicus/backends/kimi/adapter.py +0 -0
  368. {amicus-0.2.0 → amicus-0.3.0}/src/amicus/backends/kimi/binary.py +0 -0
  369. {amicus-0.2.0 → amicus-0.3.0}/src/amicus/backends/kimi/cli.py +0 -0
  370. {amicus-0.2.0 → amicus-0.3.0}/src/amicus/backends/kimi/config.py +0 -0
  371. {amicus-0.2.0 → amicus-0.3.0}/src/amicus/backends/kimi/models.py +0 -0
  372. {amicus-0.2.0 → amicus-0.3.0}/src/amicus/backends/kimi/normalize.py +0 -0
  373. {amicus-0.2.0 → amicus-0.3.0}/src/amicus/backends/kimi/options.py +0 -0
  374. {amicus-0.2.0 → amicus-0.3.0}/src/amicus/backends/kimi/status.py +0 -0
  375. {amicus-0.2.0 → amicus-0.3.0}/src/amicus/jobs/__init__.py +0 -0
  376. {amicus-0.2.0 → amicus-0.3.0}/src/amicus/orchestration/__init__.py +0 -0
  377. {amicus-0.2.0 → amicus-0.3.0}/src/amicus/orchestration/isolation.py +0 -0
  378. {amicus-0.2.0 → amicus-0.3.0}/src/amicus/orchestration/prompts.py +0 -0
  379. {amicus-0.2.0 → amicus-0.3.0}/src/amicus/orchestration/workspace.py +0 -0
  380. {amicus-0.2.0 → amicus-0.3.0}/src/amicus/packaging.py +0 -0
  381. {amicus-0.2.0 → amicus-0.3.0}/src/amicus/py.typed +0 -0
  382. {amicus-0.2.0 → amicus-0.3.0}/src/amicus/registry.py +0 -0
  383. {amicus-0.2.0 → amicus-0.3.0}/src/amicus/request.py +0 -0
  384. {amicus-0.2.0 → amicus-0.3.0}/src/amicus/schemas/__init__.py +0 -0
  385. {amicus-0.2.0 → amicus-0.3.0}/src/amicus/schemas/codes.py +0 -0
  386. {amicus-0.2.0 → amicus-0.3.0}/src/amicus/schemas/field_policy.py +0 -0
  387. {amicus-0.2.0 → amicus-0.3.0}/src/amicus/schemas/instructions.py +0 -0
  388. {amicus-0.2.0 → amicus-0.3.0}/src/amicus/schemas/options.py +0 -0
  389. {amicus-0.2.0 → amicus-0.3.0}/src/amicus/surface.py +0 -0
  390. {amicus-0.2.0 → amicus-0.3.0}/src/amicus/tools/_resolve.py +0 -0
  391. {amicus-0.2.0 → amicus-0.3.0}/tests/fixtures/claude_differentials.json +0 -0
  392. {amicus-0.2.0 → amicus-0.3.0}/tests/fixtures/claude_golden_envelope.json +0 -0
  393. {amicus-0.2.0 → amicus-0.3.0}/tests/fixtures/codex_differentials.json +0 -0
  394. {amicus-0.2.0 → amicus-0.3.0}/tests/fixtures/fakebackend/pyproject.toml +0 -0
  395. {amicus-0.2.0 → amicus-0.3.0}/tests/fixtures/fakebackend/src/fakebackend/__init__.py +0 -0
  396. {amicus-0.2.0 → amicus-0.3.0}/tests/fixtures/kimi_differentials.json +0 -0
  397. {amicus-0.2.0 → amicus-0.3.0}/tests/support/__init__.py +0 -0
  398. {amicus-0.2.0 → amicus-0.3.0}/tests/support/codexfixtures.py +0 -0
  399. {amicus-0.2.0 → amicus-0.3.0}/tests/support/fake_claude.py +0 -0
  400. {amicus-0.2.0 → amicus-0.3.0}/tests/support/fake_codex.py +0 -0
  401. {amicus-0.2.0 → amicus-0.3.0}/tests/support/fake_kimi.py +0 -0
  402. {amicus-0.2.0 → amicus-0.3.0}/tests/support/fakeplugin.py +0 -0
  403. {amicus-0.2.0 → amicus-0.3.0}/tests/support/kimifixtures.py +0 -0
  404. {amicus-0.2.0 → amicus-0.3.0}/tests/test_check_commit_message.py +0 -0
  405. {amicus-0.2.0 → amicus-0.3.0}/tests/test_check_github_actions_pinning.py +0 -0
  406. {amicus-0.2.0 → amicus-0.3.0}/tests/test_claude_argv_differential.py +0 -0
  407. {amicus-0.2.0 → amicus-0.3.0}/tests/test_claude_binary.py +0 -0
  408. {amicus-0.2.0 → amicus-0.3.0}/tests/test_claude_config.py +0 -0
  409. {amicus-0.2.0 → amicus-0.3.0}/tests/test_claude_golden_envelope.py +0 -0
  410. {amicus-0.2.0 → amicus-0.3.0}/tests/test_claude_models.py +0 -0
  411. {amicus-0.2.0 → amicus-0.3.0}/tests/test_claude_normalize.py +0 -0
  412. {amicus-0.2.0 → amicus-0.3.0}/tests/test_claude_result_differential.py +0 -0
  413. {amicus-0.2.0 → amicus-0.3.0}/tests/test_claude_status.py +0 -0
  414. {amicus-0.2.0 → amicus-0.3.0}/tests/test_codex_argv_differential.py +0 -0
  415. {amicus-0.2.0 → amicus-0.3.0}/tests/test_codex_binary.py +0 -0
  416. {amicus-0.2.0 → amicus-0.3.0}/tests/test_codex_cli.py +0 -0
  417. {amicus-0.2.0 → amicus-0.3.0}/tests/test_codex_live.py +0 -0
  418. {amicus-0.2.0 → amicus-0.3.0}/tests/test_codex_models.py +0 -0
  419. {amicus-0.2.0 → amicus-0.3.0}/tests/test_codex_plugin.py +0 -0
  420. {amicus-0.2.0 → amicus-0.3.0}/tests/test_codex_result_differential.py +0 -0
  421. {amicus-0.2.0 → amicus-0.3.0}/tests/test_codex_status.py +0 -0
  422. {amicus-0.2.0 → amicus-0.3.0}/tests/test_config.py +0 -0
  423. {amicus-0.2.0 → amicus-0.3.0}/tests/test_conftest_guards.py +0 -0
  424. {amicus-0.2.0 → amicus-0.3.0}/tests/test_envspec.py +0 -0
  425. {amicus-0.2.0 → amicus-0.3.0}/tests/test_field_policy.py +0 -0
  426. {amicus-0.2.0 → amicus-0.3.0}/tests/test_host_captures.py +0 -0
  427. {amicus-0.2.0 → amicus-0.3.0}/tests/test_import_contracts.py +0 -0
  428. {amicus-0.2.0 → amicus-0.3.0}/tests/test_instructions.py +0 -0
  429. {amicus-0.2.0 → amicus-0.3.0}/tests/test_isolation.py +0 -0
  430. {amicus-0.2.0 → amicus-0.3.0}/tests/test_job_durability.py +0 -0
  431. {amicus-0.2.0 → amicus-0.3.0}/tests/test_kimi_adapter.py +0 -0
  432. {amicus-0.2.0 → amicus-0.3.0}/tests/test_kimi_argv_differential.py +0 -0
  433. {amicus-0.2.0 → amicus-0.3.0}/tests/test_kimi_binary.py +0 -0
  434. {amicus-0.2.0 → amicus-0.3.0}/tests/test_kimi_cli.py +0 -0
  435. {amicus-0.2.0 → amicus-0.3.0}/tests/test_kimi_config.py +0 -0
  436. {amicus-0.2.0 → amicus-0.3.0}/tests/test_kimi_models.py +0 -0
  437. {amicus-0.2.0 → amicus-0.3.0}/tests/test_kimi_normalize.py +0 -0
  438. {amicus-0.2.0 → amicus-0.3.0}/tests/test_kimi_plugin.py +0 -0
  439. {amicus-0.2.0 → amicus-0.3.0}/tests/test_kimi_result_differential.py +0 -0
  440. {amicus-0.2.0 → amicus-0.3.0}/tests/test_kimi_status.py +0 -0
  441. {amicus-0.2.0 → amicus-0.3.0}/tests/test_live_gate_report.py +0 -0
  442. {amicus-0.2.0 → amicus-0.3.0}/tests/test_live_suite_hygiene.py +0 -0
  443. {amicus-0.2.0 → amicus-0.3.0}/tests/test_log_redaction.py +0 -0
  444. {amicus-0.2.0 → amicus-0.3.0}/tests/test_obs.py +0 -0
  445. {amicus-0.2.0 → amicus-0.3.0}/tests/test_options.py +0 -0
  446. {amicus-0.2.0 → amicus-0.3.0}/tests/test_plugin.py +0 -0
  447. {amicus-0.2.0 → amicus-0.3.0}/tests/test_prompts.py +0 -0
  448. {amicus-0.2.0 → amicus-0.3.0}/tests/test_publish.py +0 -0
  449. {amicus-0.2.0 → amicus-0.3.0}/tests/test_registry.py +0 -0
  450. {amicus-0.2.0 → amicus-0.3.0}/tests/test_release_evidence.py +0 -0
  451. {amicus-0.2.0 → amicus-0.3.0}/tests/test_request.py +0 -0
  452. {amicus-0.2.0 → amicus-0.3.0}/tests/test_result_format.py +0 -0
  453. {amicus-0.2.0 → amicus-0.3.0}/tests/test_review_artifact.py +0 -0
  454. {amicus-0.2.0 → amicus-0.3.0}/tests/test_run.py +0 -0
  455. {amicus-0.2.0 → amicus-0.3.0}/tests/test_surface.py +0 -0
  456. {amicus-0.2.0 → amicus-0.3.0}/tests/test_taskmap.py +0 -0
  457. {amicus-0.2.0 → amicus-0.3.0}/tests/test_tasks_spike.py +0 -0
  458. {amicus-0.2.0 → amicus-0.3.0}/tests/test_wheel_seam.py +0 -0
  459. {amicus-0.2.0 → amicus-0.3.0}/tests/test_workspace.py +0 -0
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "amicus",
3
- "version": "0.2.0",
3
+ "version": "0.3.0",
4
4
  "description": "One MCP server for every second-opinion model: consult, review, and delegate with the backend as a parameter.",
5
5
  "author": { "name": "Brian Connelly", "url": "https://github.com/briandconnelly" },
6
6
  "homepage": "https://github.com/briandconnelly/amicus",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "amicus",
3
- "version": "0.2.0",
3
+ "version": "0.3.0",
4
4
  "description": "One MCP server for every second-opinion model: consult, review, and delegate with the backend as a parameter.",
5
5
  "author": { "name": "Brian Connelly", "url": "https://github.com/briandconnelly" },
6
6
  "homepage": "https://github.com/briandconnelly/amicus",
@@ -0,0 +1,42 @@
1
+ # Copilot code review instructions
2
+
3
+ Review guidance for GitHub Copilot code review in this repository.
4
+ `AGENTS.md` holds the rules every contributor and reviewer works under; this file adds what a reviewer needs on top of it and does not restate it.
5
+ Rule numbers below refer to the numbered list under "Rules" in `AGENTS.md`.
6
+ Copilot reads this file from a pull request's head branch, so the pull request that changes it is reviewed under the changed version.
7
+
8
+ ## Rules
9
+
10
+ 1. When a comment enforces a numbered `AGENTS.md` rule, name the rule number.
11
+ A convention that only the surrounding code establishes needs no citation; describe the pattern the change breaks instead.
12
+ 2. Never propose a new or widened contract as a review fix: a tool name, parameter, description claim, error code, value enum or result envelope the pull request did not already change, or a change to the persisted result shape.
13
+ The surface categories are listed in `FINGERPRINT_COVERS` (`src/amicus/schemas/fingerprint.py`); a change there moves `FINGERPRINT` (rule 10), and a persisted-shape change moves `RESULT_FORMAT` (rule 11); the test that guards each pin states the commit shape it requires.
14
+ A new contract is a design decision, made in a milestone plan or by the maintainer, so state the concern and say that it needs a decision.
15
+ Do ask that a contract the pull request changes match its implementation, its plan and its stated intent; that is a correction, and it still moves the version it touches.
16
+ 3. Never propose a hand edit to a generated pin: the `*_snapshot.json` and `*_differentials.json` files under `tests/fixtures/`, or `uv.lock`.
17
+ The test that guards each pin names the command that regenerates it; if a pin looks wrong, say which source of truth it disagrees with.
18
+ `tests/fixtures/fakebackend/` is source for the wheel-seam test and is edited by hand.
19
+ 4. Before flagging a rule-18 violation, read rule 18's exemptions from `AGENTS.md` itself and check the path against them; never flag a use of one of those exemptions, and flag every path rule 18 does not exempt.
20
+ 5. For every defect, give a concrete input or sequence that produces the wrong outcome; if you cannot, label the comment a question.
21
+ 6. Do not report what a gate command reports on its own: a lint, format, type, import-boundary or test failure, or a Markdown claim that a test pins (see Context).
22
+ 7. Put one issue in each comment, and say whether it blocks merging or is optional.
23
+ 8. When a test is added or changed, check that its assertion can fail: name the change to the code under test that would turn it red, and flag the test if there is none.
24
+ 9. When prose describes code (a tool description, a docstring, a README section, `CHANGELOG.md`, an ADR), check the claim against the source in the same pull request and flag any claim the code does not bear out.
25
+ 10. Under `docs/`, flag a prose paragraph that wraps one sentence across several lines (rule 16).
26
+ 11. Under `.github/workflows/`, check the change against rules 14, 15 and 22 and name the one it breaks.
27
+
28
+ ## Context
29
+
30
+ ### What the gate already checks
31
+
32
+ Rule 2 in `AGENTS.md` defines the gate; CI runs it, preceded by the Actions-pinning check (rule 3).
33
+ Some tests pin Markdown surfaces against the code, for example `docs/MIGRATION.md`'s tool and parameter names and the README install pin; a claim one of those tests pins is gate-covered.
34
+ Nothing in the gate checks prose style, so rule 16, stale claims no test pins and unpinned drift between documentation and code are reviewer work.
35
+
36
+ ### Where the risk concentrates
37
+
38
+ - Rule 18 governs every path a prompt input (`INPUT_FIELDS` in `src/amicus/request.py`) can take.
39
+ Any new log line, error message, argv construction, fixture or committed capture that can carry one of those values is the highest-value place to look.
40
+ - `src/amicus/jobs/delivery.py` is the chokepoint through which every stored result is delivered; a schema gap there reaches every client.
41
+ - `scripts/check_release_state.py`, `scripts/record_live_gate_evidence.py`, `.github/workflows/publish.yml` and `docs/RELEASING.md` implement rules 19 to 24; check that a change to one keeps the others true.
42
+ - `tests/conftest.py` carries the rule-6 guard and `tests/support/fake_codex.py` stands in for the real CLI, so a test that would only pass with a real `codex`, `kimi` or `claude` on `PATH` is a defect.
@@ -22,7 +22,7 @@ jobs:
22
22
  - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
23
23
  with:
24
24
  persist-credentials: false
25
- - uses: astral-sh/setup-uv@20cfd1bf945f4377ade1205e4dbc17946fc9a30d # v10.0.1
25
+ - uses: astral-sh/setup-uv@bec219d24cd3e171d82865faccec33120bb574f4 # v10.1.0
26
26
  - run: uv build
27
27
  - run: uv run --with twine twine check dist/*
28
28
  - name: The built wheel's console script must start a real MCP server
@@ -70,7 +70,7 @@ jobs:
70
70
  persist-credentials: false
71
71
  # Full history and tags: the check reads the annotated tag OBJECT, not just the ref.
72
72
  fetch-depth: 0
73
- - uses: astral-sh/setup-uv@20cfd1bf945f4377ade1205e4dbc17946fc9a30d # v10.0.1
73
+ - uses: astral-sh/setup-uv@bec219d24cd3e171d82865faccec33120bb574f4 # v10.1.0
74
74
  - name: The tagged tree and the tag must satisfy the release predicate
75
75
  # See scripts/check_release_state.py for what a pass does and does not prove. In
76
76
  # short: the tree's release-state coherence is proven; the live-gate record carried in
@@ -19,7 +19,7 @@ jobs:
19
19
  - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
20
20
  with:
21
21
  persist-credentials: false
22
- - uses: astral-sh/setup-uv@20cfd1bf945f4377ade1205e4dbc17946fc9a30d # v10.0.1
22
+ - uses: astral-sh/setup-uv@bec219d24cd3e171d82865faccec33120bb574f4 # v10.1.0
23
23
  with:
24
24
  python-version: ${{ matrix.python-version }}
25
25
  enable-cache: true
@@ -4,7 +4,7 @@
4
4
  "command": "uvx",
5
5
  "args": [
6
6
  "--from",
7
- "git+https://github.com/briandconnelly/amicus.git@v0.1.0",
7
+ "git+https://github.com/briandconnelly/amicus.git@v0.2.0",
8
8
  "amicus-mcp"
9
9
  ],
10
10
  "env_vars": [