Skip to content

docs(rcp): publish v1.0.0 spec with explicit stability policy#36

Merged
Narrator merged 3 commits into
mainfrom
feat/issue-35-rcp-v1-spec
May 28, 2026
Merged

docs(rcp): publish v1.0.0 spec with explicit stability policy#36
Narrator merged 3 commits into
mainfrom
feat/issue-35-rcp-v1-spec

Conversation

@Narrator
Copy link
Copy Markdown
Member

Summary

Closes the RFC 0001 workstream 4 deliverable: a public, versioned Runtime Context Protocol spec that IDE and agent vendors can integrate against.

  • New docs/rcp/v1.md — full spec text (§§1-8)
  • README MCP Tools section cross-linked to the spec
  • TECHNICAL_SPEC.md §3.4 cross-linked to the spec

What's in the spec

  • Banner declares RCP v1.0.0 — published from @domscribe/protocol@1.0.0 as required by the acceptance criteria.

  • Conformance — what a v1 server/client MUST do, separated from MAY.

  • Tools (12) in canonical underscore form, mapped 1:1 to current MCP_TOOLS constants:

    spec name current name
    domscribe_resolve domscribe.resolve
    domscribe_resolve_batch domscribe.resolve.batch
    domscribe_manifest_query domscribe.manifest.query
    domscribe_manifest_stats domscribe.manifest.stats
    domscribe_query_by_source domscribe.query.bySource
    domscribe_annotation_list domscribe.annotation.list
    domscribe_annotation_get domscribe.annotation.get
    domscribe_annotation_search domscribe.annotation.search
    domscribe_annotation_process domscribe.annotation.process
    domscribe_annotation_update_status domscribe.annotation.updateStatus
    domscribe_annotation_respond domscribe.annotation.respond
    domscribe_status domscribe.status

    Underscore is chosen so every name passes ^[a-zA-Z0-9_-]{1,64}$ (Windsurf-compatible, fixes MCP tool names use dots, which breaks Windsurf (and likely other clients) #18) and matches the existing prompt naming convention already in MCP_PROMPTS.

  • Prompts (4)process_next, check_status, explore_component, find_annotations (verbatim from current MCP_PROMPTS).

  • Wire schemas for ManifestEntry, RuntimeContext, Annotation, AnnotationSummary, summarised field-by-field with stable/experimental annotations.

  • Error envelope (ProblemDetails, RFC 7807) plus the full 22-code DomscribeErrorCode vocabulary.

  • Stability policy (§7) — frozen surface, additive-minor rules, patch rules, alias migration policy, v2 expectations, and a worked-example table letting any reader predict what counts as breaking.

Sequencing — depends on #32 and #33

This PR ships the spec text. Two sibling sprint tasks land the on-disk surface the spec refers to:

Acceptance criteria (issue #35)

  • docs/rcp/v1.md exists and renders cleanly on GitHub
  • Linked from README + TECHNICAL_SPEC.md
  • Stability policy is explicit and falsifiable — §7.6 gives 9 worked examples
  • Tool list matches the current MCP_TOOLS shape (canonical underscore form)
  • Version banner present at the top of the spec

What was NOT done (intentionally)

  • I did not rewrite the existing tool tables in README / TECHNICAL_SPEC to the canonical names. That is Normalize MCP tool names — single grammar + alias policy #33's scope per the PM plan; rewriting here would conflict and step on the other staff-swe's PR. The cross-link to the spec calls out which form is canonical.
  • I did not create or modify docs/rfcs/0001-rcp-as-versioning-unit.md. The spec references it; the RFC is principal-eng's deliverable and lands separately.
  • I did not generate the spec from the live Zod schemas. The issue body suggests "consider generating from schemas" — that requires @domscribe/protocol to exist (Extract @domscribe/protocol package (RCP versioning unit) #32). A follow-on can add pnpm docs:gen-rcp once the package lands.

Test plan

Adds docs/rcp/v1.md — the public Runtime Context Protocol spec
that IDE and agent vendors integrate against. Closes the RFC 0001
workstream 4 deliverable.

- Tools (12) and prompts (4) listed in canonical underscore form
- Wire schemas: ManifestEntry, RuntimeContext, Annotation, ProblemDetails
- Error code vocabulary (22 codes, full DomscribeErrorCode coverage)
- Stability policy: frozen/additive/breaking rules with worked examples
- Aliases-through-one-minor-cycle policy for dotted legacy names
- Cross-linked from README MCP Tools section and TECHNICAL_SPEC.md §3.4

Depends on #32 (@domscribe/protocol package) and #33 (canonical
underscore tool names) for full surface alignment; this PR ships
the spec text. Verifier should sync tool-name tables in README and
TECHNICAL_SPEC after #33 lands.

Refs #35
@nx-cloud
Copy link
Copy Markdown

nx-cloud Bot commented May 28, 2026

View your CI Pipeline Execution ↗ for commit 836f7fa

Command Status Duration Result
nx run domscribe-test-fixtures:integration--web... ✅ Succeeded 1m 41s View ↗
nx run domscribe-test-fixtures:integration--web... ✅ Succeeded 1m 41s View ↗
nx run domscribe-test-fixtures:integration--web... ✅ Succeeded 1m 43s View ↗
nx run domscribe-test-fixtures:integration--web... ✅ Succeeded 1m 17s View ↗
nx run domscribe-test-fixtures:install-fixture-... ✅ Succeeded 57s View ↗
nx run domscribe-test-fixtures:install-fixture-... ✅ Succeeded 1m 3s View ↗
nx run domscribe-test-fixtures:install-fixture-... ✅ Succeeded 20s View ↗
nx run domscribe-test-fixtures:integration--vit... ✅ Succeeded 33s View ↗
Additional runs (13) ✅ Succeeded ... View ↗

☁️ Nx Cloud last updated this comment at 2026-05-28 19:16:46 UTC

The v1 spec (`docs/rcp/v1.md`) cross-links to
`docs/rfcs/0001-rcp-as-versioning-unit.md` as the decision record
for extracting `@domscribe/protocol` as the RCP versioning unit.

The RFC was authored by principal-eng during sprint 2371 but had
not been committed to the repo; the spec link would render broken
on GitHub until this lands. Committing here so the spec PR
satisfies its "renders cleanly on GitHub" acceptance criterion
without requiring a separate landing.

Verbatim RFC content — no edits.

Refs #35
@Narrator Narrator marked this pull request as ready for review May 28, 2026 19:05
The spec stated the entry id matches `/^[A-Za-z0-9_-]{8}$/`, but the
actual `PATTERNS.MANIFEST_ENTRY_ID` in `@domscribe/core` enforces
`/^[0-9A-HJ-NP-Za-hj-np-z]{8}$/` — Crockford base32, excluding `I`,
`L`, `O`, `0` to avoid visual collisions. Since §7 freezes this field
as stable, the wrong regex would lock v1 to a contract the
implementation never produces. Update to the actual regex with a
parenthetical so readers don't need to decode the character class.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
@Narrator Narrator merged commit c3fe5d1 into main May 28, 2026
17 of 24 checks passed
@Narrator Narrator deleted the feat/issue-35-rcp-v1-spec branch May 28, 2026 19:14
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.

MCP tool names use dots, which breaks Windsurf (and likely other clients)

1 participant