GAAD Diary · Design Memory Platform

GAAD Technical Diary - 27 July 2026

Technical diary · generated from gaad_diary_technical_20260727.md by Scripts/gaad_diary_html.py · never hand-edited

The AFAL studio went live on the GAAD website, hidden. The web host ran V1_00
to V1_03, the Blender prototype v3_034 to v3_042, and a working method was
settled that is probably the most durable thing the day produced.

The web host: V1_00 to V1_03

V1_00 was the panel as Miles settled it at 08:27, leaving the preview naming
behind: HOST.version 1_00, the title bar reading AFAL STUDIO V1_00, and every
genome recording glas_version 1_00. Panel order AFAL STUDIO / SPECIES /
PRESETS / GENERATE / PARAMETERS / RNG / GENOME FILE.

Built through the morning, each confirmed by eye before the next: auto-spin
resuming 0.2 s after you stop touching it, verified 13 of 13 outside the
browser; the whole species tree, family row gone, all twenty species under six
family headings with the built ones live and the planned ones inert; presets
moved above Generate, reversing the earlier ruling, each naming its species
and staying lit until a slider edit, a tree click or a roll clears it; Roll
seed x 8 with a counter and a second press to stop; tooltips on every live
control and none on the inert ones; precedent figures in GAAD gold, generated
from the real curves rather than traced so figure and law cannot drift, at
about 5 KB against the 274 KB five photographs would have cost.

A layout bug was found by the tree itself. The app carried min-height 100vh,
so the stage grid took its row height from whichever column was taller; once
the tree made the panel longer than the window, the viewport stretched with it
and the specimen was centred in a canvas whose middle sat below the fold. Now
height 100vh, the panel scrolling inside itself as its overflow always
intended, and the projection centre moved from 52 per cent to 44.

V1_01 removed the page header so the host site could supply GAAD's identity,
moving its readout under the studio title box rather than losing it, and added
the composed PNG export. V1_02 unwrapped that readout, which was breaking as
"drag to / orbit" at 326px of text in 307px of space; the fix cut the words
rather than shrinking the type, because the viewport hint already says it.
V1_03 added measured height and diameter beside the genes, plan and elevation
thumbnails, and opened the elevation clamp from 1.4 radians to a right angle
so a true plan is reachable.

Blender: v3_034 to v3_042

v3_035 to v3_038 were built without ever being run, each up-versioned because
each changed behaviour, then folded into one file to test. v3_035 brought SPIN
as a turntable that rotates the view so no gene is touched, and STRENGTH as
one RNG slider sharing the web's law, with default 1.0 taking the old call
outright because the midpoint form drifts up to 7.1e-15 over 43200 draws and
would have moved forms Miles had already accepted. v3_036 added the language
readout, which reads the file live and whose decode message now names the real
mistake rather than the symptom. v3_037 put language first in the panel.
v3_038 paired the panel with V1_00.

The first host test of the lot found four behaviour faults. v3_039: Strength
was wired but silent, read only inside create_specimen so it did nothing until
the next Grow while the six sliders above it applied instantly. v3_040: spin
turned anti-clockwise on the web and clockwise in Blender, one character,
because the web turns the model and Blender turns the view so identical signs
give opposite motion. v3_041: a hand-set Population of 876 snapped to 122 on a
Strength nudge, so a hand-set gene is now pinned with an icon and a fresh Grow
clears the pins. v3_042: Sunflower handed to Shell or Cone gives a speck,
because Phyllotaxis supplies its own 137.5 degrees and its presets carry
Rotation 0 legitimately, so a species reading Rotation as written gets step 0
and collapses 500 instances onto one point. Miles ruled warn, change nothing.

Confirmed in the host: panel registers and draws, the language readout reads
the real .json at AFAL 0.004, the whole tree draws with all six families,
presets fire, and spin passes including direction after v3_040.

The studio reaches the website

Shape C was ruled after the three framings were measured: glasshouse.html is a
full GAAD page and glasshouse/studio.html the studio behind it, full width.
Boxing the studio inside the 1120px site wrap would have left the 3D view
about 730px against roughly 1060px at the width Miles works in.

Website/build_studio.py now turns the bench fragment into the live page. The
file drops into studio_src/ unaltered, and the generator titles the page from
the fragment's own HOST.version, injects one route home carrying the GAAD mark
lifted from index.html, and fails rather than fixes: em dashes, en dashes and
smart quotes are reported with file, line and context, and any off-page
reference or network call fails the build. It failed the morning fragment and
named four characters at lines 212, 246 and 675; CT cleared all four before
the next drop.

