Codex 94 laws Українська

The code of laws of the sitegen site pipeline

Codex

Laws written by mistakes

Numbers in all: 94. Black ones are held by a gate: 69. Red ones are held by a procedure, a tool or manual acceptance: 25.

Every law here was once a mistake on a live site. It was written down, caught with a trap and given a gate, so it cannot pass again. This page shows the mechanism, not a promise.

Open the site portfolio

62 sites in the catalogue, each behind the same gates

Preamble

The pipeline does not trust promises, not even its own. A mistake gets fixed once, and from then on a machine answers for it. Here is what happens to every mistake found on any of the owner's sites.

  1. Lesson

    An entry in the code: symptom, cause, rule, how we know.

  2. Trap

    A page on which the check is obliged to fail.

  3. Gate

    The check learns to catch the trap and closes the release.

  4. Self-test

    All traps are caught and the clean page passes.

  5. Other sites

    The faulty site is fixed and the others are run again.

The log runs from 10 October 2026 to 4 November 2026: 160 releases across 55 projects over 14 days, 90,380 checks at the gates. Among them, 19 releases with an error at the live address. The log does not hide them. Of 63 traps, 42 must fail and 21 must pass.

Book I

Layout and devices

On why a tablet is not a phone, and a browser window is not a device screen.

14 laws, 3 articles here

L-0011 / 3

The tablet got a phone

Symptom. An iPad showed the phone layout and a frozen picture instead of a live scene.

Cause. The condition combined touch with widths up to 1180 pixels, so touch decided the layout.

A phone is defined by width alone, up to 760 pixels. Touch is a separate axis, and a tablet with touch stays a tablet.

L-1092 / 3

A 525-pixel header

Symptom. On a 375-pixel screen all five landing pages slid sideways. The gates stayed silent.

Cause. The brand would not shrink, a button stretched to full width, and mobile emulation widened the window to fit, so the measurement agreed with itself.

In a header the brand shrinks and the button moves into the menu. A check takes width from the emulation, not from the window.

L-0973 / 3

The plan slid onto the next section

Symptom. In a short window the next heading sat right on the plan, and the totals panel lay on the text below it.

Cause. The sticky panel was a direct child of the shared grid and rode through every section. Its height ignored the window.

A sticky panel lives in a wrapper with its neighbours, and its height is the window minus the header. Where the minimum does not fit, nothing sticks.

Book II

Touch and gestures

On a finger nobody explained anything to, and a cursor a tablet does not have.

6 laws, 3 articles here

L-0201 / 3

On an iPad nothing moves

Symptom. Parallax, the live background and the cursor lens stood perfectly still on a tablet.

Cause. Every effect waited for a cursor that a touch screen does not have.

Every cursor effect has a second source: an automatic drift or the scroll.

L-0212 / 3

A rail you cannot swipe

Symptom. The swipe jerked and had no inertia, and with touch-action: pan-y the rail would not move at all under a finger.

Cause. A script intercepted the gesture and argued with the browser. The original rule was wrong too, and the gates themselves showed that.

A touch rail is native horizontal scroll with scroll-snap. The gesture belongs to the browser.

L-0233 / 3

The robot falls unless held

Symptom. A press-and-hold action explained nothing, and the robot simply fell under the finger.

Cause. A delay with no visible progress looks like a fault.

A hold shows progress, highlights its target and also works with a tap. Vibration is only an extra: iOS has none.

Book III

Safari and WebKit

On a browser you cannot see from Chrome, and a black screen after a lost context.

6 laws, 3 articles here

L-0301 / 3

Glass that is not there

Symptom. Safari before version 18 drew no glass, while Chrome was fine.

Cause. The filter value went through a variable, and the minifier also dropped the prefix.

A prefixed value is written literally, and the build targets safari15.

L-0342 / 3

The black screen

Symptom. On iOS the 3D scene vanished and left a black patch.

Cause. The system can take away a WebGL context at any moment. Nothing handled that.

A lost context is handled: prevent the default, show a stand-in frame, restore the scene.

L-0353 / 3

Chrome is no witness

Symptom. Torn clips, glass and scroll animations broke only in Safari.

Cause. Everything was tested in one engine, and the rest of the world seemed fine.

Every site passes WebKit in both iPad orientations. A real device has the last word.

Book IV

Video and media

On clips that will not play and a picture that is not there yet.

7 laws, 4 articles here

L-0401 / 4

The video that never started

Symptom. Safari on iPhone would not play a clip from Worker static hosting.

Cause. Static hosting does not answer partial file requests, and without status 206 Safari refuses to play.

Video lives only in storage that speaks Range. There is no video in Worker static files.

L-0422 / 4

A seam at the start

Symptom. A looping clip began on a torn frame.

Cause. The seam was baked into the first frames of the source.

Trim the start, cross-fade the end into the beginning, and look at the frames yourself.

L-0453 / 4

The preview that stopped a release

Symptom. The catalogue began loading preview clips on open, and the pipeline refused to release its own portfolio.

Cause. Heavy video sat in the first frame, and the phone measurement missed its budget.

Preview clips start after the visitor's first action. Until then they show a still.

L-0464 / 4

A broken frame over the language switch

Symptom. On a slow network a broken frame hung where the character should be, on top of the language switch.

Cause. The picture was shown before it was ready, with no room kept for it.

A picture does not appear until ready: a placeholder of the same size, reveal after decode, its own fallback. Nothing covers the controls.

Book V

Speed and fonts

On a single character weighing a hundred and thirty kilobytes.

9 laws, 2 articles here

L-0501 / 2

One character, 130 kilobytes

Symptom. The hryvnia sign pulled in extra sets of both fonts.

Cause. The character is missing from the Cyrillic subset, so the browser fetches a whole extra file.

A price is written in letters when the subset has no such character.

L-0542 / 2

A false contrast failure

Symptom. The measurement marked down accessibility for text that actually had plenty of contrast.

Cause. The text faded in through opacity, and the measurement caught it half transparent.

Reveal text by clipping, not by opacity. This is how the laws on this page appear.

Book VI

Cache and release

On how only committed work goes out, and a hash broken by one character.

18 laws, 6 articles here

L-0601 / 6

Old code in a new house

Symptom. After a release, visitors kept seeing old scripts and styles for hours.

Cause. Long caching sat on files with no fingerprint in the name.

Long caching only for files with a hash in the name. HTML and unhashed JSON are always revalidated.

L-0612 / 6

Released, but not in the history

Symptom. Uncommitted work turned up on live sites.

Cause. Releases went out from the working folder.

Only a commit is released: archive, clean build, gates. There is no flag to bypass it.

L-0893 / 6

The form that would not hide

Symptom. After sending, the form was hidden with an attribute and stayed on screen. The thank-you slid below it.

Cause. A display: grid rule outweighs the browser's weight for the hidden attribute.

In base styles hidden always wins, and the thank-you block scrolls to the centre.

L-0884 / 6

A hash broken by one character

Symptom. At the live address the styles were not applied. Local gates were green.

Cause. Git delivered the files with CRLF. The build hashed the carriage return, while a browser turns CRLF into LF before hashing.

Inline code is normalised to LF before hashing, and the site repository pins line endings.

L-0675 / 6

A secret in the release

Symptom. A key could have left along with the static files.

Cause. Everything lying nearby ends up in a build.

Build contents are scanned for keys, and secret files stay out of the repository.

L-0926 / 6

An error that no longer exists

Symptom. The live check reported a 404 on a new script. Twenty seconds later everything worked.

Cause. The network edge served new HTML before the new files.

A live address is checked up to three times with a pause. An error is what survives the rollout.

Book VII

Languages and text

On a translation that forgot everything that was not the page itself.

6 laws, 3 articles here

L-0701 / 3

Translation, some day

Symptom. A site went out in one language, and the translation was put off.

Cause. Later never comes, and the texts drift apart in the meantime.

Two languages from day one, Ukrainian first. The root chooses: saved choice, browser language, Ukrainian.

L-0722 / 3

Cyrillic on the English page

Symptom. The English version kept error messages in another language.

Cause. Engine strings lived apart from the dictionary.

Engine and error strings go through the same dictionary.

L-0943 / 3

The page translated, the embeds not

Symptom. The English version kept Ukrainian buttons in the 3D viewer, drawing labels and units.

Cause. A static HTML check cannot see inside a frame, a shadow tree or an SVG.

Everything a visitor sees or hears gets translated. An embedded component takes its language from the page.

Book VIII

Checks on the checks

On gates that were wrong themselves, and a defect no machine can see.

28 laws, 7 articles here

L-0801 / 7

The gate that passed nothing

Symptom. A check cheerfully reported zero places while new variants went unchecked.

Cause. An empty set counted as success.

An empty set of pages is a failure.

L-0852 / 7

The lesson that corrupted itself

Symptom. A generator script damaged a special character in a path, and later the text of this very lesson.

Cause. In Windows paths \b becomes a backspace, and a replacement string reads the dollar sign its own way.

