fix: replace the traced infinity mark with the real artwork; add §4 Offerings
Q32 — the traced mark was a WRONG SHAPE and had shipped. Pouya compared it against the master and rejected it. Two grounds reproduce from the path and are verified here: all four cubic branches meet the origin at exactly 90 degrees, so the loops are tangent rather than crossing and at stroke-width 28 render as two kissing circles (signed crossing number 0; the strokes fuse across 61% of the mark's height at 2rem); and the master's ink bbox is 2668x1704 = 1.5657:1. The path is deleted, not kept as a fallback. Pouya's 1.23:1 figure is reconciled rather than left dangling: it is the bounding box of the path's COORDINATES, not the curve. Control points sit at y +/-160 where the curve reaches +/-120, so the hull is 400x320 and with stroke 428x348 = 1.2299. A trap rather than a slip — x is monotone, so the control points give the right width and a 33% inflated height, and the "does the width look right" check passes. The real artwork is now in the repo: master, tight crop (the render source, so the file's aspect ratio IS the mark's), full lockup, and the SVG. InfinityMark renders AVIF/WebP; a Retina device takes 3,063 B. Favicons regenerated; favicon.svg deleted. Q33/Q36 — Pouya accepts arbitration appointments now. §4 gains an Offerings category: competence for an offering, permission for a credential, with an explicit boundary so it cannot become a route around D13. The masthead tagline is restored, and the footer designation strip now carries "Q.Arb — commenced August 2026" so §4's paired-disclosure condition is actually met on every page rather than only asserted. Two conventions added to CLAUDE.md, both earned this session: anything a spec makes a claim about must be reachable from the repo (R14 — the traced mark survived two review passes because the artwork was not here to compare against); and a command that did not run is not evidence of absence (`timeout` is not installed on macOS, so four Drive reads never executed and were reported as an empty directory). Reviews: claims-auditor FAIL/13 and adversarial-reviewer 2 blocking, all resolved. The severe one was self-inflicted — `flex: none` landed on the <img> while <Picture>'s <picture> wrapper is the flex item, so the logo compressed to 28.5x32 at 1024px with seven nav items. The page-level overflow check passed throughout because the brand block absorbed the deficit by crushing the mark. Harness now asserts rendered aspect ratio. Opened: Q38, Q39. Closed: Q32, Q33, Q36. Narrowed: Q35. Added: R13, R14. AGENTS.md entry (v) carries a RESUME HERE section. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_012XquaEq4BgWMCwUqLEyNkF
This commit is contained in:
co-authored by
Claude Opus 5
parent
8134709548
commit
364b09632e
+10
-7
@@ -193,14 +193,17 @@ neutral.
|
||||
3. **Rules:** ADRIC, ADR Chambers, ad hoc.
|
||||
4. Awards — form, reasoning, timing.
|
||||
5. **Credentialing status, stated plainly.** The Q.Arb pathway is in progress;
|
||||
the page says so and describes what is available now versus what follows
|
||||
designation. Honesty here is a differentiator, not a weakness — and
|
||||
misstating it is a conduct problem. **What "available now" consists of is
|
||||
`AGENTS.md` Q36 and is NOT yet in §4** — this line, `03-content-spec.md`, and
|
||||
`07-fees.md` all assert co-arbitration availability off the same unverified
|
||||
premise. Do not write it onto the page until Q36 closes.
|
||||
the page says so. **What is available now is all three forms — sole,
|
||||
party-appointed and co-arbitration** — and `AGENTS.md` §4 Offerings carries a
|
||||
row for each `[verified 2026-08-26 — Pouya]`. The page states that alongside
|
||||
the credentialing stage: Q.Arb commenced August 2026, C.Med-Arb is the
|
||||
endpoint. §4 Offerings: **neither half may be dropped.** Honesty here is a
|
||||
differentiator, not a weakness — and misstating it in either direction is a
|
||||
conduct problem.
|
||||
*(This paragraph read "(co-arbitration, co-arbitration)" until 2026-08-26 —
|
||||
edited without being re-read, which is how the unverified half travelled.)*
|
||||
edited without being re-read — and then carried a caveat against Q36 for
|
||||
several hours after Q36 closed. Both are recorded because the pattern is the
|
||||
same one: an edit that was not re-read against the register.)*
|
||||
6. Fees, booking.
|
||||
|
||||
### `/med-arb/`
|
||||
|
||||
@@ -11,6 +11,12 @@ system that preserves it while fixing what the old build got wrong.
|
||||
- The **palette**: cream, ink, maroon, gold.
|
||||
- The **infinity mark** — SML Company Ltd.'s actual logo, and the metaphor holds:
|
||||
a dispute is a loop, and the work is redrawing the loop into a line.
|
||||
**It is a shaded ribbon, not a stroked curve**: a band of variable width that
|
||||
twists in three dimensions, maroon flowing into champagne, passing over itself
|
||||
at the crossing. Ink bounding box **2668 × 1704 = 1.5657:1**
|
||||
`[verified 2026-08-26 — measured against the master]`. Source of truth:
|
||||
`src/assets/brand/sml-infinity-mark.png`; provenance in
|
||||
`docs/reference/brand-assets.md`.
|
||||
- The **type pairing**: Instrument Serif for display, Geist for text, Geist Mono
|
||||
for eyebrows and labels.
|
||||
- The **editorial register** — generous whitespace, restrained colour, serif
|
||||
@@ -177,8 +183,8 @@ except the reveal of the hero.
|
||||
|
||||
| Component | Notes |
|
||||
|---|---|
|
||||
| `InfinityMark` | Inline SVG, `currentColor`, `aria-hidden` when decorative. Never a PNG |
|
||||
| `SiteHeader` | **Sticky from 64rem (1024 px) up; static below it.** Practice dropdown as CSS-only `<details>`. *Amended 2026-08-26, both halves by measurement:* **(a)** the one-row header has to hold the brand, **seven** nav items and the CTA — Insights is the seventh and arrives on its own at build step 7 — and it does that at 1024 px with 32 px of clearance, not below. Under 64 rem the nav takes its own row and the header measures **137 px** at tablet widths and **185 px** at 320–375 px, which is more of a small viewport than a sticky header is worth, so it scrolls away there. *(This row first said 60 rem and "~115 px". Both were wrong — the threshold moved when the seven-item case was measured, and 115 px was never a height the header took at any width. Corrected against headless-Chrome measurements at thirteen widths.)* **(b)** "Condenses on scroll" is now **a hairline rule and a shadow, not a size change.** A `position: sticky` header stays in normal flow, so its layout box sits at the top of the document whatever the viewport shows; shrinking its padding shortens that box and lifts every page below it — a scroll-linked layout shift on every page, against the CLS < 0.05 budget in `04-seo-spec.md`. Implemented with `animation-timeline: scroll()`, **longhands only** — see the note in the component about what the minifier does to the `animation` shorthand |
|
||||
| `InfinityMark` | ⚠️ **Currently a raster — a documented, temporary exception to this rule** (`AGENTS.md` Q38, R13). The mark is gradient-mesh artwork rather than flat vector paths. An SVG *is* held and it renders faithfully — but at 257,278 bytes against 3,063 for the AVIF a Retina browser takes, carrying seven embedded base64 PNGs that would breach `CLAUDE.md`'s no-base64-images rule. The exception is about payload and composition, not about fidelity. It renders AVIF/WebP with a PNG fallback; a Retina device takes 3,063 B of AVIF, `alt=""` when decorative, aspect ratio pinned to `667 / 426`. **Restore this rule the moment the commissioned vector master lands.** Until then the rule stands unchanged for every other mark or icon: inline SVG, `currentColor`, `aria-hidden` when decorative, never a PNG |
|
||||
| `SiteHeader` | **Sticky from 66 rem (1056 px) up; static below it.** Practice dropdown as CSS-only `<details>`. **(a)** The one-row header holds the brand, **seven** nav items and the CTA — Insights is the seventh, arriving on its own at build step 7. Binary search on the built page puts the true fit at **1047 px**; 66 rem is the clean token above it. Below 66 rem the nav takes its own row and the header measures **141 px** at tablet widths and **189 px** at 320–375 px. **(b)** "Condenses on scroll" is a hairline rule and a shadow, **not a size change** — a `position: sticky` header stays in normal flow, so shrinking its padding lifts every page below it, against the CLS < 0.05 budget. Longhands only; see the component on what the minifier does to the `animation` shorthand. *(This row has been wrong twice, instructively. It first said 60 rem / "~115 px", a height the header never took. It then said 64 rem "with 32 px of clearance" — that 32 px was `.header-inner`'s own `column-gap` mistaken for slack; the real figure at 1024 px with seven items was **−21.6 px**, and nothing overflowed only because flexbox crushed the logo inside the brand block. **Measure slack, not gaps.**)* |
|
||||
| `SiteFooter` | Three-column sitemap, contact block, designations, entity line |
|
||||
| `Eyebrow` | Mono label with optional maroon dot |
|
||||
| `SectionHeading` | Eyebrow + display heading + optional lede, one measure |
|
||||
|
||||
+15
-5
@@ -28,11 +28,21 @@ detect padding instantly and discount everything after it.
|
||||
practice". The old site's "we" implied a firm that does not exist.
|
||||
- Concrete nouns. *Lien claim. Change order. System Impact Assessment. Model
|
||||
card. Minutes of settlement.* Specificity is the credential.
|
||||
- Name the limits. "Sole-arbitrator appointments follow the Q.Arb designation;
|
||||
co-arbitration work is available now." **The first half traces to §4; the
|
||||
second does not — `AGENTS.md` Q36.** Keep the shape of the sentence, which is
|
||||
the point being made here, and do not publish the second clause until Q36
|
||||
closes. (**No tribunal-secretary work** — D14
|
||||
- Name the limits — but name the *right* ones. This bullet carried the model
|
||||
sentence *"Sole-arbitrator appointments follow the Q.Arb designation;
|
||||
co-arbitration work is available now"* until 2026-08-26. **Both halves were
|
||||
wrong and they were wrong in opposite directions**, which is why it survived
|
||||
two audits: the first half understated (sole-arbitrator appointments are
|
||||
offered **now** and are not gated by Q.Arb — §4 Offerings), and the second was
|
||||
unsourced when written. §4 now carries rows for all three forms.
|
||||
|
||||
The shape of the bullet still stands, so here is a sentence that fits it and
|
||||
clears the register: *"I accept sole, party-appointed and co-arbitration
|
||||
appointments. The Q.Arb designation commenced in August 2026; C.Med-Arb is the
|
||||
endpoint."* The limit being named is the **stage of the arc**, stated plainly —
|
||||
Pouya's instruction is that being open about it is the differentiator, so do
|
||||
not hedge it into vagueness and do not drop it. (**No tribunal-secretary
|
||||
work** — D14
|
||||
removed the rate and bars offering it; see `docs/07-fees.md`.) Precision about
|
||||
what you cannot yet do makes the rest believable.
|
||||
- Plain words over Latin. "Without prejudice" survives because it is a term of
|
||||
|
||||
+8
-4
@@ -104,10 +104,14 @@ All figures **plus HST**.
|
||||
|
||||
### Arbitration
|
||||
|
||||
Available now as co-arbitrator; sole appointments follow the Q.Arb designation
|
||||
— **the co-arbitrator half is `AGENTS.md` Q36 and is not in §4.** Do not publish
|
||||
it on `/fees/` until Q36 closes,
|
||||
commenced August 2026. The page must say so — see `03-content-spec.md`.
|
||||
Sole, party-appointed and co-arbitration appointments are all accepted now —
|
||||
`AGENTS.md` §4 Offerings carries a row for each `[verified 2026-08-26 — Pouya]`.
|
||||
*(This line previously read "sole appointments follow the Q.Arb designation",
|
||||
which understated the offering, and carried a caveat against a since-closed
|
||||
Q36.)* Whatever `/fees/` says about arbitration must state the Q.Arb stage
|
||||
plainly alongside it — §4 Offerings, "neither half may be dropped": the Q.Arb
|
||||
designation commenced August 2026, with C.Med-Arb as the endpoint. See
|
||||
`03-content-spec.md` for the wording.
|
||||
|
||||
| Item | Fee |
|
||||
|---|---|
|
||||
|
||||
@@ -0,0 +1,92 @@
|
||||
# Brand assets — provenance
|
||||
|
||||
The repository holds the artwork it makes claims about. That is not tidiness: it
|
||||
is `CLAUDE.md`'s rule and `AGENTS.md` R14, and this file exists because the
|
||||
infinity mark was reconstructed wrongly and **two adversarial review passes could
|
||||
not catch it**, since the real artwork was not in the repo to compare against.
|
||||
|
||||
**Every measurement below is `[verified 2026-08-26]`** — computed with `sharp`
|
||||
against the files in this repository, and re-derivable by anyone from the
|
||||
commands given. Nothing here is quoted from an external source.
|
||||
|
||||
## Files
|
||||
|
||||
| File | What it is | Use |
|
||||
|---|---|---|
|
||||
| `src/assets/brand/sml-infinity-mark-master.png` | The mark as supplied: **3000 × 3000, alpha**, mark inset within the canvas | **The master.** Committed so the crop below can be re-derived and checked in-repo, not taken on trust |
|
||||
| `src/assets/brand/sml-infinity-mark.png` | The same mark tight-cropped to its ink bounding box: **2668 × 1704, alpha, 1.5657:1** | **The render source.** `InfinityMark.astro` feeds it to Astro's `<Picture>` |
|
||||
| `src/assets/brand/sml-logo-full.png` | Mark **plus** the "SML Company" wordmark, 3000 × 3000, alpha; ink bbox 2414 × 1440 = 1.676:1 | Not currently rendered. Held for the OG-image template (`docs/04`) and print |
|
||||
| `src/assets/brand/sml-logo-source.svg` | 1500 × 1500 viewBox, **257,278 bytes** | Reference. Faithful, but not what is served — see below |
|
||||
|
||||
## Reproducing the crop, in-repo
|
||||
|
||||
The crop is derived, so it is re-derivable — and now from a file that is here,
|
||||
which is the whole point of R14. Scan the master for the first and last pixel
|
||||
that is neither transparent (`alpha < 24`) nor near-white (`r,g,b > 243`):
|
||||
|
||||
```
|
||||
ink bbox of sml-infinity-mark-master.png -> 2668 x 1704 at (159, 646)
|
||||
sharp(master).extract({ left: 159, top: 646, width: 2668, height: 1704 })
|
||||
```
|
||||
|
||||
Crop to that box and the file's own aspect ratio becomes the mark's, so layout
|
||||
can be tuned against the asset directly rather than against a number written
|
||||
down beside it. `InfinityMark.astro` pins `aspect-ratio: 667 / 426`, which is
|
||||
`2668 / 1704` reduced — **1.56573**.
|
||||
|
||||
## Why the SVG is held but not served
|
||||
|
||||
It renders **faithfully**. Rasterised at 8333 px it reproduces the master
|
||||
exactly, at the same **1.566:1**. It is not bad artwork, and an earlier version
|
||||
of this file implied it was; that was wrong.
|
||||
|
||||
What rules it out is weight and composition:
|
||||
|
||||
- **257,278 bytes**, against **9,468 bytes** for the AVIF a browser actually
|
||||
takes at the size the mark renders. **27×.**
|
||||
- **7 embedded base64 PNGs** (`<image>` elements), so it is a hybrid rather than
|
||||
pure vector — inlining it would breach `CLAUDE.md`'s rule against
|
||||
base64-inlining images, which is one of the specific faults of the build this
|
||||
project replaces.
|
||||
- 10 `<linearGradient>` carrying **1,225 `<stop>`** elements, 64 `<path>`,
|
||||
59 `<clipPath>`, 23 `<mask>`, 1 `<filter>`. Expensive to rasterise.
|
||||
|
||||
What `AGENTS.md` Q38 asks for is a master that is faithful **and** light.
|
||||
|
||||
## What the browser actually downloads
|
||||
|
||||
`<Picture>` emits AVIF, WebP and a PNG fallback at 1× and 2× of a 320 px
|
||||
intrinsic width:
|
||||
|
||||
| | 1× (64 px) | 2× (128 px) | 3× (192 px) |
|
||||
|---|---|---|---|
|
||||
| AVIF | **1,720 B** | **3,063 B** | **4,843 B** |
|
||||
| WebP | 2,368 B | 5,368 B | 8,664 B |
|
||||
| PNG (fallback) | 6,137 B | 16,996 B | 29,780 B |
|
||||
|
||||
A Retina device takes **3,063 B**. The first attempt sized the ladder at 320 px
|
||||
— justified by a 4 rem sample on the proof sheet, a page step 2 deletes — and
|
||||
stacked `densities` on top, so every DPR-2 device pulled a 640 px image into a
|
||||
56 px slot: **20,629 B**, and the docs claimed 9 KB because that is what DPR 1
|
||||
takes. Size to the largest render that survives, and quote the figure for the
|
||||
devices the budget targets.
|
||||
|
||||
Passing an explicit `width` is load-bearing: without it Astro emits the
|
||||
untouched 2668 px master as the `<img src>` fallback — **1,146,406 bytes** —
|
||||
which any client without AVIF or WebP support would actually download.
|
||||
|
||||
## The colours are the artwork's, not the palette's
|
||||
|
||||
`tokens.css` is not involved. The ribbon carries its own gradient and it is
|
||||
close to but not identical with `--maroon` `#5a1a1c` and `--gold` `#c9a876`.
|
||||
Do not "correct" the artwork toward the tokens, and do not derive tokens from
|
||||
the artwork — D7 keeps the palette *and* the mark, as they are.
|
||||
|
||||
## Where these came from
|
||||
|
||||
Supplied by Pouya. `sml-logo-source.svg` was added by him directly to the repo;
|
||||
the PNGs were taken from the `smlcompany.ca` Google Drive, under `SML/Designs/`
|
||||
and `Research/Law/ADR Personal Branding Project/`. **The Drive copies are not the
|
||||
record — these files are.** That is the point of R14: an artefact that lives only
|
||||
in Drive cannot be compared against a claim by any reviewer, which is exactly how
|
||||
the traced mark survived two review passes.
|
||||
Reference in New Issue
Block a user