Skip to content

Commit 5f8585b

Browse files
authored
feat(distribution): tighten public distribution contract (#48)
* docs(distribution): artifactize public distribution contract * feat(distribution): tighten public distribution contract * fix(distribution): align contract package release metadata
1 parent 1786498 commit 5f8585b

41 files changed

Lines changed: 1006 additions & 139 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

DISTRIBUTION.md

Lines changed: 98 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,98 @@
1+
# CortexPilot Distribution Contract
2+
3+
This file is the canonical human-readable source for CortexPilot's current
4+
official distribution story.
5+
6+
The public GitHub Pages mirror for this contract lives at
7+
`docs/distribution/index.html`.
8+
9+
If README, Pages, examples, package metadata, or release notes ever appear to
10+
say different things, this file wins and the drift should be fixed in the next
11+
change set.
12+
13+
## One-sentence story
14+
15+
Today CortexPilot officially ships a public repo front door, a GitHub Pages
16+
product front door, one proof-first public workflow baseline, a repo-local
17+
read-only MCP server, local coding-agent starter/bundle materials, and
18+
repo-owned skills for local adoption.
19+
20+
It does not yet officially ship a hosted operator service, a public write-capable
21+
MCP, a Docker distribution path, or any registry-published plugin / skills /
22+
MCP / npm package release.
23+
24+
## Status labels
25+
26+
- `shipped`: part of the official public distribution today
27+
- `starter-only`: intentionally copy-paste or local-install material, not a
28+
registry item
29+
- `bundle-compatible`: installable from a local path or local marketplace-like
30+
surface, but still not a published listing
31+
- `publish-ready but deferred`: metadata and package contract are ready for a
32+
future public package release, but no registry release is live yet
33+
- `not standalone distribution unit`: useful repo-owned surface, but not meant
34+
to be marketed or released on its own today
35+
- `deferred`: real later-phase direction, but not part of current official
36+
distribution
37+
- `not part of current official distribution`: out of scope for the current
38+
public story
39+
40+
## Current Distribution Matrix
41+
42+
| Surface | Current status | Official claim | Install path | Protocol / Auth | Next action |
43+
| --- | --- | --- | --- | --- | --- |
44+
| GitHub repo | `shipped` | Canonical public source, docs, code, and release front door | `https://github.com/xiaojiou176-open/CortexPilot-public` | none | keep sharp and truthful |
45+
| GitHub Pages | `shipped` | Canonical public product front door | `https://xiaojiou176-open.github.io/CortexPilot-public/` | none | keep first screen compressed |
46+
| First proven workflow (`news_digest`) | `shipped` | Official public proof-first baseline | `docs/use-cases/index.html` and tracked proof assets | read-only proof / replay story | keep as the only release-proven public workflow |
47+
| Read-only MCP | `shipped` | Repo-owned stdio JSON-RPC MCP for machine-readable inspection only | bootstrapped repo checkout + `bash __CORTEXPILOT_REPO_ROOT__/scripts/run_readonly_mcp.sh` or the tracked starter templates | `stdio`, JSON-RPC 2.0, read-only, repo-local, no hosted auth, no OAuth | keep artifactized through `configs/mcp_public_manifest.json` |
48+
| Codex starter | `starter-only` | Local marketplace seed plus shared read-only MCP template | `examples/coding-agents/codex/` | local path wiring only | keep truthful; do not relabel as official directory listing |
49+
| Claude Code starter | `starter-only` | Project-local `.claude` and `.mcp.json` starter | `examples/coding-agents/claude-code/` | local project wiring only | keep truthful; do not relabel as marketplace package |
50+
| OpenClaw starter | `starter-only` | Local config seed for the same read-only MCP and compatible bundle | `examples/coding-agents/openclaw/` | local config + local plugin path | keep truthful; do not relabel as ClawHub publication |
51+
| Cross-tool coding-agent bundle | `bundle-compatible` | Local bundle compatible with Codex local marketplace installs, Claude plugin-dir development, and OpenClaw local plugin loading | `examples/coding-agents/plugin-bundles/cortexpilot-coding-agent-bundle/` | local bundle metadata + repo-aware MCP wrapper | keep local-install contract; no published listing claim |
52+
| Repo-owned skill in the bundle | `starter-only` | Routing skill for honest adoption path selection | shipped inside the local bundle | repo-owned skill only | keep repo-owned; not a marketplace item |
53+
| `@cortexpilot/frontend-api-client` | `publish-ready but deferred` | Thin JS/TS client for control-plane reads and guarded operator add-ons | package metadata + README are publish-ready, but the official install story is still clone / vendor reuse until the first npm release exists | HTTP API with token / mutation-role expectations | publish later only after the first public package release is intentionally cut |
54+
| `@cortexpilot/frontend-api-contract` | `publish-ready but deferred` | Generated route / query / type boundary for frontend consumers | package metadata + README are publish-ready, but the official install story is still clone / vendor reuse until the first npm release exists | typed contract layer only | publish later only after the first public package release is intentionally cut |
55+
| `@cortexpilot/frontend-shared` | `not standalone distribution unit` | Repo-owned presentation substrate for dashboard / desktop / future web surfaces | repo-local package only | frontend presentation helpers only | keep repo-owned for now |
56+
| Docker image / Dockerfile | `deferred` | No official container distribution today; existing Dockerfiles are CI-only infrastructure | none | n/a | add only when a real container story exists |
57+
| Hosted Render pilot | `deferred` | Repo-side pilot blueprint exists, but no live hosted operator claim | `render.yaml` + runbook only | hosted HTTP / token boundary remains later | keep truthful; no live hosted claim |
58+
| Write-capable MCP | `not part of current official distribution` | Public MCP is still read-only | none | owner-only preview groundwork exists separately | keep gated and out of public claim |
59+
| Registry-published plugins / skills / MCP | `not part of current official distribution` | No official Codex / Claude Code / OpenClaw / MCP registry listing is live today | none | external platform submission required | external-only later action |
60+
61+
## Version And Release Truth
62+
63+
- The only live GitHub release today is `v0.1.0-alpha.1`.
64+
- That release is the first public storefront baseline and should be read as
65+
the first public release snapshot, not as a claim that every post-release
66+
hardening commit is already re-tagged.
67+
- Current `main` is ahead of tag commit `7fbc491`, so repo-side distribution
68+
hardening after that baseline lives on `main` until a later tag/release is
69+
cut.
70+
- Until the next release is created, README, Pages, and docs must describe the
71+
current release truth as "first public baseline release + current main is
72+
ahead", not "release fully matches current main".
73+
74+
## Canonical MCP Truth
75+
76+
- Human-readable MCP quickstart: `docs/mcp/index.html`
77+
- Machine-readable MCP distribution manifest: `configs/mcp_public_manifest.json`
78+
- Public mirror of this contract: `docs/distribution/index.html`
79+
- Implementation: `apps/orchestrator/src/cortexpilot_orch/mcp_readonly_server.py`
80+
- Canonical startup wrapper: `scripts/run_readonly_mcp.sh`
81+
- Canonical starter template: `examples/coding-agents/mcp/readonly.mcp.json.example`
82+
- Root `DISTRIBUTION.md` stays authoritative; the public mirror at
83+
`docs/distribution/index.html` must match it and route readers back here
84+
85+
## External / Owner-only Actions Left Out On Purpose
86+
87+
These are intentionally outside repo-side completion:
88+
89+
- publish npm packages
90+
- publish a PyPI package
91+
- submit an MCP registry entry
92+
- submit Codex / Claude Code / OpenClaw marketplace or registry items
93+
- publish a Docker image
94+
- deploy a live hosted operator service
95+
- promote a public write-capable MCP
96+
97+
Those actions require external platform writes or owner decisions and are not
98+
part of the current official shipped contract.

README.md

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,29 @@ The public story is intentionally narrower than the full monorepo:
1818
Current public boundary: CortexPilot is a repo-backed operator control plane,
1919
not a hosted product, and the shipped MCP surface remains **read-only**.
2020

21-
[Quickstart](#quickstart) · [First Proven Workflow](https://xiaojiou176-open.github.io/CortexPilot-public/use-cases/) · [Compatibility Matrix](https://xiaojiou176-open.github.io/CortexPilot-public/compatibility/) · [Docs](docs/README.md) · [Architecture](docs/architecture/runtime-topology.md) · [AI + MCP + API Surfaces](https://xiaojiou176-open.github.io/CortexPilot-public/ai-surfaces/) · [Builder Quickstart](https://xiaojiou176-open.github.io/CortexPilot-public/builders/) · [Releases](https://github.com/xiaojiou176-open/CortexPilot-public/releases)
21+
[Quickstart](#quickstart) · [First Proven Workflow](https://xiaojiou176-open.github.io/CortexPilot-public/use-cases/) · [Compatibility Matrix](https://xiaojiou176-open.github.io/CortexPilot-public/compatibility/) · [Distribution Contract](DISTRIBUTION.md) · [Distribution Status](https://xiaojiou176-open.github.io/CortexPilot-public/distribution/) · [Docs](docs/README.md) · [Architecture](docs/architecture/runtime-topology.md) · [AI + MCP + API Surfaces](https://xiaojiou176-open.github.io/CortexPilot-public/ai-surfaces/) · [Builder Quickstart](https://xiaojiou176-open.github.io/CortexPilot-public/builders/) · [Releases](https://github.com/xiaojiou176-open/CortexPilot-public/releases)
22+
23+
## Official Distribution Story
24+
25+
The shortest truthful answer today is:
26+
27+
> CortexPilot officially ships a public repo, a public Pages front door, a repo-local read-only MCP surface, and proof-first starter materials. Hosted service, write-capable MCP, Docker distribution, registry submissions, and standalone package publication are still explicitly deferred.
28+
29+
Use these buckets:
30+
31+
- **Shipped now**: repo, Pages, proof-first docs, read-only MCP
32+
- **Starter-only**: Codex / Claude Code / OpenClaw local starter kits and bundle examples
33+
- **Publish-ready but deferred**:
34+
`@cortexpilot/frontend-api-client`,
35+
`@cortexpilot/frontend-api-contract`
36+
- **Workspace-only**: `@cortexpilot/frontend-shared` stays repo-owned and is
37+
not marketed as a standalone package
38+
- **Deferred**: hosted operator, write-capable MCP, Docker image, npm/PyPI, and marketplace/registry submissions
39+
40+
If you need the exact matrix instead of a one-line summary, open
41+
[DISTRIBUTION.md](DISTRIBUTION.md) or the public
42+
[Distribution Status](https://xiaojiou176-open.github.io/CortexPilot-public/distribution/)
43+
mirror.
2244

2345
![CortexPilot studio preview card](docs/assets/storefront/cortexpilot-studio-preview.svg)
2446

@@ -30,6 +52,7 @@ not a hosted product, and the shipped MCP surface remains **read-only**.
3052
| --- | --- |
3153
| evaluate the product story | [First Proven Workflow](https://xiaojiou176-open.github.io/CortexPilot-public/use-cases/) |
3254
| choose the right Codex / Claude Code / OpenClaw / MCP / skills / builder path | [Compatibility Matrix](https://xiaojiou176-open.github.io/CortexPilot-public/compatibility/) |
55+
| see exactly what ships now vs. later | [Distribution Contract](DISTRIBUTION.md) and [Distribution Status](https://xiaojiou176-open.github.io/CortexPilot-public/distribution/) |
3356
| build on the protocol or package surfaces | [AI + MCP + API Surfaces](https://xiaojiou176-open.github.io/CortexPilot-public/ai-surfaces/) and [Builder Quickstart](https://xiaojiou176-open.github.io/CortexPilot-public/builders/) |
3457

3558
The default public loop is simple: **start one workflow case, watch it move
@@ -677,6 +700,11 @@ The public release surface now has a live baseline. Use these entrypoints:
677700
- [Tracked `news_digest` baseline summary](docs/releases/assets/news-digest-benchmark-summary-2026-03-27.md)
678701
- [Tracked `news_digest` Workflow Case recap](docs/releases/assets/news-digest-workflow-case-recap-2026-03-27.md)
679702

703+
Release truth note: `v0.1.0-alpha.1` is the current public storefront baseline,
704+
but current `main` is ahead with post-release repo-side follow-through. Treat
705+
[DISTRIBUTION.md](DISTRIBUTION.md) as the live repo-side distribution contract
706+
until the next tag is cut.
707+
680708
Public repo hygiene stays fail-closed as well: token-like fixture coverage must
681709
use synthetic string assembly, and public path fixtures must use generic
682710
workspace roots instead of maintainer-local absolute paths. See

apps/orchestrator/README.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -137,7 +137,8 @@ bash scripts/run_orchestrator_cli.sh --help
137137

138138
## Read-Only MCP + Copilot Notes
139139

140-
- the repo-local MCP entry is `python -m cortexpilot_orch.cli mcp-readonly-server`
140+
- the shortest repo-local MCP entry for external stdio clients is `bash scripts/run_readonly_mcp.sh`
141+
- the underlying raw MCP runtime entry remains `python -m cortexpilot_orch.cli mcp-readonly-server`
141142
- the later-gated queue write pilot entry is `python -m cortexpilot_orch.cli mcp-queue-pilot-server`
142143
- copy-paste host-tool starters now live in `docs/agent-starters/index.html`,
143144
`docs/examples/agent-starters/`, and `examples/coding-agents/`, so Codex,

configs/docs_nav_registry.json

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,6 @@
22
"schema_version": 1,
33
"description": "Minimal navigation registry for the public documentation surface.",
44
"entries": [
5-
{
6-
"path": "docs/README.md",
7-
"kind": "entrypoint",
8-
"status": "active",
9-
"canonical": true,
10-
"generated": false,
11-
"owner_surface": "docs",
12-
"listed_in_primary_navigation": true
13-
},
145
{
156
"path": "docs/index.html",
167
"kind": "entrypoint",
@@ -173,6 +164,15 @@
173164
"owner_surface": "docs",
174165
"listed_in_primary_navigation": true
175166
},
167+
{
168+
"path": "docs/distribution/index.html",
169+
"kind": "entrypoint",
170+
"status": "active",
171+
"canonical": true,
172+
"generated": false,
173+
"owner_surface": "docs",
174+
"listed_in_primary_navigation": true
175+
},
176176
{
177177
"path": "docs/agent-starters/index.html",
178178
"kind": "entrypoint",

configs/mcp_public_manifest.json

Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
{
2+
"schema_version": 1,
3+
"name": "cortexpilot-readonly",
4+
"display_name": "CortexPilot Read-only MCP",
5+
"status": "shipped",
6+
"version": "0.1.0-alpha.1",
7+
"version_truth": "This is the latest published GitHub release version. Verify parity with current main before making broader release or registry claims.",
8+
"release_represents_current_main": false,
9+
"description": "Repo-owned read-only MCP server for CortexPilot runs, workflows, approvals, compare, proof, and incident summaries.",
10+
"homepage": "https://xiaojiou176-open.github.io/CortexPilot-public/mcp/",
11+
"distribution_page": "https://github.com/xiaojiou176-open/CortexPilot-public/blob/main/DISTRIBUTION.md",
12+
"repository": "https://github.com/xiaojiou176-open/CortexPilot-public",
13+
"transport": "stdio",
14+
"protocol": "json-rpc",
15+
"auth_boundary": {
16+
"mode": "repo-local only",
17+
"hosted_account": false,
18+
"oauth": false,
19+
"writes_enabled": false
20+
},
21+
"startup": {
22+
"command": "bash",
23+
"args": [
24+
"/absolute/path/to/CortexPilot/scripts/run_readonly_mcp.sh"
25+
],
26+
"working_directory": "optional",
27+
"environment": {},
28+
"notes": "For an interactive proof from the repo root, you can also run `bash scripts/run_readonly_mcp.sh`."
29+
},
30+
"portable_examples": [
31+
{
32+
"surface": "shared-mcp-json",
33+
"path": "examples/coding-agents/mcp/readonly.mcp.json.example"
34+
},
35+
{
36+
"surface": "codex",
37+
"path": "docs/examples/agent-starters/codex/cortexpilot.config.toml"
38+
},
39+
{
40+
"surface": "claude-code",
41+
"path": "docs/examples/agent-starters/claude/project.mcp.json"
42+
},
43+
{
44+
"surface": "openclaw",
45+
"path": "docs/examples/agent-starters/openclaw/cortexpilot-server.json"
46+
},
47+
{
48+
"surface": "openclaw-toml",
49+
"path": "docs/examples/agent-starters/openclaw/config.openclaw.example.toml"
50+
}
51+
],
52+
"capabilities": {
53+
"mode": "read-only",
54+
"tools": [
55+
"list_runs",
56+
"get_run",
57+
"get_run_events",
58+
"get_run_reports",
59+
"list_workflows",
60+
"get_workflow",
61+
"list_queue",
62+
"get_pending_approvals",
63+
"get_diff_gate_state",
64+
"get_compare_summary",
65+
"get_proof_summary",
66+
"get_incident_summary"
67+
]
68+
},
69+
"source_of_truth": {
70+
"cli_entrypoint": "apps/orchestrator/src/cortexpilot_orch/cli.py",
71+
"wrapper": "scripts/run_readonly_mcp.sh",
72+
"human_quickstart": "docs/mcp/index.html",
73+
"distribution_status": "DISTRIBUTION.md"
74+
},
75+
"explicit_non_claims": [
76+
"not a hosted MCP account",
77+
"not a write-capable MCP surface",
78+
"not an OAuth login flow",
79+
"not a replacement for the orchestration runtime itself"
80+
]
81+
}

configs/root_allowlist.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
"CLAUDE.md",
1818
"CODE_OF_CONDUCT.md",
1919
"CONTRIBUTING.md",
20+
"DISTRIBUTION.md",
2021
"LICENSE",
2122
"PRIVACY.md",
2223
"README.md",

0 commit comments

Comments
 (0)