diff --git a/docs/harness-bindings/claude-code.md b/docs/harness-bindings/claude-code.md index 6488ea8..577a6b0 100644 --- a/docs/harness-bindings/claude-code.md +++ b/docs/harness-bindings/claude-code.md @@ -15,6 +15,8 @@ the concrete Claude Code tool or model tier that realizes it. | the worktree helper | EnterWorktree | | exploratory | Explore | | a working scratch location | the session scratchpad directory | +| a browser automation driver | a browser MCP (claude-in-chrome or Playwright) | +| direct UI control | computer use | Every left-hand phrase is the exact string as it appears in the skills; binding is a literal substitution of that phrase by its right-hand value. diff --git a/docs/harness-bindings/pi.md b/docs/harness-bindings/pi.md index 449865c..2d08f12 100644 --- a/docs/harness-bindings/pi.md +++ b/docs/harness-bindings/pi.md @@ -15,6 +15,8 @@ agent's concrete tool or, for tiers, the open-weight model that realizes it. | the worktree helper | `git worktree add` | | exploratory | a read-only subagent (the `subagent` tool from `pi-subagents`, forked context) | | a working scratch location | a `harness/` directory inside the worktree, git-excluded (per the building skill's `.git/info/exclude` step) | +| a browser automation driver | Playwright, driven via Bash | +| direct UI control | unavailable; Pi has no computer-use surface, so the native surface is skipped | Read each neutral phrase in the prose as the Pi tool, model, or behaviour its right-hand value describes, and realise that behaviour: this is a semantic @@ -48,12 +50,11 @@ self-review, the exact failure the design exists to prevent, and no amount of prose fixes that. Do not simulate a subagent by continuing in the same context; if the package is absent, stop and say so rather than faking the separation. -## Evaluation surfaces (not yet neutralized) +## Evaluation surfaces -The `web` / `native` / browser-MCP lines in `skills/building/SKILL.md` were not -neutralized (that was out of scope for the neutralization), so they -still name tools that may not exist on Pi. Read them as follows until that -follow-up lands: +The building skill's surface table uses neutral terms (`a browser automation +driver`, `direct UI control`) bound in the table above. On Pi they resolve as +follows: - `native` (computer-use) surface: **unavailable**. Skip any step whose only observation path is native, tell the user, and continue. diff --git a/skills/building/SKILL.md b/skills/building/SKILL.md index 874e7c2..8f7e23e 100644 --- a/skills/building/SKILL.md +++ b/skills/building/SKILL.md @@ -6,7 +6,7 @@ disable-model-invocation: true # /forge:building -> **Harness binding.** This command is written in harness-neutral terms: role +> **Harness binding.** This skill is written in harness-neutral terms: role > tiers (e.g. `judgment-tier`, `labor-tier`) and generic verbs, instead of one > agent's tool and model names. Before acting, load the binding for your > environment from [`docs/harness-bindings/`](../../docs/harness-bindings/README.md) @@ -99,7 +99,7 @@ contract negotiations and a full build, is not. | `library` | installing the package into a clean environment | calling the public API from throwaway scripts | | `cli` | building or installing the executable | running it as a subprocess: argv, stdin, stdout, stderr, exit codes | | `service` | booting the server | issuing real requests against its endpoints | - | `native` | launching the app or simulator | computer use | + | `native` | launching the app or simulator | direct UI control | Infer the likely surface from the repo (entry points, manifests, how the README says to run it) and confirm with an interactive question, your inference @@ -108,10 +108,9 @@ contract negotiations and a full build, is not. user knows which one the contract is about. `--surface` skips the question. 3. **Surface dependencies.** `web` is the only surface with an external - dependency: a browser automation MCP server (claude-in-chrome or - Playwright). Verify one is connected. If it is not, stop and offer three - choices: install one, fall back to `native` and drive the browser with - computer use, or abort. Never continue into Phase 1 with no way to run + dependency: a browser automation driver. Verify one is available. If it is + not, stop and offer three choices: install one, fall back to `native` (only + if your harness provides direct UI control), or abort. Never continue into Phase 1 with no way to run Phase 6. The resolved surface becomes `surface` in `harness/contract.json` and @@ -276,8 +275,8 @@ Loop, max `--max-rounds` (default 5) rounds: server, install the package into a clean environment, build the executable, boot the service, or launch the simulator. 2. Spawn the **evaluator** (judgment-tier) with the tools its surface needs: a browser - MCP for `web`, computer use for `native`, Bash for `library`, `cli`, and - `service`. It receives ONLY: the agreed contract, how to reach the running + automation driver for `web`, direct UI control for `native`, Bash for + `library`, `cli`, and `service`. It receives ONLY: the agreed contract, how to reach the running artifact, and the issue body. Its role prompt, keeping the bracketed clause that matches the surface: diff --git a/skills/interview/SKILL.md b/skills/interview/SKILL.md index b40c24f..d340f22 100644 --- a/skills/interview/SKILL.md +++ b/skills/interview/SKILL.md @@ -6,7 +6,7 @@ disable-model-invocation: true # /forge:interview -> **Harness binding.** This command is written in harness-neutral terms: role +> **Harness binding.** This skill is written in harness-neutral terms: role > tiers (e.g. `judgment-tier`, `labor-tier`) and generic verbs, instead of one > agent's tool and model names. Before acting, load the binding for your > environment from [`docs/harness-bindings/`](../../docs/harness-bindings/README.md) diff --git a/skills/planning/SKILL.md b/skills/planning/SKILL.md index be9068b..4d87671 100644 --- a/skills/planning/SKILL.md +++ b/skills/planning/SKILL.md @@ -6,7 +6,7 @@ disable-model-invocation: true # /forge:planning -> **Harness binding.** This command is written in harness-neutral terms: role +> **Harness binding.** This skill is written in harness-neutral terms: role > tiers (e.g. `judgment-tier`, `labor-tier`) and generic verbs, instead of one > agent's tool and model names. Before acting, load the binding for your > environment from [`docs/harness-bindings/`](../../docs/harness-bindings/README.md)