# Ticket-Owned Worker Handoffs Validation

ID: evidence:20260515-ticket-owned-worker-handoffs-validation
Type: Evidence Dossier
Status: recorded
Created: 2026-05-15
Updated: 2026-05-15
Observed: 2026-05-15

## Summary

Validation after the ticket-owned worker handoff migration observed passing Core and Playbooks smoke/package checks, a clean Markdown whitespace diff check, and no active packet terminology in shipped Core skill, agent, Playbook, command, documentation, test, or eval surfaces searched outside historical `.loom` records.

## Procedure And Observations

The following commands were run from `/Users/alexanderbutler/code_projects/personal/agent-loom` after the post-audit fix to `loom-core/skills/loom-ralph/SKILL.md`:

- `npm --prefix loom-core run smoke` — passed. Output included `"ok": true`, `skillCount: 11`, `agentCount: 2`, Driver/Weaver prompt-match checks, Driver edit permissions allowing `.loom/tickets/**`, `.loom/evidence/**`, and `.loom/audit/**` while denying direction-setting records, and no `.loom/packets` Driver permission in the smoke output.
- `npm --prefix loom-core run pack:check` — passed. It reran Core smoke successfully and completed `npm pack --dry-run`; tarball contents included the new `skills/loom-ralph/references/run-shape.md` and `skills/loom-ralph/references/running-ralph.md`, and did not include the removed packet reference/template files.
- `npm --prefix loom-playbooks run smoke` — passed. Output included `"ok": true`, `commandCount: 25`, `macroCount: 25`, `playbookSkillPathsRegistered: false`, and `skillsResult: "source corpus only; not registered through config.skills.paths"`.
- `npm --prefix loom-playbooks run pack:check` — passed. It reran Playbooks smoke successfully and completed `npm pack --dry-run`.
- `git diff --check` — passed with no output.

Targeted searches were run with the repository search tool after the final fix:

- `loom-core/skills/**/*.md` for `packet`, `packets`, `.loom/packets`, or `packet:` — no matches.
- `loom-core/agents/**/*.md` for the same terms — no matches.
- `loom-core/codex/agents/*.toml` for the same terms — no matches.
- `loom-playbooks/**/*.md` for the same terms — no matches.
- `loom-playbooks/**/*.toml` for the same terms — no matches.
- Root current docs and guidance files `README.md`, `PROTOCOL.md`, `ARCHITECTURE.md`, `INSTALL.md`, `AGENTS.md`, and `CLAUDE.md` for the same terms — no matches.
- `loom-core/**/*.md`, `loom-playbooks/**/*.md`, `tests/**`, and `evals/**/*.md` for the same terms — no matches in active non-`.loom` surfaces.

An earlier bounded review run found `FIND-001`, a malformed bullet in `loom-core/skills/loom-ralph/SKILL.md`; a follow-up worker fixed that wording and reran `git diff --check` and `npm --prefix loom-core run smoke`, both of which passed. The final validation commands above were then rerun.

## What This Shows

- Supports `ticket:20260515-core-ticket-owned-worker-doctrine#ACC-001` through `ACC-005`: Core skills no longer contain active packet terminology, Core smoke and pack checks passed, and the Ralph invariant defect found during review was fixed.
- Supports `ticket:20260515-agent-surfaces-ticket-worker-model#ACC-001` through `ACC-005`: Core agent and Codex agent surfaces contain no packet terminology, Core smoke confirms Driver permissions no longer include `.loom/packets`, and Core checks passed.
- Supports `ticket:20260515-playbook-ticket-worker-language#ACC-001` through `ACC-005`: Playbook source and generated command surfaces contain no packet terminology, Playbooks smoke confirms 25 command macros, and Playbooks checks passed.
- Supports `ticket:20260515-docs-validation-no-packets#ACC-001` through `ACC-004`: current docs/tests/evals searched outside `.loom` contain no packet terminology, and all package/Markdown checks passed.
- Supports `spec:ticket-owned-worker-handoffs#REQ-001` and `REQ-008` for active product surfaces searched outside historical `.loom` records.

## What This Does Not Show

- It does not prove every historical `.loom` packet record has been removed or rewritten; that is intentionally out of scope and contradicted by `decision:0002`, which allows historical packet records to remain as history.
- It does not prove runtime behavior inside every external harness beyond the package smoke checks and source inspection represented by the commands above.
- It does not by itself close the tickets or accept residual risk; ticket closure and audit disposition remain ticket-owned.

## Related Records

- `decision:0002` - durable decision retiring packets as an active surface while keeping Ralph.
- `spec:ticket-owned-worker-handoffs` - behavior contract validated by these observations.
- `plan:20260515-ticket-owned-worker-handoffs` - migration plan.
- `ticket:20260515-core-ticket-owned-worker-doctrine` - Core skill migration ticket.
- `ticket:20260515-agent-surfaces-ticket-worker-model` - agent surface migration ticket.
- `ticket:20260515-playbook-ticket-worker-language` - Playbook language migration ticket.
- `ticket:20260515-docs-validation-no-packets` - docs/final validation ticket.
