Skip to content

docs: add phase1-plan.md (org routing layer)#5

Merged
rafael5 merged 1 commit into
mainfrom
docs/phase1-plan
May 11, 2026
Merged

docs: add phase1-plan.md (org routing layer)#5
rafael5 merged 1 commit into
mainfrom
docs/phase1-plan

Conversation

@rafael5
Copy link
Copy Markdown
Contributor

@rafael5 rafael5 commented May 11, 2026

Summary

Implementation plan for Phase 1 — org routing layer. Mirrors phase0-plan.md's structure (Track Layout · Stage Matrix · Calling Convention · Risk Notes · Done Definition) so any agent can pick up a track or sub-stage by name (`run A`, `run B3`, `run B+C in parallel`) and execute it.

Track layout (sequence / priority / dependencies)

Track Purpose Blocked by Parallel-safe with
A Foundation — tighten `tools.schema.json` (typedID regex, `additionalProperties: false`); add `task_index.schema.json`; extract `task_index.json`; slim `tools.json`
B TDD `build-catalog.py` + `validate-catalog.py` A C
C Rewrite `llms.txt` to strict llmstxt.org form A, B
D `make catalog` + `make validate-catalog` + CI workflow step B ∧ C

Recommended single-threaded order: A → (B in parallel with C) → D.

If only partial work can ship: prioritize A + D-minus-CI — that gets `task_index.json` split out and the schemas tightened, which is the largest single source of catalog drift. Phase 1 then becomes "ship the generator" rather than "ship the entire routing layer," and partial value lands sooner.

Phase 1 exit criterion

`make catalog && make validate-catalog` in `.github` is green; `tools.json` no longer contains hand-maintained subcommand / module / rule lists — they're pulled from each tier-1 repo's `dist/repo.meta.json` and its `exposes.*` payloads at build time.

Parent

`AI-discoverability-plan.md` §7 Phase 1.

Precondition

Phase 0 closed today — `make phase0-smoke` 3/3 PASS on `main`; tier-1 `docs/` cleaned to prose-only; CI gates landed.

Test plan

  • `make check-docs-prose` green (plan is `.md` prose under `docs/`)
  • Plan structure / stage IDs / verification commands modeled on phase0-plan.md (which agents have already successfully executed)

Implementation plan for Phase 1 — generated tools.json, hand-curated
task_index.json, strict llmstxt.org form, CI-gated. Mirrors
phase0-plan.md's structure (Track Layout / Stage Matrix / Calling
Convention / Risk Notes / Done Definition) so any agent can pick up
a track or sub-stage by name and execute it.

Four tracks, all in .github:

- Track A (foundation) — tighten tools.schema.json, add
  task_index.schema.json, extract task_index.json, slim tools.json
  to summary shape.
- Track B (after A) — TDD build-catalog.py + validate-catalog.py.
- Track C (parallel) — rewrite llms.txt to strict llmstxt.org form.
- Track D (after B and C) — Makefile targets + CI workflow step.

Parent plan: AI-discoverability-plan.md §7.
Phase 0 completion is the precondition: Phase 0 closed today with
3/3 tier-1 smoke green + docs-prose CI gate landed in all four
repos.
@rafael5 rafael5 merged commit 7dd74ca into main May 11, 2026
1 check passed
@rafael5 rafael5 deleted the docs/phase1-plan branch May 11, 2026 02:16
rafael5 added a commit that referenced this pull request May 11, 2026
…#20)

Phase 3 Track A — recipe schema and directory scaffold. Foundation
for Phase 3 Tracks B/C/D (B authors recipes; C TDDs the handshake
test; D wires Make + CI). Per phase3-plan.md §2.

Four parts in one coherent PR:

1. profile/recipe.schema.json (new) — JSON Schema 2020-12 for the
   YAML frontmatter at the top of every docs/recipes/<slug>.md.
   Required: id (typedID, recipe:* prefix), title (≤70 char),
   intent (matches a task_index entry), touches (≥1 typedID),
   verified_on (ISO date), ci_verifiable (bool).
   Optional: prereqs, manual_checklist_url, tier (tier-1|2|3),
   notes. allOf rule: ci_verifiable=false REQUIRES
   manual_checklist_url. typedID grammar duplicated in $defs so
   the schema validates standalone — same regex as tools.schema.json
   + task_index.schema.json.