Code with regexes and paths is edited in an editor or with a replacer function, and then the self-test runs.

L-1063 / 7

A long font stack

Symptom. First paint on a phone wandered between 1.9 and 6.4 seconds.

Cause. The browser walked a long font list while computing styles. A system stack gave a steady 1.2 to 1.4 seconds.

A stack is your own font, the system font and a generic family. More than five named foreign families earns a warning.

L-1074 / 7

Drive C: reached zero

Symptom. Agents' screenshots and builds kept failing: 1178 Chrome profile folders piled up in two days.

Cause. A folder could not be deleted while Chrome held its files, and after a crash cleanup never ran.

Temporary files live on D:, a profile is deleted with retries, and old ones go on every launch.

L-1135 / 7

The blank document that passed

Symptom. A page went blank at any width, and some gates let it through: nothing was left to overflow.

Cause. A rule hiding markup by attribute also caught the html element itself.

Hiding rules apply only inside body. A page with no visible element is an error.

L-1176 / 7

The button that waited for data

Symptom. On a phone the first tap on the request button itself started loading data, and the request failed.

Cause. The button read the wall length from data that arrived after the first action.

A request button does not depend on the data having arrived. If it has not, the button uses what the visitor can see.

L-1207 / 7

A rectangle for a saucepan

Symptom. The scenes were complex and there was nothing to look at: a hob as a rectangle, people as circles.

Cause. Technique outran the subject, and gates do not judge that.

A subject is recognised without a caption. An abstract stand-in in delivered work is a defect, however strong the technique.

Register

The full list, numbers: 94. The ¶ sign leads to an article. Articles on this page: 31, the rest stay in the original code.

I Layout and devices

  1. L-001sg.safari sg.layout
  2. L-002sg.safari
  3. L-003sg.layout
  4. L-004sg.safari
  5. L-005sg.layout
  6. L-006no gate
  7. L-007sg.layout
  8. L-008sg.layout
  9. L-009no gate
  10. L-010sg.lh
  11. L-011sg.layout
  12. L-012sg.touch
  13. L-097sg.sticky
  14. L-109sg.layout

II Touch and gestures

  1. L-020sg.touch sg.safari
  2. L-021sg.touch sg.safari
  3. L-022no gate
  4. L-023sg.hold
  5. L-024sg.lh
  6. L-025no gate

III Safari and WebKit

  1. L-030sg.safari
  2. L-031sg.safari
  3. L-032no gate
  4. L-033sg.files
  5. L-034sg.nogpu
  6. L-035sg.webkit

IV Video and media

  1. L-040sg.media sg.files
  2. L-041sg.html
  3. L-042sg.media
  4. L-043no gate
  5. L-044sg.lh
  6. L-045sg.lh
  7. L-046sg.slow

V Speed and fonts

  1. L-050sg.safari
  2. L-051sg.i18n
  3. L-052sg.safari
  4. L-053sg.lh
  5. L-054sg.lh
  6. L-055sg.lh
  7. L-056sg.lh
  8. L-057sg.lh
  9. L-058sg.lh

VI Cache and release

  1. L-060sg.cache
  2. L-061no gate
  3. L-062sg.files
  4. L-063no gate
  5. L-064no gate
  6. L-065no gate
  7. L-066sg.js
  8. L-067sg.files
  9. L-068sg.html
  10. L-069sg.csp
  11. L-086sg.webkit
  12. L-087sg.webkit
  13. L-088sg.csp
  14. L-089no gate
  15. L-090sg.console
  16. L-091sg.safari
  17. L-092no gate
  18. L-093no gate

VII Languages and text

  1. L-070sg.i18n sg.html
  2. L-071sg.i18n
  3. L-072sg.i18n
  4. L-073sg.html
  5. L-074no gate
  6. L-094sg.lang

VIII Checks on the checks

  1. L-080no gate
  2. L-081no gate
  3. L-082no gate
  4. L-083sg.layout
  5. L-084no gate
  6. L-085sg.js
  7. L-095no gate
  8. L-096sg.lang
  9. L-098no gate
  10. L-099sg.html sg.seo sg.geo
  11. L-100sg.html sg.geo sg.seo
  12. L-101sg.webkit
  13. L-102sg.lang
  14. L-103sg.layout sg.safari
  15. L-104sg.lh
  16. L-105sg.lh
  17. L-106sg.safari
  18. L-107no gate
  19. L-108sg.a11y
  20. L-110no gate
  21. L-111sg.files
  22. L-112sg.csp
  23. L-113sg.layout sg.webkit sg.nogpu sg.lh
  24. L-116sg.motion sg.touch sg.html sg.webkit
  25. L-117sg.go
  26. L-118no gate
  27. L-119no gate
  28. L-120no gate

