The reasoning behind the mark, kept in the pack next to the values it argues for. It is here because a guideline nobody can question is a rule, and a decision with its reasoning attached is a design.
Why four colours
_palette_note
Four glyph colours ARE the categorical palette: green/magenta/blue/teal, one per letter of S-U-C-H. They are never assigned by data; letter position owns the colour, so the mark reads identically everywhere. Dark variants are the light hues lifted for contrast on #0a0a0a, not separate brand colours. Every value here must be a bare hex string: style/tokens.py iterates this map and parses each entry as a colour, so a prose note among them is a crash, not a comment. Annotations live in the sibling _notes block.
How the monogram is drawn
glyphs._note
The authored dark master had a divergent U (…9.85,14 22,14 … 22,-1.85 22,-14) against the light master's (…9.85,16 22,16 … 22,-3.85 22,-16). That is exactly the hand-maintenance drift this pack exists to end: the LIGHT master is canonical and both themes now render from these paths. The site's beloved anim1_pulse.svg still carries the divergent U, which is why it is now generated rather than kept by hand.
The U's bowl
glyphs._u_note
Bowl depth 16 -> 13 (and the control -3.85 -> -3.1 to hold the curve's shape ratio). At 16 the U stood 50 tall against S and C at 46, roughly 7% oversized, and hung 4.1 units below its row so the top row did not read as a unit. This is the ONE change that edits path data, so brand_mark --verify now fails against the authored masters in Documents/suchsoftware/media/corp/logo/. That is intended: this pack is canonical and those files are the historical record.
The tile and its grid
geometry._note
One 200x200 tile. The four glyphs sit on a 2x2 grid: S and C in the left column, U and H in the right. Stroke geometry is invariant across every tier (T0 flat to T3 extruded) per design/graphics-settings.md — only material and depth change.
Why the frame radius is 12
geometry._frame_note
radius 12, not 16: at inset 14 inside an rx-26 tile, 16 is not concentric and the corners read loose. frameless_scale spends the margin the frame vacates, which is what makes 16px legible.
The column offset
geometry.grid._note
Columns sat 26 units apart against 18 for the rows, so the mark bound vertically and read as four objects instead of the word SUCH. Moving each column 3 inward closes the gutter to 20. Applied as a transform; path data is the cross-tier invariant.
The wordmark row
lockup._note
The horizontal lockup: the 200x200 tile untouched at the left, wordmark set to its right. The tile keeps its own viewBox origin so the monogram is byte-identical between the standalone mark and the lockup — the wordmark is added beside it, never a redraw of it.
Why two facets became three, and why three were cut
fields._note
The FACET layer, and the only part of the mark that varies. Such Software is the circuit substrate that carries everything (`circuit`, the corporate default) and the one thing that gets to leave the grid (`games`). There were five: commerce, crypto and education were cut because they were the same idea drawn three more times -- crypto was circuit with square nodes, and a viewer cannot tell a 'checkout' route from a 'decay track' route without the label. Each facet is a route through geometry.channels plus the nodes along it. Nothing else changes: same tile, same frame, same monogram, same drawing grammar, same 2px stroke. Facets differ by ROUTE, not by new primitives. The field THREADS: it is drawn under the monogram, so wherever a route passes a letter it is occluded and reads as passing behind. The 2026-08-02 weave experiment (routes crossing IN FRONT of letters through declared zones) was retired by direction on 2026-08-15 -- crossing the letterforms read as damage on both facets, and the authored site animations everyone already loved never crossed anything. The weave machinery in _grammar stays as a tested, dormant capability.
How a field is drawn
fields._grammar._note
The shared drawing grammar. opacity_light rose from 0.18 to 0.46 (dark 0.22 -> 0.52) with the weave: at 0.18 the field read as the faint grey construction guides it was mistaken for, and a line that is going to interlock with the monogram has to look like it is there. It still cannot compete -- it is a 2-unit stroke against the glyphs’ 14 at full saturation, so roughly a twentieth of the visual mass per unit of length -- and it sits in the same register as the frame at 0.45, which is the hierarchy: monogram, then frame and field together, then nothing.
What a weave is
fields._grammar.weave._note
How a strand that rides in FRONT of a glyph is drawn. Two coincident strokes on the same `d`, masked to the letterform: a `casing` in the tile background colour, and the `core` in the field colour on top of it. The casing is the whole trick -- it is the cartographer’s bridge casing, and it is what makes the crossing read as a strand passing over rather than as a scratch across the letter. Without it the core sits directly on glyph colour and the two interfere: over U (#b83670) a #1a5c38 line is legible but reads as damage, and over S it would be green on green and vanish. The widths are the result of rendering the range and looking: casing 6 cut 43% out of a 14-unit glyph stroke and the letter came apart at the crossing, casing 3.5 closed up to a scratch. 4.5 leaves 4.75 units of letter either side, which still reads as one stroke interrupted. core is wider than the base stroke (2.5 against 2) and near-solid against the base field’s 0.46 because the near strand of a weave should carry more weight than the far one -- the eye reads contrast as depth.
Where a field may cross a letter
fields._grammar.weave._zones_note
Where a field is ALLOWED to ride over a glyph, as [x0,x1,y0,y1] boxes in tile space. A letter absent from this map may never be ridden over -- which is why the depth rule comes out as "behind the left column, in front of the right": the S and the C have nowhere safe to be crossed. The test is whether the crossed span is anchored at BOTH ends. The U’s bowl and the H’s crossbar are, so interrupting one leaves both remaining pieces attached to something and the letter still reads. Every other span in the monogram ends in a free terminal: cut the U’s right stem and the piece above the cut is holding on to nothing, and the letter reads as broken rather than as crossed. Both boxes are the middle of a span and sit on the letter’s own axis of symmetry, which is also where a crossing looks deliberate rather than incidental. A route must additionally meet the span SQUARE-ON: a traversal much longer than the 14-unit glyph stroke means the trace is shearing along the stroke and shaving a wedge off its edge, which is the defect that ruled out the old games arc across the U’s right stem (29 units for a 14-unit stroke).
The circuit route
fields.circuit._trace_note
RESTORED 2026-08-15 by direction: this is the authored anim1_pulse route back in charge, ending `h 58` per the static master (anim1 stopped 6 units short at `h 52`; the disagreement is recorded in docs/architecture/brand-mark.md). The 2026-08-02 weaving re-route (two vertical buses crossing seven strokes) is retired -- crossing the letters read as damage, and the beloved site animation never crossed anything. What the generator still improves over the authored file: the corrected U renders behind it, the node delays are measured off the trace instead of hand-estimated ~17% fast, it is CSS instead of SMIL so prefers-reduced-motion actually works, and both themes come from one source.
The games arch
fields.games._trace_note
RESTORED 2026-08-15 by direction, and REVERSED: the arch is the original symmetric parabola, but the signal now departs from the bottom-RIGHT foot and lands at bottom-LEFT, because the pulse should finish bottom-left. Where the arch passes a letter it passes BEHIND it (the field threads; see fields._note) -- the descending legs are occluded by the letterforms they cross, never drawn over them. `particle: rocket` gives the pulse a vehicle: the travelling dash becomes the exhaust behind a small rocket riding the arc nose-first (see brand_mark._particle), which is what a launch arc was always asking for.
The games nodes
fields.games._nodes_note
Placed BY the curve, not by eye: every coordinate is svgpath.point_at at a chosen phase, so each node sits exactly on the route. Near-even eighths; the apex node at (100,20) is the largest, because a launch arc has one moment that matters.
The cascade
fields.cascade._note
An ion entering matter, scattering off nuclei, throwing recoils, and stopping. The other two facets are designed routes: circuit is a bus, games is an arch. This one is a TRAJECTORY, generated by tools/gen_cascade_field.py from seed 20260906 and pasted here as a literal like the others, so the geometry is reviewable in a diff. A node marks where a track stopped, not a via: in SRIM the range distribution is the result and the individual path is only how it got there. This is the facet that connects the corporate mark to the nuclear work, to Bloomword's branching trees, and to the creature body plans, which are all the same shape of idea.
The travelling signal
pulse._note
Three dashes at staggered phases of the same loop, lifted from the authored anim1_pulse.svg (which hardcoded len/gap pairs against one trace's 598-unit length, and one begin= per node measured by hand). `phase` is a fraction of the loop; the gap is computed as total_length - len so a single dash is in flight per element regardless of which facet route it runs on. node_grow is the radius multiplier at the moment the signal arrives.
The readability floor
mark._note
The mark's rendering contract. This block used to be called `grade`, which is a SCHEMA-DEFINED key meaning the colour grade (tonemap/exposure/contrast/saturation/glow/vignette/grain) — backends/svg.py reads grade.vignette and grade.grain from it, and style/tokens.py emits every entry as a GRADE_* Godot constant. The corporate pack was quietly answering a different question than the one being asked. At or below min_tile_px the frame and the field are dropped and only the four glyphs render: the readability floor from design/graphics-settings.md. The glyph is invariant; the frame and the field are decoration. draw_stagger_ms lives here rather than in motion.draw because the pack schema closes motion entries to ms/curve/note so renderers can treat them uniformly — stagger is a composition rule, not a curve.
The four-circle reduction
dots._note
The four-circle reduction: one disc per glyph cell, each carrying its letter's colour. The centres are MEASURED, not authored -- x snaps to channels.axis_left/axis_right (the same axes the fields cross on) and y to the mean of each row's glyph-box centres, so the dots track the letterforms if the grid ever moves. Radius 24 gives a 48-unit disc against glyph cells 46-47 tall: the dot carries the same visual mass as the letter it stands for. This is the seed state of the morph (dot -> pillar symbol -> letter) and its own favicon: at 16px four discs survive where four letterforms are mush.
The pillar symbols
symbols._note
Nerd Font glyph outlines extracted once to path data, so nothing depends on the font at render time and the fills inherit brand colour. Emoji could not do this: they are baked multicolour bitmaps and would fight the palette. Each symbol maps to the letter it becomes: cart->S commerce, btc->U crypto, dog->C the doge/Wownero line, atom->H the science and education work. Normalised into a 0..100 box; the renderer scales and centres each into its glyph cell. `pillar` names the company pillar the symbol stands for, and is the identity a standalone pillar tile is filed under. tile_scale is the symbol's span as a fraction of the tile when it IS the tile (the pillar logos): 1.16 fills the frame's interior with the same breathing room the monogram keeps.
The effects
fx._note
Display treatments of the clean mark, emitted into brand/fx/. These replace the four hand-made one-offs that lived only in ~/Build (2026-08-02, no generator committed -- the exact drift this pack exists to end). Each is the clean tile plus an overlay; the monogram geometry is never redrawn. `shine` is the only animated one and parks as the clean mark under prefers-reduced-motion.