Copies didbot's twelve daemon protocol fixtures into fixtures/protocol/, byte for byte from didbot bceb7d83, which fixtures/protocol/didbot-commit records. scripts/refresh-fixtures.sh copies them again from a didbot checkout. tools/test_hook.py now checks the report the hook writes for every event hooks.json wires against the ask-report-* fixtures' fields, types and version. It also feeds the hook every answer-* fixture, and checks that the hook never raises and shows the model what each one says. prek runs these checks when the hook, its wiring or the fixtures change. This is parts 1 and 2 of https://tangled.org/did:plc:swttlkbjvcoln67iievud7b3/issues/164.
One wire change: a main-thread report now leaves context, kind and call off rather than sending them as null, as the fixtures do. The daemon reads both the same way. Reports still carry the measurements plan/collection.md records, which the daemon ignores. The check allows those by name, and fails if one takes the name of a field the daemon reads.
Every message the hook shows the model, and every complaint it logs, was checked. None tells the agent to build or install anything. The only commands they name are didbot-oauth approve <token> and didbot-oauth decline <token>, so nothing changes there.
🤖 Generated with Claude Code