Skip to content

Commit b310d30

Browse files
committed
chore: close out final distribution prep surfaces
1 parent e8f0294 commit b310d30

16 files changed

Lines changed: 203 additions & 67 deletions
File renamed without changes.

.github/workflows/zizmor.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ jobs:
3232
with:
3333
inputs: >-
3434
.github/workflows/nightly-drift-audit.yml
35-
.github/workflows/upstream-governance-weekly.yml
35+
.github/workflows/upstream-governance-manual.yml
3636
.github/workflows/zizmor.yml
3737
.github/workflows/trivy-fs.yml
3838
.github/workflows/trufflehog.yml

CONTRIBUTING.md

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,34 @@ Keep the diff honest and reviewable:
7676
- Do not add compatibility shims just to hide the real problem
7777
- Keep documentation, contracts, templates, and gate entrypoints aligned
7878

79+
## Current Truth Surface
80+
81+
This repository no longer uses a repo-local `.agents/Tasks` TaskBoard as an
82+
active source of truth.
83+
84+
Use the versioned repository surfaces on `main` instead:
85+
86+
- `README.md` and `docs/` for public product and operator guidance
87+
- contracts, workflows, and generated references for executable truth
88+
- current repository settings and branch protection for GitHub-side policy
89+
90+
Treat `.agents/` as local operator state, not as a committed planning system.
91+
92+
## Closed Dependabot Pull Requests
93+
94+
Closed-but-unmerged Dependabot pull requests in this repository are kept as
95+
audit history of automated dependency-update attempts that were later closed
96+
without merge.
97+
98+
Use the following rule when describing them:
99+
100+
- only call a PR a grouped update when `.github/dependabot.yml` directly
101+
supports that grouping
102+
- only call a PR later superseded when current `main` clearly carries the same
103+
or a newer dependency state
104+
- do not treat a closed PR by itself as proof that the proposed dependency
105+
state landed
106+
79107
## Atomic Commit Guidance
80108

81109
Think of the atomic-commit gate like an airline carry-on sizer: it is there

DISTRIBUTION.md

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
# Distribution
2+
3+
This file answers one narrow question:
4+
5+
What public distribution surfaces does Movi actually have today?
6+
7+
Think of it like a shipping manifest. It tells you which boxes are really on
8+
the truck, which ones are ready at the warehouse, and which ones have not been
9+
shipped yet.
10+
11+
## Current Published Surfaces
12+
13+
| Surface | Current status | What we can truthfully claim |
14+
| :-- | :-- | :-- |
15+
| GitHub repository | Published | The canonical public source and collaboration surface is `xiaojiou176-open/movi-organizer`. |
16+
| GitHub Releases | Published | GitHub Releases is the canonical release trail for this repository. |
17+
| GitHub Pages | Published | GitHub Pages is the current public front door and discovery page. |
18+
19+
## Current Ready But Not Registry-Published
20+
21+
| Surface | Current status | What we can truthfully claim |
22+
| :-- | :-- | :-- |
23+
| Source install from this repository | Ready | The repository ships Python package metadata and console entrypoints such as `movi-organizer`, `movi-web-api`, and `movi-mcp`. |
24+
| Movi MCP v1 stdio server | Ready | The MCP surface is a local-first stdio integration that can be launched from this repository or an installed environment. |
25+
| Codex / Claude Code setup docs | Ready | The repository ships setup pages for Codex and Claude Code, but those docs describe local wiring, not a separate public distribution channel. |
26+
27+
## Surfaces We Do Not Currently Claim As Published
28+
29+
| Surface | Current status | Truthful boundary |
30+
| :-- | :-- | :-- |
31+
| PyPI | Not published | This repository does not currently claim an official PyPI release surface. |
32+
| npm package | Not published | The root Node surface is a repo control surface, not a published npm package. |
33+
| MCP registry | Not published | `Movi MCP v1` is documented as a local-first stdio surface, not a registry-published listing. |
34+
| Skills registry | Not published | No official skills-registry distribution claim is made here. |
35+
| Plugin marketplace | Not published | Strategy Packs are templates, not a plugin marketplace. |
36+
| Chrome Web Store | Not published | No official Chrome Web Store distribution claim is made here. |
37+
38+
## Current Reading Rule
39+
40+
Use the surfaces above in this order:
41+
42+
1. GitHub repository for the public source of truth
43+
2. GitHub Releases for release history
44+
3. GitHub Pages for the current public landing route
45+
46+
If you need to answer a stricter question such as "is the current head verified
47+
as a published release," do not infer that from a tag alone. Use the release
48+
truth and release evidence workflows instead of promotional copy.

