python-docs-mcp-server 0.2.1__tar.gz → 0.3.1__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 (123) hide show
  1. python_docs_mcp_server-0.3.1/.coderabbit.yaml +24 -0
  2. python_docs_mcp_server-0.3.1/.github/CODEOWNERS +49 -0
  3. python_docs_mcp_server-0.3.1/.github/ISSUE_TEMPLATE/autonomous-agent.yml +108 -0
  4. python_docs_mcp_server-0.3.1/.github/PULL_REQUEST_TEMPLATE/agent.md +42 -0
  5. {python_docs_mcp_server-0.2.1 → python_docs_mcp_server-0.3.1}/.github/RELEASE.md +1 -0
  6. {python_docs_mcp_server-0.2.1 → python_docs_mcp_server-0.3.1}/.github/workflows/ci.yml +2 -2
  7. {python_docs_mcp_server-0.2.1 → python_docs_mcp_server-0.3.1}/.github/workflows/codeql.yml +1 -1
  8. {python_docs_mcp_server-0.2.1 → python_docs_mcp_server-0.3.1}/.github/workflows/e2e.yml +2 -2
  9. {python_docs_mcp_server-0.2.1 → python_docs_mcp_server-0.3.1}/.github/workflows/release.yml +3 -3
  10. {python_docs_mcp_server-0.2.1 → python_docs_mcp_server-0.3.1}/.github/workflows/scorecard.yml +1 -1
  11. {python_docs_mcp_server-0.2.1 → python_docs_mcp_server-0.3.1}/.github/workflows/security.yml +2 -2
  12. {python_docs_mcp_server-0.2.1 → python_docs_mcp_server-0.3.1}/.gitignore +3 -0
  13. python_docs_mcp_server-0.3.1/.mcp.json +9 -0
  14. python_docs_mcp_server-0.3.1/AGENT-EXECUTION-PIPELINE.md +287 -0
  15. {python_docs_mcp_server-0.2.1 → python_docs_mcp_server-0.3.1}/AGENTS.md +16 -0
  16. {python_docs_mcp_server-0.2.1 → python_docs_mcp_server-0.3.1}/CHANGELOG.md +46 -0
  17. python_docs_mcp_server-0.3.1/OPENCLAW-FORGE-PROTOCOL.md +293 -0
  18. {python_docs_mcp_server-0.2.1 → python_docs_mcp_server-0.3.1}/PKG-INFO +30 -2
  19. {python_docs_mcp_server-0.2.1 → python_docs_mcp_server-0.3.1}/README.md +28 -1
  20. python_docs_mcp_server-0.3.1/STRATEGIC-ROADMAP-2026-05-29.md +294 -0
  21. python_docs_mcp_server-0.3.1/docs/architecture/ADR-001-source-adapters.md +128 -0
  22. python_docs_mcp_server-0.3.1/docs/architecture/ADR-006-serialization.md +87 -0
  23. python_docs_mcp_server-0.3.1/docs/architecture/YAML-TRUST-BOUNDARY.md +23 -0
  24. python_docs_mcp_server-0.3.1/docs/benchmarks/PUBLIC-BENCHMARK-METHODOLOGY.md +221 -0
  25. python_docs_mcp_server-0.3.1/glama.json +7 -0
  26. {python_docs_mcp_server-0.2.1 → python_docs_mcp_server-0.3.1}/pyproject.toml +2 -1
  27. {python_docs_mcp_server-0.2.1 → python_docs_mcp_server-0.3.1}/server.json +2 -2
  28. {python_docs_mcp_server-0.2.1 → python_docs_mcp_server-0.3.1}/src/mcp_server_python_docs/__main__.py +35 -1
  29. python_docs_mcp_server-0.3.1/src/mcp_server_python_docs/cache/__init__.py +1 -0
  30. python_docs_mcp_server-0.3.1/src/mcp_server_python_docs/cache/codec.py +114 -0
  31. python_docs_mcp_server-0.3.1/src/mcp_server_python_docs/ingestion/cpython_versions.py +53 -0
  32. {python_docs_mcp_server-0.2.1 → python_docs_mcp_server-0.3.1}/src/mcp_server_python_docs/services/persistent_cache.py +35 -7
  33. python_docs_mcp_server-0.3.1/tests/cache/__init__.py +1 -0
  34. python_docs_mcp_server-0.3.1/tests/cache/test_codec.py +49 -0
  35. {python_docs_mcp_server-0.2.1 → python_docs_mcp_server-0.3.1}/tests/test_ingestion.py +39 -0
  36. {python_docs_mcp_server-0.2.1 → python_docs_mcp_server-0.3.1}/tests/test_mcp_get_docs_cache_smoke.py +4 -2
  37. {python_docs_mcp_server-0.2.1 → python_docs_mcp_server-0.3.1}/tests/test_persistent_docs_cache.py +71 -1
  38. {python_docs_mcp_server-0.2.1 → python_docs_mcp_server-0.3.1}/tests/test_synonyms.py +44 -0
  39. {python_docs_mcp_server-0.2.1 → python_docs_mcp_server-0.3.1}/uv.lock +147 -91
  40. python_docs_mcp_server-0.2.1/.planning/POSITIONING.md +0 -20
  41. python_docs_mcp_server-0.2.1/.planning/ROADMAP.md +0 -23
  42. python_docs_mcp_server-0.2.1/.planning/phases/09-compare-versions/09-01-data-shape-spike-PLAN.md +0 -205
  43. python_docs_mcp_server-0.2.1/.planning/phases/09-compare-versions/09-01-data-shape-spike-SUMMARY.md +0 -181
  44. python_docs_mcp_server-0.2.1/.planning/phases/09-compare-versions/09-02-result-models-PLAN.md +0 -183
  45. python_docs_mcp_server-0.2.1/.planning/phases/09-compare-versions/09-02-result-models-SUMMARY.md +0 -97
  46. python_docs_mcp_server-0.2.1/.planning/phases/09-compare-versions/09-03-compare-service-PLAN.md +0 -403
  47. python_docs_mcp_server-0.2.1/.planning/phases/09-compare-versions/09-03-compare-service-SUMMARY.md +0 -158
  48. python_docs_mcp_server-0.2.1/.planning/phases/09-compare-versions/09-04-mcp-tool-wiring-PLAN.md +0 -405
  49. python_docs_mcp_server-0.2.1/.planning/phases/09-compare-versions/09-04-mcp-tool-wiring-SUMMARY.md +0 -157
  50. python_docs_mcp_server-0.2.1/.planning/phases/09-compare-versions/09-05-user-facing-docs-PLAN.md +0 -254
  51. python_docs_mcp_server-0.2.1/.planning/phases/09-compare-versions/09-05-user-facing-docs-SUMMARY.md +0 -95
  52. python_docs_mcp_server-0.2.1/.planning/phases/09-compare-versions/09-CONTEXT.md +0 -40
  53. python_docs_mcp_server-0.2.1/.planning/phases/09-compare-versions/09-REVIEW.md +0 -240
  54. python_docs_mcp_server-0.2.1/.planning/phases/09-compare-versions/09-VERIFICATION.md +0 -120
  55. python_docs_mcp_server-0.2.1/.planning/phases/10-whatsnew/10-CONTEXT.md +0 -40
  56. python_docs_mcp_server-0.2.1/.planning/phases/11-detect-venv/11-CONTEXT.md +0 -43
  57. python_docs_mcp_server-0.2.1/glama.json +0 -7
  58. python_docs_mcp_server-0.2.1/src/mcp_server_python_docs/ingestion/cpython_versions.py +0 -32
  59. {python_docs_mcp_server-0.2.1 → python_docs_mcp_server-0.3.1}/.cursorignore +0 -0
  60. {python_docs_mcp_server-0.2.1 → python_docs_mcp_server-0.3.1}/.github/INTEGRATION-TEST.md +0 -0
  61. {python_docs_mcp_server-0.2.1 → python_docs_mcp_server-0.3.1}/.github/TEST-STRATEGY.md +0 -0
  62. {python_docs_mcp_server-0.2.1 → python_docs_mcp_server-0.3.1}/.github/dependabot.yml +0 -0
  63. {python_docs_mcp_server-0.2.1 → python_docs_mcp_server-0.3.1}/CLAUDE.md +0 -0
  64. {python_docs_mcp_server-0.2.1 → python_docs_mcp_server-0.3.1}/CONTRIBUTING.md +0 -0
  65. {python_docs_mcp_server-0.2.1 → python_docs_mcp_server-0.3.1}/LICENSE +0 -0
  66. {python_docs_mcp_server-0.2.1 → python_docs_mcp_server-0.3.1}/SECURITY.md +0 -0
  67. {python_docs_mcp_server-0.2.1 → python_docs_mcp_server-0.3.1}/src/mcp_server_python_docs/__init__.py +0 -0
  68. {python_docs_mcp_server-0.2.1 → python_docs_mcp_server-0.3.1}/src/mcp_server_python_docs/app_context.py +0 -0
  69. {python_docs_mcp_server-0.2.1 → python_docs_mcp_server-0.3.1}/src/mcp_server_python_docs/data/synonyms.yaml +0 -0
  70. {python_docs_mcp_server-0.2.1 → python_docs_mcp_server-0.3.1}/src/mcp_server_python_docs/detection.py +0 -0
  71. {python_docs_mcp_server-0.2.1 → python_docs_mcp_server-0.3.1}/src/mcp_server_python_docs/diagnostics.py +0 -0
  72. {python_docs_mcp_server-0.2.1 → python_docs_mcp_server-0.3.1}/src/mcp_server_python_docs/errors.py +0 -0
  73. {python_docs_mcp_server-0.2.1 → python_docs_mcp_server-0.3.1}/src/mcp_server_python_docs/ingestion/__init__.py +0 -0
  74. {python_docs_mcp_server-0.2.1 → python_docs_mcp_server-0.3.1}/src/mcp_server_python_docs/ingestion/inventory.py +0 -0
  75. {python_docs_mcp_server-0.2.1 → python_docs_mcp_server-0.3.1}/src/mcp_server_python_docs/ingestion/publish.py +0 -0
  76. {python_docs_mcp_server-0.2.1 → python_docs_mcp_server-0.3.1}/src/mcp_server_python_docs/ingestion/sphinx_json.py +0 -0
  77. {python_docs_mcp_server-0.2.1 → python_docs_mcp_server-0.3.1}/src/mcp_server_python_docs/models.py +0 -0
  78. {python_docs_mcp_server-0.2.1 → python_docs_mcp_server-0.3.1}/src/mcp_server_python_docs/py.typed +0 -0
  79. {python_docs_mcp_server-0.2.1 → python_docs_mcp_server-0.3.1}/src/mcp_server_python_docs/retrieval/__init__.py +0 -0
  80. {python_docs_mcp_server-0.2.1 → python_docs_mcp_server-0.3.1}/src/mcp_server_python_docs/retrieval/budget.py +0 -0
  81. {python_docs_mcp_server-0.2.1 → python_docs_mcp_server-0.3.1}/src/mcp_server_python_docs/retrieval/query.py +0 -0
  82. {python_docs_mcp_server-0.2.1 → python_docs_mcp_server-0.3.1}/src/mcp_server_python_docs/retrieval/ranker.py +0 -0
  83. {python_docs_mcp_server-0.2.1 → python_docs_mcp_server-0.3.1}/src/mcp_server_python_docs/server.py +0 -0
  84. {python_docs_mcp_server-0.2.1 → python_docs_mcp_server-0.3.1}/src/mcp_server_python_docs/services/__init__.py +0 -0
  85. {python_docs_mcp_server-0.2.1 → python_docs_mcp_server-0.3.1}/src/mcp_server_python_docs/services/cache.py +0 -0
  86. {python_docs_mcp_server-0.2.1 → python_docs_mcp_server-0.3.1}/src/mcp_server_python_docs/services/compare.py +0 -0
  87. {python_docs_mcp_server-0.2.1 → python_docs_mcp_server-0.3.1}/src/mcp_server_python_docs/services/content.py +0 -0
  88. {python_docs_mcp_server-0.2.1 → python_docs_mcp_server-0.3.1}/src/mcp_server_python_docs/services/observability.py +0 -0
  89. {python_docs_mcp_server-0.2.1 → python_docs_mcp_server-0.3.1}/src/mcp_server_python_docs/services/package_docs.py +0 -0
  90. {python_docs_mcp_server-0.2.1 → python_docs_mcp_server-0.3.1}/src/mcp_server_python_docs/services/search.py +0 -0
  91. {python_docs_mcp_server-0.2.1 → python_docs_mcp_server-0.3.1}/src/mcp_server_python_docs/services/version.py +0 -0
  92. {python_docs_mcp_server-0.2.1 → python_docs_mcp_server-0.3.1}/src/mcp_server_python_docs/services/version_resolution.py +0 -0
  93. {python_docs_mcp_server-0.2.1 → python_docs_mcp_server-0.3.1}/src/mcp_server_python_docs/storage/__init__.py +0 -0
  94. {python_docs_mcp_server-0.2.1 → python_docs_mcp_server-0.3.1}/src/mcp_server_python_docs/storage/db.py +0 -0
  95. {python_docs_mcp_server-0.2.1 → python_docs_mcp_server-0.3.1}/src/mcp_server_python_docs/storage/schema.sql +0 -0
  96. {python_docs_mcp_server-0.2.1 → python_docs_mcp_server-0.3.1}/tests/__init__.py +0 -0
  97. {python_docs_mcp_server-0.2.1 → python_docs_mcp_server-0.3.1}/tests/conftest.py +0 -0
  98. {python_docs_mcp_server-0.2.1 → python_docs_mcp_server-0.3.1}/tests/fixtures/retrieval_regression_cases.json +0 -0
  99. {python_docs_mcp_server-0.2.1 → python_docs_mcp_server-0.3.1}/tests/fixtures/sample_broken.fjson +0 -0
  100. {python_docs_mcp_server-0.2.1 → python_docs_mcp_server-0.3.1}/tests/fixtures/sample_library.fjson +0 -0
  101. {python_docs_mcp_server-0.2.1 → python_docs_mcp_server-0.3.1}/tests/fixtures/schema-get_docs-input.json +0 -0
  102. {python_docs_mcp_server-0.2.1 → python_docs_mcp_server-0.3.1}/tests/fixtures/schema-get_docs-output.json +0 -0
  103. {python_docs_mcp_server-0.2.1 → python_docs_mcp_server-0.3.1}/tests/fixtures/schema-list_versions-output.json +0 -0
  104. {python_docs_mcp_server-0.2.1 → python_docs_mcp_server-0.3.1}/tests/fixtures/schema-search_docs-input.json +0 -0
  105. {python_docs_mcp_server-0.2.1 → python_docs_mcp_server-0.3.1}/tests/fixtures/schema-search_docs-output.json +0 -0
  106. {python_docs_mcp_server-0.2.1 → python_docs_mcp_server-0.3.1}/tests/test_ci_workflows.py +0 -0
  107. {python_docs_mcp_server-0.2.1 → python_docs_mcp_server-0.3.1}/tests/test_compare_versions.py +0 -0
  108. {python_docs_mcp_server-0.2.1 → python_docs_mcp_server-0.3.1}/tests/test_compare_versions_spike.py +0 -0
  109. {python_docs_mcp_server-0.2.1 → python_docs_mcp_server-0.3.1}/tests/test_detection.py +0 -0
  110. {python_docs_mcp_server-0.2.1 → python_docs_mcp_server-0.3.1}/tests/test_doctor.py +0 -0
  111. {python_docs_mcp_server-0.2.1 → python_docs_mcp_server-0.3.1}/tests/test_multi_version.py +0 -0
  112. {python_docs_mcp_server-0.2.1 → python_docs_mcp_server-0.3.1}/tests/test_package_docs.py +0 -0
  113. {python_docs_mcp_server-0.2.1 → python_docs_mcp_server-0.3.1}/tests/test_packaging.py +0 -0
  114. {python_docs_mcp_server-0.2.1 → python_docs_mcp_server-0.3.1}/tests/test_phase1_integration.py +0 -0
  115. {python_docs_mcp_server-0.2.1 → python_docs_mcp_server-0.3.1}/tests/test_publish.py +0 -0
  116. {python_docs_mcp_server-0.2.1 → python_docs_mcp_server-0.3.1}/tests/test_retrieval.py +0 -0
  117. {python_docs_mcp_server-0.2.1 → python_docs_mcp_server-0.3.1}/tests/test_retrieval_regression.py +0 -0
  118. {python_docs_mcp_server-0.2.1 → python_docs_mcp_server-0.3.1}/tests/test_schema.py +0 -0
  119. {python_docs_mcp_server-0.2.1 → python_docs_mcp_server-0.3.1}/tests/test_schema_snapshot.py +0 -0
  120. {python_docs_mcp_server-0.2.1 → python_docs_mcp_server-0.3.1}/tests/test_services.py +0 -0
  121. {python_docs_mcp_server-0.2.1 → python_docs_mcp_server-0.3.1}/tests/test_stability.py +0 -0
  122. {python_docs_mcp_server-0.2.1 → python_docs_mcp_server-0.3.1}/tests/test_stdio_hygiene.py +0 -0
  123. {python_docs_mcp_server-0.2.1 → python_docs_mcp_server-0.3.1}/tests/test_stdio_smoke.py +0 -0
