# Grouping Desk > Once the edit leaves a scene, it does not go back. Studio, street, studio is a decision nobody > made, and it is close to invisible in a timeline because every individual cut looks fine. Write > the scene labels in playing order, compress the repeats into runs, and any label holding more > than one run is a return. Five lanes over one pool-and-groups sheet, plus a free browser-side > partition and contiguity engine. URL: https://grouping-desk.skillsafe.ai/ API: https://grouping-desk.skillsafe.ai/api.html Derived from FireRedTeam/FireRed-OpenStoryline (https://github.com/FireRedTeam/FireRed-OpenStoryline), Apache-2.0: its group_clips stage, which states the must-use pool and the scene contiguity constraint. Not affiliated with or endorsed by FireRedTeam. ## The run decomposition ```text studio studio street street studio -> studio | street | studio ^ two runs of one scene ``` Three scenes should give three runs. Seven runs for three scenes means the location changes almost every group. "It feels choppy" is a note somebody can argue with; "`studio` appears in three separate runs" is not. ## The partition The pool is must-use: every clip appears in EXACTLY ONE group. The three failures are separate findings because they have separate causes. - A clip in no group was almost certainly lost between passes, not decided against. Nothing in the output distinguishes those, which is why it is reported rather than assumed. - A clip in two groups usually arrives by copying a group and editing one copy. It also silently inflates whichever group holds the duplicate. - A clip id in a group and not in the pool is a stale id from an earlier version of it. A checker that says "the count is off" has done the hard part and thrown away the answer. ## Continuous actions A movement filmed in pieces is one action; separating the pieces turns it into unrelated shots. The pieces stay in one group or in adjacent ones, in filmed order. This is the one rule that can conflict with scene packing, and when it does the ACTION WINS - a movement broken across a scene boundary is more visible than a scene that runs slightly long. ## Bounds - 2 to 4 clips per group. Fewer is a shot with a group's name on it; more is a sequence. - 3s to 20s per group. Under the first nothing registers; over the second attention goes. - Except a take over 10s, which has internal structure and stands alone. Padding it with a neighbour to make the group look normal is the wrong fix. ## The default shape hook, core, vibe, end - when the brief imposes no structure of its own. A shape, not a schedule: a fifty-second film can spend thirty seconds in core. What it protects against is four equal quarters, which reads as a list of shots with a logo at the end. ## Sheet grammar ```text POOL c01 | 3.4 | scene=studio | action=unpack | a hand lifts the flap c06 | 5.2 | scene=street | she steps out of the doorway GROUPS g01 | hook | c01, c02 | the bag comes out of the box ``` `scene=` is what the contiguity check reads; a clip without one is invisible to it and neither helps nor breaks a run. `action=` marks the pieces of one movement. ## When a return is deliberate Parallel editing and contrast montage revisit on purpose, and a hook may quote a scene it will come back to. Those are declared, not stumbled into. The declared version and the accidental one look identical on the page - which is the whole reason to write the runs out. ## The lanes - `order` - groups and orders a pool from a brief - `check` - reads the free engine's partition and runs, and repairs the order - `split` - splits a group that runs long without creating a return - `arc` - assigns the four slots to the groups that exist - `caption` - writes each group's one-line summary from its clips, not from the brief ## What it does not do It does not open, decode or watch video. It reads the clip list you already have - durations, scene labels, what is in each shot - and does the set arithmetic and the run decomposition on it, so it is only as good as those labels.