dollyVision · design system changelog Hestia Media Group
Newest first · one entry per working session 2026-08-08
Design system · change record v0.1 · seventeen sessions

What moved, and why it moved.

Every change to the dollyVision design system, newest first. Each entry states what changed and the reason, not the diff. Contrast results are recorded here because the audit is a claim the system makes about itself, and a claim without a date is not evidence.

Sessions
17
Screens drawn
6 of 12
Tokens moved
5
Contrast failures
0
2026-08-08 Entry 17 · current

Consistency pass across every screen

Fixed
  • Section numbers collided: the overview used 00–02, the same numerals Foundations and Elements carry. The overview is an index rather than part of the numbered run, so its three sections take letters.
  • The Sections tile read 11 against twelve numbered sections across the four parts, and the Templates row still claimed one screen of twelve when six are drawn.
  • This record was nine sessions stale. Entries 08 through 16 are added below.
2026-08-08 Entry 16

Last updated on the ticket board

Added
  • An Updated column carrying each ticket’s last movement in Jira — whether something sitting in “In progress” moved this morning or three weeks ago.
2026-08-08 Entry 15

Check authoring

Added
  • Screen 1.9: the suite list, a Playwright editor on the dark surface, and a dry run that replays captured pages and writes nothing, so a check can be proven before it touches a version record.
  • Assessed properties as a declared field rather than inferred from the script — they are exactly what the matcher diffs between versions.
  • An amber bar stating that enabling a check mid-engagement makes the next scan report new findings, not regressions, because a finding cannot regress against a check that never ran.
2026-08-08 Entry 14

Audit configuration

Added
  • Screen 1.2: client and accent slot with measured contrast, conformance target, URL ingestion with discovered / deduped / declared counts, the WCAG-EM sample table, the scripted capture sequence, and this engagement’s Jira binding.
  • Unfreeze confirmation naming the versions already audited against the sample, and requiring a written audit-trail note.
Changed
  • The freeze takes an ink rule rather than a chip: everything else on that screen is configuration that may change between versions, while the frozen sample is a claim already published to a client.
2026-08-08 Entry 13

Ticket editing in-app

Added
  • A ticket detail panel — summary, description, transitions, assignee, priority, labels, attachments, comments — so the operator never has to open Jira to work a ticket.
  • Concurrency handling: the panel polls and says “changed in Jira 2 minutes ago” in amber before a save can overwrite anything.
Changed
  • Criterion, selector and finding id sit in a locked block inside the description, rewritten from the finding on each evidence re-push. Without that boundary the tie between ticket and finding is one careless paste from being lost.
2026-08-08 Entry 12

Ticket creation flow

Added
  • The single-finding push modal previews resolved site, epic, issue type and priority, the ADF payload and the evidence it will attach, and confirms every mandatory field resolves.
  • Bulk push reports per finding — created, uploading, skipped by the idempotency guard, failed on an unmapped field. A failure never rolls back what succeeded.
2026-08-08 Entry 11

Epic grouping per audit

Added
  • Every ticket is filed under an epic so an audit never scatters across the client’s backlog, with the board grouping rows under an epic band.
  • Epic strategy per engagement: one epic per version (default), one per engagement, or an existing client epic.
Fixed
  • The unticketed finding rendered between two epic bands, reading as a member of the v4 epic — the opposite of that row’s purpose. It has its own “Not in an epic” band now.
  • A closed epic containing a reopened child rendered calmly Done; it is Rule 01’s case and now carries the regressed mark in amber.
  • Counts on the screen did not reconcile — lanes summed to 25 against a header total of 23. One scope now, with lanes and epic counts both summing to 23.
2026-08-08 Entry 10

Ticket board on the Jira screen

Added
  • Five status lanes with counts, then a row per ticket with its key, summary, Jira status, severity, dated recheck result and originating finding.
  • Done splits into recheck passing and still failing, because a closed ticket says nothing about whether the finding is fixed. Only the second takes amber.
Changed
  • Jira status chips are dashed and carry no semantic colour — it is the client’s board, not our record. Severity beside them stays solid.
2026-08-08 Entry 09

