Skip to content

Add generated theme-aware capability-matrix figure - #126

Merged
jothimani-rajendran merged 6 commits into
mainfrom
launch/block2
Sep 9, 2026
Merged

Add generated theme-aware capability-matrix figure#126
jothimani-rajendran merged 6 commits into
mainfrom
launch/block2

Conversation

@jothimani-rajendran

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

Copy link
Copy Markdown
Collaborator

What this changes

Adds docs/figures/ (the open-coder-ai launch programme's shared figure tooling, block 2):
a capability-matrix figure and a social card generated from src/agentseam/matrix.py, plus
the shared family diagram carried byte-identical by every sibling repository. Embeds all
three in README.md and adds a CI job that regenerates every docs/figures/make_*.py and
fails the build on any diff.

  • docs/figures/palette.py, make_family.py, family-{light,dark}.svg — copied verbatim
    from the shared programme source; sha256sum verified identical at copy time and after
    every local regeneration.
  • docs/figures/make_matrix.py — renders matrix-{light,dark}.svg: 16 agents × 12 events,
    read from agentseam.matrix at render time. Every cell is grade + a two-letter glyph
    (colour is never the only carrier); "none" (no hook surface) renders in the shared
    NEUTRAL grey, never the pale end of the graded ramp; "enforced" is asserted against the
    data and, since no cell reaches it, is named explicitly rather than silently omitted.
  • docs/figures/make_social.py — renders social-card.{svg,png} (1280×640, light only):
    the repo name, one line, and one true number pulled from the same tally the matrix figure
    computes, so the two can never disagree.
  • .github/workflows/ci.yml — new figures job, pinned to the SHAs already used elsewhere
    in this workflow.

Claim check

Not applicable — no MATRIX row or capability claim changes. The figure is read-only over
existing, already-verified data; nothing here widens what any adapter is claimed to do.

Checks

  • pytest -q passes — 1598 passed, 4 skipped (unchanged from main)
  • ruff check . and ruff format --check . pass
  • Runtime path is still stdlib-only — docs/figures/ is design tooling, not
    src/agentseam; its generators import only palette (this repo) plus
    agentseam itself, and cairosvg only inside a guarded, optional PNG step for the
    social card that the CI figures job never needs (it only regenerates and diffs SVGs)
  • Commits are signed off (git commit -s)

Notes for the reviewer

  • Verified facts re-derived from the code, not typed by hand: len(matrix.MATRIX) == 16;
    the 12 events are exactly pre_tool, post_tool, stop, tool_failure, prompt_submit, session_start, session_end, pre_compact, subagent_start, subagent_stop, instructions_loaded, file_changed (there is no file_write event); at pre_tool, 11
    agents are best-effort, Cursor alone is enforceable, and aider/copilot/replit/
    zed are none — no agent anywhere in the 192-cell matrix is graded enforced.
    enforced=0, enforceable=2, best-effort=33, detect=56, none=101.
    docs/figures/make_matrix.py cell_grades() computes this each run; make_social.py
    imports that same function rather than recomputing it.
  • The pyproject.toml ruff format exclude that an earlier revision added for the two
    shared files has been dropped: the shared source was corrected upstream so both files now
    pass ruff check and ruff format --check untouched, with byte-identical SVG output.

🤖 Generated with Claude Code

Renders the 16x12 capability matrix, the shared family diagram, and the
social card from src/agentseam/matrix.py via docs/figures, embeds them
in README.md, and wires a CI job that regenerates and diffs on drift.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Signed-off-by: Claude <noreply@anthropic.com>
Removes an unused import ruff check caught, applies ruff format to the
two generators this repo owns, and excludes the two byte-identical
shared files (palette.py, make_family.py) from ruff format the same
way *.py.tmpl already is -- they must stay identical across every
open-coder-ai repository and are not this repo's style to reformat.
ruff check still lints them like any other source file.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Signed-off-by: Claude <noreply@anthropic.com>
The four repositories that carry docs/figures/palette.py and make_family.py
byte-identically configure ruff format at three different line lengths --
agentseam and chock at 120, context-report at 100, chock-catalog at ruff's
default 88 -- so no single formatted output can satisfy all of them. A file
formatted at 88 gets joined at 120; one formatted at 120 gets split at 88.

Rewritten so every statement fits on one line under 88 characters with
nothing split across lines, and magic trailing commas pin the collection
literals. A formatter at any width now finds nothing to join or wrap:
ruff format --check and ruff check are both clean at 88, 100 and 120.

That removes the reason for the ruff format exclude this branch added, so
the exclude is dropped and both files are linted and format-checked here
like any other source file. The generated SVGs are byte-identical, verified
by regenerating every docs/figures/make_*.py and diffing.

Co-Authored-By: Claude Opus 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 01:50
jothimani-rajendran and others added 3 commits September 8, 2026 21:50
_block's `filled` flag is now keyword-only and render's unused `name`
parameter is `_name`, fixing FBT003 and ARG001 under the stricter ruff
select one sibling repository uses. Every generated SVG is byte-identical,
verified by regenerating and diffing.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Signed-off-by: Claude <noreply@anthropic.com>
@jothimani-rajendran
jothimani-rajendran merged commit 232da28 into main Sep 9, 2026
16 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