Tracks the read + install path (PLAN.md Milestones 1,3,4). Distinct from #5 (Tegami), #6 (login), #7 (publish). **v0 shipped (branch `feat/install-verify`):** - [x] `modulora info @user/name[@version]` — metadata, files, published digest, `--json` - [x] `modulora add @user/name[@version]` — fetch, **recompute content digest locally and compare to the published digest**, write plan, write files - [x] Fail closed on digest mismatch (refuse unless `--force`); prompt on unverifiable - [x] Safe path resolution (no escape); `src/` detection; `--dry-run/--yes/--force/--json/--cwd` - [x] Server exposes `meta.contentSha256` on `/r/`; digest canonical across publish → serve → CLI - [x] Installer only writes files — never runs a script **Next:** - [ ] `search` against the public API - [ ] `diff` + `update` (three-way, never discard local edits) - [ ] `modulora.lock` (source, version, digest, local hashes) - [ ] Signature/attestation + revocation (Milestone 2, needs spec #6) - [ ] Cross-platform CI + malicious-registry fixtures
Tracks the read + install path (PLAN.md Milestones 1,3,4). Distinct from #5 (Tegami), #6 (login), #7 (publish).
v0 shipped (branch
feat/install-verify):modulora info @user/name[@version]— metadata, files, published digest,--jsonmodulora add @user/name[@version]— fetch, recompute content digest locally and compare to the published digest, write plan, write files--force); prompt on unverifiablesrc/detection;--dry-run/--yes/--force/--json/--cwdmeta.contentSha256on/r/; digest canonical across publish → serve → CLINext:
searchagainst the public APIdiff+update(three-way, never discard local edits)modulora.lock(source, version, digest, local hashes)