Engagements, Settings, Jira activity

Added
  • Screen 1.1, the entry point and audit selector: deltas read without opening anything, and an in-flight pull shows as a dashed marker because no version record exists until the run completes.
  • Screen 1.11, Settings, led by Integrations: Jira connection is a per-engagement fact, one row per engagement with its own site, project, polling health and auth state.
  • The Jira activity log, scoped to one engagement, with the async push lifecycle and the idempotency guard visible as skipped rather than duplicated.
Changed
  • Polling health is per engagement, never one global light: a stopped poll starves one client’s work list while every other engagement looks fine.
  • Inbound rows are dashed throughout — a developer moving a ticket dates a recheck; only the next full scan writes a finding status.
2026-08-08 Entry 08

Review workspace, the first screen

Added
  • Screen 1.4 at its real 1440 × 900: three panes, filter bar, bulk actions, the full keystroke legend, an undo toast, and the why-matched disclosure.
  • Three arrangement alternatives, with the recommendation that browser-led is not a separate choice but what the layout becomes in live mode.
Fixed
  • The screen shipped with no state glyphs at all — status was text and colour only, breaking Rule 02 on the first screen that applies it. The components had been re-typed without their glyph layer.
  • Regressed was drawn two ways for one meaning; the DS Icon.loop is a process-cycle motif, so the circular return arrow moved into the Extension block with that reasoning recorded.
  • The nav had been hand-duplicated into six files, so every new destination needed six edits. It is one component now.
2026-08-08 Entry 07

Brief audit, two gaps closed

Added
  • Diagnostics panel — the last unbuilt item in the brief's component inventory. App and engine errors with log context, the crash-report surface, the bundle export carrying its logs-only guarantee on its face, and the remote status endpoint controls.
  • Report spine completed to the brief's stated order: methodology with the EAA and VPAT/ACR annex toggles, and the inventory appendix. The executive summary is now labelled as the always-open section it is.
Open
  • The twelve screens. All 26 inventory components exist; none are yet arranged into a screen.
  • Report print stylesheet: page furniture, expand-all on print, criterion-level page breaks.
  • Dark theme is specified and specimen'd in pairs, but no page switches on prefers-color-scheme — that is a screen-level behaviour.
  • Filter bar, saved views and the bulk-action bar are screen furniture rather than inventory components; they land with the review workspace.
2026-08-08 Entry 06

Parted out, and this record made an artifact

Added
  • This changelog as a printable Hestia document on doc-page, with a running header and footer on every printed page. CHANGELOG.md remains the plain-text record the project rules point at; this document is the readable artifact built from it, and the two are updated together.
  • A templates/ slot in the contents, declared but not yet drawn. Screen-level layouts belong there rather than in Components — a template is an arrangement, not a part.
Changed
  • The single system page is parted out into four files — foundations/, elements/, components/, report-design/ — each carrying the same header, sticky nav and numbered-section chrome. Nothing was redrawn; the sections moved intact.
  • The root page is now an overview: the four parts with what each covers, the four ground rules stated once because they govern every part, and the current audit standing.
Fixed
  • The "sections built" tile read 10 against eleven numbered sections, 00 through 10. In a document whose premise is that a claim without a date is not evidence, an unlabelled stat that does not match the artifact is a defect.
  • This record shipped one session stale at birth — it did not contain the session that created it, while its own standing rule says every session is recorded. Corrected here.
2026-08-08 Entry 05

Report theme and the white-label boundary

