Add generated theme-aware capability-matrix figure - #126
Merged
Conversation
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
marked this pull request as ready for review
September 9, 2026 01: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>
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
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, plusthe 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_*.pyandfails the build on any diff.
docs/figures/palette.py,make_family.py,family-{light,dark}.svg— copied verbatimfrom the shared programme source;
sha256sumverified identical at copy time and afterevery local regeneration.
docs/figures/make_matrix.py— rendersmatrix-{light,dark}.svg: 16 agents × 12 events,read from
agentseam.matrixat render time. Every cell is grade + a two-letter glyph(colour is never the only carrier); "none" (no hook surface) renders in the shared
NEUTRALgrey, never the pale end of the graded ramp; "enforced" is asserted against thedata and, since no cell reaches it, is named explicitly rather than silently omitted.
docs/figures/make_social.py— renderssocial-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— newfiguresjob, pinned to the SHAs already used elsewherein this workflow.
Claim check
Not applicable — no
MATRIXrow or capability claim changes. The figure is read-only overexisting, already-verified data; nothing here widens what any adapter is claimed to do.
Checks
pytest -qpasses — 1598 passed, 4 skipped (unchanged frommain)ruff check .andruff format --check .passdocs/figures/is design tooling, notsrc/agentseam; its generators import onlypalette(this repo) plusagentseamitself, andcairosvgonly inside a guarded, optional PNG step for thesocial card that the CI
figuresjob never needs (it only regenerates and diffs SVGs)git commit -s)Notes for the reviewer
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 nofile_writeevent); atpre_tool, 11agents are
best-effort, Cursor alone isenforceable, andaider/copilot/replit/zedarenone— no agent anywhere in the 192-cell matrix is gradedenforced.enforced=0, enforceable=2, best-effort=33, detect=56, none=101.docs/figures/make_matrix.pycell_grades() computes this each run;make_social.pyimports that same function rather than recomputing it.
pyproject.tomlruff formatexclude that an earlier revision added for the twoshared files has been dropped: the shared source was corrected upstream so both files now
pass
ruff checkandruff format --checkuntouched, with byte-identical SVG output.🤖 Generated with Claude Code