Skip to content

t27f: why card -- a social card that draws one deps_why chain, box per spec #10716

Closed

Description

@gHashTag

Boundary

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

  1. 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.
  2. 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

  1. FR-001: card_graph MUST draw exactly one box per spec of the chain, in chain order, and one connector per edge.
  2. 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.
  3. 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.
  4. 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.
  5. 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.
  6. FR-006: a graph that does not fit the caller's buffer MUST return cap + 1, never a truncated graph.
  7. 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

  1. added a commit that references this issue on Oct 19, 2026
    2559102
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions