mirror of
https://github.com/ultraworkers/claw-code.git
synced 2026-04-27 06:57:37 +08:00
roadmap: #275 filed
This commit is contained in:
parent
27f395aa82
commit
25164086c0
12
ROADMAP.md
12
ROADMAP.md
@ -17085,3 +17085,15 @@ Gap. The renderer treats MCP tools as opaque black boxes even though they cover
|
||||
Required fix shape: (a) introduce a `ToolRenderingProfile` enum keyed off the runtime tool category (FileRead, FileWrite, FileEdit, Search, Shell, WebSearch, Generic) and have both native and MCP tools advertise their category at registration time; (b) when an MCP tool's `inputSchema` declares well-known field names (`path`, `paths`, `query`, `pattern`, `command`, `content`), extract them in `format_tool_call_start` via a schema-aware path-extractor that supersedes the current `extract_tool_path` hardcoded key list; (c) thread server identity through the renderer so MCP tool banners can show `⚡ {server} · {tool}` instead of the raw `mcp__server__tool` underscore-glob; (d) emit a `tool_call_render_kind` field in the JSON envelope (`native_typed`, `mcp_typed`, `mcp_generic`, `untyped_fallback`) so dogfood audits can count parity coverage over time; (e) regression-test that an MCP tool whose schema declares `path: string` renders the same `📄 Reading {path}…` start banner as native `Read`, that an MCP shell tool with `command: string` renders the same exit-code/stdout/stderr structure as native `bash`, and that unknown-schema MCP tools fall back to `format_generic_tool_result` cleanly without breaking layout. Acceptance: an MCP `read_file` and a native `Read` of the same path produce visually equivalent terminal output, and the JSON envelope's per-tool `render_kind` field is populated for every tool call.
|
||||
|
||||
**Status:** Open. No source code changed. Filed 2026-04-26 15:32 KST. Branch: feat/jobdori-168c-emission-routing. HEAD: `f36f283` before filing. Cluster delta: founds NEW `mcp-vs-native-tool-rendering-parity` cluster (1 member); pairs with #268 (MCP catalog freshness) on the MCP-axis as a cross-axis bundle (rendering × staleness). Concrete delta this cycle: ROADMAP-only pinpoint appended after static audit of `format_tool_call_start` / `format_tool_result` rendering arms vs `runtime::mcp::mcp_tool_name` qualified-name shape — zero MCP-aware match arms, full fallback to generic untyped path.
|
||||
|
||||
## Pinpoint #275 — `claw doctor --output-format json` splits repo provenance across unrelated `install source`, `workspace`, and `system` checks, so automation cannot consume one authoritative workspace provenance object even though the needed fragments are partially present
|
||||
|
||||
Dogfooded 2026-04-26 16:02 KST on `feat/jobdori-168c-emission-routing` at HEAD `fdf8890` (post-#274). Fresh `cargo run --quiet --bin claw -- --output-format json doctor` shows the data needed for provenance is scattered: the `install source` check has `official_repo: https://github.com/ultraworkers/claw-code`, the `workspace` check has `cwd`, `project_root`, `git_branch`, and `git_state`, while the `system` check has `git_sha: fdf88903`. There is no single object tying those together as "this workspace is repo X, branch Y, head Z, clean/dirty, upstream A, source-of-truth B". The text report has the same split: official repo under Install source, branch/clean under Workspace, Git SHA under System.
|
||||
|
||||
Concrete failure mode: a dogfood/status consumer that uses `doctor` instead of `status` can see official source-of-truth and a local Git SHA, but cannot know whether that SHA belongs to the workspace branch being inspected, whether the workspace remote actually matches the official repo, whether the local branch is ahead/behind origin/fork, or whether the official repo check is merely a static install warning unrelated to the current cwd. This is the doctor-surface sibling of #273: #273 found `claw status` lacks provenance fields entirely; #275 finds `claw doctor` has fragments but no normalized provenance object.
|
||||
|
||||
Gap. Diagnostic surfaces duplicate and diverge: `status` is branch/clean focused, `doctor` is health-check focused, and neither emits a canonical `workspace_provenance` object. This forces downstream claws to shell out to git or scrape multiple `doctor.checks[]` entries and infer joins by name. It is distinct from #259/#271 (dogfood report provenance/repo guard) and distinct from #273 (status surface missing fields); #275 targets the doctor health surface's fragmented schema.
|
||||
|
||||
Required fix shape: (a) add a top-level `workspace_provenance` object to `doctor` JSON containing `project_root`, `cwd`, `git_head_sha`, `git_branch`, `git_state`, `remote_urls`, `upstream_branch`, `ahead`, `behind`, `official_repo`, and `repo_identity_status: matches_official|fork_of_official|mismatch|unknown`; (b) have `status` and `doctor` share the same provenance struct/renderer so fields cannot drift; (c) in text mode, add one compact Provenance section instead of scattering related fields across Install source/Workspace/System; (d) add tests proving a wrong remote reports `repo_identity_status: mismatch` without needing downstream string scraping. Acceptance: automation can read one `doctor.workspace_provenance` object and decide whether the current cwd is the intended claw-code worktree at the expected HEAD.
|
||||
|
||||
**Status:** Open. No source code changed. Filed 2026-04-26 16:02 KST. Branch: feat/jobdori-168c-emission-routing. HEAD: `fdf8890` before filing. Cluster delta: product-diagnostic-provenance +1; sister to #273 (`status` provenance) but distinct `doctor` fragmented-schema surface. Concrete delta this cycle: ROADMAP-only pinpoint appended after live `doctor` JSON/text verification.
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user