Design Memory Platform

Technical diary

15 records · 7 decisions · 1 moments · 3 features · 1 tickets · 3 quotes
D129 newadoptedRecordsDecision07 Jul 2026

Records Hub: Date column after ID, date out of Status, key types newest-first

In the Records Hub table, a record's date now has its own column immediately after ID, instead of sitting as a badge inside the Status column. The Status column keeps only status, category and origin badges. Decisions, pivotal moments and features are listed newest-first (descending ID), so the latest work is at the top and the earliest at the bottom.

D130 newadoptedRecordsDecision07 Jul 2026

Records Hub: auto-link record references (D/P/T/F/Q) to their pages

In the Records Hub, any record reference - D129, P024, T012, F006, Q021 and the like - appearing in a field value, whether in a related-records list or inline in decision, rationale, moment or description prose, is now rendered as a hyperlink to that record on its dedicated page (D to gaad_decisions.html#D###, P to pivotal moments, T to tickets, F to features, Q to quotes). Quote cards gained per-record id anchors so quote links resolve; the other record pages already had them, with scroll-margin already set to clear the sticky header.

D131 newadoptedConventionDecision07 Jul 2026

Technical Spec sections carry a per-section date, bumped when the section changes

Each Technical Specification section now carries its own date field, seeded at 2026-07-01 for all twelve sections. When a section's content is updated, its date is bumped to the date of that update. The Records Hub surfaces this in the Date column, and the tech spec schema gained a date entry describing the rule.

D132 evolvedadoptedArchitectureDecision07 Jul 2026

Lineage storage: flat sN_gNN stage files + lineage.json master record (Lineage Spec v0.01)

Generations now write to a flat Generations/ set: lineage.json (the master array record - strings, pivots, current_position, global creation index) plus one s{string}_g{generation}.json stage file per breed (s3_g07.json). Lexical sort of the filenames IS the genetic array, the 1994 discipline (one folder, the names tell the story) with the 2026 upgrade that JSON content is the single source of truth and filenames are a human-readable mirror. Development caps: 9 strings, 99 generations, defined once as constants, with honest warnings at every boundary. Strings are first-class records (id, parent_string, pivot_generation, pivot_variant_id, status active/preserved - no deleted status by design). The 1994 visit counter becomes DERIVED, never stored: visit n at depth g = the nth string through that depth, shown as an homage label (g07 visit 2) that can never drift. Breeding at a string tip extends it; breeding from a backtracked mid-string position opens a new string with its pivot recorded; pivot selections append to pivot_selection_events, never overwriting the historical selection_event. First Generation ARCHIVES any existing lineage set into Generations/archive_<timestamp>/ (moved, never deleted). Stage files today carry full parameters for all variants with sibling_seeds alongside; D030 seed-slimming is a later size optimisation, not a structure change. Old gen_XXX data is untouched and ignored. Shipped in generator v0_46, unit-tested with a simulated Fig 3.29 session. Full schema: Spec/GAAD_Lineage_v0_01_Storage_Specification.md.

D133 evolvedagreed - engine in buildInteractionDecision07 Jul 2026

Backtrack interaction: the Navigator is the Track decision point; the button commits, selection never does

Agreed flow (Miles, 07 Jul): pressing Backtrack in the Generator switches to the Navigator scene (skipped if already there). The user selects any past stage on any string - the backtrack target. A second press of the button (contextually relabelled, e.g. 'Backtrack to Gen N') performs the return: the target generation's full grid replays in the Generator world, the historical champion restored and highlighted - the world exactly as it stood. Selecting a stage and breeding then follows the D132 string rules. Selection alone NEVER commits anything; only the button press does. Rapid Stage Select is disabled for the entire F006 build (addon v0_93 development guard) so a click on a replayed grid can never trigger an accidental breed. Boundary behaviour keeps the 1994 warnings, starting with the progenitor warning verbatim.

D134 1994adoptedInterfaceDecision07 Jul 2026

Navigator stages are circles: square is where design happens, circle is where design is remembered

Navigator lineage stages are circular discs (tree v0_11), returning to the 1994 evolutionary tree language (Figs 3.21 / 3.28 / 3.29 - specimens under glass, cells in a lineage). The World keeps square stages. The geometry itself now distinguishes the two scenes at a glance: square = plot/site, the unit of WORK; circle = cell/specimen, the unit of MEMORY. Disc diameter = stage size, same thickness, colours (neutral / DEADEND_RED / CURRENT_GOLD), engine stamps and connectors unchanged; raw-mesh 48-segment disc, zero bpy.ops (v0_6 fast-geometry discipline). Proposed by Miles ('circles like 1994 - they look more genetic'), runtime-confirmed same day ('such a quick fix fable - love it').

D135 evolvedadoptedProcessDecision07 Jul 2026

Hardening the build loop: maths before code, pure layout module, headless smoke test, scene-state ownership, drop discipline

Five practices adopted after the Bauhaus-persistence and disc-spacing troubleshoot cycles (07 Jul): (1) MATHS BEFORE CODE - any geometry or layout change gets a stated derivation (inputs, formula, worked example at 60/85/100m) agreed before scripting; Miles's 'confirm the maths first' demand ended the disc saga in one message. (2) PURE LAYOUT MODULE - layout arithmetic moves to a bpy-free gaad_tree_layout.py (the gaad_palette pattern) with a test file asserting invariants: pitch >= largest disc diameter (no overlap ever), radius >= half x sqrt2 (containment), connector endpoints on circumference. (3) HEADLESS SMOKE TEST - blender --background --python gaad_smoke_test.py builds a synthetic two-string lineage, runs generator + tree for real, asserts disc bounds do not intersect, materials match the active colour mode in BOTH scenes, labels carry stamps, stage files parse; catches the runtime class of bug (Bauhaus) invisible to sandbox syntax checks. Spec: Spec/GAAD_Smoke_Test_v0_01. (4) SCENE-STATE OWNERSHIP - any state crossing scenes gets a named source of truth at design time (colour mode: the Generator scene); the smoke test asserts the sync. (5) DROP DISCIPLINE - every mid-session file drop lists which files move together; shared modules use defensive reload-and-fallback imports; fast iteration days prefer micro-bundle zips over loose files. Build order: smoke test first (multiplies Miles's testing), layout module second.

