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.
- {amicus-0.2.0 → amicus-0.3.0}/.claude-plugin/plugin.json +1 -1
- {amicus-0.2.0 → amicus-0.3.0}/.codex-plugin/plugin.json +1 -1
- amicus-0.3.0/.github/copilot-instructions.md +42 -0
- {amicus-0.2.0 → amicus-0.3.0}/.github/workflows/publish.yml +2 -2
- {amicus-0.2.0 → amicus-0.3.0}/.github/workflows/test.yml +1 -1
- {amicus-0.2.0 → amicus-0.3.0}/.mcp.json +1 -1
- amicus-0.3.0/CHANGELOG.md +538 -0
- {amicus-0.2.0 → amicus-0.3.0}/PKG-INFO +18 -8
- {amicus-0.2.0 → amicus-0.3.0}/README.md +16 -6
- {amicus-0.2.0 → amicus-0.3.0}/commands/amicus/adversarial.md +4 -3
- {amicus-0.2.0 → amicus-0.3.0}/commands/amicus/consult.md +4 -3
- amicus-0.3.0/commands/amicus/delegate-async.md +36 -0
- {amicus-0.2.0 → amicus-0.3.0}/commands/amicus/delegate.md +4 -4
- {amicus-0.2.0 → amicus-0.3.0}/commands/amicus/dry-run.md +1 -1
- {amicus-0.2.0 → amicus-0.3.0}/commands/amicus/jobs.md +12 -2
- {amicus-0.2.0 → amicus-0.3.0}/commands/amicus/review.md +5 -4
- {amicus-0.2.0 → amicus-0.3.0}/commands/amicus/status.md +3 -1
- {amicus-0.2.0 → amicus-0.3.0}/docs/MIGRATION.md +89 -7
- {amicus-0.2.0 → amicus-0.3.0}/docs/RELEASING.md +3 -1
- {amicus-0.2.0 → amicus-0.3.0}/docs/adr/0002-backend-options-is-a-closed-superset.md +2 -1
- {amicus-0.2.0 → amicus-0.3.0}/docs/adr/0004-tasks-and-jobs.md +1 -0
- {amicus-0.2.0 → amicus-0.3.0}/docs/adr/0007-m1-codex-port-decisions.md +3 -1
- {amicus-0.2.0 → amicus-0.3.0}/docs/adr/0008-m2-jobs-surface-decisions.md +4 -2
- {amicus-0.2.0 → amicus-0.3.0}/docs/adr/0011-m5-tasks-decisions.md +1 -0
- {amicus-0.2.0 → amicus-0.3.0}/docs/adr/0017-an-unreadable-machine-enum-falls-to-its-own-floor.md +2 -0
- amicus-0.3.0/docs/adr/0019-review-results-disclose-coverage-as-a-field.md +60 -0
- amicus-0.3.0/docs/adr/0020-idempotency-keys-on-the-sync-tools.md +70 -0
- amicus-0.3.0/docs/adr/0021-repair-arguments-are-a-complete-call.md +53 -0
- amicus-0.3.0/docs/adr/0022-consume-reports-its-discard-outcome.md +70 -0
- amicus-0.3.0/docs/adr/0023-dependency-loggers-are-owned-at-a-warning-floor.md +61 -0
- amicus-0.3.0/docs/adr/0024-prose-list-loss-is-disclosed-never-folded.md +70 -0
- amicus-0.3.0/docs/adr/0025-success-meta-is-sparse-on-every-tool.md +46 -0
- amicus-0.3.0/docs/adr/0026-a-not-run-review-carries-no-confidence-rating.md +45 -0
- amicus-0.3.0/docs/adr/0027-every-instructions-rule-fits-the-shown-prefix.md +61 -0
- amicus-0.3.0/docs/adr/0028-a-deprecated-tool-keeps-its-record-beside-one-marker.md +65 -0
- amicus-0.3.0/docs/kimi-help/0.42.0/FINDINGS.md +25 -0
- amicus-0.3.0/docs/kimi-help/0.42.0/kimi-help.txt +50 -0
- amicus-0.3.0/docs/kimi-help/0.42.0/kimi-version.txt +1 -0
- amicus-0.3.0/docs/kimi-help/0.42.0/provider-list-shape.json +18 -0
- amicus-0.3.0/docs/kimi-help/0.43.1/FINDINGS.md +35 -0
- amicus-0.3.0/docs/kimi-help/0.43.1/kimi-help.txt +50 -0
- amicus-0.3.0/docs/kimi-help/0.43.1/kimi-version.txt +1 -0
- amicus-0.3.0/docs/kimi-help/0.43.1/provider-list-shape.json +18 -0
- {amicus-0.2.0 → amicus-0.3.0}/docs/superpowers/specs/2026-09-04-amicus-design.md +19 -22
- {amicus-0.2.0 → amicus-0.3.0}/pyproject.toml +8 -2
- {amicus-0.2.0 → amicus-0.3.0}/scripts/check_release_state.py +233 -1
- {amicus-0.2.0 → amicus-0.3.0}/skills/collaborating-with-amicus/SKILL.md +71 -36
- {amicus-0.2.0 → amicus-0.3.0}/skills/collaborating-with-amicus/references/active-workflows.md +5 -5
- {amicus-0.2.0 → amicus-0.3.0}/skills/collaborating-with-amicus/references/choosing-a-backend.md +31 -12
- {amicus-0.2.0 → amicus-0.3.0}/skills/collaborating-with-amicus/references/options-and-errors.md +32 -11
- {amicus-0.2.0 → amicus-0.3.0}/skills/collaborating-with-amicus/references/reading-results.md +85 -21
- {amicus-0.2.0 → amicus-0.3.0}/skills/collaborating-with-amicus/references/reviewing-a-returned-diff.md +1 -1
- amicus-0.3.0/skills/collaborating-with-amicus/references/sync-vs-async.md +94 -0
- {amicus-0.2.0 → amicus-0.3.0}/skills/collaborating-with-amicus/tests/scenarios.md +39 -3
- {amicus-0.2.0 → amicus-0.3.0}/src/amicus/__init__.py +1 -1
- {amicus-0.2.0 → amicus-0.3.0}/src/amicus/_worker.py +2 -2
- {amicus-0.2.0 → amicus-0.3.0}/src/amicus/backends/claude/adapter.py +13 -3
- {amicus-0.2.0 → amicus-0.3.0}/src/amicus/backends/claude/adversarial.py +11 -0
- {amicus-0.2.0 → amicus-0.3.0}/src/amicus/backends/claude/config.py +3 -1
- {amicus-0.2.0 → amicus-0.3.0}/src/amicus/backends/claude/contract.py +11 -4
- {amicus-0.2.0 → amicus-0.3.0}/src/amicus/backends/claude/options.py +19 -2
- {amicus-0.2.0 → amicus-0.3.0}/src/amicus/backends/codex/contract.py +10 -7
- {amicus-0.2.0 → amicus-0.3.0}/src/amicus/backends/codex/normalize.py +6 -8
- {amicus-0.2.0 → amicus-0.3.0}/src/amicus/backends/kimi/contract.py +4 -4
- amicus-0.3.0/src/amicus/compaction.py +53 -0
- {amicus-0.2.0 → amicus-0.3.0}/src/amicus/config/__init__.py +3 -0
- {amicus-0.2.0 → amicus-0.3.0}/src/amicus/config/envspec.py +6 -1
- {amicus-0.2.0 → amicus-0.3.0}/src/amicus/errors.py +64 -14
- {amicus-0.2.0 → amicus-0.3.0}/src/amicus/jobs/delivery.py +37 -19
- {amicus-0.2.0 → amicus-0.3.0}/src/amicus/jobs/lifecycle.py +219 -39
- {amicus-0.2.0 → amicus-0.3.0}/src/amicus/jobs/lookup.py +5 -2
- amicus-0.3.0/src/amicus/jobs/polling.py +36 -0
- {amicus-0.2.0 → amicus-0.3.0}/src/amicus/jobs/taskmap.py +5 -0
- {amicus-0.2.0 → amicus-0.3.0}/src/amicus/manifest.py +160 -9
- {amicus-0.2.0 → amicus-0.3.0}/src/amicus/middleware.py +61 -3
- {amicus-0.2.0 → amicus-0.3.0}/src/amicus/obs.py +190 -5
- {amicus-0.2.0 → amicus-0.3.0}/src/amicus/orchestration/finalize.py +81 -19
- {amicus-0.2.0 → amicus-0.3.0}/src/amicus/orchestration/review.py +70 -23
- {amicus-0.2.0 → amicus-0.3.0}/src/amicus/orchestration/run.py +20 -15
- {amicus-0.2.0 → amicus-0.3.0}/src/amicus/plugin.py +3 -1
- {amicus-0.2.0 → amicus-0.3.0}/src/amicus/result_format_snapshot.py +8 -0
- {amicus-0.2.0 → amicus-0.3.0}/src/amicus/schemas/envelope.py +116 -8
- {amicus-0.2.0 → amicus-0.3.0}/src/amicus/schemas/fingerprint.py +7 -2
- {amicus-0.2.0 → amicus-0.3.0}/src/amicus/schemas/params.py +104 -57
- {amicus-0.2.0 → amicus-0.3.0}/src/amicus/schemas/publish.py +7 -10
- amicus-0.3.0/src/amicus/schemas/results.py +737 -0
- {amicus-0.2.0 → amicus-0.3.0}/src/amicus/schemas/structured.py +19 -2
- {amicus-0.2.0 → amicus-0.3.0}/src/amicus/server.py +58 -49
- {amicus-0.2.0 → amicus-0.3.0}/src/amicus/tools/__init__.py +5 -1
- {amicus-0.2.0 → amicus-0.3.0}/src/amicus/tools/_guard.py +5 -3
- {amicus-0.2.0 → amicus-0.3.0}/src/amicus/tools/_meta.py +36 -3
- {amicus-0.2.0 → amicus-0.3.0}/src/amicus/tools/_prepare.py +8 -7
- {amicus-0.2.0 → amicus-0.3.0}/src/amicus/tools/consult.py +6 -2
- {amicus-0.2.0 → amicus-0.3.0}/src/amicus/tools/delegate.py +7 -3
- {amicus-0.2.0 → amicus-0.3.0}/src/amicus/tools/discovery.py +88 -32
- {amicus-0.2.0 → amicus-0.3.0}/src/amicus/tools/dry_run.py +83 -16
- {amicus-0.2.0 → amicus-0.3.0}/src/amicus/tools/jobs.py +22 -12
- {amicus-0.2.0 → amicus-0.3.0}/src/amicus/tools/resources.py +75 -28
- {amicus-0.2.0 → amicus-0.3.0}/src/amicus/tools/review.py +13 -5
- {amicus-0.2.0 → amicus-0.3.0}/src/amicus/wire_shape_snapshot.py +46 -9
- {amicus-0.2.0 → amicus-0.3.0}/tests/conftest.py +77 -2
- {amicus-0.2.0 → amicus-0.3.0}/tests/fixtures/manifest_snapshot.all.json +1994 -548
- {amicus-0.2.0 → amicus-0.3.0}/tests/fixtures/manifest_snapshot.claude.json +1994 -548
- {amicus-0.2.0 → amicus-0.3.0}/tests/fixtures/manifest_snapshot.codex-kimi.json +1994 -548
- {amicus-0.2.0 → amicus-0.3.0}/tests/fixtures/result_format_snapshot.json +1056 -20
- {amicus-0.2.0 → amicus-0.3.0}/tests/fixtures/wire_shape_snapshot.json +102 -69
- {amicus-0.2.0 → amicus-0.3.0}/tests/support/claudefixtures.py +15 -0
- {amicus-0.2.0 → amicus-0.3.0}/tests/test_adversarial.py +21 -1
- {amicus-0.2.0 → amicus-0.3.0}/tests/test_async_tools.py +2 -2
- {amicus-0.2.0 → amicus-0.3.0}/tests/test_cache_hints.py +4 -22
- {amicus-0.2.0 → amicus-0.3.0}/tests/test_claude_adapter.py +36 -12
- {amicus-0.2.0 → amicus-0.3.0}/tests/test_claude_cli.py +11 -0
- {amicus-0.2.0 → amicus-0.3.0}/tests/test_claude_contract.py +1 -1
- {amicus-0.2.0 → amicus-0.3.0}/tests/test_claude_live.py +66 -5
- {amicus-0.2.0 → amicus-0.3.0}/tests/test_claude_plugin.py +16 -1
- {amicus-0.2.0 → amicus-0.3.0}/tests/test_claude_sync_tools.py +103 -4
- {amicus-0.2.0 → amicus-0.3.0}/tests/test_codes.py +2 -2
- {amicus-0.2.0 → amicus-0.3.0}/tests/test_codex_adapter.py +10 -0
- {amicus-0.2.0 → amicus-0.3.0}/tests/test_codex_config.py +2 -1
- {amicus-0.2.0 → amicus-0.3.0}/tests/test_codex_contract.py +12 -2
- {amicus-0.2.0 → amicus-0.3.0}/tests/test_codex_normalize.py +8 -0
- {amicus-0.2.0 → amicus-0.3.0}/tests/test_commands.py +57 -4
- amicus-0.3.0/tests/test_compaction.py +154 -0
- {amicus-0.2.0 → amicus-0.3.0}/tests/test_delivery.py +62 -2
- {amicus-0.2.0 → amicus-0.3.0}/tests/test_discovery.py +89 -22
- amicus-0.3.0/tests/test_discovery_cost.py +191 -0
- amicus-0.3.0/tests/test_dry_run.py +304 -0
- {amicus-0.2.0 → amicus-0.3.0}/tests/test_envelope.py +45 -0
- {amicus-0.2.0 → amicus-0.3.0}/tests/test_errors.py +108 -0
- amicus-0.3.0/tests/test_fastmcp_argument_log.py +448 -0
- {amicus-0.2.0 → amicus-0.3.0}/tests/test_finalize.py +227 -28
- {amicus-0.2.0 → amicus-0.3.0}/tests/test_fingerprint.py +3 -3
- {amicus-0.2.0 → amicus-0.3.0}/tests/test_guard.py +23 -0
- {amicus-0.2.0 → amicus-0.3.0}/tests/test_job_tools.py +243 -11
- {amicus-0.2.0 → amicus-0.3.0}/tests/test_kimi_contract.py +61 -12
- {amicus-0.2.0 → amicus-0.3.0}/tests/test_kimi_live.py +6 -1
- {amicus-0.2.0 → amicus-0.3.0}/tests/test_kimi_sync_tools.py +4 -2
- {amicus-0.2.0 → amicus-0.3.0}/tests/test_lifecycle.py +520 -4
- {amicus-0.2.0 → amicus-0.3.0}/tests/test_lookup.py +18 -1
- {amicus-0.2.0 → amicus-0.3.0}/tests/test_manifest.py +128 -8
- amicus-0.3.0/tests/test_meta.py +138 -0
- {amicus-0.2.0 → amicus-0.3.0}/tests/test_middleware.py +75 -1
- {amicus-0.2.0 → amicus-0.3.0}/tests/test_migration_doc.py +54 -0
- {amicus-0.2.0 → amicus-0.3.0}/tests/test_packaging.py +30 -3
- {amicus-0.2.0 → amicus-0.3.0}/tests/test_paid_tools.py +45 -0
- {amicus-0.2.0 → amicus-0.3.0}/tests/test_params.py +35 -1
- amicus-0.3.0/tests/test_poll_hint.py +38 -0
- {amicus-0.2.0 → amicus-0.3.0}/tests/test_prepare.py +9 -0
- {amicus-0.2.0 → amicus-0.3.0}/tests/test_release_state.py +266 -0
- {amicus-0.2.0 → amicus-0.3.0}/tests/test_resources.py +22 -6
- amicus-0.3.0/tests/test_results.py +265 -0
- {amicus-0.2.0 → amicus-0.3.0}/tests/test_review.py +86 -9
- {amicus-0.2.0 → amicus-0.3.0}/tests/test_server.py +94 -14
- amicus-0.3.0/tests/test_skill_contract.py +360 -0
- amicus-0.3.0/tests/test_structured.py +44 -0
- amicus-0.3.0/tests/test_surface_honesty.py +326 -0
- {amicus-0.2.0 → amicus-0.3.0}/tests/test_sync_tools.py +95 -0
- {amicus-0.2.0 → amicus-0.3.0}/tests/test_tasks_client.py +7 -1
- {amicus-0.2.0 → amicus-0.3.0}/tests/test_wire_shape.py +32 -1
- {amicus-0.2.0 → amicus-0.3.0}/tests/test_worker.py +11 -9
- {amicus-0.2.0 → amicus-0.3.0}/uv.lock +420 -53
- amicus-0.2.0/CHANGELOG.md +0 -226
- amicus-0.2.0/skills/collaborating-with-amicus/references/sync-vs-async.md +0 -67
- amicus-0.2.0/src/amicus/schemas/results.py +0 -451
- amicus-0.2.0/tests/test_discovery_cost.py +0 -75
- amicus-0.2.0/tests/test_dry_run.py +0 -127
- amicus-0.2.0/tests/test_meta.py +0 -70
- amicus-0.2.0/tests/test_results.py +0 -128
- amicus-0.2.0/tests/test_skill_contract.py +0 -119
- amicus-0.2.0/tests/test_structured.py +0 -10
- amicus-0.2.0/tests/test_surface_honesty.py +0 -104
- {amicus-0.2.0 → amicus-0.3.0}/.agents/skills/agent-friendly-docs/SKILL.md +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/.agents/skills/agent-friendly-docs/references/design-workflow.md +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/.agents/skills/agent-friendly-docs/references/docs-checklist.md +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/.agents/skills/agent-friendly-docs/references/examples.md +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/.agents/skills/agent-friendly-docs/references/review-workflow.md +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/.agents/skills/agent-friendly-docs/tests/scenarios.md +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/.agents/skills/agent-friendly-github/SKILL.md +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/.agents/skills/agent-friendly-github/decisions/001-github-fact-sheet.md +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/.agents/skills/agent-friendly-github/references/audit-workflow.md +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/.agents/skills/agent-friendly-github/references/config-checklist.md +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/.agents/skills/agent-friendly-github/references/examples/README.md +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/.agents/skills/agent-friendly-github/references/examples/codeowners.md +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/.agents/skills/agent-friendly-github/references/examples/harness-deny.md +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/.agents/skills/agent-friendly-github/references/examples/identity.md +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/.agents/skills/agent-friendly-github/references/examples/repo-files.md +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/.agents/skills/agent-friendly-github/references/examples/required-checks.md +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/.agents/skills/agent-friendly-github/references/examples/rulesets.md +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/.agents/skills/agent-friendly-github/references/examples/workflows.md +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/.agents/skills/agent-friendly-github/references/operating-playbook.md +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/.agents/skills/agent-friendly-github/references/setup-workflow.md +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/.agents/skills/agent-friendly-github/references/threat-model.md +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/.agents/skills/agent-friendly-github/tests/check_authority.py +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/.agents/skills/agent-friendly-github/tests/scenarios.md +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/.agents/skills/agent-friendly-mcp/SKILL.md +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/.agents/skills/agent-friendly-mcp/decisions/001-mcp-2026-07-28-rebase.md +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/.agents/skills/agent-friendly-mcp/decisions/002-machine-code-rename-rationale.md +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/.agents/skills/agent-friendly-mcp/decisions/003-offending-value-omission.md +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/.agents/skills/agent-friendly-mcp/decisions/004-ownership-boundaries.md +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/.agents/skills/agent-friendly-mcp/references/contract-checklist.md +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/.agents/skills/agent-friendly-mcp/references/design-workflow.md +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/.agents/skills/agent-friendly-mcp/references/examples.md +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/.agents/skills/agent-friendly-mcp/references/mcp-2025-11-25-compat.md +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/.agents/skills/agent-friendly-mcp/references/mcp-vs-cli.md +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/.agents/skills/agent-friendly-mcp/references/native-wire-shapes.md +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/.agents/skills/agent-friendly-mcp/references/review-workflow.md +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/.agents/skills/agent-friendly-mcp/references/vocabulary.md +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/.agents/skills/agent-friendly-mcp/tests/check_fact_sync.py +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/.agents/skills/agent-friendly-mcp/tests/check_rule_ids.py +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/.agents/skills/agent-friendly-mcp/tests/check_stale_terms.py +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/.agents/skills/agent-friendly-mcp/tests/fixtures/github_issues.json +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/.agents/skills/agent-friendly-mcp/tests/fixtures/github_repo_resource.json +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/.agents/skills/agent-friendly-mcp/tests/rule-ids.txt +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/.agents/skills/agent-friendly-mcp/tests/runs/2026-07-11-scenario1-baseline.md +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/.agents/skills/agent-friendly-mcp/tests/runs/2026-07-11-scenario1-outputschema-error.md +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/.agents/skills/agent-friendly-mcp/tests/runs/2026-07-11-scenario1-with-skill.md +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/.agents/skills/agent-friendly-mcp/tests/runs/2026-07-11-scenario2-baseline.md +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/.agents/skills/agent-friendly-mcp/tests/runs/2026-07-11-scenario2-with-skill.md +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/.agents/skills/agent-friendly-mcp/tests/runs/2026-07-11-scenario3-baseline.md +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/.agents/skills/agent-friendly-mcp/tests/runs/2026-07-11-scenario3-with-skill.md +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/.agents/skills/agent-friendly-mcp/tests/runs/2026-07-11-scenario4-baseline.md +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/.agents/skills/agent-friendly-mcp/tests/runs/2026-07-11-scenario4-with-skill.md +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/.agents/skills/agent-friendly-mcp/tests/runs/2026-07-11-scenario5-baseline.md +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/.agents/skills/agent-friendly-mcp/tests/runs/2026-07-11-scenario5-with-skill.md +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/.agents/skills/agent-friendly-mcp/tests/runs/2026-07-11-scenario6-baseline.md +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/.agents/skills/agent-friendly-mcp/tests/runs/2026-07-11-scenario6-with-skill.md +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/.agents/skills/agent-friendly-mcp/tests/runs/2026-07-11-scenario7-trigger.md +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/.agents/skills/agent-friendly-mcp/tests/runs/2026-07-29-scenario1-baseline.md +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/.agents/skills/agent-friendly-mcp/tests/runs/2026-07-29-scenario1-with-skill.md +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/.agents/skills/agent-friendly-mcp/tests/runs/2026-07-29-scenario3-baseline.md +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/.agents/skills/agent-friendly-mcp/tests/runs/2026-07-29-scenario3-with-skill.md +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/.agents/skills/agent-friendly-mcp/tests/runs/2026-07-29-scenario5-baseline.md +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/.agents/skills/agent-friendly-mcp/tests/runs/2026-07-29-scenario5-with-skill.md +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/.agents/skills/agent-friendly-mcp/tests/runs/2026-07-30-scenario1-with-skill.md +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/.agents/skills/agent-friendly-mcp/tests/runs/2026-07-30-scenario8-severity-calibration.md +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/.agents/skills/agent-friendly-mcp/tests/scenarios.md +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/.agents/skills/agent-friendly-mcp/tests/test_check_fact_sync.py +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/.agents/skills/agent-friendly-mcp/tests/test_check_rule_ids.py +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/.agents/skills/agent-friendly-mcp/tests/test_validate_fixture.py +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/.agents/skills/agent-friendly-mcp/tests/validate_fixture.py +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/.agents/skills/separating-context-from-constraints/SKILL.md +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/.agents/skills/separating-context-from-constraints/agents/openai.yaml +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/.agents/skills/separating-context-from-constraints/references/example-audit.md +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/.agents/skills/separating-context-from-constraints/tests/rescore-2026-08-06/preregistration.md +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/.agents/skills/separating-context-from-constraints/tests/rescore-2026-08-06/results.md +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/.agents/skills/separating-context-from-constraints/tests/runs/2026-07-11-scenario1-baseline.md +0 -0
- {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
- {amicus-0.2.0 → amicus-0.3.0}/.agents/skills/separating-context-from-constraints/tests/runs/2026-07-11-scenario2-baseline.md +0 -0
- {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
- {amicus-0.2.0 → amicus-0.3.0}/.agents/skills/separating-context-from-constraints/tests/runs/2026-07-11-scenario3-baseline.md +0 -0
- {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
- {amicus-0.2.0 → amicus-0.3.0}/.agents/skills/separating-context-from-constraints/tests/runs/2026-07-11-scenario4-baseline.md +0 -0
- {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
- {amicus-0.2.0 → amicus-0.3.0}/.agents/skills/separating-context-from-constraints/tests/runs/2026-07-11-scenario5-baseline.md +0 -0
- {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
- {amicus-0.2.0 → amicus-0.3.0}/.agents/skills/separating-context-from-constraints/tests/runs/2026-07-11-scenario6-baseline.md +0 -0
- {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
- {amicus-0.2.0 → amicus-0.3.0}/.agents/skills/separating-context-from-constraints/tests/runs/2026-07-11-scenario7-baseline.md +0 -0
- {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
- {amicus-0.2.0 → amicus-0.3.0}/.agents/skills/separating-context-from-constraints/tests/runs/2026-07-11-scenario8-baseline.md +0 -0
- {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
- {amicus-0.2.0 → amicus-0.3.0}/.agents/skills/separating-context-from-constraints/tests/runs/2026-07-11-scenario9-trigger.md +0 -0
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {amicus-0.2.0 → amicus-0.3.0}/.agents/skills/separating-context-from-constraints/tests/scenarios.md +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/.claude-plugin/marketplace.json +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/.gitattributes +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/.github/CODEOWNERS +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/.github/dependabot.yml +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/.github/workflows/ci.yml +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/.github/workflows/codeql.yml +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/.github/workflows/dependency-review.yml +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/.gitignore +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/AGENTS.md +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/CLAUDE.md +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/LICENSE +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/docs/2026-09-04-naming-and-scoping-notes.md +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/docs/DEPRECATING-SIBLINGS.md +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/docs/adr/0001-annotations-follow-the-worst-enabled-backend.md +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/docs/adr/0003-workspace-resolution.md +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/docs/adr/0005-error-envelope-and-repair-precedence.md +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/docs/adr/0006-fingerprint-and-surface-digest.md +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/docs/adr/0009-m3-kimi-port-decisions.md +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/docs/adr/0010-m4-claude-port-decisions.md +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/docs/adr/0012-m6-packaging-decisions.md +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/docs/adr/0013-proceed-without-trademark-clearance.md +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/docs/adr/0014-release-predicate-on-the-tag.md +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/docs/adr/0015-mcp-json-pins-an-already-published-release.md +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/docs/adr/0016-skill-rules-are-a-complete-contract.md +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/docs/adr/0018-the-catalog-carries-a-ttl-and-resource-reads-do-not.md +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/docs/adr/README.md +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/docs/claude-help/2.1.263/FINDINGS.md +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/docs/claude-help/2.1.263/claude-help.txt +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/docs/claude-help/2.1.263/claude-version.txt +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/docs/claude-help/2.1.263/envelope-shape.json +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/docs/host-captures/claude-code/2.1.263/FINDINGS.md +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/docs/host-captures/claude-code/2.1.263/connection.log +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/docs/host-captures/claude-code/2.1.263/host-output.json +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/docs/host-captures/codex/0.153.4/FINDINGS.md +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/docs/host-captures/codex/0.153.4/connection.log +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/docs/host-captures/codex/0.153.4/host-output.jsonl +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/docs/host-captures/free-scenarios/claude-code/2.1.263/notes.md +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/docs/host-captures/free-scenarios/claude-code/2.1.263/server.log +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/docs/host-captures/free-scenarios/claude-code/2.1.263/transcript.md +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/docs/host-captures/install-smoke/claude-code/2.1.263/notes.md +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/docs/host-captures/install-smoke/claude-code/2.1.263/server.log +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/docs/host-captures/install-smoke/claude-code/2.1.263/transcript.md +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/docs/host-captures/install-smoke/codex/0.153.4/notes.md +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/docs/host-captures/install-smoke/codex/0.153.4/server.log +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/docs/host-captures/install-smoke/codex/0.153.4/transcript.md +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/docs/host-captures/s6-f3-recon-attempt/claude-code/2.1.265/notes.md +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/docs/host-captures/s6-f3-recon-attempt/claude-code/2.1.265/server.log +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/docs/host-captures/s6-f3-recon-attempt/claude-code/2.1.265/transcript.md +0 -0
- {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
- {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
- {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
- {amicus-0.2.0 → amicus-0.3.0}/docs/host-captures/s6-rerun/claude-code/2.1.263/notes.md +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/docs/host-captures/s6-rerun/claude-code/2.1.263/server.log +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/docs/host-captures/s6-rerun/claude-code/2.1.263/transcript.md +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/docs/host-captures/s6-response-contract/claude-code/2.1.263/notes.md +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/docs/host-captures/s6-response-contract/claude-code/2.1.263/server.log +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/docs/host-captures/s6-response-contract/claude-code/2.1.263/transcript.md +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/docs/host-captures/s7-rule5-recheck/claude-code/2.1.265/notes.md +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/docs/host-captures/s7-rule5-recheck/claude-code/2.1.265/server.log +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/docs/host-captures/s7-rule5-recheck/claude-code/2.1.265/transcript.md +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/docs/kimi-help/0.41.0/FINDINGS.md +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/docs/kimi-help/0.41.0/kimi-help.txt +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/docs/kimi-help/0.41.0/kimi-version.txt +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/docs/kimi-help/0.41.0/provider-list-shape.json +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/docs/reviews/2026-09-07-agent-friendly-mcp-walk.md +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/docs/superpowers/plans/2026-09-04-amicus-execution-model.md +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/prek.toml +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/scripts/capture_claude_differentials.py +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/scripts/capture_codex_differentials.py +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/scripts/capture_kimi_differentials.py +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/scripts/check_commit_message.py +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/scripts/check_github_actions_pinning.py +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/scripts/record_live_gate_evidence.py +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/skills/collaborating-with-amicus/references/independent-attempt.md +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/skills/collaborating-with-amicus/references/review-revise.md +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/skills/collaborating-with-amicus/references/server-down-fallback.md +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/src/amicus/appstate.py +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/src/amicus/backends/__init__.py +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/src/amicus/backends/claude/__init__.py +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/src/amicus/backends/claude/binary.py +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/src/amicus/backends/claude/cli.py +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/src/amicus/backends/claude/models.py +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/src/amicus/backends/claude/normalize.py +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/src/amicus/backends/claude/status.py +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/src/amicus/backends/codex/__init__.py +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/src/amicus/backends/codex/adapter.py +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/src/amicus/backends/codex/binary.py +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/src/amicus/backends/codex/cli.py +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/src/amicus/backends/codex/config.py +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/src/amicus/backends/codex/models.py +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/src/amicus/backends/codex/options.py +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/src/amicus/backends/codex/status.py +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/src/amicus/backends/kimi/__init__.py +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/src/amicus/backends/kimi/adapter.py +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/src/amicus/backends/kimi/binary.py +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/src/amicus/backends/kimi/cli.py +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/src/amicus/backends/kimi/config.py +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/src/amicus/backends/kimi/models.py +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/src/amicus/backends/kimi/normalize.py +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/src/amicus/backends/kimi/options.py +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/src/amicus/backends/kimi/status.py +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/src/amicus/jobs/__init__.py +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/src/amicus/orchestration/__init__.py +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/src/amicus/orchestration/isolation.py +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/src/amicus/orchestration/prompts.py +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/src/amicus/orchestration/workspace.py +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/src/amicus/packaging.py +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/src/amicus/py.typed +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/src/amicus/registry.py +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/src/amicus/request.py +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/src/amicus/schemas/__init__.py +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/src/amicus/schemas/codes.py +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/src/amicus/schemas/field_policy.py +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/src/amicus/schemas/instructions.py +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/src/amicus/schemas/options.py +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/src/amicus/surface.py +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/src/amicus/tools/_resolve.py +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/tests/fixtures/claude_differentials.json +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/tests/fixtures/claude_golden_envelope.json +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/tests/fixtures/codex_differentials.json +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/tests/fixtures/fakebackend/pyproject.toml +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/tests/fixtures/fakebackend/src/fakebackend/__init__.py +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/tests/fixtures/kimi_differentials.json +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/tests/support/__init__.py +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/tests/support/codexfixtures.py +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/tests/support/fake_claude.py +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/tests/support/fake_codex.py +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/tests/support/fake_kimi.py +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/tests/support/fakeplugin.py +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/tests/support/kimifixtures.py +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/tests/test_check_commit_message.py +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/tests/test_check_github_actions_pinning.py +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/tests/test_claude_argv_differential.py +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/tests/test_claude_binary.py +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/tests/test_claude_config.py +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/tests/test_claude_golden_envelope.py +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/tests/test_claude_models.py +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/tests/test_claude_normalize.py +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/tests/test_claude_result_differential.py +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/tests/test_claude_status.py +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/tests/test_codex_argv_differential.py +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/tests/test_codex_binary.py +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/tests/test_codex_cli.py +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/tests/test_codex_live.py +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/tests/test_codex_models.py +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/tests/test_codex_plugin.py +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/tests/test_codex_result_differential.py +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/tests/test_codex_status.py +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/tests/test_config.py +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/tests/test_conftest_guards.py +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/tests/test_envspec.py +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/tests/test_field_policy.py +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/tests/test_host_captures.py +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/tests/test_import_contracts.py +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/tests/test_instructions.py +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/tests/test_isolation.py +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/tests/test_job_durability.py +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/tests/test_kimi_adapter.py +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/tests/test_kimi_argv_differential.py +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/tests/test_kimi_binary.py +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/tests/test_kimi_cli.py +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/tests/test_kimi_config.py +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/tests/test_kimi_models.py +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/tests/test_kimi_normalize.py +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/tests/test_kimi_plugin.py +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/tests/test_kimi_result_differential.py +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/tests/test_kimi_status.py +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/tests/test_live_gate_report.py +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/tests/test_live_suite_hygiene.py +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/tests/test_log_redaction.py +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/tests/test_obs.py +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/tests/test_options.py +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/tests/test_plugin.py +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/tests/test_prompts.py +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/tests/test_publish.py +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/tests/test_registry.py +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/tests/test_release_evidence.py +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/tests/test_request.py +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/tests/test_result_format.py +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/tests/test_review_artifact.py +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/tests/test_run.py +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/tests/test_surface.py +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/tests/test_taskmap.py +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/tests/test_tasks_spike.py +0 -0
- {amicus-0.2.0 → amicus-0.3.0}/tests/test_wheel_seam.py +0 -0
- {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.
|
|
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.
|
|
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@
|
|
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@
|
|
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@
|
|
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
|