You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
t27f: why card -- a social card that draws one deps_why chain, box per spec #10716
New file specs/t27f/why_card.t27, a new skill card specs/skills/t27-why-card.t27 with its seal, and a row in .claude/skills/t27f/SKILL.md. Nothing else changes. The module reads the chain that deps_why in specs/t27f/spec_deps.t27 (t27#10705, PR #10715) writes, and returns an ffmpeg filter graph for a 1080x1350 card. It posts nothing. Publishing stays the owner's call.
User Scenarios
TRI CLAW is asked why lesson_reel pulls in ci/affected. It pipes t27c use-edges into why_card with WHY_A and WHY_B set, renders the graph with ffmpeg, and gets a card: one box per spec from A down to B, each pair joined by a uses connector, a hop count in the footer.
A chain that does not exist, a refused walk, a broken chain or one too long for the card returns no graph, and the reason is printed, so no card is ever drawn that does not match a real deps_why answer.
Requirements
FR-001: card_graph MUST draw exactly one box per spec of the chain, in chain order, and one connector per edge.
FR-002: every box MUST use the exact style of spec_graph_view (stroke VIEW_LABEL_STROKE[0], fill VIEW_LABEL_FILL[0]), because every edge deps_why writes is a resolved use line.
FR-003: names MUST drop a leading specs/ and a trailing .t27, and the text size MUST fit the box at the font's 3/5 em advance.
FR-004: for every chain length from 2 to 7 boxes, the column MUST sit inside the band 260..1150 px, centred, with gaps of at least 30 px.
FR-005: card_graph MUST return 0 for none, refused, 0 hops, a chain whose hops do not join A to B, a non-exact edge, a name outside [A-Za-z0-9_/.-] or longer than 58 bytes, and a chain of more than 7 specs.
FR-006: a graph that does not fit the caller's buffer MUST return cap + 1, never a truncated graph.
FR-007: each rule MUST have a test, and each refusal a negative control.
Success Criteria
t27c test-report specs/t27f/why_card.t27 reports every test passing, with 0 vacuous.
A lab render of a real corpus chain has, at the sampled pixels, the box fill inside every box and the backdrop in every gap. A control pixel outside the column reads as backdrop.
The seal verifies and the corpus ratchet stays CLEAN.
Activity
t27f: why card -- draw one deps_why chain as a social card, box per s…