P050 MilestoneMoment07 Jul 2026

The genetic array reborn: multiple generative strings render in the Navigator, 32 years on

Runtime-confirmed by Miles at 14:12, Gen 15 on the panel, one build day after the thesis chapter reread: the Navigator (tree v0_8) draws the lineage array live - parallel vertical generative strings, rows aligned by generation depth, gold pivot connectors where strings branch, tips labelled honestly. The full Backtrack loop ran end to end for the first time: Backtrack in the Generator opened the Navigator (the Track decision point, D133); a stage selected there turned gold on commit and the world replayed that generation from its stage file with the historical champion gold (generator v0_47 - replay, never mutation, the 1994 contract); breeding from the backtracked position opened new strings with pivots recorded (D132). Miles's verdict, verbatim: 'WOW WOW WOW!'

F027 adoptedInteractionFeature07 Jul 2026

Gold champion in the Navigator: see where each string finished, re-champion by selection

Miles, 07 Jul (during the F006 build, captured on hold pending his 0_123 storage-layer testing): in the Navigator view the gold champion is not visible today, yet it is a great visual clue to where a generative string last finished. Proposed: (1) the Navigator shows each string's latest champion in gold - the tip of every string readable at a glance across the lineage array; (2) clicking a stage in the Navigator to select a new champion turns that stage gold and returns to the World view with the same stage championed - the Navigator becomes not just the Track decision point (D133) but the re-championing surface. DESIGN NOTE to resolve when built: D133 agreed that selection never commits and only the button press does; this feature as described has the click turning gold and returning - reconcile whether the gold-turn is preview (commit still on the button) or whether re-championing in the Navigator is a deliberate exception to the selection-never-commits rule. Natural build companion to tree v0_8 (the multi-string Navigator, F024) since both touch the same render pass. Gold champion palette already shared via gaad_palette.py. OFF HOLD + REDESIGNED BY MARKUP (Miles, 07 Jul, after runtime-testing the array): (1) empty tip stages are NOT rendered at all - no platform, no text (their data stays on disk untouched); (2) each PRESERVED string's last champion stage is coloured RED - the dead end, the 1994 word made visible; (3) the ACTIVE string's last champion stage is GOLD (CHAMPION_GOLD, matching the Generator world's champion fill, D042 - chosen over green for one-colour-one-meaning across scenes; green remains a one-line constant swap, DEADEND_RED/CURRENT_GOLD in tree v0_10). Consequence accepted: the unjudged final grid of each string is no longer clickable in the Navigator - the red dead end is the string's last DECISION, the truer endpoint. Shipped in tree v0_10 (v0_9 was a withdrawn tip-label restyle; number retired). Re-champion-by-selection commit question from the original note: resolved in practice by D133 - the button commits, and the backtrack gold-turn on commit is live since addon v0_94. RUNTIME-CONFIRMED (Miles, 07 Jul, 'BINGO!'): tree v0_10 verified live - tips gone, two red dead ends on preserved strings, gold current champion on the active string's deepest decision. Confirmation screenshot banked at Website/episodes/ep4_lineage_array_dead_ends_red_champion_gold_07jul2026.png - candidate EP4 hero image alongside the P050 proof shot. Gold-vs-green settled by viewport: gold stands. SPLIT (Miles, 07 Jul): the colour state language (red dead ends / gold current champion / tips hidden) is now its own feature, F028. F027 remains the record of the original idea and the re-champion-by-selection interaction, resolved via D133.

F028 adoptedInterfaceFeature07 Jul 2026

Navigator state colours: red dead ends, gold current champion, tips hidden

The Navigator's colour state language, designed by Miles's viewport markup and runtime-confirmed same day ('BINGO!'): every stage in the lineage array reads its fate at a glance. NEUTRAL GREY = history (a champion on the path); RED = dead end, each preserved string's last champion - the 1994 word made visible, where a line of work was honourably set aside; GOLD = the current champion, the active string's deepest decision, in the same CHAMPION_GOLD the Generator world uses (one colour, one meaning, both scenes - chosen over green for cross-scene consistency, green a one-line constant swap). Empty tip stages (bred but unjudged) are not rendered at all - no platform, no text; their data stays on disk untouched, and the red dead end becomes the string's true endpoint: its last DECISION. Rule of thumb: gold = newest string, that string's last decision - depth in the array is history, gold is recency; gold marks decisions, not transient backtrack position (a future white current_position ring can mark 'where am I now' - lineage.json already knows). Shipped in tree v0_10, carried into the circular discs of v0_11 (D134). Split out of F027 as its own feature at Miles's direction.

F029 adoptedInterfaceFeature07 Jul 2026

Circular Navigator stages: the 1994 evolutionary tree language returns

Navigator lineage stages are circular discs, proposed by Miles ('circles like 1994 - they look more genetic') and runtime-confirmed same day ('such a quick fix fable - love it'). Returns the Navigator to the 1994 evolutionary tree plates (thesis Figs 3.21 / 3.28 / 3.29 - specimens under glass, cells in a lineage). The World keeps square stages: square = plot/site, the unit of WORK; circle = cell/specimen, the unit of MEMORY - the geometry itself distinguishes the two scenes at a glance, and the scene boundary quietly teaches the Evolve/Backtrack distinction on every crossing. Aligns the live tool with the website hero's dots-on-a-path and Q024's atoms (atoms are round). Disc diameter = stage size, same thickness, F028 colours, engine stamps and pivot connectors unchanged; raw-mesh 48-segment disc, zero bpy.ops. Shipped in tree v0_11; the decision record is D134.

T018 highclosedNavigatorTicket07 Jul 2026

Navigator button does not switch scenes against v0_46 lineage data

Fixed in tree v0_8 (the lineage array build, pulled forward from pass 3): reads lineage.json + flat stage files; strings as parallel columns, rows by generation depth so pivots align; unselected string tips render as platform + 'no champion yet' label so every string is visible from its first breed; gold pivot connectors; lineage objects stamped with gaad_lineage_string / gaad_lineage_generation / gaad_variant_id (the D133 Backtrack engine's selection hooks); legacy G### fallback kept for pre-lineage data. Discovery layer sandbox-tested with a synthetic two-string set. Awaiting Miles's runtime confirmation.

Q024 claudeQuote07 Jul 2026

"Stages are the atoms of the memory - every one replayable as a 3D view."

Coined during the Backtrack (F006) design session, on the day the Backtrack button entered the EVOLVE panel (addon v0.92). Miles had just confirmed, via the 1994 genetic array (thesis Fig 3.29, three vertical generative strings, items 1-32), that every stage ever generated is preserved and replayable in 3D - Backtrack moves the working position but never destroys. Miles flagged the phrase for the platform description and Episode 4. It condenses D030 (store the recipe, not the cake) and the design memory positioning into one line.

Q025 claudeQuote07 Jul 2026

"The languages are vocabularies plugged into the platform. Backtrack is not a vocabulary - it is part of the engine's grammar, there in classic GAAD from the start. The Rebirth is not faithful to 1994 until it can move backwards as well as forwards."

Said as the Backtrack (F006) build began, responding to Miles's framing that design languages (GRAL, MHAL) are add-ons while Backward tracking belongs to classic GAAD (1994) and has to be nailed. Fig 3.17 shows Track wired into the algorithm itself. The thesis audit found Navigation and Tracking the one category where the Rebirth covered 0 of 5 original features - this session starts closing the biggest gap in the revival. Companion line from the same exchange: slow at the foundation, fast above it. Miles flagged the quote for Episode 4.

Q026 claudeQuote07 Jul 2026

"Nailing it means more here, because the bar is higher than for a feature: Backtrack is the load-bearing wall for everything after it."

Third anchor quote from the Backtrack (F006) build day, tidied for Episode 4. The lineage model laid down for Backtrack is what F024 draws, what D038 scoring will one day traverse, and what the Design Memory vision ultimately reads - and storage schemas are the hardest thing to change once real design sessions have written data into them. Hence the build-day discipline: spec before code, the 1994 behaviours as the acceptance test, small passes runtime-verified between each. Slow at the foundation, fast above it. Sits with Q024 (atoms of the memory) and Q025 (vocabularies vs grammar).