Guards

Gates in all: 23. Laws and traps are counted from the code, checked places from the log, across all 160 releases.

  1. sg.html

    Title, description, canonical, hreflang, icon, each language in its folder, a poster for scroll video.

    laws
    7
    traps
    4
    places checked
    4,693

    L-041 L-068 L-070 L-073 L-099 L-100 L-116

  2. sg.csp

    Content security policy: hashes of inline code and no foreign CDN, not even through an importmap.

    laws
    3
    traps
    3
    places checked
    4,789

    L-069 L-088 L-112

  3. sg.cache

    Long caching only for files with a fingerprint in the name.

    laws
    1
    traps
    1
    places checked
    21,574

    L-060

  4. sg.safari

    Static Safari traps: the glass prefix, width thresholds, rails, 100vh, a long font stack.

    laws
    12
    traps
    4
    places checked
    7,120

    L-001 L-002 L-004 L-020 L-021 L-030 L-031 L-050 L-052 L-091 L-103 L-106

  5. sg.files

    What goes into a release: an allowlist, no keys or video, the weight of 3D models.

    laws
    5
    traps
    2
    places checked
    23,767

    L-033 L-040 L-062 L-067 L-111

  6. sg.js

    Syntax of every module before a release.

    laws
    2
    traps
    1
    places checked
    1,061

    L-066 L-085

  7. sg.i18n

    Same dictionary keys, no Cyrillic on Latin versions, Ukrainian letters present in the font.

    laws
    4
    traps
    1
    places checked
    1,671

    L-051 L-070 L-071 L-072

  8. sg.seo

    Unique titles, h1, alt, absolute addresses, robots.

    laws
    2
    traps
    3
    places checked
    3,508

    L-099 L-100

  9. sg.geo

    Data for AI search: markup that matches the visible text, llms.txt with no dead links.

    laws
    2
    traps
    2
    places checked
    3,508

    L-099 L-100

  10. sg.layout

    Ten screen sizes: sideways overflow, clipped text, a blank page, the correct layout.

    laws
    10
    traps
    4
    places checked
    9,410

    L-001 L-003 L-005 L-109 L-007 L-008 L-011 L-083 L-103 L-113

  11. sg.console

    Not one error or exception in the console.

    laws
    1
    traps
    1
    places checked
    2,390

    L-090

  12. sg.motion

    With reduced motion requested, animations stand still.

    laws
    1
    traps
    1
    places checked
    614

    L-116

  13. sg.touch

    On touch the first screen is alive, rails swipe with a finger, and the page stays put.

    laws
    4
    traps
    2
    places checked
    352

    L-012 L-020 L-021 L-116

  14. sg.hold

    A hold shows progress and also works with a tap.

    laws
    1
    traps
    1
    places checked
    680

    L-023

  15. sg.go

    The request button works even while the data is still on its way.

    laws
    1
    traps
    1
    places checked
    13

    L-117

  16. sg.nogpu

    Without WebGL there are no exceptions and the page is not blank.

    laws
    2
    traps
    no trap
    places checked
    213

    L-034 L-113

  17. sg.sticky

    A sticky panel is no taller than the window and never rides over neighbouring text.

    laws
    1
    traps
    1
    places checked
    1,476

    L-097

  18. sg.lang

    Everything visible in a browser, including frames, shadow trees and SVG, is in the page language.

    laws
    3
    traps
    3
    places checked
    664

    L-094 L-096 L-102

  19. sg.slow

    A slow network: a broken picture on screen, controls covered during loading.

    laws
    1
    traps
    3
    places checked
    502

    L-046

  20. sg.webkit

    The same site in WebKit: iPad in both orientations, iPhone, security policy errors.

    laws
    6
    traps
    3
    places checked
    1,023

    L-035 L-086 L-087 L-101 L-113 L-116

  21. sg.media

    Video answers with status 206, and a loop has no torn seam.

    laws
    2
    traps
    no trap
    places checked
    620

    L-040 L-042

  22. sg.lh

    Lighthouse with a budget: phone score, LCP, CLS, weight, a median of three compressed runs.

    laws
    13
    traps
    no trap
    places checked
    732

    L-010 L-024 L-044 L-045 L-053 L-054 L-055 L-056 L-057 L-058 L-104 L-105 L-113

  23. sg.a11y

    A paid option: axe against WCAG 2.1 AA and a walk with the Tab key. Not found does not yet mean compliant.

    laws
    1
    traps
    1
    places checked
    0

    L-108

