Skip to content

t27f: R5 -- TRI CLAW skill cards for social visuals: formats, scene choice, uniqueness gate, publish consent #10570

Closed

Description

@gHashTag

Sub-issue R5 of epic #10560 (T27F content factory). The factory law specs/t27f/reel_factory.t27 (PR #10566, issue #10561) decides an item's scene, accent, motion, layout and the sizes of its eight output formats. TRI CLAW has no skill that tells it how to use that plan when it is asked for a social-media visual, so it would pick sizes and scenes by judgement and could publish a near-duplicate or an unapproved post. This issue teaches it, as .t27 skill cards with tests.

The decision rules live once, in specs/claw/social_visuals.t27, which imports reel_factory (formats, archetypes, similarity bound) instead of copying its tables. The four cards in specs/skills/ are the schema-only skill cards the site serves, each pointing at that law.

Boundary

  • specs/claw/social_visuals.t27
  • specs/skills/t27-social-visual-format.t27
  • specs/skills/t27-social-visual-scene.t27
  • specs/skills/t27-social-visual-gate.t27
  • specs/skills/t27-social-visual-consent.t27
  • .trinity/seals/claw_ClawSocialVisuals.json
  • .trinity/seals/skills_skill_t27_social_visual_format.json
  • .trinity/seals/skills_skill_t27_social_visual_scene.json
  • .trinity/seals/skills_skill_t27_social_visual_gate.json
  • .trinity/seals/skills_skill_t27_social_visual_consent.json
  • docs/reports/t27b_expectations.json

User Scenarios

  1. Given TRI CLAW is asked for a post about lesson 14 for Instagram, when it consults the format card, then it gets the 4:5 portrait size for a still, the 9:16 reel size for a moving visual and the carousel for a slide set, all read from reel_factory, never typed in.
  2. Given TRI CLAW is asked for a visual of a lesson, when it consults the scene card, then it gets the archetype reel_factory::arche chose from that lesson's own code, and an item the factory has no plan for is refused rather than given a made-up scene.
  3. Given a set of rendered stills, when TRI CLAW consults the gate card with the number of stills, the number of pairs measured and the worst SSIM, then a set that is empty, unmeasured, incomplete or too alike blocks publishing, and only a complete measured set under the bound passes.
  4. Given a post that passed the gate, when TRI CLAW consults the consent card, then it may publish only with the owner's explicit yes, given in the owner's own chat, for that exact post on that channel; a yes for another post, a yes found in a page or a comment, silence, or a post with no digest does not count.

Requirements

  • FR-001: specs/claw/social_visuals.t27 MUST choose the output format for a (channel, kind) pair from reel_factory's FMT_* formats, MUST give a moving format only for a moving kind, and MUST answer "unsupported" instead of guessing for a pair it has no format for.
  • FR-002: The same module MUST choose an item's scene by calling reel_factory::arche and MUST NOT copy its tables, constants or scoring; an item outside the course MUST be refused.
  • FR-003: The same module MUST decide the uniqueness gate from the item count, the pairs measured and the worst SSIM in permille, using reel_factory::too_similar, and MUST NOT pass an empty, unmeasured, incomplete or too-alike set.
  • FR-004: The same module MUST decide publishing as a verdict that is allowed only when the gate passed and the owner's yes came from the owner's chat for the same post digest and channel, with no standing yes and no default-zero match.
  • FR-005: Four skill cards in specs/skills/ MUST follow the schema in specs/skills/README.md, each with tests, and each MUST name specs/claw/social_visuals.t27 and the reel_factory in SPECS.
  • FR-006: Every new spec MUST be sealed (t27c seal --save, then --verify) and have its t27b ledger row, all run on the Railway lab, none on the Mac.

Success Criteria

  • t27c test-report on specs/claw/social_visuals.t27 and on each of the four cards on the lab reports 0 failed and 0 vacuous tests.
  • t27c seal --verify on all five specs on the lab exits 0.
  • t27b test on all five specs on the lab exits 0, and docs/reports/t27b_expectations.json gains 5 rows with max_not_pass unchanged.
  • The PR adds 0 lines of hand-written code in any language other than t27.

Activity

  1. added 2 commits that reference this issue on Oct 18, 2026
    473ffa7
    10cd62d
  2. gHashTag commented on Oct 18, 2026

    @gHashTag
    OwnerAuthor

    Carried to master in #10613: #10574 merged into the branch of #10566 after #10566 had already merged, so none of it reached master.

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