Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ gh project item-list 2 --owner traverse-framework --format json --limit 300 \
| `new-app-author-e2e` | **Done** (#275) | CLI `app new` → App-Refs layout + Web host rewrite |
| `fix-nightly-native-macos-windows` | **Done** (#277) | Swift 6 Sendable mappers + WinUI test compile of PresentationMapper |
| `llm-mcp-mode-a-spec119-scaffold` | **Done** (#271) | Spec 119 consumer scaffold (fail-closed); live kit execute stays `llm-mcp-traverse-starter-catalog` |
| `llm-mcp-traverse-starter-catalog` | **Blocked** | Live kit execute blocked on Traverse [#1241](https://github.com/traverse-framework/Traverse/issues/1241) (Spec 119 Mode A); absorbed Mode A cutover from `llm-mcp-0-10-live-cutover` |
| `llm-mcp-traverse-starter-catalog` | **Done** | Mode A live cutover after Traverse [#1241](https://github.com/traverse-framework/Traverse/issues/1241)/[#1252](https://github.com/traverse-framework/Traverse/pull/1252); evidence under `apps/llm-mcp-reference/` |
| `loop-wf1-registry-deps` | **Done** (#263) | Digest inventory in `docs/loop-registry-deps.md` |
| `loop-wf1-multi-os` | **Done** (#265) | `apps/loop/` WF1 × 7 OS; compose via `registry_ref` |
| `retire-registry-ref-materialize` | **Done** (#267) | Phase A gate; host cutover → Future `retire-registry-ref-materialize-hosts` |
Expand Down
18 changes: 9 additions & 9 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -106,25 +106,25 @@ Secondary tier beside OS UI shells: **LLM product façades** that invoke Travers
| Clients | Claude Desktop · Claude Code · Cursor · ChatGPT · Grok |
| Scaffold smoke | `bash scripts/ci/llm_mcp_reference_smoke.sh` |

**Mode A (local MCP stdio) — quick start:**
**Mode A (Spec 119 verified public registry) — quick start:**

```bash
export TRAVERSE_REPO="$(cd ../Traverse && pwd)" # adjust path
cd "$TRAVERSE_REPO"
cargo run -p traverse-mcp -- stdio
export TRAVERSE_REPO="$(cd ../Traverse && pwd)" # main with Mode A (#1252+), or next release
export TRAVERSE_MCP_REGISTRY_CACHE="${HOME}/.cache/traverse-mcp-mode-a"
cd apps/llm-mcp-reference/mode-a && bash prepare.sh && bash serve.sh
```

Point your LLM client at that command using the example under `apps/llm-mcp-reference/clients/<product>/`, paste `shared/prompts/system-boundary.md` into system instructions, and follow `shared/workflows/traverse-starter.md`. Display **only** runtime JSON fields — do not invent title/tags/recommendations in the prompt.
Point your LLM client at [`apps/llm-mcp-reference/mode-a/mcp.json.example`](apps/llm-mcp-reference/mode-a/mcp.json.example) (or `clients/<product>/`), paste `shared/prompts/system-boundary.md` into system instructions, and follow `shared/workflows/`. Display **only** runtime JSON fields — do not invent title/tags/recommendations in the prompt.

### Upstream gaps (blocking full kit live path)
### Mode A status

OS shells do **not** speak MCP (they embed WASM). Registry MCP is the LLM façade path.

| Path | Status |
|---|---|
| Expedition `traverse-mcp -- stdio` | Runnable bootstrap — **not** kit catalog |
| Spec 119 Mode A consumer scaffold | [`apps/llm-mcp-reference/mode-a/`](apps/llm-mcp-reference/mode-a/) — fail-closed until the host ships |
| Live `traverse-starter.*` / `meeting-notes.process` via MCP | Project 2 `llm-mcp-traverse-starter-catalog` (**Blocked**) — needs Traverse Mode A **implement** (spec is Approved) |
| Expedition `traverse-mcp -- stdio` (no cache env) | Bootstrap only — **not** Spec 119 |
| Spec 119 Mode A consumer | [`apps/llm-mcp-reference/mode-a/`](apps/llm-mcp-reference/mode-a/) — prepare + serve against `TRAVERSE_MCP_REGISTRY_CACHE` |
| Live kit discover/execute via Mode A | Project 2 `llm-mcp-traverse-starter-catalog` (**Done**) — evidence uses verified-public `core.normalize-participants`; post-#1252 Traverse checkout (or next release) |

Spec 119 v1 has **no kit content groups**. Discovery is public registry entries. Registry umbrella [#99](https://github.com/traverse-framework/registry/issues/99) is closed.

Expand Down
24 changes: 13 additions & 11 deletions apps/llm-mcp-reference/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,33 +25,35 @@ apps/llm-mcp-reference/
grok/
```

## Quick start (expedition bootstrap — not Spec 119)

Today’s default `traverse-mcp -- stdio` catalog is still **expedition**. Use it only as a host-path smoke:
## Quick start (Spec 119 Mode A — preferred)

```bash
export TRAVERSE_REPO="$(cd ../Traverse && pwd)" # adjust path
cd "$TRAVERSE_REPO"
cargo run -p traverse-mcp -- stdio
export TRAVERSE_REPO="$(cd ../Traverse && pwd)" # main with Mode A (#1252+), or next release
export TRAVERSE_MCP_REGISTRY_CACHE="${HOME}/.cache/traverse-mcp-mode-a"
cd apps/llm-mcp-reference/mode-a
bash prepare.sh
bash serve.sh
```

Point `clients/<product>/` at that command, paste `shared/prompts/system-boundary.md`, and follow the workflow runbooks. Display **only** runtime fields.
Point `clients/<product>/` at [`mode-a/mcp.json.example`](mode-a/mcp.json.example), paste `shared/prompts/system-boundary.md`, and follow the workflow runbooks. Display **only** runtime fields.

Bare `cargo run -p traverse-mcp -- stdio` **without** `TRAVERSE_MCP_REGISTRY_CACHE` is still **expedition bootstrap** — not Spec 119.

## Mode A (scaffold — Spec 119 public registry)
## Mode A (Spec 119 public registry)

Registry-MCP path for the same capabilities OS shells load via `registry_ref`. OS apps stay embedded; this is Claude/Cursor MCP only.

See [`mode-a/README.md`](mode-a/README.md), [`mode-a/mcp.json.example`](mode-a/mcp.json.example), and fail-closed [`mode-a/serve.sh`](mode-a/serve.sh).
See [`mode-a/README.md`](mode-a/README.md), [`mode-a/mcp.json.example`](mode-a/mcp.json.example), [`mode-a/prepare.sh`](mode-a/prepare.sh), and [`mode-a/serve.sh`](mode-a/serve.sh).

**Honest status:** Spec 119 is Approved. Traverse **v0.10.0** `traverse-mcp` is still **expedition-only** (no `traverse-starter.*` / `meeting-notes.process` kit path). Mode A host implement: Traverse [#1241](https://github.com/traverse-framework/Traverse/issues/1241). `mode-a/serve.sh` exits non-zero until public-only discovery + inline `RuntimeRequest` + digest-verified WASM land (no expedition fallback; no kit content groups in v1 per FR-007).
**Honest status:** Spec 119 Mode A host shipped on Traverse **main** ([#1241](https://github.com/traverse-framework/Traverse/issues/1241) / [#1252](https://github.com/traverse-framework/Traverse/pull/1252)). Tagged **v0.10.0** binaries remain expedition-only — use a post-#1252 checkout (or the next release) for Mode A. Live evidence uses verified-public discovery + inline `RuntimeRequest` + digest-verified WASM (no expedition fallback; no kit content groups in v1 per FR-007). Seeded proof kit: `core.normalize-participants` (Loop WF1).

## Mode B (scaffold — Spec 520 prepare / verified cache)

Stronger isolation path: prepare registry deps into a **host-owned verified cache**, then serve MCP from that cache — **no App-Refs materialize rewrite**.

See [`mode-b/README.md`](mode-b/README.md), [`mode-b/mcp.json.example`](mode-b/mcp.json.example), and fail-closed [`mode-b/serve.sh`](mode-b/serve.sh).

**Honest status:** Spec 520 library APIs shipped in Traverse (#860). The Mode B MCP host CLI is **not** shipped (Traverse [#1242](https://github.com/traverse-framework/Traverse/issues/1242)). App-Refs ticket `llm-mcp-embedded-host` is **Future** (Mode A kit path is the active unlock). Expedition Mode A remains the only runnable LLM path on v0.10.0; Mode B launcher exits non-zero until that host exists.
**Honest status:** Spec 520 library APIs shipped in Traverse (#860). The Mode B MCP host CLI is **not** shipped (Traverse [#1242](https://github.com/traverse-framework/Traverse/issues/1242)). App-Refs ticket `llm-mcp-embedded-host` is **Future**. Mode A is the runnable Spec 119 LLM path; Mode B launcher exits non-zero until that host exists.

Optional bearer token (execution commands):

Expand Down
14 changes: 9 additions & 5 deletions apps/llm-mcp-reference/clients/claude-code/.mcp.json.example
Original file line number Diff line number Diff line change
@@ -1,11 +1,15 @@
{
"mcpServers": {
"traverse": {
"command": "cargo",
"args": ["run", "-p", "traverse-mcp", "--", "stdio"],
"cwd": "/ABS/PATH/TO/Traverse",
"traverse-mode-a": {
"command": "bash",
"args": [
"/ABS/PATH/TO/App-References/apps/llm-mcp-reference/mode-a/serve.sh"
],
"env": {
"TRAVERSE_REPO": "/ABS/PATH/TO/Traverse"
"TRAVERSE_REPO": "/ABS/PATH/TO/Traverse",
"TRAVERSE_MCP_REGISTRY_CACHE": "/ABS/PATH/TO/host-owned-verified-state",
"TRAVERSE_MCP_CACHE_ROOT": "/ABS/PATH/TO/host-owned-verified-state",
"TRAVERSE_WORKSPACE": "local-default"
}
}
}
Expand Down
27 changes: 8 additions & 19 deletions apps/llm-mcp-reference/clients/claude-code/evidence/README.md
Original file line number Diff line number Diff line change
@@ -1,26 +1,15 @@
# Claude Code MCP live evidence (`llm-mcp-claude-live-smoke`)
# Claude Code MCP Mode A evidence (`llm-mcp-traverse-starter-catalog`)

Captured **2026-07-29** against Traverse **v0.8.2**.
Captured **2026-09-07** against Traverse **main** (Spec 119 Mode A via [#1252](https://github.com/traverse-framework/Traverse/pull/1252)).

## What was proven
[`.mcp.json.example`](../.mcp.json.example) should point at `mode-a/serve.sh` (or the same `TRAVERSE_MCP_REGISTRY_CACHE` + `traverse-mcp stdio` env).

[`.mcp.json.example`](../.mcp.json.example) launches the same Mode A command as Claude Desktop:
### transcript A — discovery

```bash
cargo run -p traverse-mcp -- stdio
```
[`claude-code-mcp-stdio-transcript.jsonl`](claude-code-mcp-stdio-transcript.jsonl)

Command transcripts (Claude Code CLI GUI not required for this evidence):
### transcript B — execute / render

| File | Contents |
|---|---|
| [`claude-code-mcp-stdio-transcript.jsonl`](claude-code-mcp-stdio-transcript.jsonl) | discovery + shutdown |
| [`claude-code-mcp-execute-transcript.jsonl`](claude-code-mcp-execute-transcript.jsonl) | validate → execute → render on `expedition.planning.plan-expedition` |
[`claude-code-mcp-execute-transcript.jsonl`](claude-code-mcp-execute-transcript.jsonl)

## Runtime fields only

Do not invent business fields; render MCP/runtime output only.

## Catalog note

Same as Desktop: default catalog is expedition until starter/meeting-notes entrypoints are published to MCP.
See [`../../cursor/evidence/README.md`](../../cursor/evidence/README.md) for reproduce steps.

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{"auth_boundary":{"default_mode":"local_trust","required_commands":["execute_entrypoint","render_execution_report"],"required_token_env":"TRAVERSE_MCP_STDIO_BEARER_TOKEN"},"content_group_count":1,"governing_spec":"022-mcp-wasm-server","host_mode":"stdio","kind":"mcp_stdio_server_startup","public_surface_id":"traverse.mcp.stdio-server","server_name":"traverse-mcp","status":"ready","supported_commands":["describe_server","list_content_groups","describe_content_group","list_entrypoints","describe_entrypoint","validate_entrypoint","execute_entrypoint","render_execution_report","shutdown"]}
{"auth_boundary":{"default_mode":"local_trust","required_commands":["execute_entrypoint","render_execution_report"],"required_token_env":"TRAVERSE_MCP_STDIO_BEARER_TOKEN","token_output_policy":"never_echo_raw_token"},"content_groups":[{"content_group_id":"core-runtime-example","display_name":"Core runtime example","governed_paths":["examples/templates/executable-capability-package/manifest.template.json","docs/executable-package-template.md","docs/local-runtime-home.md","scripts/ci/executable_package_template_smoke.sh"],"invocable_entrypoints":["describe_content_group"],"summary":"Traverse-neutral executable capability package template and local runtime shape.","validation_commands":["bash scripts/ci/executable_package_template_smoke.sh"]}],"downstream_validation_path":{"consumer_name":"youaskm3","governing_specs":["019-downstream-consumer-contract","020-downstream-integration-validation","021-app-facing-operational-constraints"],"public_surface_id":"traverse.mcp.downstream-consumer","validated_flow_id":"youaskm3_mcp_validation"},"governed_surface_counts":{"capabilities":6,"events":5,"workflows":1},"governing_spec":"022-mcp-wasm-server","host_mode":"stdio","kind":"mcp_stdio_server_description","public_surface_id":"traverse.mcp.stdio-server","runtime_authority":"Traverse runtime authority","server_name":"traverse-mcp","supported_commands":["describe_server","list_content_groups","describe_content_group","list_entrypoints","describe_entrypoint","validate_entrypoint","execute_entrypoint","render_execution_report","shutdown"]}
{"content_groups":[{"content_group_id":"core-runtime-example","display_name":"Core runtime example","governed_paths":["examples/templates/executable-capability-package/manifest.template.json","docs/executable-package-template.md","docs/local-runtime-home.md","scripts/ci/executable_package_template_smoke.sh"],"invocable_entrypoints":["describe_content_group"],"summary":"Traverse-neutral executable capability package template and local runtime shape.","validation_commands":["bash scripts/ci/executable_package_template_smoke.sh"]}],"entrypoints":{"capabilities":[{"artifact_kind":"capability","id":"expedition.planning.capture-expedition-objective","lifecycle":"active","summary":"Capture a structured expedition objective from destination, timing, and planning preference inputs.","version":"1.0.0"},{"artifact_kind":"capability","id":"expedition.planning.interpret-expedition-intent","lifecycle":"active","summary":"Interpret free-form expedition planning intent into structured route preferences, constraints, and assumptions.","version":"1.0.0"},{"artifact_kind":"capability","id":"expedition.planning.assess-conditions-summary","lifecycle":"active","summary":"Assess a deterministic expedition conditions summary from objective and interpreted intent context.","version":"1.0.0"},{"artifact_kind":"capability","id":"expedition.planning.validate-team-readiness","lifecycle":"active","summary":"Validate expedition team readiness from objective, conditions summary, and team profile context.","version":"1.0.0"},{"artifact_kind":"capability","id":"expedition.planning.assemble-expedition-plan","lifecycle":"active","summary":"Assemble the final expedition plan from objective, interpreted intent, conditions, and readiness inputs.","version":"1.0.0"},{"artifact_kind":"capability","id":"expedition.planning.plan-expedition","lifecycle":"active","summary":"Compose the canonical expedition planning workflow into one first-class governed capability.","version":"1.0.0"}],"events":[{"artifact_kind":"event","id":"expedition.planning.expedition-objective-captured","lifecycle":"active","summary":"A normalized expedition objective has been captured and is ready for downstream planning.","version":"1.0.0"},{"artifact_kind":"event","id":"expedition.planning.expedition-intent-interpreted","lifecycle":"active","summary":"An expedition intent has been interpreted into structured planning inputs for downstream steps.","version":"1.0.0"},{"artifact_kind":"event","id":"expedition.planning.conditions-summary-assessed","lifecycle":"active","summary":"A deterministic expedition conditions summary has been assessed for the current planning context.","version":"1.0.0"},{"artifact_kind":"event","id":"expedition.planning.team-readiness-validated","lifecycle":"active","summary":"A team readiness result has been validated for the expedition objective and conditions context.","version":"1.0.0"},{"artifact_kind":"event","id":"expedition.planning.expedition-plan-assembled","lifecycle":"active","summary":"A final expedition plan has been assembled and is ready for downstream consumption.","version":"1.0.0"}],"workflows":[{"artifact_kind":"workflow","id":"expedition.planning.plan-expedition","lifecycle":"active","summary":"Capture, interpret, validate, and assemble an expedition plan deterministically.","version":"1.0.0"}]},"governing_spec":"022-mcp-wasm-server","host_mode":"stdio","kind":"mcp_stdio_server_entrypoint_list","server_name":"traverse-mcp"}
{"content_groups":[{"content_group_id":"core-runtime-example","display_name":"Core runtime example","governed_paths":["examples/templates/executable-capability-package/manifest.template.json","docs/executable-package-template.md","docs/local-runtime-home.md","scripts/ci/executable_package_template_smoke.sh"],"invocable_entrypoints":["describe_content_group"],"summary":"Traverse-neutral executable capability package template and local runtime shape.","validation_commands":["bash scripts/ci/executable_package_template_smoke.sh"]}],"governing_spec":"022-mcp-wasm-server","host_mode":"stdio","kind":"mcp_stdio_server_content_group_list","server_name":"traverse-mcp"}
{"governing_spec":"022-mcp-wasm-server","host_mode":"stdio","kind":"mcp_stdio_server_shutdown","reason":"shutdown_command","server_name":"traverse-mcp","status":"complete"}
{"auth_boundary":{"default_mode":"local_trust","required_commands":["execute_entrypoint","render_execution_report"],"required_token_env":"TRAVERSE_MCP_STDIO_BEARER_TOKEN"},"content_group_count":0,"discovery_source":{"capability_count":1,"index_digest":"sha256:f7f8e39452d7ea65fdee8a34daeb968368af5ccf70c21b3123c9e9cc186228ba","kind":"host_verified_public_registry","source_release":"index-v1","stale":false},"governing_spec":"119-verified-registry-mcp-mode-a","host_mode":"stdio","kind":"mcp_stdio_server_startup","mode":"verified_public","public_surface_id":"traverse.mcp.stdio-server","server_name":"traverse-mcp","status":"ready","supported_commands":["describe_server","list_content_groups","describe_content_group","list_entrypoints","search_capabilities","describe_entrypoint","validate_entrypoint","execute_entrypoint","render_execution_report","shutdown"]}
{"auth_boundary":{"default_mode":"local_trust","required_commands":["execute_entrypoint","render_execution_report"],"required_token_env":"TRAVERSE_MCP_STDIO_BEARER_TOKEN","token_output_policy":"never_echo_raw_token"},"content_groups":[],"discovery_source":{"capability_count":1,"index_digest":"sha256:f7f8e39452d7ea65fdee8a34daeb968368af5ccf70c21b3123c9e9cc186228ba","kind":"host_verified_public_registry","source_release":"index-v1","stale":false},"downstream_validation_path":{"consumer_name":"youaskm3","governing_specs":["019-downstream-consumer-contract","020-downstream-integration-validation","021-app-facing-operational-constraints"],"public_surface_id":"traverse.mcp.downstream-consumer","validated_flow_id":"youaskm3_mcp_validation"},"governed_surface_counts":{"capabilities":1,"events":0,"workflows":0},"governing_spec":"119-verified-registry-mcp-mode-a","host_mode":"stdio","kind":"mcp_stdio_server_description","mode":"verified_public","public_surface_id":"traverse.mcp.stdio-server","runtime_authority":"Traverse runtime authority","server_name":"traverse-mcp","supported_commands":["describe_server","list_content_groups","describe_content_group","list_entrypoints","search_capabilities","describe_entrypoint","validate_entrypoint","execute_entrypoint","render_execution_report","shutdown"]}
{"content_groups":[],"discovery_source":{"capability_count":1,"index_digest":"sha256:f7f8e39452d7ea65fdee8a34daeb968368af5ccf70c21b3123c9e9cc186228ba","kind":"host_verified_public_registry","source_release":"index-v1","stale":false},"entrypoints":{"capabilities":[{"artifact_digest":"sha256:6bb5c6300710de6090c4b5f25d611a6a6af7d2dd9e1bacb3bdb01b166110b5ad","id":"core.normalize-participants","kind":"capability","lifecycle":"active","namespace":"core","service_type":"stateless","summary":"Normalize raw participants into canonical records.","version":"1.1.0"}],"events":[],"workflows":[]},"governing_spec":"119-verified-registry-mcp-mode-a","host_mode":"stdio","kind":"mcp_stdio_server_entrypoint_list","mode":"verified_public","server_name":"traverse-mcp"}
{"content_groups":[],"governing_spec":"119-verified-registry-mcp-mode-a","host_mode":"stdio","kind":"mcp_stdio_server_content_group_list","mode":"verified_public","server_name":"traverse-mcp"}
{"governing_spec":"119-verified-registry-mcp-mode-a","host_mode":"stdio","kind":"mcp_stdio_server_shutdown","reason":"shutdown_command","server_name":"traverse-mcp","status":"complete"}
Loading
Loading