Placement runs a chain, panel first then header then a floating mark, because
the view carries its precedent figure absolutely placed at top-left and its
hint at top-right. The mark landed in flow at the top of the panel, above the
studio title.

gaad_web_check went v0.3 to v0.5. CHECK 5 now means reachable from index.html
rather than referenced anywhere, negative-tested twice. CHECK 6 discovers
every build_*.py rather than naming two, copies the whole tree so a generator
reading and writing subfolders can run, and fails on any generator it cannot
map to a page; three are exempt with a stated reason reported every run.

A defect of this seat's own was caught by the new generator on its first run:
the hand-wrapped studio shipped in 1_051 and 1_052 with an unterminated
favicon href, which swallowed the opening style tag so the shell CSS never
applied and the route home rendered as a plain browser link. Fixed in 1_053.

Daily was retired. daily.html and both day pages are redirects to diary.html,
hash preserved and noindexed, their three sitemap entries removed.

Publishes and records

Website publishes 1_051 through 1_055 were cut and verified from their own
extractions, each proving the regeneration faithful by leaving every other
page byte-identical. Records filed: D210 the two-page framing, D211 the
reachability rule, D212 the file boundary in the seat split, D213 the
version-per-bundle rule, D184 closed on Daily; F055 the generator route, F056
the exported picture carrying its own genome, F052 progressed to live; P075
the Glasshouse reaching the server; Q049 the working method and Q050 the
species tree; T032 gained three relays, T034 the wordmark vector, T035 the
preset faults; A0028 to A0031 opened and A0024 extended.

Bench errors recorded

The bench cut a file between two positions rather than replacing an exact
string while removing the scale bar, and the plan and elevation projectors
went with it. It failed silently, no console error, and the readout kept
rendering because it runs before the throwing call. Caught only because Miles
asked for a layout change immediately afterwards. The recommended addition to
the house rule is that a deletion is an edit, and where a fix cannot be
verified by reading, verify by output.

Also corrected: the 26 July close-of-day note saying the records zip was never
made is wrong. That zip exists, 20 entries, integrity clean.

Open actions at close

| Action | Category | Priority | Owner | Status | Title |
|---|---|---|---|---|---|
| A0019 | AFAL | high | Claude | open | The language file is behind the engine |
| A0024 | AFAL | high | Claude Code | part done | Validate the Shell range slice, tune the emergence window, roll to five |
| A0020 | AFAL | medium | Claude | open | T1 research for the bench species |
| A0021 | AFAL | medium | Claude | open | Surface topology: the tier that makes a panel system possible |
| A0027 | AFAL | medium | Miles + Code Technician | open | Itemise the v3_029 issues Miles saw in Blender |
| A0025 | AFAL | low | Claude Code | open | Geometric NATURE row on the Singularity panel |
| A0017 | FILMS | medium | Miles | part done | Film 001 - The Rebirth: storyboard v3, real GAAD footage |
| A0011 | GALF | high | Miles | open | Rule the fourth element: does a relationship carry a rationale |
| A0012 | GALF | high | Miles | open | TWAL s6: map the three retired types |
| A0013 | GALF | medium | Miles | open | ARAL s6 declares types but states no triples |
| A0028 | Genome | high | Miles | open | Rule forward compatibility: can AFAL add a word to its own language |
| A0029 | Languages | high | Miles | open | Rule T1 readiness, and whether the float64 rebuild is the prerequisite |
| A0030 | Languages | medium | Miles | open | Rule the waisted phyllotactic species - the pine cone question |
| A0031 | Languages | medium | Miles | open | Rule the preset faults: seed provenance and differing values |
| A0001 | MHAL | high | Miles | open | Midtown East recount under the D181 tax block rule |
| A0015 | MHAL | medium | Miles | open | The prototype carries MHAL verbatim at v0.003 |
| A0016 | PLATFORM | medium | Miles | part done | Fly Past on generator strings |
| A0014 | Platform | high | Claude | part done | The language-file generator: JSON to HTML, in the pipeline |
| A0022 | Platform | high | Claude | open | AFAL has no assert contract and no Validate steps |
| A0008 | Platform | low | Miles | open | Prototype/ carries stray ARAL versions |
| A0007 | Website | medium | Claude | part done | Canonicals for generated record and language pages |
| A0023 | Website | medium | Claude | open | Episode 6: AFAL and the singularity |
| A0006 | Website | low | Miles | open | Latest episode first - name the surface |
| A0010 | Website | low | Miles | part done | Website drifts from the bundle - accepted, not overlooked |

Four of these were opened today and all four wait on the Chief Architect.
A0028 holds the bench: neither the DOT module nor a new species can be built
until forward compatibility is ruled.