Colophon

How it is made

  • There is no application JavaScript. The page carries 238 bytes that set the layout, and the root another 651 bytes that choose the language.
  • The page weighs about 16 KB compressed, styles included. There are no web fonts, it is set in a system serif.
  • The guard sheet is the popover attribute. The active tab, the top bookmark and the laws appearing on tablet and desktop are scroll-driven CSS animations.
  • You can print this page: separate @page rules compose an A5 booklet with page numbers.
  • The build counts every number from a snapshot of the log, commit 5317d9b. None is typed by hand. The pipeline holds 1,592 lines of checks and 623 lines of traps.

What is not here

  • 31 articles selected out of 94. An AI retold them from the Russian original of the code into Ukrainian and English, shortened, with figures taken from the lessons.
  • The active tab and appearing laws need scroll-driven animation. Older browsers show the same text without them.
  • The gates test WebKit on Windows. Real iPads and phones took no part in this measurement.
  • Printing has been checked in Chrome only.
  • The numbers describe the log up to 4 November 2026 and are already out of date by newer releases.

Open the site portfolio

The text, the code and the choice of lessons were written by an AI (Claude) under the direction of the pipeline's owner. No real people appear on this page.

sg.html

Title, description, canonical, hreflang, icon, each language in its folder, a poster for scroll video.

laws: 7 · traps: 4 · places checked: 4,693

sg.csp

Content security policy: hashes of inline code and no foreign CDN, not even through an importmap.

laws: 3 · traps: 3 · places checked: 4,789

sg.cache

Long caching only for files with a fingerprint in the name.

laws: 1 · traps: 1 · places checked: 21,574

sg.safari

Static Safari traps: the glass prefix, width thresholds, rails, 100vh, a long font stack.

laws: 12 · traps: 4 · places checked: 7,120

sg.files

What goes into a release: an allowlist, no keys or video, the weight of 3D models.

laws: 5 · traps: 2 · places checked: 23,767

sg.js

Syntax of every module before a release.

laws: 2 · traps: 1 · places checked: 1,061

sg.i18n

Same dictionary keys, no Cyrillic on Latin versions, Ukrainian letters present in the font.

laws: 4 · traps: 1 · places checked: 1,671

sg.seo

Unique titles, h1, alt, absolute addresses, robots.

laws: 2 · traps: 3 · places checked: 3,508

sg.geo

Data for AI search: markup that matches the visible text, llms.txt with no dead links.

laws: 2 · traps: 2 · places checked: 3,508

sg.layout

Ten screen sizes: sideways overflow, clipped text, a blank page, the correct layout.

laws: 10 · traps: 4 · places checked: 9,410

sg.console

Not one error or exception in the console.

laws: 1 · traps: 1 · places checked: 2,390

sg.motion

With reduced motion requested, animations stand still.

laws: 1 · traps: 1 · places checked: 614

sg.touch

On touch the first screen is alive, rails swipe with a finger, and the page stays put.

laws: 4 · traps: 2 · places checked: 352

sg.hold

A hold shows progress and also works with a tap.

laws: 1 · traps: 1 · places checked: 680

sg.go

The request button works even while the data is still on its way.

laws: 1 · traps: 1 · places checked: 13

sg.nogpu

Without WebGL there are no exceptions and the page is not blank.

laws: 2 · traps: no trap · places checked: 213

sg.sticky

A sticky panel is no taller than the window and never rides over neighbouring text.

laws: 1 · traps: 1 · places checked: 1,476

sg.lang

Everything visible in a browser, including frames, shadow trees and SVG, is in the page language.

laws: 3 · traps: 3 · places checked: 664

sg.slow

A slow network: a broken picture on screen, controls covered during loading.

laws: 1 · traps: 3 · places checked: 502

sg.webkit

The same site in WebKit: iPad in both orientations, iPhone, security policy errors.

laws: 6 · traps: 3 · places checked: 1,023

sg.media

Video answers with status 206, and a loop has no torn seam.

laws: 2 · traps: no trap · places checked: 620

sg.lh

Lighthouse with a budget: phone score, LCP, CLS, weight, a median of three compressed runs.

laws: 13 · traps: no trap · places checked: 732

sg.a11y

A paid option: axe against WCAG 2.1 AA and a walk with the Tab key. Not found does not yet mean compliant.

laws: 1 · traps: 1 · places checked: 0