§ roadmap

From empty repo to published protocol.

This repo's local sequencing, wave by wave. Company-level roadmap lives at petitgen-ltd/admin.

current
Wave 1 complete · published at remedy.build
next
Wave 2 — marketplace + Morphee
gates v1
surface freeze after Wave 1 close-out

# Remedy — Roadmap

Local sequencing for the petitgen-ltd/remedy repo. The company-level roadmap is at Petitgen ROADMAP admin/docs/petitgen/ROADMAP.md. This file breaks Wave 1 into implementation milestones.


# Wave 1a — Spec freeze + core library

Exit: remedy fmt and remedy lint round-trip an authored .remedy folder, remedy-core parses and validates every key in SPEC.md, and the JSON Schema at schemas/remedy.schema.json is the single source of truth both consume.

  1. Freeze SPEC.md v0. Close open questions in docs/decisions/.
  2. Write JSON Schema → schemas/remedy.schema.json.
  3. Scaffold pnpm workspace with packages/remedy-core/ and packages/remedy-cli/.
  4. Implement remedy-core: parse, validate against schema, resolve sub-remedies, surface unknown roles.
  5. Implement remedy fmt — canonical key order, idempotent.
  6. Implement remedy lint — schema errors + unembedded-text warnings + unknown-step-verb warnings.
  7. Golden tests against examples/hello-world/ and examples/timebill-invoice/ stubs.

# Wave 1b — Build + embeddings

Exit: remedy build examples/timebill-invoice/ produces a valid .remedy.compiled.json with nomic-embed-text vectors on a machine with only Ollama installed — no cloud calls.

  1. Ollama client in remedy-core: model probe, embed call, error handling.
  2. Source-hash cache so unchanged text is not re-embedded.
  3. remedy build wires parse → schema-validate → embed → serialise.
  4. Fallback adapter for openai:text-embedding-3-small behind REMEDY_EMBED_MODEL.
  5. remedy diff — feature-level diff over compiled artifacts.

# Wave 1c — MCP + first dogfood

Exit: TimeBill’s invoice run exists as ~/Projects/Petitgen/time-bill/.remedy with at least three features. Claude Code invokes remedy build / remedy lint via MCP inside that folder.

  1. remedy-mcp: expose fmt, lint, build, run, diff as MCP tools.
  2. Resource endpoints: list remedies under cwd, read a feature’s compiled form.
  3. .mcp.json drop-in for any Remedy folder.
  4. Author TimeBill’s intake as examples/timebill-invoice/ first, then migrate in-place into time-bill/.
  5. Collect friction into complaints/ — any spec gap becomes a .complaint.

# Wave 1d — Desktop app (Tauri, Mac)

Exit: Remedy.app DMG signed for Sebastien’s Mac. Opens a .remedy folder, shows the feature graph (xyflow), live-lints on save, runs remedy build on demand, surfaces the compiled artifact.

  1. Tauri 2 scaffold in packages/remedy-desktop/.
  2. Embed the existing remedy-web UI (salvaged from Complaintery/code/remedy-web) as the app webview.
  3. IPC: webview → Rust → spawn remedy-cli as sidecar; stream stdout/stderr.
  4. File watcher: re-lint and re-build on .remedy change.
  5. Secrets bridge to Infisical (read-only for v0).
  6. Mac code signing + notarisation.

# Wave 1e — remedy.build web surface

Exit: remedy.build serves the public spec, a searchable browser of public example Remedies, and app.remedy.build boots the same editor the Desktop app uses, sign-in via Zitadel.

  1. Astro site at packages/remedy-web/ (mirrors petitgen-site/ conventions).
  2. Public routes: / landing, /spec renders SPEC.md, /examples.
  3. App routes under app.remedy.build (Vite + React, same UI as Desktop).
  4. Zitadel auth for the app.
  5. Cloudflare Pages deploy.
  6. DNS wired (remedy.build → apex; app.remedy.build → app).

# Wave 2 — Marketplace + Morphee

Kicks in once Wave 1 exits. Tracked in the company ROADMAP; this repo imports those tasks when they land.

  1. Marketplace registry reading marketplace: blocks.
  2. GitLab group auto-spawn on publish.
  3. Morphee adapter stub.
  4. Second and third dogfoods (Credential Graph, Admin-as-Remedy).

# Parallelism

Waves 1a → 1c are strictly sequential. Waves 1d and 1e can start in parallel once 1c exits, because both consume remedy-core and don’t block each other.

# Out of scope for this repo

  • Provisioning customer tenants (handled by Admin + Coolify).
  • Xero payouts (handled by Admin).
  • Zitadel org setup (handled by Admin’s ops runbooks).

# Open items gating Wave 1

  • npm scope @petitgen claimed (org owner action).
  • Local Ollama running on Sebastien’s Mac (ollama pull nomic-embed-text).
  • Apple Developer ID for Mac code signing (Wave 1d blocker only).
  • Cloudflare zone for remedy.build (Wave 1e blocker only).