INTEGRATIONS.md

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
# Integrations
2+
3+
This file answers a different question from `DISTRIBUTION.md`:
4+
5+
What integration surfaces does Movi actually fit today?
6+
7+
Think of it like a map of doors into the same workshop. Some doors are first
8+
class, some are side entrances, and some are only comparison points.
9+
10+
## Core Integration Surfaces
11+
12+
| Surface | Current role | Truthful boundary |
13+
| :-- | :-- | :-- |
14+
| CLI | Primary operator surface | Best for full analyze, apply, rollback, and report workflows. |
15+
| Web API | Local integration substrate | A local HTTP contract exists for app and builder integration. |
16+
| Generated TypeScript client | Builder substrate | The repository exposes generated client/types for local integrations. |
17+
| Movi MCP v1 | Primary agent integration surface | The canonical agent-facing surface is local-first stdio MCP. |
18+
19+
## Primary Fit
20+
21+
| Client | Why it is a primary fit | Boundary |
22+
| :-- | :-- | :-- |
23+
| Codex | The repository already ships a dedicated Codex MCP setup page and local-first stdio wiring. | This is local MCP wiring, not a hosted service. |
24+
| Claude Code | The repository already ships a dedicated Claude Code MCP setup page and local-first stdio wiring. | This is local MCP wiring, not a hosted service. |
25+
26+
## Secondary Fit
27+
28+
| Client family | Why it is a secondary fit | Boundary |
29+
| :-- | :-- | :-- |
30+
| Cursor and other local MCP-capable clients | The current transport and tool surface already match their local MCP model. | The repository does not currently promote them as the front-door story. |
31+
32+
## Comparison-Only Fit
33+
34+
| Client family | Why it stays comparison-only | Boundary |
35+
| :-- | :-- | :-- |
36+
| OpenHands | A real API and MCP substrate exists, but no dedicated first-party setup page or branded workflow is shipped. | Do not present it as a primary or secondary front-door integration. |
37+
| OpenCode | Same honest boundary as OpenHands. | Do not present it as a primary or secondary front-door integration. |
38+
39+
## Not A Front-Door Fit Today
40+
41+
| Surface | Why it is not front-door fit today |
42+
| :-- | :-- |
43+
| OpenClaw | The repository does not currently ship a dedicated integration surface or branded product flow for it. |
44+
| MCP registry listings | The current story is local-first stdio MCP, not registry publication. |
45+
| Skills registry or plugin marketplaces | The repository does not currently claim those as shipped integration channels. |
46+
47+
## Safety Boundary
48+
49+
All current integrations share the same safety line:
50+
51+
- review-first
52+
- overlay-only editing for review state
53+
- dry-run before execute
54+
- no hidden `apply.execute` shortcut in `Movi MCP v1`
55+
56+
If a description crosses that line, it is overstating the current integration
57+
surface.

README.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,8 @@ Movi belongs to a very specific lane:
6666
Current honest ecosystem fit:
6767

6868
- **Primary fit**: Codex and Claude Code, because `Movi MCP v1` already ships as a local-first stdio surface with review-safe tools
69-
- **Secondary ecosystem fit**: OpenHands and OpenCode, because the repo has a real MCP and API substrate they can consume, but no dedicated first-party setup surface yet
69+
- **Secondary ecosystem fit**: Cursor and other local MCP-capable clients, because the transport and tool surface already match their integration model
70+
- **Comparison-only fit**: OpenHands and OpenCode, because the repo has a real MCP and API substrate they can consume, but no dedicated first-party setup surface or branded workflow yet
7071
- **Not a front-door fit today**: OpenClaw, because the repo does not currently ship a tailored integration surface or branded product claim for it
7172

7273
## 10-Second Tour

contracts/docs/docs_render_manifest.yaml

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ renders:
4040
- .github/workflows/ci.yml
4141
- .github/workflows/pre-commit.yml
4242
- .github/workflows/live-integration.yml
43-
- .github/workflows/mutation-weekly.yml
43+
- .github/workflows/mutation-manual.yml
4444
output_path: docs/reference/governance_truth.generated.md
4545
- id: root-web-api-routes
4646
kind: fragment
@@ -124,7 +124,7 @@ renders:
124124
- .github/workflows/ci.yml
125125
- .github/workflows/pre-commit.yml
126126
- .github/workflows/live-integration.yml
127-
- .github/workflows/mutation-weekly.yml
127+
- .github/workflows/mutation-manual.yml
128128
output_path: docs/usage.md
129129
block_id: script-readme-governance-truth
130130
- id: architecture-web-api-summary
@@ -155,7 +155,7 @@ renders:
155155
- .github/workflows/ci.yml
156156
- .github/workflows/pre-commit.yml
157157
- .github/workflows/live-integration.yml
158-
- .github/workflows/mutation-weekly.yml
158+
- .github/workflows/mutation-manual.yml
159159
output_path: docs/architecture.md
160160
block_id: architecture-governance-truth
161161
- id: open-source-platform-truth
@@ -168,7 +168,7 @@ renders:
168168
- .github/workflows/ci.yml
169169
- .github/workflows/pre-commit.yml
170170
- .github/workflows/live-integration.yml
171-
- .github/workflows/mutation-weekly.yml
171+
- .github/workflows/mutation-manual.yml
172172
output_path: docs/open_source_runbook.md
173173
block_id: open-source-platform-truth
174174
- id: runner-contract-governance-truth
@@ -179,7 +179,7 @@ renders:
179179
- .github/workflows/ci.yml
180180
- .github/workflows/pre-commit.yml
181181
- .github/workflows/live-integration.yml
182-
- .github/workflows/mutation-weekly.yml
182+
- .github/workflows/mutation-manual.yml
183183
output_path: docs/runner_contract.md
184184
block_id: runner-contract-governance-truth
185185
- id: webui-api-contract

