Skip to content

moooon

Motir

Vibe your whole project. Bring an idea — Motir's three AI layers plan it, track it, and ship it, end to end. You're looking at Motir, built in Motir.

  • Vibe Project
  • Open Source
  • AI Agent
  • AI Loop
1
requests
0
upvotes
144
planned
1,365
shipped

Motir · Work items

MOTIR-3211Done

Planning bug: "the ONLY viewport-sized declaration outside the shell" was a grep for the CSS token — Tailwind's `min-h-screen` compiles to the same `100vh` and five more surfaces carried it

Type · planning defect (an unverified totalising quantifier) · Found in · motir run MOTIR-3208, 2026-08-20. About · MOTIR-3208. The correction is already applied on that card's branch — this is the record, not work.

The claim, and why it read as verified

MOTIR-3208's Root cause / fix says of app/globals.css:27:

This is the only viewport-sized declaration outside the shell, and it is in the wrong unit.

Everything around that sentence is exemplary and was re-checked here against origin/main 8599acf8: the shell really is h-dvh overflow-hidden with <main> the sole scroller, the body floor really is min-height: 100vh, and the report's two measured colours resolve exactly (#FFFFFF = --el-page-bg, #EEF2F8 = --color-surface under [data-palette='cobalt'], painted onto the body canvas by [data-style='neumorphism'] body).

What the claim missed

git grep -n '100vh' app components packages/design-system returns one hit, so the sentence is TRUE of the string it was searched for. It is FALSE of the declaration: Tailwind compiles min-h-screen to min-height: 100vh, and five surfaces outside the shell carried it —

  • app/(auth)/layout.tsx:62
  • app/(public)/docs/layout.tsx:69
  • app/(public)/explore/layout.tsx:20
  • app/(onboarding)/onboarding/direction/[tier]/page.tsx:52
  • app/_components/ConnectAiGate.tsx:22

A run following the card literally fixes one line and leaves five pages producing the same empty band, on the same class of browser, for the same reason.

The second half — the guard would have been born lying

The card's acceptance criterion 2 asks that "every viewport-sized length on the shell path is dvh". A guard written to that sentence goes red on those five files the day it is written, so it ships with an exemption list naming them — a standing carve-out for the very defect the card exists to remove. The card's own criterion is what makes the undercount structural rather than cosmetic.

Not a repeat of notes.html #292 — a second axis of the same shape

#292's counted enumeration missed two files because its grep was scoped to the wrong directory (app/ only). This one was scoped to the wrong vocabulary: every directory was searched, and the search term could not see the declaration written in the framework's alias for it. A toolchain that ALIASES a value gives every declaration two spellings, and only one is greppable as itself — Tailwind's screen / full / dvh scale, a CSS custom property, a design token, a named constant.

A third finding, on the same card, worth keeping separately

Criterion 1 asks for a Playwright spec that "FAILS on origin/main". Chromium resolves 100vh === 100dvh, headless and headed, so the natural geometry assertion is permanently green on the broken source — #292's named test home limb arriving as a named BROWSER rather than a named lane. The shipped spec had to emulate a divergent browser by rewriting the served stylesheet (100vhcalc(100dvh + 290px)) before the assertion could discriminate at all.

Correction applied (on MOTIR-3208's branch)

  • All five min-h-screen swept to min-h-dvh, so the guard starts with no exemption list.
  • tests/theme/shellViewportUnits.test.ts enforces the h-screen family at zero — the alias, not the token — plus the document floor in both stylesheets.
  • tests/e2e/shell-viewport-floor.spec.ts emulates the divergent viewport, and is verified failing against origin/main's source and passing with the fix.

Acceptance criteria

  • Recorded as a lesson in motir-meta/notes.html (entry #340), which is where the durable form of this lives.
  • Closes when MOTIR-3208's pull request has merged, since the evidence above cites files that exist only on its branch until then.

Context refs

  • MOTIR-3208 — the card, and the branch carrying the correction.
  • notes.html #292 (the wrong-directory grep) and the a number is the most dangerous thing a card can contain entry — the two this sharpens.