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.
- python_docs_mcp_server-0.3.1/.coderabbit.yaml +24 -0
- python_docs_mcp_server-0.3.1/.github/CODEOWNERS +49 -0
- python_docs_mcp_server-0.3.1/.github/ISSUE_TEMPLATE/autonomous-agent.yml +108 -0
- python_docs_mcp_server-0.3.1/.github/PULL_REQUEST_TEMPLATE/agent.md +42 -0
- {python_docs_mcp_server-0.2.1 → python_docs_mcp_server-0.3.1}/.github/RELEASE.md +1 -0
- {python_docs_mcp_server-0.2.1 → python_docs_mcp_server-0.3.1}/.github/workflows/ci.yml +2 -2
- {python_docs_mcp_server-0.2.1 → python_docs_mcp_server-0.3.1}/.github/workflows/codeql.yml +1 -1
- {python_docs_mcp_server-0.2.1 → python_docs_mcp_server-0.3.1}/.github/workflows/e2e.yml +2 -2
- {python_docs_mcp_server-0.2.1 → python_docs_mcp_server-0.3.1}/.github/workflows/release.yml +3 -3
- {python_docs_mcp_server-0.2.1 → python_docs_mcp_server-0.3.1}/.github/workflows/scorecard.yml +1 -1
- {python_docs_mcp_server-0.2.1 → python_docs_mcp_server-0.3.1}/.github/workflows/security.yml +2 -2
- {python_docs_mcp_server-0.2.1 → python_docs_mcp_server-0.3.1}/.gitignore +3 -0
- python_docs_mcp_server-0.3.1/.mcp.json +9 -0
- python_docs_mcp_server-0.3.1/AGENT-EXECUTION-PIPELINE.md +287 -0
- {python_docs_mcp_server-0.2.1 → python_docs_mcp_server-0.3.1}/AGENTS.md +16 -0
- {python_docs_mcp_server-0.2.1 → python_docs_mcp_server-0.3.1}/CHANGELOG.md +46 -0
- python_docs_mcp_server-0.3.1/OPENCLAW-FORGE-PROTOCOL.md +293 -0
- {python_docs_mcp_server-0.2.1 → python_docs_mcp_server-0.3.1}/PKG-INFO +30 -2
- {python_docs_mcp_server-0.2.1 → python_docs_mcp_server-0.3.1}/README.md +28 -1
- python_docs_mcp_server-0.3.1/STRATEGIC-ROADMAP-2026-05-29.md +294 -0
- python_docs_mcp_server-0.3.1/docs/architecture/ADR-001-source-adapters.md +128 -0
- python_docs_mcp_server-0.3.1/docs/architecture/ADR-006-serialization.md +87 -0
- python_docs_mcp_server-0.3.1/docs/architecture/YAML-TRUST-BOUNDARY.md +23 -0
- python_docs_mcp_server-0.3.1/docs/benchmarks/PUBLIC-BENCHMARK-METHODOLOGY.md +221 -0
- python_docs_mcp_server-0.3.1/glama.json +7 -0
- {python_docs_mcp_server-0.2.1 → python_docs_mcp_server-0.3.1}/pyproject.toml +2 -1
- {python_docs_mcp_server-0.2.1 → python_docs_mcp_server-0.3.1}/server.json +2 -2
- {python_docs_mcp_server-0.2.1 → python_docs_mcp_server-0.3.1}/src/mcp_server_python_docs/__main__.py +35 -1
- python_docs_mcp_server-0.3.1/src/mcp_server_python_docs/cache/__init__.py +1 -0
- python_docs_mcp_server-0.3.1/src/mcp_server_python_docs/cache/codec.py +114 -0
- python_docs_mcp_server-0.3.1/src/mcp_server_python_docs/ingestion/cpython_versions.py +53 -0
- {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
- python_docs_mcp_server-0.3.1/tests/cache/__init__.py +1 -0
- python_docs_mcp_server-0.3.1/tests/cache/test_codec.py +49 -0
- {python_docs_mcp_server-0.2.1 → python_docs_mcp_server-0.3.1}/tests/test_ingestion.py +39 -0
- {python_docs_mcp_server-0.2.1 → python_docs_mcp_server-0.3.1}/tests/test_mcp_get_docs_cache_smoke.py +4 -2
- {python_docs_mcp_server-0.2.1 → python_docs_mcp_server-0.3.1}/tests/test_persistent_docs_cache.py +71 -1
- {python_docs_mcp_server-0.2.1 → python_docs_mcp_server-0.3.1}/tests/test_synonyms.py +44 -0
- {python_docs_mcp_server-0.2.1 → python_docs_mcp_server-0.3.1}/uv.lock +147 -91
- python_docs_mcp_server-0.2.1/.planning/POSITIONING.md +0 -20
- python_docs_mcp_server-0.2.1/.planning/ROADMAP.md +0 -23
- python_docs_mcp_server-0.2.1/.planning/phases/09-compare-versions/09-01-data-shape-spike-PLAN.md +0 -205
- python_docs_mcp_server-0.2.1/.planning/phases/09-compare-versions/09-01-data-shape-spike-SUMMARY.md +0 -181
- python_docs_mcp_server-0.2.1/.planning/phases/09-compare-versions/09-02-result-models-PLAN.md +0 -183
- python_docs_mcp_server-0.2.1/.planning/phases/09-compare-versions/09-02-result-models-SUMMARY.md +0 -97
- python_docs_mcp_server-0.2.1/.planning/phases/09-compare-versions/09-03-compare-service-PLAN.md +0 -403
- python_docs_mcp_server-0.2.1/.planning/phases/09-compare-versions/09-03-compare-service-SUMMARY.md +0 -158
- python_docs_mcp_server-0.2.1/.planning/phases/09-compare-versions/09-04-mcp-tool-wiring-PLAN.md +0 -405
- python_docs_mcp_server-0.2.1/.planning/phases/09-compare-versions/09-04-mcp-tool-wiring-SUMMARY.md +0 -157
- python_docs_mcp_server-0.2.1/.planning/phases/09-compare-versions/09-05-user-facing-docs-PLAN.md +0 -254
- python_docs_mcp_server-0.2.1/.planning/phases/09-compare-versions/09-05-user-facing-docs-SUMMARY.md +0 -95
- python_docs_mcp_server-0.2.1/.planning/phases/09-compare-versions/09-CONTEXT.md +0 -40
- python_docs_mcp_server-0.2.1/.planning/phases/09-compare-versions/09-REVIEW.md +0 -240
- python_docs_mcp_server-0.2.1/.planning/phases/09-compare-versions/09-VERIFICATION.md +0 -120
- python_docs_mcp_server-0.2.1/.planning/phases/10-whatsnew/10-CONTEXT.md +0 -40
- python_docs_mcp_server-0.2.1/.planning/phases/11-detect-venv/11-CONTEXT.md +0 -43
- python_docs_mcp_server-0.2.1/glama.json +0 -7
- python_docs_mcp_server-0.2.1/src/mcp_server_python_docs/ingestion/cpython_versions.py +0 -32
- {python_docs_mcp_server-0.2.1 → python_docs_mcp_server-0.3.1}/.cursorignore +0 -0
- {python_docs_mcp_server-0.2.1 → python_docs_mcp_server-0.3.1}/.github/INTEGRATION-TEST.md +0 -0
- {python_docs_mcp_server-0.2.1 → python_docs_mcp_server-0.3.1}/.github/TEST-STRATEGY.md +0 -0
- {python_docs_mcp_server-0.2.1 → python_docs_mcp_server-0.3.1}/.github/dependabot.yml +0 -0
- {python_docs_mcp_server-0.2.1 → python_docs_mcp_server-0.3.1}/CLAUDE.md +0 -0
- {python_docs_mcp_server-0.2.1 → python_docs_mcp_server-0.3.1}/CONTRIBUTING.md +0 -0
- {python_docs_mcp_server-0.2.1 → python_docs_mcp_server-0.3.1}/LICENSE +0 -0
- {python_docs_mcp_server-0.2.1 → python_docs_mcp_server-0.3.1}/SECURITY.md +0 -0
- {python_docs_mcp_server-0.2.1 → python_docs_mcp_server-0.3.1}/src/mcp_server_python_docs/__init__.py +0 -0
- {python_docs_mcp_server-0.2.1 → python_docs_mcp_server-0.3.1}/src/mcp_server_python_docs/app_context.py +0 -0
- {python_docs_mcp_server-0.2.1 → python_docs_mcp_server-0.3.1}/src/mcp_server_python_docs/data/synonyms.yaml +0 -0
- {python_docs_mcp_server-0.2.1 → python_docs_mcp_server-0.3.1}/src/mcp_server_python_docs/detection.py +0 -0
- {python_docs_mcp_server-0.2.1 → python_docs_mcp_server-0.3.1}/src/mcp_server_python_docs/diagnostics.py +0 -0
- {python_docs_mcp_server-0.2.1 → python_docs_mcp_server-0.3.1}/src/mcp_server_python_docs/errors.py +0 -0
- {python_docs_mcp_server-0.2.1 → python_docs_mcp_server-0.3.1}/src/mcp_server_python_docs/ingestion/__init__.py +0 -0
- {python_docs_mcp_server-0.2.1 → python_docs_mcp_server-0.3.1}/src/mcp_server_python_docs/ingestion/inventory.py +0 -0
- {python_docs_mcp_server-0.2.1 → python_docs_mcp_server-0.3.1}/src/mcp_server_python_docs/ingestion/publish.py +0 -0
- {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
- {python_docs_mcp_server-0.2.1 → python_docs_mcp_server-0.3.1}/src/mcp_server_python_docs/models.py +0 -0
- {python_docs_mcp_server-0.2.1 → python_docs_mcp_server-0.3.1}/src/mcp_server_python_docs/py.typed +0 -0
- {python_docs_mcp_server-0.2.1 → python_docs_mcp_server-0.3.1}/src/mcp_server_python_docs/retrieval/__init__.py +0 -0
- {python_docs_mcp_server-0.2.1 → python_docs_mcp_server-0.3.1}/src/mcp_server_python_docs/retrieval/budget.py +0 -0
- {python_docs_mcp_server-0.2.1 → python_docs_mcp_server-0.3.1}/src/mcp_server_python_docs/retrieval/query.py +0 -0
- {python_docs_mcp_server-0.2.1 → python_docs_mcp_server-0.3.1}/src/mcp_server_python_docs/retrieval/ranker.py +0 -0
- {python_docs_mcp_server-0.2.1 → python_docs_mcp_server-0.3.1}/src/mcp_server_python_docs/server.py +0 -0
- {python_docs_mcp_server-0.2.1 → python_docs_mcp_server-0.3.1}/src/mcp_server_python_docs/services/__init__.py +0 -0
- {python_docs_mcp_server-0.2.1 → python_docs_mcp_server-0.3.1}/src/mcp_server_python_docs/services/cache.py +0 -0
- {python_docs_mcp_server-0.2.1 → python_docs_mcp_server-0.3.1}/src/mcp_server_python_docs/services/compare.py +0 -0
- {python_docs_mcp_server-0.2.1 → python_docs_mcp_server-0.3.1}/src/mcp_server_python_docs/services/content.py +0 -0
- {python_docs_mcp_server-0.2.1 → python_docs_mcp_server-0.3.1}/src/mcp_server_python_docs/services/observability.py +0 -0
- {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
- {python_docs_mcp_server-0.2.1 → python_docs_mcp_server-0.3.1}/src/mcp_server_python_docs/services/search.py +0 -0
- {python_docs_mcp_server-0.2.1 → python_docs_mcp_server-0.3.1}/src/mcp_server_python_docs/services/version.py +0 -0
- {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
- {python_docs_mcp_server-0.2.1 → python_docs_mcp_server-0.3.1}/src/mcp_server_python_docs/storage/__init__.py +0 -0
- {python_docs_mcp_server-0.2.1 → python_docs_mcp_server-0.3.1}/src/mcp_server_python_docs/storage/db.py +0 -0
- {python_docs_mcp_server-0.2.1 → python_docs_mcp_server-0.3.1}/src/mcp_server_python_docs/storage/schema.sql +0 -0
- {python_docs_mcp_server-0.2.1 → python_docs_mcp_server-0.3.1}/tests/__init__.py +0 -0
- {python_docs_mcp_server-0.2.1 → python_docs_mcp_server-0.3.1}/tests/conftest.py +0 -0
- {python_docs_mcp_server-0.2.1 → python_docs_mcp_server-0.3.1}/tests/fixtures/retrieval_regression_cases.json +0 -0
- {python_docs_mcp_server-0.2.1 → python_docs_mcp_server-0.3.1}/tests/fixtures/sample_broken.fjson +0 -0
- {python_docs_mcp_server-0.2.1 → python_docs_mcp_server-0.3.1}/tests/fixtures/sample_library.fjson +0 -0
- {python_docs_mcp_server-0.2.1 → python_docs_mcp_server-0.3.1}/tests/fixtures/schema-get_docs-input.json +0 -0
- {python_docs_mcp_server-0.2.1 → python_docs_mcp_server-0.3.1}/tests/fixtures/schema-get_docs-output.json +0 -0
- {python_docs_mcp_server-0.2.1 → python_docs_mcp_server-0.3.1}/tests/fixtures/schema-list_versions-output.json +0 -0
- {python_docs_mcp_server-0.2.1 → python_docs_mcp_server-0.3.1}/tests/fixtures/schema-search_docs-input.json +0 -0
- {python_docs_mcp_server-0.2.1 → python_docs_mcp_server-0.3.1}/tests/fixtures/schema-search_docs-output.json +0 -0
- {python_docs_mcp_server-0.2.1 → python_docs_mcp_server-0.3.1}/tests/test_ci_workflows.py +0 -0
- {python_docs_mcp_server-0.2.1 → python_docs_mcp_server-0.3.1}/tests/test_compare_versions.py +0 -0
- {python_docs_mcp_server-0.2.1 → python_docs_mcp_server-0.3.1}/tests/test_compare_versions_spike.py +0 -0
- {python_docs_mcp_server-0.2.1 → python_docs_mcp_server-0.3.1}/tests/test_detection.py +0 -0
- {python_docs_mcp_server-0.2.1 → python_docs_mcp_server-0.3.1}/tests/test_doctor.py +0 -0
- {python_docs_mcp_server-0.2.1 → python_docs_mcp_server-0.3.1}/tests/test_multi_version.py +0 -0
- {python_docs_mcp_server-0.2.1 → python_docs_mcp_server-0.3.1}/tests/test_package_docs.py +0 -0
- {python_docs_mcp_server-0.2.1 → python_docs_mcp_server-0.3.1}/tests/test_packaging.py +0 -0
- {python_docs_mcp_server-0.2.1 → python_docs_mcp_server-0.3.1}/tests/test_phase1_integration.py +0 -0
- {python_docs_mcp_server-0.2.1 → python_docs_mcp_server-0.3.1}/tests/test_publish.py +0 -0
- {python_docs_mcp_server-0.2.1 → python_docs_mcp_server-0.3.1}/tests/test_retrieval.py +0 -0
- {python_docs_mcp_server-0.2.1 → python_docs_mcp_server-0.3.1}/tests/test_retrieval_regression.py +0 -0
- {python_docs_mcp_server-0.2.1 → python_docs_mcp_server-0.3.1}/tests/test_schema.py +0 -0
- {python_docs_mcp_server-0.2.1 → python_docs_mcp_server-0.3.1}/tests/test_schema_snapshot.py +0 -0
- {python_docs_mcp_server-0.2.1 → python_docs_mcp_server-0.3.1}/tests/test_services.py +0 -0
- {python_docs_mcp_server-0.2.1 → python_docs_mcp_server-0.3.1}/tests/test_stability.py +0 -0
- {python_docs_mcp_server-0.2.1 → python_docs_mcp_server-0.3.1}/tests/test_stdio_hygiene.py +0 -0
- {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@
|
|
21
|
+
- uses: actions/checkout@v7
|
|
22
22
|
|
|
23
23
|
- name: Install uv
|
|
24
|
-
uses: astral-sh/setup-uv@v8.
|
|
24
|
+
uses: astral-sh/setup-uv@v8.2.0
|
|
25
25
|
with:
|
|
26
26
|
cache-suffix: py${{ matrix.python-version }}
|
|
27
27
|
|
|
@@ -17,10 +17,10 @@ jobs:
|
|
|
17
17
|
python-version: ["3.13", "3.14"]
|
|
18
18
|
|
|
19
19
|
steps:
|
|
20
|
-
- uses: actions/checkout@
|
|
20
|
+
- uses: actions/checkout@v7
|
|
21
21
|
|
|
22
22
|
- name: Install uv
|
|
23
|
-
uses: astral-sh/setup-uv@v8.
|
|
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@
|
|
19
|
+
- uses: actions/checkout@v7
|
|
20
20
|
|
|
21
21
|
- name: Install uv
|
|
22
|
-
uses: astral-sh/setup-uv@v8.
|
|
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@
|
|
120
|
+
- uses: actions/checkout@v7
|
|
121
121
|
|
|
122
122
|
- name: Install mcp-publisher
|
|
123
123
|
run: |
|
{python_docs_mcp_server-0.2.1 → python_docs_mcp_server-0.3.1}/.github/workflows/security.yml
RENAMED
|
@@ -20,10 +20,10 @@ jobs:
|
|
|
20
20
|
|
|
21
21
|
steps:
|
|
22
22
|
- name: Checkout repository
|
|
23
|
-
uses: actions/checkout@
|
|
23
|
+
uses: actions/checkout@v7
|
|
24
24
|
|
|
25
25
|
- name: Install uv
|
|
26
|
-
uses: astral-sh/setup-uv@v8.
|
|
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,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.
|