docs/_generated/render_state.json

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@
6363
".github/workflows/ci.yml": "145d243beb087cd6a976d45e4455e0747ace3ee3ad9c77160b57fb17f75c63fe",
6464
".github/workflows/pre-commit.yml": "ed0082256d36108f1bdb3d6c66f6f9805295a4f7f738465b0092d0b3fe0199ed",
6565
".github/workflows/live-integration.yml": "87a1d413bc8d92d2103b5d4a6e19cfcb85fdb30e9e753b88a3267607a41d2b92",
66-
".github/workflows/mutation-weekly.yml": "c892aa745b913f37a4662e51ecf0c2013dc32faecd1c97d4a59f2d1e808fb101"
66+
".github/workflows/mutation-manual.yml": "c892aa745b913f37a4662e51ecf0c2013dc32faecd1c97d4a59f2d1e808fb101"
6767
},
6868
"output_hash": "1e9db2c2bcd9dc853fd5772bd1edabf7b910d9014dc7bc2cc78f5a835f83e588"
6969
},
@@ -76,7 +76,7 @@
7676
"source_hashes": {
7777
"contracts/api/web_api.openapi.yaml": "c97830844b65fd8f76cd23688187ca8648835d787d1819045882dea01e1d7b64"
7878
},
79-
"output_hash": "cb6345e4f376224c71bddab270ce33f2a043caf985668a63c5b18cdea159c44a"
79+
"output_hash": "ac7ae956b9adc83bdebf65c60c15798a27259f5be04ce702d4d8bcd1d2d75843"
8080
},
8181
{
8282
"id": "root-runtime-topology",
@@ -91,7 +91,7 @@
9191
"package.json": "19ed161b16378601fc42d4baa05b7225fc57a47cfdee28a64131fd57d3cd1efc",
9292
".env.example": "32a60792624cd36eb5992b34d9c67c6e6e2a0971a45f3a48370f3b0b720b0aa8"
9393
},
94-
"output_hash": "cb6345e4f376224c71bddab270ce33f2a043caf985668a63c5b18cdea159c44a"
94+
"output_hash": "ac7ae956b9adc83bdebf65c60c15798a27259f5be04ce702d4d8bcd1d2d75843"
9595
},
9696
{
9797
"id": "root-ci-governance-summary",
@@ -106,7 +106,7 @@
106106
"contracts/governance/required_checks_policy.yaml": "51f9e8cb17df93c3912ae719a6ba95b74f2c666b6b11c79e1728f7002fb3e3b3",
107107
"package.json": "19ed161b16378601fc42d4baa05b7225fc57a47cfdee28a64131fd57d3cd1efc"
108108
},
109-
"output_hash": "cb6345e4f376224c71bddab270ce33f2a043caf985668a63c5b18cdea159c44a"
109+
"output_hash": "ac7ae956b9adc83bdebf65c60c15798a27259f5be04ce702d4d8bcd1d2d75843"
110110
},
111111
{
112112
"id": "root-release-identity",
@@ -117,7 +117,7 @@
117117
"source_hashes": {
118118
"pyproject.toml": "d12c2c415c3900d81c888e91d3a8ec1af88af96a701c6de801c37a1e52b4a495"
119119
},
120-
"output_hash": "cb6345e4f376224c71bddab270ce33f2a043caf985668a63c5b18cdea159c44a"
120+
"output_hash": "ac7ae956b9adc83bdebf65c60c15798a27259f5be04ce702d4d8bcd1d2d75843"
121121
},
122122
{
123123
"id": "script-readme-web-api-routes",
@@ -184,7 +184,7 @@
184184
".github/workflows/ci.yml": "145d243beb087cd6a976d45e4455e0747ace3ee3ad9c77160b57fb17f75c63fe",
185185
".github/workflows/pre-commit.yml": "ed0082256d36108f1bdb3d6c66f6f9805295a4f7f738465b0092d0b3fe0199ed",
186186
".github/workflows/live-integration.yml": "87a1d413bc8d92d2103b5d4a6e19cfcb85fdb30e9e753b88a3267607a41d2b92",
187-
".github/workflows/mutation-weekly.yml": "c892aa745b913f37a4662e51ecf0c2013dc32faecd1c97d4a59f2d1e808fb101"
187+
".github/workflows/mutation-manual.yml": "c892aa745b913f37a4662e51ecf0c2013dc32faecd1c97d4a59f2d1e808fb101"
188188
},
189189
"output_hash": "4203a15a1ce623a972a6ba31f6a28f55eaa4520db960e7529b165e1bb550e2b3"
190190
},
@@ -227,7 +227,7 @@
227227
".github/workflows/ci.yml": "145d243beb087cd6a976d45e4455e0747ace3ee3ad9c77160b57fb17f75c63fe",
228228
".github/workflows/pre-commit.yml": "ed0082256d36108f1bdb3d6c66f6f9805295a4f7f738465b0092d0b3fe0199ed",
229229
".github/workflows/live-integration.yml": "87a1d413bc8d92d2103b5d4a6e19cfcb85fdb30e9e753b88a3267607a41d2b92",
230-
".github/workflows/mutation-weekly.yml": "c892aa745b913f37a4662e51ecf0c2013dc32faecd1c97d4a59f2d1e808fb101"
230+
".github/workflows/mutation-manual.yml": "c892aa745b913f37a4662e51ecf0c2013dc32faecd1c97d4a59f2d1e808fb101"
231231
},
232232
"output_hash": "c0cb776be4feeaa4d6517d934e2d4f541ae1a04d66350c7bd82da6b009f710b4"
233233
},
@@ -244,7 +244,7 @@
244244
".github/workflows/ci.yml": "145d243beb087cd6a976d45e4455e0747ace3ee3ad9c77160b57fb17f75c63fe",
245245
".github/workflows/pre-commit.yml": "ed0082256d36108f1bdb3d6c66f6f9805295a4f7f738465b0092d0b3fe0199ed",
246246
".github/workflows/live-integration.yml": "87a1d413bc8d92d2103b5d4a6e19cfcb85fdb30e9e753b88a3267607a41d2b92",
247-
".github/workflows/mutation-weekly.yml": "c892aa745b913f37a4662e51ecf0c2013dc32faecd1c97d4a59f2d1e808fb101"
247+
".github/workflows/mutation-manual.yml": "c892aa745b913f37a4662e51ecf0c2013dc32faecd1c97d4a59f2d1e808fb101"
248248
},
249249
"output_hash": "590a2ddf45c93e4e0639c4c4a077e725da6fb8c107a7567d7edb484e714a5b2b"
250250
},
@@ -259,9 +259,9 @@
259259
".github/workflows/ci.yml": "145d243beb087cd6a976d45e4455e0747ace3ee3ad9c77160b57fb17f75c63fe",
260260
".github/workflows/pre-commit.yml": "ed0082256d36108f1bdb3d6c66f6f9805295a4f7f738465b0092d0b3fe0199ed",
261261
".github/workflows/live-integration.yml": "87a1d413bc8d92d2103b5d4a6e19cfcb85fdb30e9e753b88a3267607a41d2b92",
262-
".github/workflows/mutation-weekly.yml": "c892aa745b913f37a4662e51ecf0c2013dc32faecd1c97d4a59f2d1e808fb101"
262+
".github/workflows/mutation-manual.yml": "c892aa745b913f37a4662e51ecf0c2013dc32faecd1c97d4a59f2d1e808fb101"
263263
},
264-
"output_hash": "6f81c9b2b0e6e733c3f9eaebc0a92d2c05d246683a14750e6cb42f7d4a359700"
264+
"output_hash": "633b230e1dba7628f622a01d8a4ed273844a38bd15e88124a914ea2e500d2edc"
265265
},
266266
{
267267
"id": "webui-api-contract",

docs/index.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@ Movi is a review-first local file organizer and workbench for messy photos, scre
1515
- Need the full operator route: open [Operator Guide](./usage.md)
1616
- Need system wiring: open [Architecture](./architecture.md)
1717
- Need release or GitHub-facing boundary rules: open [Open Source Runbook](./open_source_runbook.md)
18+
- Need the current distribution boundary: open [Distribution](../DISTRIBUTION.md)
19+
- Need the current client-fit map: open [Integrations](../INTEGRATIONS.md)
1820
- Need the naming baseline: open [Brand Positioning](./brand_positioning.md)
1921
- Need the search-intent map: open [SEO Landing Map](./seo_landing_map.md)
2022
- Want the search-intent landing page first: open [Review-First AI File Organizer](./review_first_ai_file_organizer.md)

0 commit comments

Comments
 (0)