data: record the post-C2 vendor-config gaps (shell vocabulary, repo-root token) - #102
Merged
Merged
Conversation
…oot token)
Executing chock's C2 wave against the 0.2.0 wheel surfaced three vendor-config
data gaps. This records the two the schema can express, both through the
recount tooling rather than by hand, and leaves every golden fixture
byte-identical (data additions, no wire change):
- tools.shell for vscode_copilot (runtime bash/powershell plus the Claude
spelling Bash that PascalCase payloads report; Copilot hooks reference,
"Tool names for hook matching", read 2026-09-01) and for codex_cli (Bash,
settled by the matrix row's own 2026-08-28 live capture). chock's 2026-08-23
witness corroborates but did not decide the vocabulary: its matcher was an
alternation, and an alternation firing does not establish each token, so
pwsh/sh/shell are not recorded.
- repo_root_token, an opt-in schema key for the vendor's own project-directory
token in a hook command line, populated only where a primary source documents
one: claude_code's ${CLAUDE_PROJECT_DIR} (code.claude.com/docs/en/hooks, read
2026-09-01). The field travels with its own evidence record; the pairing is
pinned by test because the stdlib validator has no dependentRequired.
tools/recount/sourced.py holds the new stated tables with their citations and
the per-claim evidence records whose basis differs from the matrix row's
default. The third gap -- Copilot's native versioned camelCase hooks-file
surface, witnessed live by chock -- is a second vendor-documented config
dialect beside the VS Code shape this adapter emits and D1 froze; hook_entry
describes only the emitted shape, so it is recorded as design feedback in the
PR rather than forced into the entry.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Signed-off-by: Claude <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What this changes
Records two of the three vendor-config data gaps chock's C2 wave found against the 0.2.0 wheel, as data derived through the recount tooling:
tools.shellforvscode_copilotandcodex_cli(soadapters.shell_tools()now answers for both), and a new opt-inrepo_root_tokenschema key populated forclaude_code(${CLAUDE_PROJECT_DIR}). No wire change: every golden fixture is byte-identical, and there is no version bump (a 0.2.1 patch release is the owner's decision).Claim check
adapters.shell_tools) already existed and answered().MATRIXrow changes. Per-claim evidence records in the vendor entries name each claim's real basis where it differs from the matrix row's default (tools/recount/sourced.pycarries the citations beside the values).vscode_copilottools.shell: Copilot hooks reference, "Tool names for hook matching" (https://docs.github.com/en/copilot/reference/hooks-reference, read 2026-09-01) — runtimebash(Unix) /powershell(Windows), reported as the Claude tool nameBashin PascalCase payloads.codex_clitools.shell: the matrix row's own live capture (2026-08-28, 36 payloads: "Codex sends exactly two tool names, Bash and apply_patch"), recorded inmatrix-notes.jsonat v0.2.0.repo_root_token: Claude Code hooks reference (https://code.claude.com/docs/en/hooks, "Reference scripts by path", read 2026-09-01) —${CLAUDE_PROJECT_DIR}is "the project root where the session started".Checks
pytest -qpasses (1413 passed, 4 skipped)ruff check .andruff format --check .passtests/check_stdlib_only.pyOK;examples/generate.py --checkanddocs/assets/gen_brand_assets.py --checkalso run clean)git commit -s)Notes for the reviewer
The third gap is deliberately NOT recorded as data — reconciliation outcome and design feedback. chock holds a live witness (2026-08-23, exit-2 deny observed on Copilot CLI and VS Code agent mode) of a hooks-file shape the 0.2.0 entry does not describe: event
preToolUse, entry keystype/matcher/timeout/timeoutSec/bash/command/powershell/windows, envelope{"version": 1}. Reconciling against vendor docs shows both shapes are real, as two documented surfaces of the two products behind this one row:{"version": 1, "hooks": {...}}, camelCase event names, entries carryingbash/powershellper-OS commands,cwd,env,timeoutSec, optionalmatcher. This is what chock witnessed.commandwithwindows/linux/osxstring overrides andtimeoutin seconds; Claude-format configs are parsed compatibly and matchers are parsed but ignored. This is the shapehook_config()emits and the D1 golden fixture froze, so the existing entry (wire_events.pre_tool = "PreToolUse",hook_entry = {wrapper: flat_entries, matcher: false, entry_extra: {windows}}) remains correct for the surface it describes.hook_entrydescribes only the shape this adapter emits (recounted from the frozen fixture), so the vendor-native surface has no honest home in the schema without new constructs — an envelope/version field, per-OS command entry keys, per-surface event-name casing. Forcing it intoentry_extrawould misstate whathook_config()writes, and changinghook_config()to emit the native shape would alter golden fixtures. Recorded here and in the org-plan report as a schema gap for the owner to design, per the brief's stop-and-record rule.Also worth a close look: the witnessed matcher
bash|powershell|pwsh|sh|shelldid not putpwsh/sh/shellintotools.shell— an alternation firing establishes that some token matched, not each token, and no vendor doc read here names those three as tool names.🤖 Generated with Claude Code