Skip to content

t27f: idea factory -- any idea in any style preset, every element formed by integer particle physics (FPGA-ready design system) #10771

Closed as not planned

Description

@gHashTag

Part of epic #10560. Follows R3 (#10571, PR #10770).

The owner (2026-10-19, translated) wants one content factory, built on the factory pattern, that unpacks any idea in any style preset. Everything on screen, factory included, must be formed by particle physics. In the end this behaviour has to run inside the OS itself, on FPGA too, because it is the visual design system of the OS.

Today each reel is its own hand-built module (token_floor, reel_particles, lesson_reel), each with its own constants. The R3 renderers draw flat integer stills that have lost the reel style. Nothing takes an arbitrary idea and a style and produces a reel. Nothing in the visual stack is written so that it could move to hardware.

Boundary

  • New: specs/t27f/particle_ds.t27, the particle design system.
    • Style presets are tables of integers: palette, blend, particle radius, spring, damping, force law and transition kick.
    • It holds one integer physics step, the kernel and tone tables, and colour mixing.
    • Fixed-point arithmetic only: add, multiply, shift and table lookup. No f64 and no division in the per-step or per-pixel path, so it can follow the FPGA path (t27c gen-verilog).
  • New: specs/t27f/idea_factory.t27, the factory.
    • It takes an idea string (an explicit | cuts a scene) and a preset id.
    • It cuts the idea into scenes and lines and turns each scene into particle targets: glyphs of the 3x5 font in scene_raster, an optional card border, and a closing address scene.
    • Its main writes 1080x1920 RGB24 frames for ffmpeg.
  • Out of scope:
    • Cyrillic glyphs, because the 3x5 font is ASCII.
    • Voice and music, which belong to lesson_reel mode 5.
    • Synthesis on the board.
    • Changing existing reels.

Scenarios

  • Idea "PARTICLES BUILD EVERY FRAME|ONE SPEC MANY STYLES" with preset 0 (noir gold) gives three scenes: two idea scenes and the address. Each scene's text is assembled by particles falling under gravity onto the glyph targets, and a card border is drawn by particles as well.
  • The same idea with preset 1 (neon vortex), 2 (trit charge), 3 (paper ink) and 4 (rain) gives five visibly different reels from one factory call. Only the preset id changes.
  • An idea with no | and 40 characters wraps into lines of at most 9 characters and at most 4 lines per scene.

Requirements

  • One factory entry point: (idea, preset) -> frames. A preset is data, not code; adding a preset is adding a row.
  • Every visible element (letters, card, address) is a particle with position and velocity integrated by springs and the preset's force law. Nothing is drawn directly.
  • Integer-only arithmetic for physics, splatting and tone mapping; deterministic replay.
  • Tests pin the preset table, the wrapping and scene count, target counts, spring stability (no overflow, settles within the scene), and the per-frame byte count.

Criteria

  • t27c test-report on both specs: all pass, 0 vacuous (Railway lab).
  • Seals saved and verified for both specs.
  • tools/dupe_scan.py clean.
  • A preview video renders on the lab: one idea in all 5 presets at 1080x1920, shown to the owner.
  • The PR names what is not claimed: Cyrillic, voice, and no Verilog synthesis yet.

Activity

  1. added
    shape-refusedClosed by the issue-shape gate (specs/policy/issue_shape.t27); a passing edit reopens it
    on Oct 19, 2026
  2. github-actions commented on Oct 19, 2026

    @github-actions
    Contributor

    Closed by the issue-shape gate (specs/policy/issue_shape.t27, #7498): an issue must have the template's sections. Edit the body; an edit that passes reopens it.

    • missing: ## Success Criteria -- an outcome a machine can settle: a number with a unit, a backticked file, exit 0, or a backticked command
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

    queen-shapedshape-refusedClosed by the issue-shape gate (specs/policy/issue_shape.t27); a passing edit reopens it

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions