diff --git a/plugins/discovery/.claude-plugin/plugin.json b/plugins/discovery/.claude-plugin/plugin.json index cb6b22756..0d82453ec 100644 --- a/plugins/discovery/.claude-plugin/plugin.json +++ b/plugins/discovery/.claude-plugin/plugin.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/claude-code-plugin-manifest.json", "name": "discovery", - "version": "0.7.2", + "version": "0.7.3", "description": "Structured discovery before changes: explore the local codebase (inline or in an isolated forked subagent) and run disciplined multi-source external research with source tiers, falsification, and recency gates — persisting EXPLORE.md / RESEARCH.md handoff artifacts.", "author": { "name": "Melodic Software", diff --git a/plugins/discovery/CHANGELOG.md b/plugins/discovery/CHANGELOG.md index 5e5c9ccc9..72ddaf591 100644 --- a/plugins/discovery/CHANGELOG.md +++ b/plugins/discovery/CHANGELOG.md @@ -1,5 +1,16 @@ # Changelog — discovery plugin +## 0.7.3 — 2026-07-19 + +### Fixed + +- **`/discovery:explore` and `/discovery:explore-deep` keep the absolute project root out of the + persisted `EXPLORE.md`.** The pre-computed `Project root:` value (a live `git rev-parse + --show-toplevel`) is now marked session-orientation only, and the explore outcome gate adds a + binary criterion requiring machine-agnostic artifact paths — relative to the repo root, or to the + current working directory when no repo root exists. The live root stays available for resolving + files while working; it is never echoed into the handoff, so `EXPLORE.md` stays machine-agnostic. + ## 0.7.2 — 2026-07-19 ### Changed diff --git a/plugins/discovery/skills/explore-deep/SKILL.md b/plugins/discovery/skills/explore-deep/SKILL.md index b101df821..4ae10d8d3 100644 --- a/plugins/discovery/skills/explore-deep/SKILL.md +++ b/plugins/discovery/skills/explore-deep/SKILL.md @@ -14,6 +14,8 @@ Current branch: !`git branch --show-current 2>/dev/null || echo "unknown"` Working tree status: !`git status --porcelain 2>/dev/null | head -20 || echo "clean"` Project root: !`git rev-parse --show-toplevel 2>/dev/null || echo "unknown"` +These values orient this fork only. The project root is an absolute machine path — use it to resolve files while working, but never echo it into `EXPLORE.md`; the `/explore` outcome gate you run in Step 3 requires relative, machine-agnostic paths. + ## Purpose You are a forked **general-purpose** subagent running the canonical explore workflow (the sibling `/explore` skill) on behalf of the main session. Your investigation runs in an isolated context — you do NOT see the parent conversation, and the main session does NOT see your file reads, Glob results, or Grep output; only your final summary returns. diff --git a/plugins/discovery/skills/explore/SKILL.md b/plugins/discovery/skills/explore/SKILL.md index ac50308cd..c1a3437c5 100644 --- a/plugins/discovery/skills/explore/SKILL.md +++ b/plugins/discovery/skills/explore/SKILL.md @@ -12,6 +12,8 @@ Current branch: !`git branch --show-current 2>/dev/null || echo "unknown"` Working tree status: !`git status --porcelain 2>/dev/null | head -20 || echo "clean"` Project root: !`git rev-parse --show-toplevel 2>/dev/null || echo "unknown"` +These values orient this session only. The project root is an absolute machine path — use it to resolve files while working, but never echo it into `EXPLORE.md`; the handoff artifact records relative paths (see the outcome gate below). + ## Routing — context preservation first (three ways to explore) Exploration reads many files; keeping that out of the main conversation is what subagents are for. Three ways to run it, by how much context it burns and whether you need this structured workflow: @@ -149,6 +151,7 @@ Blindspot-only runs SKIP this gate — their deliverable is blindspot cards plus - **Every Output-format section populated with specifics** — each of the 7 sections carries concrete findings, not placeholders or "TBD". - **Every load-bearing area covered OR listed as a numbered gap** — nothing the task plausibly depends on is silently unexplored. - **Conclusion-driving claims are Read-verified, not inferred from a filename or grep hit** — anything a downstream decision rests on came from reading the file or code. +- **Paths are machine-agnostic** — no finding in the artifact echoes an absolute machine path (notably the pre-computed project root); every path it records is written relative to the repo root, or — when there is no repo root — to the current working directory, so the handoff stays portable across machines. - **Open questions surfaced to the user**, each with a recommended default. ## Final step: persist artifact for handoff