docs: handoff reflects the pushed state
22 commits pushed, CI green, deployed. Items 1-3 of the previous list are done: staffing, attribution, and the door. Trigger is measured and red-first turned out observable from run outputs rather than from the diff — the previous list was wrong about that, and the skill says why. Co-Authored-By: Claude Opus 5 <[email protected]> Claude-Session: https://claude.ai/code/session_018i9Ten1LU4jUr5d7TAWda9
This commit is contained in:
co-authored by
Claude Opus 5
parent
7525be3791
commit
72eda8b3d2
+70
-35
@@ -7,12 +7,12 @@ than the agent's own account of it.
|
|||||||
|
|
||||||
## State of the tree
|
## State of the tree
|
||||||
|
|
||||||
Local suite green: **107 test binaries, 796 tests** (`cargo test --workspace`), and the workspace builds with `--all-targets`.
|
Local suite green: **108 test binaries, 815 tests** (`cargo test --workspace`).
|
||||||
Five measurement missions ran on the local stack (`scripts/skill-use-run.sh`);
|
**Pushed** — 22 commits, CI green on gw-04, deployed.
|
||||||
all five are held 90 days and re-scorable with `--score <id>`.
|
|
||||||
10 commits on `main` this pass, **not pushed** — a push to `main` auto-deploys
|
Eight measurement missions ran on the local stack
|
||||||
to gw-04, and the container-tier work already deployed is unexercised there
|
(`scripts/skill-use-run.sh`); all are held 90 days and re-scorable with
|
||||||
(see below).
|
`--score <id>`.
|
||||||
|
|
||||||
## The premise of the last handoff's item 1 was wrong
|
## The premise of the last handoff's item 1 was wrong
|
||||||
|
|
||||||
@@ -132,44 +132,79 @@ which is the only reason they were found.
|
|||||||
`no_skill_shows_a_marker_the_parser_would_reject` guards the class, running the
|
`no_skill_shows_a_marker_the_parser_would_reject` guards the class, running the
|
||||||
real parser over every marker in every skill's fenced blocks.
|
real parser over every marker in every skill's fenced blocks.
|
||||||
|
|
||||||
|
### Trigger is measured, and the door is what made it possible
|
||||||
|
|
||||||
|
`skill_use` scores Trigger from `ReadMcpResourceTool` calls, parsed through
|
||||||
|
`mcp_skills::parse_uri` — the function that wrote the URI. Run 8, one mission,
|
||||||
|
one clean A/B:
|
||||||
|
|
||||||
|
| skill | delivered by | Trigger |
|
||||||
|
|---|---|---|
|
||||||
|
| `workspace-repo-commit-protocol` | retrieval | **pass** |
|
||||||
|
| `web-search-triage` | inlined | not observable |
|
||||||
|
| `structured-paper-summary` | inlined | not observable |
|
||||||
|
| `scientific-writing-conventions` | inlined | not observable |
|
||||||
|
|
||||||
|
Careful with what that proves: the retrieval was *instructed* by the task. It
|
||||||
|
demonstrates the instrument, not a spontaneous relevance judgement.
|
||||||
|
|
||||||
|
### Red-first is observable, and it needed neither ordering nor the diff
|
||||||
|
|
||||||
|
The previous version of this list said the TDD check needed the repository
|
||||||
|
diff. That was wrong, and `tdd-red-green-refactor` says why: *"Commit the
|
||||||
|
RED-to-GREEN pair as one commit."* The failing test and its fix land together
|
||||||
|
by instruction, so the diff and the commit history are as blind as tool
|
||||||
|
ordering already was.
|
||||||
|
|
||||||
|
The witness is what each run PRINTED, and the tap was discarding it. Claude
|
||||||
|
Code's `PostToolUse` payload carries `tool_response` (stdout/stderr/
|
||||||
|
interrupted) — verified against the binary. `bounded_response` keeps the END of
|
||||||
|
that output, the opposite of `bounded_input`, because a command's meaning is
|
||||||
|
its verdict and `cargo test` prints it last.
|
||||||
|
|
||||||
|
failing run then a passing one → Pass
|
||||||
|
every run failed → Fail
|
||||||
|
every run passed → NotObservable, because a test that never
|
||||||
|
failed is equally what a correct
|
||||||
|
implementation written first looks like
|
||||||
|
|
||||||
## Next, in order
|
## Next, in order
|
||||||
|
|
||||||
1. **The TDD check cannot confirm red-first, and that is structural.** Run 4
|
1. **Watch the first production mission.** Everything below the fold in this
|
||||||
(`research_and_code`, real repo) edited `src/lib.rs` once — implementation
|
document is now deployed and unexercised in prod, because prod has still
|
||||||
*and* `#[cfg(test)] mod tests` in the same write — then ran `cargo test`
|
never run a mission. The door, the staffing, the attribution and the orphan
|
||||||
five times. In Rust the unit test lives in the file under test, so that
|
sweep all engage on the next launch. Prod auth is Clerk, so somebody has to
|
||||||
ordering is what following the skill precisely looks like from outside. The
|
click.
|
||||||
check detects "wrote source, never ran a test" and nothing more. If you want
|
|
||||||
red-first, it needs the diff (did the test exist before the impl?), not the
|
|
||||||
tool order.
|
|
||||||
|
|
||||||
2. **Attribute tool calls to agents.** `record_vm_tools` writes
|
```
|
||||||
`agent_id: None`, because the container tap is per-container and all roles
|
ssh gw-04 'docker logs clawmates_server_1 2>&1 | grep -E "skills door installed|drained .* tool call|orphans:"'
|
||||||
share one. Every Skill-Use score is therefore per-**mission**, not per-role,
|
```
|
||||||
and the World's per-agent view gets nothing from the container tier. The
|
|
||||||
hook payload carries `session_id`; mapping it back to a turn is the fix.
|
|
||||||
|
|
||||||
3. **Deploy the door** (`TOOL-CALL-ARCHITECTURE.md` §3). Config, not code:
|
2. **Measure Trigger properly, which means changing delivery.**
|
||||||
`/zeroclaw-data/clawmates-mcp.json` plus a door-shaped provider alias. It is
|
`pinned_skills_text` still inlines full skill bodies, so agents are handed
|
||||||
now the single change that makes **Trigger** a real measurement, and the
|
skills rather than reaching for them. The scorer already reports `Pass` for
|
||||||
precondition for skills moving from inlined bodies to progressive
|
a retrieved skill and `NotObservable` for an inlined one — proven on run 8,
|
||||||
disclosure — which would also cut the prompt cost in item 1.
|
where the retrieved skill scored `pass` and the three inlined ones did not.
|
||||||
|
Switching to progressive disclosure is the remaining change, and it could
|
||||||
|
regress Compliance, so **A/B it** rather than flipping it.
|
||||||
|
|
||||||
4. **Fold the microVM tier onto `container_tool_hooks`.** It has a gate and a
|
3. **Fold the microVM tier onto `container_tool_hooks`.** Two mechanisms for
|
||||||
tap by a different route (`vm_tool_tap` installs into the guest,
|
one job is how they drift — the argument-discarding bug lived in the shared
|
||||||
`microvm_executor` drains inside the turn). Two mechanisms for one job is how
|
parser precisely because nobody looked at it from the container side. The
|
||||||
they drift — and the argument-discarding bug above lived in the shared parser
|
microVM path also still passes no turn agents, so its tool calls stay
|
||||||
precisely because nobody looked at it from the container side. The fleet has
|
unattributed. Blocked: the fleet has been offline for over a week.
|
||||||
been offline for over a week, so this cannot be tested today.
|
|
||||||
|
|
||||||
5. **Pull upstream's egress policy** — `0db7d999a feat(plugins): add shared
|
4. **Pull upstream's egress policy** — `0db7d999a feat(plugins): add shared
|
||||||
egress policy foundation (#9137)`. We are ~220 commits behind; this is the
|
egress policy foundation (#9137)`. ~220 commits behind; this is the one item
|
||||||
one item worth taking, and it is defence for a problem we have not solved.
|
worth taking, and it is defence for a problem we have not solved.
|
||||||
|
|
||||||
|
5. **A narrow credential for the rest of the door.** `SCOPE_SKILLS_READ` covers
|
||||||
|
`/mcp/skills`. The `/mcp` door proper (`mcp_door.rs`) still authenticates
|
||||||
|
with a full session, and it is the one that can `delegate`. Nothing hands it
|
||||||
|
a token today; anything that does should not hand it a person's.
|
||||||
|
|
||||||
## Open decisions that are yours
|
## Open decisions that are yours
|
||||||
|
|
||||||
- **Push.** 10 commits are local. Pushing `main` triggers CI → auto-deploy to
|
|
||||||
gw-04.
|
|
||||||
- **Self-authoring scope.** Agents apply their own `skill_candidate` items with
|
- **Self-authoring scope.** Agents apply their own `skill_candidate` items with
|
||||||
no human click (`CLAWMATES_SKILL_SELF_AUTHORING=0` restores the gate).
|
no human click (`CLAWMATES_SKILL_SELF_AUTHORING=0` restores the gate).
|
||||||
`identity_refinement` and `brain_consolidation` still wait for a human,
|
`identity_refinement` and `brain_consolidation` still wait for a human,
|
||||||
|
|||||||
Reference in New Issue
Block a user