Skip to content

chock sync wires every agentseam adapter it can reach (E-ALL) - #256

Merged
jothimani-rajendran merged 10 commits into
mainfrom
e-all-sync-every-adapter
Oct 12, 2026
Merged

jothimani-rajendran merged 10 commits into
mainfrom
e-all-sync-every-adapter

Conversation

@jothimani-rajendran

@jothimani-rajendran jothimani-rajendran commented Oct 11, 2026 •

Copy link
Copy Markdown
Collaborator

What

E-ALL from org-plan plan/one-oh-gaps.md (c5a8305). chock sync now takes its agent list from agentseam's adapter registry, with agentseam pinned to main bebbfa6 as a direct reference.

Agent names and the pin

  • Every adapter is a valid supported_agents name. CHOCK_AGENT is the alias table plus each remaining adapter id, written with -.

Newly wired: every adapter whose hook config is in the repository as JSON or TOML

Agent Hook file
factory_droid .factory/hooks.json
goose .agents/plugins/chock/hooks/hooks.json (chock's own plugin slot)
openhands .openhands/hooks.json
mistral_vibe one owned block in .vibe/hooks.toml
  • Mistral Vibe's block goes through agentseam's write_block and render_config.
  • goose needs no plugin.json, per goose's source at aaif-goose/goose@3295f5e:
    • crates/goose/src/plugins/discovery.rs:56-101 and :181-201 treat every subdirectory of <project>/.agents/plugins/ as a plugin.
    • crates/goose/src/hooks/mod.rs:424-440 loads each plugin's hooks/hooks.json.
    • Goose's own test finds_project_scope_plugin (discovery.rs:265-310) writes only hooks/hooks.json.
    • The manifest is read only when installing a plugin from source (plugins/formats/open_plugins.rs:41-60).

How each new runtime answers

  • Each answers in its vendor's grammar. These were measured against agentseam's goldens.
  • None of these agents can prompt. So an ask becomes deny or block, and CHOCK_CAN_ASK is 0 at their pre-tool gates.
  • Each vendor's documented timeout field is recorded with its source URL.

What sync prints

  • For each agent it wires: agentseam's tier-table row for pre-tool (tier, grade, fail mode, basis, date).
  • "Untested" when the witness ledger has no live run of chock's hooks in that client.

Not wired yet, each listed in a test with its reason:

  • cline: a hooks directory runs one command per event.
  • junie and kimi_code: their config is in the home directory.

Other changes

  • Witness updates (orchestrator additions):
    • Cursor no longer gets the install "Untested" warning (W-CUR, witness-cursor-2026-10-11).
    • Copilot's gate label now says the write is judged before it lands (witness-copilot-2026-10-11, Copilot CLI 1.0.94). A client note says VS Code agent mode is unmeasured.
  • figures.yml gains a step that runs only on failure. It prints each drifted docs/figures/*.png as base64, so the runner's exact raster can be committed. actionlint and zizmor are clean, and it adds no new action, permission or secret.
  • README and docs/enforcement-surfaces.md gain rows. Both tables are test-checked against surfaces.py.

Definition of done

  • chock check validate and verify, and chock sync --repo . --check: all wait on the owner regen below.
  • chock check --only matrix
  • pytest -q (local, Python 3.12): 3583 passed, 88 skipped, 1 failed. The failure is test_compiled_freshness, which waits on the same owner regen.
  • ruff check ., ruff format --check .
  • Changelog fragments added

Owner step (it must be the last commit): run chock sync --repo . and commit .chock and chock.lock. Measured in a scratch copy, it modifies 9 .chock/bin files and chock.lock and adds 60 .chock/compiled files.

Claims

  • No surface is described as enforcing more than it installs. Grades and bases come from agentseam's tier table, and the new agents print "Untested".

🤖 Generated with Claude Code

jothimani-rajendran and others added 2 commits October 11, 2026 18:31
Pin agentseam to main bebbfa6 as a direct reference (its newest adapters
are unreleased). The agent list comes from agentseam's adapter registry:
every adapter is a valid supported_agents name, and every one whose hook
config sits in the repository as JSON or TOML gets hook entries and a
.chock/bin/<agent>.py runtime.

- New: factory_droid, goose (chock's own .agents/plugins/chock/ slot),
  openhands, and mistral_vibe (one owned block in .vibe/hooks.toml).
- Each vendor's documented hook timeout field is recorded with its source.
- Factory Droid's bare event map merges its after-tool recorder.
- Sync prints agentseam's pre-tool tier row with its basis and date, and
  "Untested" for an agent the witness ledger has no live run of.
- honours_ask claims for the four, tested against their rendered runtimes;
  CHOCK_CAN_ASK is 0 at each one's pre-tool gate, per vendor data.
- Not wired yet, and named in a test with the reason: cline (hooks
  directory, one command per event) and junie, kimi_code (home config).
- Grok's instruction file is AGENTS.md upstream now: the wrapper-deletion
  tests use junie's own file instead.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Jothi Mani Rajendran <250249270+jothimani-rajendran@users.noreply.github.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Jothi Mani Rajendran <250249270+jothimani-rajendran@users.noreply.github.com>

Copy link
Copy Markdown
Collaborator Author

The validate jobs (3.11, 3.12 and 3.13) fail at the chock check --only validate step with compiled_drift in this repo's own .chock/bin and .chock/compiled. The cause is the agentseam pin bump: its bundler changed the 9 runtimes, and the 4 new agents add 60 compiled fragments. Those files, plus chock.lock, are owner-only, so this branch cannot regenerate them.

Fix (owner), on this branch:

pip install -e . && chock sync --repo . && git add .chock chock.lock && git commit -s -m "regen .chock for agentseam bebbfa6"

Measured in a scratch copy, that commit modifies 9 .chock/bin/*.py files and chock.lock and adds 60 .chock/compiled files. After it, chock check --only verify and chock sync --repo . --check were clean, and the local full pytest had only test_compiled_freshness failing before the regen.

figures and brand-assets failed on the placeholder archive hash. dddb4f8 sets the hash pip measured.


Generated by Claude Code

jothimani-rajendran and others added 3 commits October 11, 2026 18:59
Witnessed on Windows: block-no-verify refused at beforeShellExecution and
pin-github-actions refused at the preToolUse write (org-plan
witness/results/witness-cursor-2026-10-11.md). The client warning that
chock has not witnessed an install now names no client; the test pins that
no client gets it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Jothi Mani Rajendran <250249270+jothimani-rajendran@users.noreply.github.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Jothi Mani Rajendran <250249270+jothimani-rajendran@users.noreply.github.com>
Copilot CLI refused an unpinned workflow create at preToolUse and nothing
landed (org-plan witness/results/witness-copilot-2026-10-11.md). copilot's
gate_turn_end_only is false, so its gate label reads 'blocks on an agent's
file writes and at turn end'; it leaves the no-write-tool warning, and a
client note says VS Code agent mode is unmeasured.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Jothi Mani Rajendran <250249270+jothimani-rajendran@users.noreply.github.com>

Copy link
Copy Markdown
Collaborator Author

figures on 1b1e6e2: every SVG and the social preview now match the generators. Only docs/figures/social-card.png differs byte for byte. Its text has to change: the card now reads "20 chock agent names map to 19 agentseam vendors".

I could not reproduce CI's rasterization from this container, which runs Ubuntu 24.04 with cairo 1.18.0 and the pinned cairosvg 2.9.0, cairocffi 1.7.1 and pillow 12.3.0. As an oracle I regenerated main's own card from main's source. Across 13 fontconfig sets (DejaVu, Liberation, Noto and others, with and without the system conf.d), none reproduced main's committed PNG (26d0a619…, last rendered 2026-09-09).

The fix needs a CI-identical render of that one file. Either:

  • a run of cd docs/figures && python make_social_card.py on an ubuntu-latest runner, with the PNG committed; or
  • a figures.yml step that uploads docs/figures/social-card.png as an artifact on failure, so the render can be committed. That is a workflow edit, so it needs SHA pins and the orchestrator's review.

The validate jobs remain blocked on the owner-only .chock regen in the earlier comment.


Generated by Claude Code

jothimani-rajendran and others added 5 commits October 12, 2026 02:41
Signed-off-by: Jothi Mani Rajendran <250249270+jothimani-rajendran@users.noreply.github.com>
A PNG rasterizes differently off the runner (fonts), so it cannot be
regenerated locally byte for byte. A failure-only step prints each
differing docs/figures PNG so the runner's exact bytes can be committed.
No new action, permission or secret; the drift check still fails.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Jothi Mani Rajendran <250249270+jothimani-rajendran@users.noreply.github.com>
Signed-off-by: Jothi Mani Rajendran <250249270+jothimani-rajendran@users.noreply.github.com>
Decoded from the figures job's base64 print (job 114641371959); blob
f7e4600 matches the post-image in CI's drift diff, and every chunk CRC
checks.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Jothi Mani Rajendran <250249270+jothimani-rajendran@users.noreply.github.com>
Signed-off-by: Jothi Mani Rajendran <250249270+jothimani-rajendran@users.noreply.github.com>
@jothimani-rajendran
jothimani-rajendran marked this pull request as ready for review October 12, 2026 14:44
@jothimani-rajendran
jothimani-rajendran merged commit 70738cb into main Oct 12, 2026
24 checks passed
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.

1 participant