Added
  • Section 10, Report theme — the client-accent slot defined by exclusion (permitted on the cover rule, section markers and running header; never on a semantic token, the Verified-by-Human stamp, or anything carrying state), so a finding reads identically in the tool, the report and a Jira embed.
  • The accent guard: a supplied brand colour yields two values — raw for rules, and a darkened variant at 4.5:1 for text, the same split Signal Amber takes. Three worked examples (#B3122F as supplied, #4CAF50#38813B, #E8B400#8E6E00).
  • Document specimen: cover, executive summary with the delta row, native details disclosure with findings collapsed by default, a regressed finding with its ticket key, and the size budget in the footer.
Changed
  • Report body is 18/30 at 18.5:1, clearing SC 1.4.6 enhanced contrast (7:1) — the one AAA target the brief sets for long-form reading.
  • Where a raw accent falls under 3:1 the cover rule gains an ink companion. Cover rules are decoration and exempt from 1.4.11, so this is a greyscale and print legibility measure, not a conformance claim — labelled as such.
  • The audit now sweeps every rendered text node (658) against its real composited background, walking the stack through each translucent layer, rather than measuring hand-listed token pairings alone. A tint whose parent is not white is invisible to a token-level audit — that is how the delta cell passed 90 hand-enumerated pairings and still failed on screen. Zero failures; the floor is 4.53:1.
  • Stacked tints checked and clear: the 1c gutter (10% over 6% over white) reads 5.09:1 and a chip tint on a tinted row 4.99:1.
Fixed
  • Traversal segment 20→21 passed through the body of stop 14 and grazed 19, reading as an edge that connects them. No node position clears a chord that long, so the generator now routes any edge grazing a non-endpoint node through the nearest frame gutter instead of drawing it straight — 20→21 drops to the 190–206 gutter and returns along it, which is also how a real traversal map reads a long tab-order return. The path-vs-node assertion runs before emit and the SVG is only written when it reports zero collisions.
  • The focus-map annotation plate was positioned from the longest edge's midpoint with no knowledge of the region frames, so it crossed the header rect's bottom hairline and punched a 128-unit gap in it, in paper-white on a white canvas. Placement is now derived from the clear gutters between frame bands, filled to match the canvas.
  • Report delta row: the Regressed cell declared only a 12% amber tint, so it composited over the grid's #E3DED5 hairline showing through the 1px gap rather than over white, dropping its label to 4.04:1. Given an opaque white base — 5.28:1, matching the audited pairing.
  • The report specimen's first section now opens on load. A literal open="" attribute cannot express a boolean DOM property through template compilation, so all four sections rendered collapsed — hiding the what-changed narrative, the regressed finding, and the ticket-link treatment the section exists to demonstrate, while the summary still read "OPEN".
Open
  • Print stylesheet is specified but not yet drawn (page furniture, expand-all on print, criterion-level page breaks).
  • The twelve screens.
2026-08-08 Entry 04

Glyphs rebuilt on Hestia's icon set

Changed
  • The non-color redundancy channel was built from Unicode marks, four of them filled forms the design system rules out, and no design-system component was mounted anywhere. Read Icon and rebuilt: 105 glyphs are now 1.5px line drawings inheriting text colour, zero Unicode marks carry state, zero filled forms.
  • Icon is mounted directly for check, loop, govern and gate — the four places the sanctioned set has an equivalent.
  • Focus-map diagram nodes stay filled and are now SVG rather than characters; they are diagram primitives, which the system draws as schematic SVG by design.
  • Glyphs size to their text context (1em) rather than a fixed 12px. A 12px glyph in a 10px metadata line was driving the line box taller than its text and pushing 1c's rows past their labelled height.
Added
  • Section 09, Glyphs — what is mounted from Hestia and what is extension, recorded the way the dark theme is. The extension covers severity, staleness, matcher and source marks the marketing-authored set has no equivalent for.
Fixed
  • Section 09 omitted severity and match confidence — the two encodings Rule 02 leads with — and claimed every state glyph was a line drawing when both are filled segment meters. Added measurement marks as a declared third class (readings, not icons) and corrected the claim to name both exemptions.
  • The global replacement had leaked the govern padlock onto the snapshot mode indicator, so one glyph carried two meanings. The mode indicator has its own snapshot mark now.
  • Mode control labels are atomic — "SNAPSHOT V4" was breaking across two lines and making that block the tallest thing in the tab row.
  • Chip glyph stroke scales inversely with size, so the drawn weight holds at 11px instead of thinning to 0.69px. Specimens stay 1.5px at 24px.
2026-08-08 Entry 03

Evidence, identity, and gate components

Added
  • Section 06, Evidence — the viewer with its snapshot/live mode control, and the focus-order traversal map (2.4.3 evidence: stops in order, travel drawn to scale, traps marked where the path closes on itself).
  • Section 07, Identity and diff — the "why matched" signal-bundle comparison and the semantic side-by-side diff.
  • Section 08, Progress and gates — re-review lanes with the one-key legend, coverage meter against the sign-off gate, scan progress by capture stage, sample-freeze declaration, undo toast, Jira push lifecycle.
Changed
  • Live mode is the one place amber describes a mode rather than a change: the mode block and a 2px viewport frame.
  • #B26E24 became a text background for the first time in the focus map. Paper on it is 3.85:1, so those labels take ink instead — 4.53:1, the system's lowest text pairing.
  • The focus-map legend now keys its own diagram; the swatch was #8F5617 while the trap marks were #B26E24.
Fixed
  • Added the missing box-sizing: border-box reset. Every explicit height was content-box and inflating by its padding and border — 1a's "28px rows" were rendering at 37px and chips at 26px.
  • Density study restructured: each option sits at a realistic 380px list-pane measure with its caption beside it, instead of three ~185px columns where 1c's metadata could not fit one line at any width. Labels recomputed from measurement.
  • Focus map rebuilt from a single ordered stop list rather than hand-authored coordinates, so the header count, the polyline, the trap loop and the annotation cannot drift apart — previously it claimed 24 stops while drawing 18.
  • Mono metadata values are atomic — timestamps, ids and page paths carry nowrap and their rows wrap instead. The sample-freeze declaration was breaking its own timestamp across two lines.
  • Log viewer and scan progress moved to full width; machine-output components need the full measure. Chips no longer wrap out of their own border.
2026-08-08 Entry 02

Contrast audit, AA throughout

Changed
  • Measured all 88 foreground/background pairings the system produces, including text and borders on composited tint fills. All pass SC 1.4.3 and SC 1.4.11, light and dark.
  • text / secondary#6B7075#62676C. The old value read 4.32:1 on the recessed surface.
  • text / signal#8F5617. Signal Amber is a 3.28:1 text colour; it remains the fill and the token swatch.
  • border / chip added as a distinct token, #8E8577 light / #666E76 dark. Solid-versus-dashed identifies whether a chip is authoritative or advisory, so that border is a required state and needs 3:1. Grid Line #E3DED5 stays the decorative hairline and is exempt.
  • border / signal#C77D2E#B26E24, which reads 2.84:1 as a border on the recessed surface.
Added
  • Section 05, Contrast audit — the results, the tokens that moved, and the hairline-versus-chip-border rule, on the page rather than in a side document.
2026-08-08 Entry 01

First pass

Added
  • Foundations: light and dark tool surfaces (dark authored here — Hestia defers it to phase two), the denser tool type scale, and the SC 2.4.13 focus indicator.
  • Eleven semantic token families — severity, finding status, staleness, match confidence, source, WCAG level, version delta, diff change, recheck advisory, Verified-by-Human, log level — each paired light and dark where dark is a real decision.
  • The finding card in full anatomy, both themes, and the density study: 1a Ledger, 1b Banded, 1c Gutter-coded.
  • Four ground rules: amber allocation, non-color redundancy, solid-versus-dashed, extensible enums.
Inventory · as of entry 17

What exists

System · 12 sections in four parts
Foundations 00, 01, 05 · Elements 02, 09 · Components 03, 04, 06, 07, 08, 11 · Report design 10
Components · 26 of 26 from the brief
Every item in the brief’s inventory is drawn, diagnostics included.
Screens · 6 of 12
1.1 Engagements · 1.2 Audit configuration · 1.4 Review workspace · 1.9 Check authoring · 1.11 Settings · 1.12 Jira activity
Not yet drawn
1.3 Scan runner · 1.5 Manual track · 1.6 Re-review queue · 1.7 Version diff · 1.8 Inventory · 1.10 Report builder
Standing rule

This record is updated at the end of every session that changes a design file. Any session that introduces, changes, or re-roles a colour re-runs the rendered contrast sweep and records the result here — a border token used as a fill is a new pairing, and a tint whose parent is not white is a new pairing too.