2. docs/recipes/README.md (new) — describes the recipe contract,
   frontmatter table, the seven priority recipes (gating/buffer/
   post-exit), the CI gate that Track D will implement, authoring
   guide, and what the directory is NOT. ~95 lines of prose.

3. profile/task_index.json — new top-level "recipes" category with
   one row per priority recipe mapping intent → recipe:<slug>
   typed ID + see_also pointers to the tools / cmds / modules each
   recipe touches. 7 rows. Total intent count 59 → 66.

4. (audit-only) A1 findings captured in this PR body — no existing
   recipe content anywhere in the org; only references in planning
   prose, and one adjacent surface (tools.json workflow block:
   tdd_inner_loop + minimal_application_recipe) that recipes do
   not replace.

Verification, all green:
- recipe.schema.json valid JSON Schema 2020-12; synthetic positive
  + two negative fixtures (missing manual_checklist_url when
  ci_verifiable=false; malformed typedID) both rejected as expected.
- task_index.json validates against task_index.schema.json (now
  6 categories, 66 intents).
- profile/tools.json + task_index.json schema-strict via
  validate-catalog.py: OK.
- make catalog byte-idempotent.
- pytest profile/build/: 26/26.
- make check-docs-prose green (docs/recipes/README.md is .md).
- make phase0-smoke: PASS.

Phase 3 launch state:
- Track A this PR — foundation for everything else.
- Tracks B/C/D ready to start in parallel once this lands.
- recipes 1–4 are gating for Phase-3 exit (Track B);
  #5 is buffer; #6 (tier-2) + #7 (tier-3) are post-exit follow-ups.
rafael5 added a commit that referenced this pull request May 11, 2026
)

Track D §5 D3 + D4. Onboards the new tier-3 repo m-dev-tools-mcp
into the org catalog and adds an agent_integration intent so
"point my MCP-capable agent at the m-dev-tools catalog" routes to
tool:m-dev-tools-mcp.

Source-of-truth lives in m-dev-tools-mcp's dist/repo.meta.json (its
phase4-D PR #5 renamed exposes.tools → exposes.mcp_tools and added
exposes.release_wheel pointing at the v0.1.0 release asset). The
new TIER_3 entry here is the org-side pickup: build-catalog.py
fetches that repo.meta.json and translates each exposes.<kind>
into <kind>_url, so the generated entry naturally carries:

* repo_meta_url       — the TIER_3 URL itself
* mcp_tools_url       — points at dist/mcp-tools.json (the 3-tool manifest)
* release_wheel_url   — absolute URL of v0.1.0 wheel asset
* consumes / consumed_by — m-dev-tools-mcp consumes m-cli + m-stdlib +
                            m-standard; inverse edges land on those entries

No hand-edits to tools.json — `make catalog` byte-idempotent
(regen-twice diff is empty). Preserves the "facts in repos,
routing in meta-repo" architectural inversion.

* profile/build/build-catalog.py: TIER_3 gains the m-dev-tools-mcp
  URL; comment bumped "nine onboarded repos" → "ten".
* profile/task_index.json: new infra.agent_integration intent with
  doc URL pointing at the MCP server's examples/claude-code/README.md.
  Schema accepts the addition without bump (additive change, per
  schema-changelog discipline).
* profile/llms.txt: new "Agent integration" section pointing at the
  m-dev-tools-mcp AGENTS.md. 26 → 30 lines (under the 40-line cap
  per parent plan §4.6).
* profile/tools.json: regenerated. New tools.m-dev-tools-mcp entry
  with the URL-pointer fields; consumed_by inverse edges added to
  tools.m-cli / tools.m-stdlib / tools.m-standard.

Verified locally:

* make catalog → byte-identical on regen
* make validate-catalog → OK
* make phase0-smoke → PASS (no new tier-1 entries)
* make recipes-check → 4/4 clean
* make handshake → 8/8 steps green

The v0.1.0 GitHub Release (https://github.com/m-dev-tools/m-dev-tools-mcp/releases/tag/v0.1.0)
was cut from m-dev-tools-mcp main at 1ae96c4 before this PR; the
wheel asset is the one release_wheel_url points at.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant