Skip to content

data: record the post-C2 vendor-config gaps (shell vocabulary, repo-root token) - #102

Merged
open-coder-ai merged 1 commit into
mainfrom
data/post-c2-vendor-config-gaps
Sep 2, 2026
Merged

data: record the post-C2 vendor-config gaps (shell vocabulary, repo-root token)#102
open-coder-ai merged 1 commit into
mainfrom
data/post-c2-vendor-config-gaps

Conversation

@open-coder-ai

@open-coder-ai open-coder-ai commented Sep 1, 2026

Copy link
Copy Markdown
Owner

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.shell for vscode_copilot and codex_cli (so adapters.shell_tools() now answers for both), and a new opt-in repo_root_token schema key populated for claude_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

  • No capability claim is widened without a mechanism behind it — these are data additions plus one opt-in schema key; the runtime lookup (adapters.shell_tools) already existed and answered ().
  • No MATRIX row 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.py carries the citations beside the values).
  • Values come from primary sources:
    • vscode_copilot tools.shell: Copilot hooks reference, "Tool names for hook matching" (https://docs.github.com/en/copilot/reference/hooks-reference, read 2026-09-01) — runtime bash (Unix) / powershell (Windows), reported as the Claude tool name Bash in PascalCase payloads.
    • codex_cli tools.shell: the matrix row's own live capture (2026-08-28, 36 payloads: "Codex sends exactly two tool names, Bash and apply_patch"), recorded in matrix-notes.json at 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 -q passes (1413 passed, 4 skipped)
  • ruff check . and ruff format --check . pass
  • Runtime path is still stdlib-only (tests/check_stdlib_only.py OK; examples/generate.py --check and docs/assets/gen_brand_assets.py --check also run clean)
  • Commits are signed off (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 keys type/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:

  • The Copilot-native format (Copilot hooks reference): {"version": 1, "hooks": {...}}, camelCase event names, entries carrying bash/powershell per-OS commands, cwd, env, timeoutSec, optional matcher. This is what chock witnessed.
  • The VS Code agent-hooks format (https://code.visualstudio.com/docs/agent-customization/hooks and its hooks reference): no envelope, PascalCase event names, entries carrying command with windows/linux/osx string overrides and timeout in seconds; Claude-format configs are parsed compatibly and matchers are parsed but ignored. This is the shape hook_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_entry describes 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 into entry_extra would misstate what hook_config() writes, and changing hook_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|shell did not put pwsh/sh/shell into tools.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

…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>
@open-coder-ai
open-coder-ai marked this pull request as ready for review September 2, 2026 00:32
@open-coder-ai
open-coder-ai merged commit 8a4376b into main Sep 2, 2026
14 checks passed
@open-coder-ai open-coder-ai mentioned this pull request Sep 2, 2026
4 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants