Skip to content

docs: README that leads with the matrix, and a GIF that tells the truth - #123

Merged
jothimani-rajendran merged 6 commits into
mainfrom
docs/readme-landing
Sep 9, 2026
Merged

docs: README that leads with the matrix, and a GIF that tells the truth#123
jothimani-rajendran merged 6 commits into
mainfrom
docs/readme-landing

Conversation

@jothimani-rajendran

@jothimani-rajendran jothimani-rajendran commented Sep 8, 2026

Copy link
Copy Markdown
Collaborator

What this changes

Rewrites the README to the org-wide landing-page order: hero demo GIF first, honest
capability table before the pitch copy, a 16-row Supported agents table with a Verified
column, and a one-sentence live-run-vs-doc-derived count. Adds docs/assets/demo.tape +
rendered demo.gif, a manual render-demo workflow, and a quickstart CI job that runs
the README's own Quick start block for real. Moves the Bundles, Design and per-vendor
example-page-generator sections to docs/ verbatim. One CHANGELOG [Unreleased] entry;
no version bump.

No agent is graded enforced at pre_tool on main today (11 best-effort, 1
enforceable/Cursor, 4 none), so the GIF's end frame and the README's install-output
example show those real levels rather than the enforced claim the original owner brief
assumed — see Deviations below.

Claim check

Not applicable — no adapter or MATRIX changes; this PR only reorganizes and re-verifies
existing claims already backed by data/matrix.json.

Checks

  • pytest -q passes (1598 passed / 4 skipped on Python 3.11; 1595 passed / 7 skipped
    on Python 3.10) — includes the README-consistency tests
    (test_repo_standards.py::test_the_front_door_docs_name_every_decision_outcome,
    test_instructions.py::test_the_readme_arithmetic_cannot_drift)
  • ruff check . and ruff format --check . pass
  • Runtime path is still stdlib-only (tests/check_stdlib_only.py on 3.10 and 3.11)
  • Commits are signed off (git commit -s)
  • examples/generate.py --check passes (unaffected — no adapter/matrix changes)
  • quickstart CI job: verified locally by extracting and running the README's real
    Quick start block end-to-end (wires 12 agents, exit 0), then deliberately breaking
    it (--nonexistent-flag) and confirming the same extraction exits 2 before
    reverting

Evidence gathered before writing

  • agentseam matrix --evidence: of the 12 agents that claim pre_tool at all, 4
    (claude_code, codex_cli, cursor, vscode_copilot) rest on a live run; the other 8 rest on
    documentation or a third-party install, not on a live run.
  • agentseam install all "python3 my_handler.py" --events pre_tool --repo .: wires 12
    agents, all best-effort except Cursor (enforceable); aider, copilot, replit, zed are
    skipped (no hook surface) — matches the brief's stated breakdown exactly.
  • GIF: 184,795 bytes / 0.18 MB (budget 2.5 MB), last frame is the real install-output
    punchline.
  • README word count excluding tables/code: 1,231 (target 1,200–1,600).

Deviations from the brief

  • The Supported agents table now has a genuine 16th row for copilot (the GitHub Copilot
    CLI marketplace-bundle identity), which the prior README omitted entirely. Its own
    vendor notes say this is a packaging identity dispatched through the vscode_copilot
    adapter at runtime, not an independent hook surface — labelled accordingly rather than
    as a plain "no hook surface" row.
  • tests/test_repo_standards.py::test_the_front_door_docs_name_every_decision_outcome
    requires README.md itself to name every Decision outcome in backticks. The sentence
    that did this previously lived in the "per-vendor examples" section the brief asks to
    move to docs/ verbatim, so a short equivalent sentence naming all eight outcomes
    (allow, deny, escalate/ask, transform/rewrite, warn, vouch) was added to
    the front-matter paragraph instead — per CONTRIBUTING.md/worker-protocol: fix the
    README, never the test.
  • Junie/Kimi Code's install paths in the GIF and Quick start read under a fresh
    $(mktemp -d) $HOME (e.g. /tmp/tmp.XXXXXX/.junie/config.json) rather than a
    committed literal path, per the brief's own instruction to avoid a container-identifying
    path — this is a generic, non-identifying temp path, regenerated on every render. See
    the orchestrator-review response below for why this is not further reducible.

Orchestrator review response (2026-09-08)

Three findings verified and fixed:

  • Tape's install command was missing --repo . that the README's quick-start block has —
    added, re-rendered the GIF.
  • Contributing had no good-first-issue link — added.
  • "8 rest on vendor documentation alone" overstated it (gemini_cli is vendor-source,
    windsurf is third-party-install) — reworded.

One finding investigated and not applied: the suggested fix for junie/kimi_code's absolute
/tmp/... path (export HOME="$PWD") does not do what was claimed. Tested it directly —
it still prints an absolute path, just under the demo dir instead of a separate temp dir —
because install_config.resolve() expands a ~-prefixed CONFIG_PATH with
os.path.expanduser and never relativizes it against repo_root for any HOME value.
Making these two rows read ./... needs an adapter/resolve() code change, out of scope
for a docs-only PR. Left HOME=$(mktemp -d) as originally written, which matches the
shared standard's own prescribed fix ("set HOME to a temp dir in the hidden setup") and
prints a fresh, non-identifying path on every render.

Notes for the reviewer

docs/render-demo.yml's SHA pins were copied verbatim from open-coder-ai/chock's
existing workflow of the same name, per the shared README-refresh standard.

🤖 Generated with Claude Code

Renders the real loop: a six-line handler wired into every coding agent's
own hook system in one command. The end frame is agentseam install all's
real output, one line per agent naming the enforcement level the matrix
actually grades it -- best-effort for eleven, enforceable for cursor.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Signed-off-by: Claude <noreply@anthropic.com>
Manual-dispatch job that renders docs/assets/demo.tape with VHS and
uploads the GIF as an artifact, so the committed demo.gif stays
reproducible without spending CI minutes on every push.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Signed-off-by: Claude <noreply@anthropic.com>
Reorders the front door: hero GIF first, then the honest capability
table before the marketing copy, a Supported agents table with a
Verified column (basis and date from `agentseam matrix --evidence`),
and a one-sentence count of how many pre_tool claims are live-run
witnessed versus doc-derived (4 of 12). Moves Bundles, Design and the
per-vendor example-page-generator sections to docs/ verbatim; nothing
in them is deleted.

No agent is graded `enforced` at pre_tool today, so the GIF's end
frame and the README's install-output example show the real levels
the matrix prints (best-effort, enforceable) rather than the claim
the original brief assumed.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Signed-off-by: Claude <noreply@anthropic.com>
tools/quickstart_block.py extracts the first \`\`\`bash fence under
"## Quick start" (stdlib only); the new quickstart CI job installs the
package under test, runs the extracted block in a fresh temp
directory, and fails if it does. Verified locally: a deliberately
broken install flag makes the job exit 2, and the same block against
the real README exits 0 and wires 12 agents.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Signed-off-by: Claude <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Signed-off-by: Claude <noreply@anthropic.com>
Orchestrator review of PR #123 found three real issues:

- Tape and README quick-start disagreed: the tape's install command
  was missing --repo . that the README shows. Added it and re-rendered
  the GIF (184,795 bytes, still under the 2.5 MB budget).
- Contributing had no good-first-issue link, which the shared standard
  requires.
- "8 rest on vendor documentation alone" overstated it: of those 8,
  gemini_cli is vendor-source and windsurf is third-party-install, not
  vendor-docs. Reworded to "documentation or a third-party install."

The review's suggested fix for a fourth finding -- junie/kimi_code
printing an absolute /tmp/... path in the GIF -- does not do what was
claimed. Tested `export HOME="$PWD"` directly: it still prints an
absolute path (just under the demo dir instead of a separate temp
dir), because install_config.resolve() expands a `~`-prefixed
CONFIG_PATH with os.path.expanduser and never relativizes it against
repo_root for any HOME value. There is no way to make these two rows
read "./..." without changing adapter/resolve() code, which is out of
scope for a docs-only PR. Left HOME=$(mktemp -d) as originally
written, which already matches the shared standard's own prescribed
fix ("set HOME to a temp dir in the hidden setup") and prints a fresh,
non-identifying path on every render -- not a real container path.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Signed-off-by: Claude <noreply@anthropic.com>
@jothimani-rajendran
jothimani-rajendran marked this pull request as ready for review September 9, 2026 00:13
@jothimani-rajendran
jothimani-rajendran merged commit b3e8a4d into main Sep 9, 2026
15 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.

2 participants