@@ -0,0 +1,24 @@
1
+ # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json
2
+ language: "en-US"
3
+
4
+ reviews:
5
+ profile: "chill"
6
+ request_changes_workflow: false
7
+ high_level_summary: true
8
+ review_status: true
9
+ path_filters:
10
+ - "src/**"
11
+ - "tests/**"
12
+ path_instructions:
13
+ - path: "src/**"
14
+ instructions: |
15
+ Focus review on correctness, MCP tool behavior, runtime compatibility,
16
+ cache/index compatibility, packaging impact, and security boundaries.
17
+ Avoid comments about planning docs, release docs, or repository process
18
+ unless the changed source code makes those docs materially inaccurate.
19
+ - path: "tests/**"
20
+ instructions: |
21
+ Focus review on meaningful assertions, regression coverage, fixture
22
+ correctness, deterministic behavior, and avoiding network- or
23
+ environment-dependent tests unless the test is explicitly marked as an
24
+ integration smoke test.
@@ -0,0 +1,49 @@
1
+ # CODEOWNERS — requests maintainer visibility on forbidden-territory paths.
2
+ #
3
+ # Source of truth: AGENT-EXECUTION-PIPELINE.md §2 (Forbidden Territory),
4
+ # required by §10 (Pre-flight Checklist).
5
+ #
6
+ # For these rules to be ENFORCED, branch protection on `main` must enable
7
+ # "Require review from Code Owners". CODEOWNERS alone only requests review;
8
+ # branch protection only blocks merge when review rules are enabled.
9
+ #
10
+ # Autonomous agents may NOT modify these paths without explicit Vision approval
11
+ # (pipeline §2). Any agent PR touching them must add the `supervisor-review`
12
+ # label and stop short of self-merging (pipeline §7).
13
+
14
+ # --- Project identity, dependencies, classifiers (only `version` is agent-editable) ---
15
+ /pyproject.toml @ayhammouda
16
+
17
+ # --- Permanent commitments and trust posture ---
18
+ /LICENSE @ayhammouda
19
+ /SECURITY.md @ayhammouda
20
+
21
+ # --- Load-bearing brand assets ---
22
+ /README.md @ayhammouda
23
+ /.planning/POSITIONING.md @ayhammouda
24
+
25
+ # --- Release history (adding entries is fine; rewriting history is not) ---
26
+ /CHANGELOG.md @ayhammouda
27
+
28
+ # --- CI/CD and supply chain (release path especially) ---
29
+ # The single /.github/ rule covers workflows and release.yml. Last-matching-
30
+ # pattern wins in CODEOWNERS — adding narrower entries with the same owner
31
+ # below would be no-ops and would silently *override* this rule if a different
32
+ # owner is ever added here, so we keep ownership of /.github/ uniform.
33
+ /.github/ @ayhammouda
34
+
35
+ # --- Index schema and migrations (rebuilds existing user indexes) ---
36
+ # NOTE: the retrieved-docs *cache* table lives in
37
+ # src/mcp_server_python_docs/services/persistent_cache.py and is NOT covered
38
+ # here — it is best-effort, fingerprint-scoped, and agent-editable per
39
+ # decision 5.7. Only the canonical *index* schema is forbidden territory.
40
+ **/storage/schema.sql @ayhammouda
41
+ **/migrations/ @ayhammouda
42
+
43
+ # --- Archival roadmap history ---
44
+ /.planning/ROADMAP.md @ayhammouda
45
+
46
+ # --- Governing policy + strategy documents ---
47
+ /AGENT-EXECUTION-PIPELINE.md @ayhammouda
48
+ /OPENCLAW-FORGE-PROTOCOL.md @ayhammouda
49
+ /STRATEGIC-ROADMAP-2026-05-29.md @ayhammouda
@@ -0,0 +1,108 @@
1
+ name: Autonomous Agent Task
2
+ description: A task spec scoped for unattended execution by an autonomous coding agent (Claude Code or similar).
3
+ title: "[vX.Y.Z] <scope> — <verb> <thing>"
4
+ body:
5
+ - type: markdown
6
+ attributes:
7
+ value: |
8
+ This template enforces the issue structure required by
9
+ `AGENT-EXECUTION-PIPELINE.md` §3 (in the repo root). An issue missing
10
+ any required section is **not** agent-ready and will not pass the §10
11
+ pre-flight checklist. Do not apply the `agent-ready` label from this
12
+ template; a maintainer applies it only after reading the completed
13
+ issue end-to-end. Read the pipeline doc and
14
+ `STRATEGIC-ROADMAP-2026-05-29.md` before filling this out.
15
+ - type: textarea
16
+ id: context
17
+ attributes:
18
+ label: Context (self-containment)
19
+ description: Link to the per-issue context file, this pipeline doc, the roadmap, any relevant ADR or `.planning/phases/0X-*` directory, and prior related issues.
20
+ value: |
21
+ - Per-issue context file: `.planning/agent-context/<issue-slug>.md` (read this first)
22
+ - Pipeline: `AGENT-EXECUTION-PIPELINE.md`
23
+ - Roadmap: `STRATEGIC-ROADMAP-2026-05-29.md` §<section>
24
+ - Related issues:
25
+ validations:
26
+ required: true
27
+ - type: textarea
28
+ id: goal
29
+ attributes:
30
+ label: Goal (one sentence)
31
+ description: The single outcome that counts as success.
32
+ validations:
33
+ required: true
34
+ - type: textarea
35
+ id: acceptance
36
+ attributes:
37
+ label: Acceptance criteria (testable checkbox list)
38
+ description: Each criterion must be testable, atomic, achievable without touching forbidden territory, and verifiable in <5 minutes (pipeline §4). Prefer exact commands and expected output.
39
+ value: |
40
+ - [ ] `<exact command>` <expected result>
41
+ - [ ] `<exact command>` <expected result>
42
+ validations:
43
+ required: true
44
+ - type: textarea
45
+ id: scope
46
+ attributes:
47
+ label: Scope boundaries
48
+ description: Explicit In scope / Out of scope. Out-of-scope work is a stop-and-comment trigger, never silent expansion.
49
+ value: |
50
+ **In scope:**
51
+ -
52
+
53
+ **Out of scope:**
54
+ -
55
+ validations:
56
+ required: true
57
+ - type: textarea
58
+ id: forbidden
59
+ attributes:
60
+ label: Forbidden-territory reminders
61
+ description: Repeat the AGENT-EXECUTION-PIPELINE.md §2 items relevant to THIS issue. If the task appears to require touching any of them, stop and comment.
62
+ validations:
63
+ required: true
64
+ - type: textarea
65
+ id: validation
66
+ attributes:
67
+ label: Validation commands (pipeline §5 gate)
68
+ description: The exact canonical gate, in order, plus any change-type-specific gates. Must pass before any PR is opened.
69
+ value: |
70
+ ```bash
71
+ uv run ruff check src/ tests/
72
+ uv run pyright src/
73
+ uv run pytest --tb=short -q
74
+ uv run python-docs-mcp-server doctor
75
+ ```
76
+ validations:
77
+ required: true
78
+ - type: textarea
79
+ id: pr-and-recovery
80
+ attributes:
81
+ label: PR requirements & recovery
82
+ description: What the PR description must include (pipeline §6) and where to go if blocked (pipeline §8).
83
+ value: |
84
+ - PR title matches this issue title verbatim; body uses
85
+ `.github/PULL_REQUEST_TEMPLATE/agent.md`.
86
+ - Branch: `agent/<issue-number>-<kebab-summary>`.
87
+ - If blocked: stop, write `WORKING-NOTES.md` on the branch, comment on
88
+ this issue per pipeline §8. **No PR and no silent scope expansion.**
89
+ validations:
90
+ required: true
91
+ - type: input
92
+ id: effort
93
+ attributes:
94
+ label: Effort estimate (hours)
95
+ description: Rough hours. Agent must bail and escalate if work exceeds 2× this estimate (pipeline §8).
96
+ validations:
97
+ required: true
98
+ - type: checkboxes
99
+ id: acknowledgements
100
+ attributes:
101
+ label: Agent acknowledgements
102
+ options:
103
+ - label: I will work on a branch, never on `main`, and will not self-merge.
104
+ required: true
105
+ - label: I will stop and comment rather than silently expand scope or touch forbidden territory.
106
+ required: true
107
+ - label: I will add `supervisor-review` if any pipeline §7 trigger fires.
108
+ required: true
@@ -0,0 +1,42 @@
1
+ <!--
2
+ Autonomous-agent PR template. Enforces AGENT-EXECUTION-PIPELINE.md §6.
3
+ PR title MUST match the issue title verbatim. Never self-merge.
4
+ -->
5
+
6
+ Closes #<issue-number>
7
+
8
+ ## Acceptance criteria
9
+ <!-- Copy every criterion from the issue. Check the box only when satisfied,
10
+ and add one line of evidence (command + observed result) per item. -->
11
+ - [ ] <criterion 1> — <evidence>
12
+ - [ ] <criterion 2> — <evidence>
13
+
14
+ ## Validation gate output
15
+ <!-- Paste the tail of each gate command. All must be green before opening this PR. -->
16
+ ```text
17
+ $ uv run ruff check src/ tests/
18
+ $ uv run pyright src/
19
+ $ uv run pytest --tb=short -q
20
+ $ uv run python-docs-mcp-server doctor
21
+ ```
22
+ <!-- Plus any change-type-specific gates from pipeline §5 (stdio smoke,
23
+ validate-corpus, uv lock --check) that applied to this change. -->
24
+
25
+ ## CodeRabbit review
26
+ <!-- After CodeRabbit comments, summarize findings as:
27
+ - Blocking: <items or None>
28
+ - Follow-up: <items or None>
29
+ - False positive: <items or None>
30
+ If CodeRabbit has not run yet, write "Pending." Do not mark findings green
31
+ by silence. -->
32
+ Pending.
33
+
34
+ ## Why this approach
35
+ <!-- One paragraph max. If the issue fully prescribed the approach, say so.
36
+ If you cite a design choice NOT in the issue, that is a §7 trigger. -->
37
+
38
+ ## Why this triggered supervisor review
39
+ <!-- List any pipeline §7 triggers and explain each. If none, write "None."
40
+ If any fired: this PR is opened for supervisor review only; do not merge it yourself,
41
+ and ensure the `supervisor-review` label is applied. -->
42
+ None.
@@ -51,6 +51,7 @@ Replace `X.Y.Z` below with the version you are releasing (e.g. `0.1.7`). Complet
51
51
  ```
52
52
  Must report `✅ server.json is valid`. If validation fails, shorten `server.json` `description` on `main` before tagging (the `pyproject.toml` description is unbounded by this constraint and can stay longer).
53
53
  - [ ] Integration tests from `.github/INTEGRATION-TEST.md` are complete and signed off
54
+ - [ ] Refresh README `## Tools`, `glama.json`, and registry/version badges to match the current tool surface.
54
55
  - [ ] `Doctor` subcommand passes:
55
56
  ```bash
56
57
  uv run python-docs-mcp-server doctor
@@ -18,10 +18,10 @@ jobs:
18
18
  name: Test (Python ${{ matrix.python-version }}, ${{ matrix.os }})
19
19
 
20
20
  steps:
21
- - uses: actions/checkout@v6
21
+ - uses: actions/checkout@v7
22
22
 
23
23
  - name: Install uv
24
- uses: astral-sh/setup-uv@v8.1.0
24
+ uses: astral-sh/setup-uv@v8.2.0
25
25
  with:
26
26
  cache-suffix: py${{ matrix.python-version }}
27
27
 
@@ -22,7 +22,7 @@ jobs:
22
22
 
23
23
  steps:
24
24
  - name: Checkout repository
25
- uses: actions/checkout@v6
25
+ uses: actions/checkout@v7
26
26
 
27
27
  - name: Initialize CodeQL
28
28
  uses: github/codeql-action/init@v4
@@ -17,10 +17,10 @@ jobs:
17
17
  python-version: ["3.13", "3.14"]
18
18
 
19
19
  steps:
20
- - uses: actions/checkout@v6
20
+ - uses: actions/checkout@v7
21
21
 
22
22
  - name: Install uv
23
- uses: astral-sh/setup-uv@v8.1.0
23
+ uses: astral-sh/setup-uv@v8.2.0
24
24
  with:
25
25
  cache-suffix: py${{ matrix.python-version }}
26
26
 
@@ -16,10 +16,10 @@ jobs:
16
16
  timeout-minutes: 15
17
17
 
18
18
  steps:
19
- - uses: actions/checkout@v6
19
+ - uses: actions/checkout@v7
20
20
 
21
21
  - name: Install uv
22
- uses: astral-sh/setup-uv@v8.1.0
22
+ uses: astral-sh/setup-uv@v8.2.0
23
23
 
24
24
  - name: Set up Python 3.13
25
25
  run: uv python install 3.13
@@ -117,7 +117,7 @@ jobs:
117
117
  contents: read
118
118
 
119
119
  steps:
120
- - uses: actions/checkout@v6
120
+ - uses: actions/checkout@v7
121
121
 
122
122
  - name: Install mcp-publisher
123
123
  run: |
@@ -21,7 +21,7 @@ jobs:
21
21
 
22
22
  steps:
23
23
  - name: Checkout repository
24
- uses: actions/checkout@v6
24
+ uses: actions/checkout@v7
25
25
  with:
26
26
  persist-credentials: false
27
27
 
@@ -20,10 +20,10 @@ jobs:
20
20
 
21
21
  steps:
22
22
  - name: Checkout repository
23
- uses: actions/checkout@v6
23
+ uses: actions/checkout@v7
24
24
 
25
25
  - name: Install uv
26
- uses: astral-sh/setup-uv@v8.1.0
26
+ uses: astral-sh/setup-uv@v8.2.0
27
27
 
28
28
  - name: Export locked dependencies
29
29
  run: |
@@ -194,6 +194,9 @@ cython_debug/
194
194
  # PyPI configuration file
195
195
  .pypirc
196
196
 
197
+ # Local planning / agent workspace
198
+ .planning/
199
+
197
200
  # Cursor
198
201
  # Keep repo-local Cursor context files tracked when present so the repository
199
202
  # can define its own indexing boundaries.
@@ -0,0 +1,9 @@
1
+ {
2
+ "mcpServers": {
3
+ "python-docs": {
4
+ "type": "stdio",
5
+ "command": "uvx",
6
+ "args": ["python-docs-mcp-server"]
7
+ }
8
+ }
9
+ }
@@ -0,0 +1,287 @@
1
+ # Autonomous Agent Execution Pipeline
2
+
3
+ **Purpose:** Define the policy, context, and guardrails for running autonomous coding agents (Claude Code or similar) against this project's GitHub issues while the maintainer is AFK.
4
+
5
+ **Companion to:** [`STRATEGIC-ROADMAP-2026-05-29.md`](STRATEGIC-ROADMAP-2026-05-29.md) (the *what*; this is the *how, with what guardrails*).
6
+
7
+ **OpenClaw operating layer:** [`OPENCLAW-FORGE-PROTOCOL.md`](OPENCLAW-FORGE-PROTOCOL.md) defines how Vision, Gilfoyle, and Heimdall apply this policy. This project has no UI, so Saga is not part of the default loop.
8
+
9
+ **Adopted:** 2026-05-29
10
+
11
+ ---
12
+
13
+ ## 1. Operating Principles
14
+
15
+ - Agents work in branches, never on `main`.
16
+ - Every PR requires independent verification before merge. Vision may merge verified PRs when checks and review triage are green.
17
+ - Agents declare their scope explicitly and stay inside it.
18
+ - The canonical validation gate (§5) must pass before any PR is opened. Failing gate → no PR, just a `WORKING-NOTES.md` on the branch + comment on the issue.
19
+ - Automated review tools such as CodeRabbit provide review signal only. They do not approve or merge; Vision uses them as review signal before merging.
20
+ - Forbidden territory (§2) is non-negotiable. Any drift triggers a hard stop.
21
+ - Recovery is always **stop and post a comment**, never **silently expand scope**.
22
+
23
+ The goal is to keep the forge moving while preserving explicit stop points for money, secrets, external communication, and unresolved architectural judgment.
24
+
25
+ ---
26
+
27
+ ## 2. Forbidden Territory (hard stop)
28
+
29
+ Autonomous agents may NOT modify the following without explicit Vision approval in the issue comments first:
30
+
31
+ | Path / Concern | Reason |
32
+ |---|---|
33
+ | Any tool name, parameter, or return shape | Public API surface; semver-significant |
34
+ | `schema.sql` and migrations | Index schema; rebuilds existing user caches |
35
+ | `.github/workflows/` (any workflow) | CI/CD and supply chain |
36
+ | `.github/workflows/release.yml` specifically | Release path; Trusted Publishing config |
37
+ | `pyproject.toml` `[project]` (anything other than `version`) | Identity, dependencies, classifiers |
38
+ | Major dependency bumps (anything ≥1 major) | Compatibility risk |
39
+ | `.planning/POSITIONING.md` | Load-bearing brand asset |
40
+ | `README.md` hero section (above the first install code block) | Load-bearing brand asset |
41
+ | `LICENSE` | Permanent commitment (MIT, always free) |
42
+ | `CHANGELOG.md` (creating entries is fine; rewriting history is not) | Release history |
43
+ | `SECURITY.md` | Trust posture; requires deliberate review |
44
+ | Existing tests (deletion or weakening assertions) | Regression cover |
45
+ | `.planning/ROADMAP.md` historical phase records | Archival history |
46
+ | `AGENT-EXECUTION-PIPELINE.md`, `OPENCLAW-FORGE-PROTOCOL.md`, and `STRATEGIC-ROADMAP-2026-05-29.md` | Governing policy and strategy docs |
47
+
48
+ If an agent's task appears to require touching any of these:
49
+ 1. **Stop work.**
50
+ 2. Post a comment on the issue explaining the conflict.
51
+ 3. Tag with `supervisor-review`.
52
+ 4. Wait for guidance.
53
+
54
+ ---
55
+
56
+ ## 3. Issue Structure (required for every agent-targetable issue)
57
+
58
+ Every issue intended for an autonomous agent **must** contain these sections, in this order:
59
+
60
+ | Section | Purpose | Required content |
61
+ |---|---|---|
62
+ | **Title** | Routability | `[v0.X.Y] <scope> — <verb> <thing>` e.g., `[v0.3.0] cache — add zstd codec layer` |
63
+ | **Context** | Self-containment | Links to: this pipeline doc, the strategic roadmap, any specific ADR or `.planning/phases/0X-*` directory, prior related issues |
64
+ | **Goal** | Single sentence | What outcome counts as success |
65
+ | **Acceptance criteria** | Testable definition of done | Checkbox list per §4 |
66
+ | **Scope boundaries** | Prevents creep | "In scope:" and "Out of scope:" subsections |
67
+ | **Forbidden-territory reminder** | Belt and suspenders | Repeat the §2 items relevant to this issue |
68
+ | **Validation commands** | Pre-PR gate | The exact canonical commands per §5 |
69
+ | **PR template** | What the PR description must include | §6 checklist |
70
+ | **Recovery** | What to do if blocked | Pointer to §8 |
71
+ | **Effort estimate** | Sanity check | Rough hours; agent should bail and escalate if work exceeds 2× |
72
+
73
+ An issue missing any of these is not agent-ready. The pre-flight checklist (§10) gates this.
74
+
75
+ ---
76
+
77
+ ## 4. Acceptance-Criteria Patterns
78
+
79
+ **Each criterion must be:** testable, atomic, achievable without touching forbidden territory, and sized so a competent dev could verify it in <5 minutes.
80
+
81
+ **Good examples:**
82
+
83
+ - "`uv run pytest tests/cache/test_codec.py -q` passes with at least 4 new tests covering: codec round-trip for `'none'`, codec round-trip for `'zstd'`, codec round-trip for `'zstd-dict-v1'`, and graceful read of pre-existing `compression='none'` rows."
84
+ - "After cherry-picking this branch, `python -c 'from mcp_server_python_docs.cache.codec import list_supported; print(list_supported())'` prints exactly `['none', 'zstd', 'zstd-dict-v1']`."
85
+ - "`grep -rn 'yaml.load(' src/ tests/` returns zero hits. `grep -rn 'yaml.safe_load(' src/` returns at least the expected call sites in `server.py` and `ingestion/sphinx_json.py`."
86
+ - "README.md `## Tools` section lists exactly six rows in the table, including `compare_versions`, and the row order matches the `@mcp.tool` declaration order in `src/mcp_server_python_docs/server.py`."
87
+
88
+ **Bad examples (do not allow):**
89
+
90
+ - "Improve cache performance." — not testable
91
+ - "Make it production-ready." — not specific
92
+ - "Refactor for clarity." — invites scope creep
93
+ - "Add tests." — what tests, asserting what?
94
+
95
+ ---
96
+
97
+ ## 5. Canonical Validation Gate
98
+
99
+ **Must pass, in this order, before any PR is opened:**
100
+
101
+ ```bash
102
+ uv run ruff check src/ tests/
103
+ uv run pyright src/
104
+ uv run pytest --tb=short -q
105
+ uv run python-docs-mcp-server doctor
106
+ ```
107
+
108
+ **Additional gates for specific change types:**
109
+
110
+ - Any change touching the MCP wire protocol or tool registration:
111
+ ```bash
112
+ uv run pytest tests/test_stdio_smoke.py -q
113
+ ```
114
+ - Any change to ingestion or storage:
115
+ ```bash
116
+ uv run python-docs-mcp-server validate-corpus
117
+ ```
118
+ - Any change touching dependencies:
119
+ ```bash
120
+ uv lock --check
121
+ uv pip compile --quiet pyproject.toml -o /tmp/requirements-check.txt
122
+ ```
123
+
124
+ **Failure handling:** If any gate fails, the agent writes the full output into a file `WORKING-NOTES.md` at the branch root, commits it as `agent: validation-gate-failed`, posts a comment on the issue with a link to the failing commit, and stops. **No PR is opened.**
125
+
126
+ ---
127
+
128
+ ## 6. Branch, Commit, PR Conventions
129
+
130
+ - **Branch name:** `agent/{issue-number}-{kebab-case-summary}` (e.g., `agent/47-zstd-cache-codec`)
131
+ - **Commit prefix:** `agent: ` followed by a short, imperative summary. Conventional-commit scopes optional but encouraged: `agent: cache(codec): add zstd round-trip path`
132
+ - **Atomic commits.** One logical change per commit. No squash-and-force-push during agent work.
133
+ - **PR title** matches the issue title verbatim
134
+ - **PR description** must include:
135
+ - `Closes #<issue-number>` (or `Refs #` if intentionally not closing)
136
+ - Each acceptance criterion as a checked or unchecked box, with a one-line explanation if unchecked
137
+ - Output (or link to artifact) for the §5 validation gate
138
+ - CodeRabbit triage summary when CodeRabbit comments on the PR: blocking, follow-up, false positive, or pending/unavailable
139
+ - A short "Why this approach" paragraph if the design wasn't fully prescribed in the issue
140
+ - The §7 "Supervisor review" disclosure (which doubles as a forbidden-territory near-miss log when applicable; CODEOWNERS is the mechanical enforcement)
141
+ - **PR is opened against** the milestone integration branch (e.g., `release/v0.3.0`) when one exists, otherwise `main`. Never self-merge.
142
+
143
+ ---
144
+
145
+ ## 7. Supervisor-Review Triggers (always pause)
146
+
147
+ The agent must open the PR but **NOT** request merge — and must add the `supervisor-review` label — if any of these are true:
148
+
149
+ | Trigger | Why |
150
+ |---|---|
151
+ | Any forbidden-territory item (§2) was modified | By definition |
152
+ | Any existing test was deleted | Possible regression-cover loss |
153
+ | Diff exceeds 500 lines of source code (excluding generated and lockfiles) | Bigger than a single agent task should be |
154
+ | A new third-party runtime dependency was introduced | Trust-posture and footprint review |
155
+ | Any `pyproject.toml` field changed (other than `version` during a release issue) | Identity / metadata review |
156
+ | `.github/workflows/` was modified | CI/release-path review |
157
+ | The PR introduces network access at runtime | Violates principle 2.2 (offline-first) |
158
+ | The PR introduces async code in a previously-sync code path | Concurrency review |
159
+ | The agent's "Why this approach" paragraph cites a design choice not in the issue | Verify scope |
160
+
161
+ For each trigger, the PR description must include a `## Why this triggered supervisor review` section explaining what changed and why the agent believes it was necessary.
162
+
163
+ ---
164
+
165
+ ## 8. Recovery Procedures
166
+
167
+ If the agent encounters any of these conditions, **stop work** and post a comment on the issue:
168
+
169
+ - A previously passing test now fails for an unclear reason
170
+ - A change to forbidden territory appears necessary to complete the task
171
+ - The acceptance criteria turn out to be ambiguous or contradictory
172
+ - An upstream dependency is broken or unavailable
173
+ - Work appears to exceed 2× the original effort estimate
174
+
175
+ The stop comment must contain:
176
+ 1. What was attempted (1–3 sentences)
177
+ 2. What failed or blocked (with error output if applicable)
178
+ 3. The agent's best read on the path forward
179
+ 4. An explicit "I am stopping pending guidance" line
180
+
181
+ **Forbidden recovery moves:**
182
+
183
+ - Silently expanding scope
184
+ - Trying alternative implementations not specified in the issue
185
+ - Merging to `main`
186
+ - Deleting tests to make others pass
187
+ - Suppressing warnings or skipping tests as a "workaround"
188
+
189
+ ---
190
+
191
+ ## 9. Context Files Required Before Agents Run
192
+
193
+ These files must exist on `main` before the v0.3.0 issues are unleashed to autonomous agents.
194
+
195
+ | File | Purpose | Status |
196
+ |---|---|---|
197
+ | [`AGENTS.md`](AGENTS.md) | Existing repo-conventions doc; should reference this pipeline | **Needs update** — add a one-paragraph link to this file |
198
+ | [`STRATEGIC-ROADMAP-2026-05-29.md`](STRATEGIC-ROADMAP-2026-05-29.md) | The *what and why*; mandatory reading | **Exists** |
199
+ | `AGENT-EXECUTION-PIPELINE.md` (this file) | The *how, with what guardrails* | **Exists** |
200
+ | [`OPENCLAW-FORGE-PROTOCOL.md`](OPENCLAW-FORGE-PROTOCOL.md) | OpenClaw role split and MCP-specific execution loop | **Exists** |
201
+ | `.github/ISSUE_TEMPLATE/autonomous-agent.yml` | Issue template enforcing §3 structure | **Create** — see §11 sketch |
202
+ | `.github/PULL_REQUEST_TEMPLATE/agent.md` | PR template enforcing §6 | **Create** — see §11 sketch |
203
+ | `.github/CODEOWNERS` | Requests owner attention on forbidden-territory paths | **Create** — see §11 sketch |
204
+ | `docs/architecture/TOKEN-STUDY-METHODOLOGY.md` | Methodology spec for the v0.3.0 first issue | **Create as part of that issue spec** |
205
+ | GitHub label: `supervisor-review` | Marks PRs paused at §7 triggers | **Create** |
206
+ | GitHub label: `agent-ready` | Confirms issue passed §10 pre-flight | **Create** |
207
+ | Branch protection on `main` | Allows Vision to merge after verification and green checks | **Confirm enabled** |
208
+ | Branch protection on `release/v0.3.0` (when created) | Same | **Configure at branch creation** |
209
+
210
+ ---
211
+
212
+ ## 10. Pre-flight Checklist (run before unleashing agents on a milestone)
213
+
214
+ Run this checklist before pushing the first agent-ready issue to the queue.
215
+
216
+ - [ ] All §9 context files exist on `main`.
217
+ - [ ] The §5 canonical validation gate passes on `main` (clean baseline).
218
+ - [ ] Each issue has been pre-flighted by Vision and labeled `agent-ready`.
219
+ - [ ] Each issue includes its §3 sections in full.
220
+ - [ ] The `supervisor-review` and `agent-ready` labels exist in the repo.
221
+ - [ ] CODEOWNERS forces review on at least: `pyproject.toml`, `.github/workflows/`, `LICENSE`, `README.md`, `.planning/POSITIONING.md`, `schema.sql`.
222
+ - [ ] Branch protection on `main` keeps deletion and force-push protection active without review deadlock.
223
+ - [ ] At least one issue is small enough (≤4 hours) to serve as a confidence-building first run.
224
+
225
+ ---
226
+
227
+ ## 11. Templates (authoritative implementations)
228
+
229
+ The §9 templates live as checked-in files; this section just points at them so
230
+ this doc never drifts from the implementations:
231
+
232
+ - `.github/ISSUE_TEMPLATE/autonomous-agent.yml`
233
+ - `.github/PULL_REQUEST_TEMPLATE/agent.md`
234
+ - `.github/CODEOWNERS`
235
+
236
+ ---
237
+
238
+ ## 12. Per-Issue Context Files (v0.3.0 wave)
239
+
240
+ For the first wave of agent-targetable issues, Claude Code should include — as linked references in each issue — a dedicated `.planning/agent-context/<issue-slug>.md` file that captures the agent's working notes, design decisions to honor, and any test fixtures or code excerpts the agent will need to look at.
241
+
242
+ Each per-issue context file should contain:
243
+
244
+ 1. **The relevant excerpt from `STRATEGIC-ROADMAP-2026-05-29.md`** (don't make the agent re-derive the goal).
245
+ 2. **Pointer to the existing code touch-points** (file paths + symbols).
246
+ 3. **Existing test patterns to follow** (one or two example tests from the same area).
247
+ 4. **Known pitfalls** specific to this task.
248
+ 5. **Decision log placeholder** for the agent to fill in.
249
+
250
+ The point is to give the agent everything it needs in one read, so it doesn't go fishing across the repo and pick up incorrect patterns from `.planning/` archive material.
251
+
252
+ ---
253
+
254
+ ## 13. Suggested Agent-Targetable Issues for v0.3.0
255
+
256
+ Mapping the v0.3.0 deliverables to agent-friendliness, to help prioritize issue generation:
257
+
258
+ | Deliverable | Agent-friendly? | Why | Recommended owner |
259
+ |---|---|---|---|
260
+ | Workstream J — zstd cache codec layer | **Yes (high)** | Well-bounded, testable, no API surface change | Agent |
261
+ | README + PyPI + glama.json refresh to 6-tool surface | **Yes (high)** | Mechanical, easily verified, low risk | Agent |
262
+ | PyYAML safe-loader audit | **Yes (medium)** | Simple grep + fix; need agent to surface findings before changing | Agent |
263
+ | ADR-001 (Source Adapters) draft | **Yes (medium)** | Writing task; needs clear template + style guide | Agent with strict template |
264
+ | ADR-006 (Serialization) draft | **Yes (medium)** | Same as ADR-001 | Agent with strict template |
265
+ | Build-time supply-chain hardening (CPython SHA pin + SECURITY.md update) | **Partial** | Pinning is mechanical; SECURITY.md text needs judgment | Agent for pinning; Vision for SECURITY.md |
266
+ | 30-minute TOON Python port audit | **No** | Requires subjective quality judgment | Human |
267
+ | Empirical token study | **No** | Methodology choices and corpus selection require judgment | Human (with agent scaffolding the harness) |
268
+
269
+ The v0.3.0 issue wave should therefore lead with the **high-confidence agent issues** so the overnight run produces obvious wins, then escalate to the partial / Vision-judgment items the following day under Vision supervision.
270
+
271
+ ---
272
+
273
+ ## Amendments
274
+
275
+ *Append amendments below as `## Amendment YYYY-MM-DD` sections. Do not edit historical content above this line; the locked sections are the authoritative current policy.*
276
+
277
+ ## Amendment 2026-05-29 — OpenClaw Role Split
278
+
279
+ OpenClaw execution for this repo is governed by `OPENCLAW-FORGE-PROTOCOL.md`.
280
+ The default loop is Vision → Gilfoyle → Heimdall → Vision/Aymen:
281
+
282
+ - Vision owns issue pre-flight, `agent-ready`, review synthesis, branch protection, and pause/resume decisions.
283
+ - Gilfoyle owns scoped implementation on exactly one issue at a time.
284
+ - Heimdall owns independent verification, packaging/install smoke, security-sensitive checks, and release-readiness checks.
285
+ - CodeRabbit findings are mandatory review signal when present. Vision/Heimdall must triage them as blocking, follow-up, or false positive before `verified`.
286
+ - Saga is not in the default loop because this MCP has no UI.
287
+ - Pipeline Monitor remains disabled unless Aymen explicitly asks for assisted merge checks; no Vision-owned merge is allowed.
@@ -11,6 +11,19 @@ The repo's public credibility matters. Prefer changes that make the project
11
11
  easier to trust, easier to verify, and easier to contribute to over changes
12
12
  that merely add more AI or MCP setup.
13
13
 
14
+ ## Autonomous Agent Execution
15
+
16
+ A portion of this project is executed by autonomous coding agents working
17
+ unattended against GitHub issues. If you are such an agent — or are scoping
18
+ work for one — **`AGENT-EXECUTION-PIPELINE.md` is mandatory reading before you
19
+ touch anything.** It defines the forbidden territory (don't-touch paths), the
20
+ required issue structure, the canonical validation gate, the human-review
21
+ triggers, and the recovery procedure. The *what and why* lives in
22
+ `STRATEGIC-ROADMAP-2026-05-29.md`; the *how, with what guardrails* lives in the
23
+ pipeline doc. Agents work on branches only, every PR needs human review, and
24
+ auto-merge is forbidden. Per-issue working context lives under
25
+ `.planning/agent-context/<issue-slug>.md`.
26
+
14
27
  ## Canonical Commands
15
28
 
16
29
  If `uv` is not installed yet:
@@ -87,6 +100,9 @@ Before calling work complete:
87
100
 
88
101
  - `.planning/ROADMAP.md` and `.planning/phases/0X-…/0X-CONTEXT.md` are live,
89
102
  forward-looking specs — read these first when starting a new phase.
103
+ - `.planning/agent-context/<issue-slug>.md` and active
104
+ `.planning/issues/v0.3.0/*.md` specs are live only for autonomous-agent issue
105
+ execution; read them when an issue or pipeline document links them.
90
106
  - Anything else in `.planning/` (especially content dated 2026-04 or earlier)
91
107
  is archival history. It may help maintainers reconstruct prior context but
92
108
  should not drive routine implementation decisions.