From 0f90633a8ab29e33785063ba227880cc2e798e39 Mon Sep 17 00:00:00 2001 From: pseudo Date: Sun, 23 Aug 2026 23:38:18 -0600 Subject: [PATCH] [Research 74] Pull all 27 UX Pilot designs as HTML, and measure the lineage Closes the remaining half of #74. The coverage map and previews landed earlier; this adds the markup under them and corrects what the previews implied. All 27 pulled through the uxpilot MCP (no builder harness has it), none truncated, landed at uxpilot//.html beside their PNGs. The measurements change three things the earlier MANIFEST got from previews: useCase is wrong on 14 of 27 designs. Every one of them claims desktop (1440x1024), including the three 1024x1366 iPad screens. Measured dimensions is the only trustworthy width, and group names are not viewports: Find Node is 4 desktop plus 1 phone, not Phone; Gate Interaction is 1 tablet, 3 desktop, 1 phone; Porch Site Mobile Redesign is 7 desktop, 1 tablet, 1 phone. The page holds two incompatible visual languages, not one evolving design. Family A is Fraunces/Space Grotesk/IBM Plex Mono on #EDE8DE with zero chevrons, 11 designs. Family B is Inter/JetBrains Mono, dark or light inconsistently, with a 10-16 chevron sidebar tree, 16 designs. A ran 00:11-00:24 and again at 01:37; B ran 00:30-01:19. Family A governs, recorded as a decision so it can be overridden. The three most recent designs on the page are A (the iPad trio at 01:37); every shipped artifact is A; and the iPad is the MUST-tier target since FR-7 was promoted at FRD rev. 6. Family B stays as recorded exploration, and alggCr6fYS7YFpxmiGWt is the strongest argument on record for a tree sidebar over containment, which FR-1 now rejects deliberately rather than by omission. Extraction provenance measured rather than assumed, by token overlap against all 27: 01-site.html matches lxhbQ26SZ1QzUt8vTpUK at 0.830 with the runner-up at 0.385, and 02-gate.html matches c6PfQn1i22G2IcFejzaZ at 0.863 against 0.409. Neither local file is an invention. Two traps recorded for the build phase: every design loads Tailwind and Font Awesome from a CDN, which the React 19 + Vite client must not; and Family A mockups still load Space Grotesk where tokens.css shipped IBM Plex Sans in PR #51, so tokens.css wins on that line. Co-Authored-By: Claude Opus 5 (1M context) --- codev/research/v2-mockups/uxpilot/MANIFEST.md | 114 ++++- .../51b1CgYzLv0iRRqgh4G3.html | 150 ++++++ .../F9qlq0WzIomyZX3y7L6G.html | 156 ++++++ .../HOt71AQtECabPPgK5ZNK.html | 209 ++++++++ .../cKttggjpN8Xa2xL5RXD7.html | 217 +++++++++ .../qwYWc6topSJn0NbcLFQA.html | 209 ++++++++ .../CsPhgzxbCUWacaa4xcfW.html | 199 ++++++++ .../D3UEUmQeN43goRsYxUaJ.html | 122 +++++ .../cL4RvRXLrWQEGFt7ugmi.html | 165 +++++++ .../fNx6eGEgyV2GDY4ASzod.html | 118 +++++ .../nwrrq0r5q6FUBL9HgGad.html | 162 +++++++ .../YjOhy7S3Pz06oilXMo6R.html | 145 ++++++ .../3sOUJgaqK6CgFX4eb1Sb.html | 206 ++++++++ .../EdGJMIYxdc5nlaj5fyxX.html | 239 ++++++++++ .../c6PfQn1i22G2IcFejzaZ.html | 216 +++++++++ .../cI0vQS8yxrTmLcD5gokz.html | 171 +++++++ .../wtSunFZw8rCeadZpqDW8.html | 167 +++++++ .../9GvvtY66cZ9o588S1ZG6.html | 411 ++++++++++++++++ .../GnWkqflXk3dHyEAyMkCe.html | 284 +++++++++++ .../JVQ55vBl3KuTQK6MKEnn.html | 406 ++++++++++++++++ .../PXL1ch4T5kjMO4LYGdN9.html | 295 ++++++++++++ .../alggCr6fYS7YFpxmiGWt.html | 426 +++++++++++++++++ .../da25kSWpzRdJUZGp4dFB.html | 451 ++++++++++++++++++ .../jClfsPTbpz9rne4YAGBh.html | 339 +++++++++++++ .../lxhbQ26SZ1QzUt8vTpUK.html | 367 ++++++++++++++ .../pcuGTxWBv4S195IB7nXO.html | 415 ++++++++++++++++ .../split-terminals/GyhcwHplwDsZ0ENiyTnI.html | 152 ++++++ .../TiCebhzPvbU1AeCZqj5z.html | 152 ++++++ 28 files changed, 6662 insertions(+), 1 deletion(-) create mode 100644 codev/research/v2-mockups/uxpilot/add-machine-to-porch/51b1CgYzLv0iRRqgh4G3.html create mode 100644 codev/research/v2-mockups/uxpilot/add-machine-to-porch/F9qlq0WzIomyZX3y7L6G.html create mode 100644 codev/research/v2-mockups/uxpilot/add-machine-to-porch/HOt71AQtECabPPgK5ZNK.html create mode 100644 codev/research/v2-mockups/uxpilot/add-machine-to-porch/cKttggjpN8Xa2xL5RXD7.html create mode 100644 codev/research/v2-mockups/uxpilot/add-machine-to-porch/qwYWc6topSJn0NbcLFQA.html create mode 100644 codev/research/v2-mockups/uxpilot/find-node-screen-flow/CsPhgzxbCUWacaa4xcfW.html create mode 100644 codev/research/v2-mockups/uxpilot/find-node-screen-flow/D3UEUmQeN43goRsYxUaJ.html create mode 100644 codev/research/v2-mockups/uxpilot/find-node-screen-flow/cL4RvRXLrWQEGFt7ugmi.html create mode 100644 codev/research/v2-mockups/uxpilot/find-node-screen-flow/fNx6eGEgyV2GDY4ASzod.html create mode 100644 codev/research/v2-mockups/uxpilot/find-node-screen-flow/nwrrq0r5q6FUBL9HgGad.html create mode 100644 codev/research/v2-mockups/uxpilot/gate-queue-sheet/YjOhy7S3Pz06oilXMo6R.html create mode 100644 codev/research/v2-mockups/uxpilot/porch-gate-interaction-design/3sOUJgaqK6CgFX4eb1Sb.html create mode 100644 codev/research/v2-mockups/uxpilot/porch-gate-interaction-design/EdGJMIYxdc5nlaj5fyxX.html create mode 100644 codev/research/v2-mockups/uxpilot/porch-gate-interaction-design/c6PfQn1i22G2IcFejzaZ.html create mode 100644 codev/research/v2-mockups/uxpilot/porch-gate-interaction-design/cI0vQS8yxrTmLcD5gokz.html create mode 100644 codev/research/v2-mockups/uxpilot/porch-gate-interaction-design/wtSunFZw8rCeadZpqDW8.html create mode 100644 codev/research/v2-mockups/uxpilot/porch-site-mobile-redesign/9GvvtY66cZ9o588S1ZG6.html create mode 100644 codev/research/v2-mockups/uxpilot/porch-site-mobile-redesign/GnWkqflXk3dHyEAyMkCe.html create mode 100644 codev/research/v2-mockups/uxpilot/porch-site-mobile-redesign/JVQ55vBl3KuTQK6MKEnn.html create mode 100644 codev/research/v2-mockups/uxpilot/porch-site-mobile-redesign/PXL1ch4T5kjMO4LYGdN9.html create mode 100644 codev/research/v2-mockups/uxpilot/porch-site-mobile-redesign/alggCr6fYS7YFpxmiGWt.html create mode 100644 codev/research/v2-mockups/uxpilot/porch-site-mobile-redesign/da25kSWpzRdJUZGp4dFB.html create mode 100644 codev/research/v2-mockups/uxpilot/porch-site-mobile-redesign/jClfsPTbpz9rne4YAGBh.html create mode 100644 codev/research/v2-mockups/uxpilot/porch-site-mobile-redesign/lxhbQ26SZ1QzUt8vTpUK.html create mode 100644 codev/research/v2-mockups/uxpilot/porch-site-mobile-redesign/pcuGTxWBv4S195IB7nXO.html create mode 100644 codev/research/v2-mockups/uxpilot/split-terminals/GyhcwHplwDsZ0ENiyTnI.html create mode 100644 codev/research/v2-mockups/uxpilot/terminal-soft-keyboard/TiCebhzPvbU1AeCZqj5z.html diff --git a/codev/research/v2-mockups/uxpilot/MANIFEST.md b/codev/research/v2-mockups/uxpilot/MANIFEST.md index 77feca8a6..2b1f8898d 100644 --- a/codev/research/v2-mockups/uxpilot/MANIFEST.md +++ b/codev/research/v2-mockups/uxpilot/MANIFEST.md @@ -4,7 +4,9 @@ Source: `https://uxpilot.ai/a/ui-design?page=SXl8jE8uNyYLwBsG6vsL` IDs from `codev/experiments/74-v2-ui-pull-all-27-ux-pilot-des/manifest.json` (written by architect:uiv2). Titles in that file are null. Titles below are the visible screen heading from the preview PNG. -**HTML is not pulled.** This harness has no uxpilot MCP. Do not invent markup. Previews only. +**HTML is pulled.** All 27 designs are on disk beside their previews as `/.html`, +pulled by `architect:uiv2` through the uxpilot MCP (no builder harness has it). The +"not pulled" cells in the tables below are stale; the files exist. Existing extracted files (`01-site.html`, `02-gate.html`, `tokens.css`, `tokens-dark.css`) are untouched. @@ -140,3 +142,113 @@ The one genuine phone design is a single-column card stack with a segmented cont ## Design a bespoke control surfa (parent) 0 designs. No files. Not a coverage gap; it is a container. + +--- + +# Measured lineage (all 27, in generation order) + +**Everything above this line predates the HTML pull and infers viewport from previews. This +section measures.** Where the two disagree, this one is right. The group names are not +viewports and the group order is not the design order. + +`useCase` is the generation prompt's target and is wrong on 14 of 27 designs — every one of +them says `desktop (1440x1024)` including the 1024x1366 iPad screens. **Measured `dimensions` +is the only trustworthy width.** Class below is derived from measured width: phone ≤430, +tablet ≤1024, desktop above. + +## Two design families, and which one governs + +The page holds **two incompatible visual languages**, not one evolving design. Measured from +the pulled HTML — font stack, body ground, and chevron count: + +| | Family A — "porch" | Family B — "IDE" | +|---|---|---| +| Display / sans / mono | Fraunces / Space Grotesk / IBM Plex Mono | — / Inter / JetBrains Mono | +| Body ground | `#EDE8DE` throughout | `#0B0D0F` dark or `#F5F1E8` light, inconsistent | +| Hierarchy | nested lots and plots, **0 chevrons** | left sidebar tree, **10–16 chevrons** | +| Designs | 11 | 16 | +| Generated | 00:11–00:24, **and 01:37** | 00:30–01:19 | + +**Family A governs. This is a decision, recorded so it can be overridden.** + +Three reasons, in order of weight: + +1. **The three most recent designs in the page are Family A** — the iPad trio at 01:37 + (`GyhcwHplwDsZ0ENiyTnI`, `YjOhy7S3Pz06oilXMo6R`, `TiCebhzPvbU1AeCZqj5z`). Family B's last + member is the 01:19 phone. The page returned to A after exploring B. +2. **Every shipped artifact is Family A**: `tokens.css`, `tokens-dark.css`, `01-site.html`, + `02-gate.html`. Provenance measured, not assumed — Jaccard token overlap of each local file + against all 27 pulled designs: + + | Local file | Best match | Overlap | Runner-up | + |---|---|---:|---:| + | `01-site.html` | `lxhbQ26SZ1QzUt8vTpUK` (00:22) | **0.830** | 0.385 | + | `02-gate.html` | `c6PfQn1i22G2IcFejzaZ` (00:23) | **0.863** | 0.409 | + + Both are unambiguous. The extractions are faithful and neither is an invention. +3. **The iPad is the MUST-tier target** (FR-7 tiling was promoted from SHOULD to MUST at FRD + rev. 6), and all three iPad screens are Family A. + +Family B stays in the repo. It is recorded exploration, not dead weight: `alggCr6fYS7YFpxmiGWt` +(00:58, the last Family B desktop Site) is the strongest argument on record for a conventional +tree sidebar over containment, and FR-1 rejects it deliberately rather than by omission. + +**Do not mix families.** A Family B screen rendered with `tokens.css` is neither design. + +## Two build traps in every one of the 27 files + +1. **Tailwind arrives from `cdn.tailwindcss.com` and Font Awesome from cdnjs.** These are + mockup scaffolding. The v2 client is React 19 + Vite; do not add a CDN script tag to it. +2. **Family A mockups load Space Grotesk. `tokens.css` ships IBM Plex Sans** — the swap + landed in PR #51 and the mockups were never regenerated. `tokens.css` wins; the HTML is + stale on that one line. + +## The table + +| # | Time | ID | Title | Measured | Class | Family | Group | +|--:|---|---|---|---|---|---|---| +| 1 | 00:11 | `PXL1ch4T5kjMO4LYGdN9` | Porch - Site | 1024x1366 | tablet | **A** | `porch-site-mobile-redesign` | +| 2 | 00:12 | `3sOUJgaqK6CgFX4eb1Sb` | Porch - Gate | 1024x1366 | tablet | **A** | `porch-gate-interaction-design` | +| 3 | 00:12 | `cL4RvRXLrWQEGFt7ugmi` | Porch - Find Node | 1440x1024 | desktop | **A** | `find-node-screen-flow` | +| 4 | 00:12 | `HOt71AQtECabPPgK5ZNK` | Porch - Add Machine | 1440x1091 | desktop | **A** | `add-machine-to-porch` | +| 5 | 00:22 | `lxhbQ26SZ1QzUt8vTpUK` | Porch - Site | 1440x1092 | desktop | **A** | `porch-site-mobile-redesign` | +| 6 | 00:23 | `c6PfQn1i22G2IcFejzaZ` | Porch - Gate | 1440x1125 | desktop | **A** | `porch-gate-interaction-design` | +| 7 | 00:23 | `nwrrq0r5q6FUBL9HgGad` | Porch - Find Node | 1440x1024 | desktop | **A** | `find-node-screen-flow` | +| 8 | 00:24 | `qwYWc6topSJn0NbcLFQA` | Porch - Add Machine | 1440x1091 | desktop | **A** | `add-machine-to-porch` | +| 9 | 00:30 | `GnWkqflXk3dHyEAyMkCe` | Porch - Site | 1440x1024 | desktop | B | `porch-site-mobile-redesign` | +| 10 | 00:31 | `wtSunFZw8rCeadZpqDW8` | Porch - Gate | 1440x1024 | desktop | B | `porch-gate-interaction-design` | +| 11 | 00:31 | `fNx6eGEgyV2GDY4ASzod` | Porch - Find Node | 1440x1024 | desktop | B | `find-node-screen-flow` | +| 12 | 00:31 | `51b1CgYzLv0iRRqgh4G3` | Porch - Add Machine | 1440x1024 | desktop | B | `add-machine-to-porch` | +| 13 | 00:39 | `9GvvtY66cZ9o588S1ZG6` | Porch - Site | 1440x1024 | desktop | B | `porch-site-mobile-redesign` | +| 14 | 00:47 | `pcuGTxWBv4S195IB7nXO` | Porch - Site | 1440x1024 | desktop | B | `porch-site-mobile-redesign` | +| 15 | 00:52 | `JVQ55vBl3KuTQK6MKEnn` | Porch - Site | 1440x1024 | desktop | B | `porch-site-mobile-redesign` | +| 16 | 00:55 | `da25kSWpzRdJUZGp4dFB` | Porch - Site | 1440x1024 | desktop | B | `porch-site-mobile-redesign` | +| 17 | 00:58 | `alggCr6fYS7YFpxmiGWt` | Porch - Site | 1440x1024 | desktop | B | `porch-site-mobile-redesign` | +| 18 | 01:00 | `cI0vQS8yxrTmLcD5gokz` | Porch - Gate | 1440x1024 | desktop | B | `porch-gate-interaction-design` | +| 19 | 01:00 | `D3UEUmQeN43goRsYxUaJ` | Porch - Find Node | 1440x1024 | desktop | B | `find-node-screen-flow` | +| 20 | 01:00 | `F9qlq0WzIomyZX3y7L6G` | Porch - Add Machine | 1440x1024 | desktop | B | `add-machine-to-porch` | +| 21 | 01:19 | `jClfsPTbpz9rne4YAGBh` | Porch - Dashboard Overview | 375x1122 | phone | B | `porch-site-mobile-redesign` | +| 22 | 01:19 | `EdGJMIYxdc5nlaj5fyxX` | Porch - Pending Gates | 375x892 | phone | B | `porch-gate-interaction-design` | +| 23 | 01:19 | `CsPhgzxbCUWacaa4xcfW` | Porch - Node Search | 375x840 | phone | B | `find-node-screen-flow` | +| 24 | 01:19 | `cKttggjpN8Xa2xL5RXD7` | Porch - Add Machine 2 | 375x1466 | phone | B | `add-machine-to-porch` | +| 25 | 01:37 | `GyhcwHplwDsZ0ENiyTnI` | Porch - Split Terminals | 1024x1366 | tablet | **A** | `split-terminals` | +| 26 | 01:37 | `YjOhy7S3Pz06oilXMo6R` | Porch - Gate Queue Sheet | 1024x1366 | tablet | **A** | `gate-queue-sheet` | +| 27 | 01:37 | `TiCebhzPvbU1AeCZqj5z` | Porch - Terminal Soft Keyboard | 1024x1366 | tablet | **A** | `terminal-soft-keyboard` | + +Family A rows, in generation order: `PXL1ch4T5kjMO4LYGdN9`, `3sOUJgaqK6CgFX4eb1Sb`, +`cL4RvRXLrWQEGFt7ugmi`, `HOt71AQtECabPPgK5ZNK`, `lxhbQ26SZ1QzUt8vTpUK`, +`c6PfQn1i22G2IcFejzaZ`, `nwrrq0r5q6FUBL9HgGad`, `qwYWc6topSJn0NbcLFQA`, +`GyhcwHplwDsZ0ENiyTnI`, `YjOhy7S3Pz06oilXMo6R`, `TiCebhzPvbU1AeCZqj5z`. + +## Corrections to the group summaries above + +| Group | Said | Measured | +|---|---|---| +| Find Node Screen Flow | "Phone" | 4 desktop 1440, 1 phone 375 | +| Porch Gate Interaction Design | "Phone" | 1 tablet 1024x1366, 3 desktop 1440, 1 phone 375 | +| Add Machine To Porch | — | 4 desktop 1440, 1 phone 375 | +| Porch Site Mobile Redesign | — | 1 tablet 1024x1366, 7 desktop 1440, 1 phone 375 | +| The three `Group with Porch - *` singles | "iPad" | correct, all 1024x1366 | + +Any FR clause scored against a group's assumed viewport needs rescoring against this table. +That error has already produced one phantom finding (FRD rev. 8, retracted at rev. 9). diff --git a/codev/research/v2-mockups/uxpilot/add-machine-to-porch/51b1CgYzLv0iRRqgh4G3.html b/codev/research/v2-mockups/uxpilot/add-machine-to-porch/51b1CgYzLv0iRRqgh4G3.html new file mode 100644 index 000000000..b63ba3a2e --- /dev/null +++ b/codev/research/v2-mockups/uxpilot/add-machine-to-porch/51b1CgYzLv0iRRqgh4G3.html @@ -0,0 +1,150 @@ + + + + + +Add Machine + + + + + + + + +
+ + + +
+
+ +

Add a machine

+

Install the agent, then pair it with this site.

+ +
+ + +
+ +
+
+ 1 + Install the agent +
+
+ curl -fsSL porch.dev/install.sh | sh + +
+
+ +
+
+ 2 + Pair with this site +
+
+ porch pair --site=foreman-hq + +
+
+ +
+
+ 3 + Name it +
+ +
+ +
+
Already on site
+
+
+ tower-01online +
+
+ tower-02offline +
+
+ gpu-boxonline +
+
+
+
+ + +
+
+ Pairing + + waiting + +
+
+
+
7F3K-91QD
+
expires in 04:52
+
+
+
agent installed
+
tunnel opened
+
waiting for pairing…
+
+
+ +
+
+
+ +
+ 3 machines + pairing session active +
+
+ + + diff --git a/codev/research/v2-mockups/uxpilot/add-machine-to-porch/F9qlq0WzIomyZX3y7L6G.html b/codev/research/v2-mockups/uxpilot/add-machine-to-porch/F9qlq0WzIomyZX3y7L6G.html new file mode 100644 index 000000000..10bc8f660 --- /dev/null +++ b/codev/research/v2-mockups/uxpilot/add-machine-to-porch/F9qlq0WzIomyZX3y7L6G.html @@ -0,0 +1,156 @@ + + + + + +Add Machine + + + + + + + + +
+ + + +
+
+ +

Add a machine

+

Install the agent, then pair it with this site.

+ +
+ + +
+ +
+
+ 1 + Install the agent +
+
+ curl -fsSL porch.dev/install.sh | sh + +
+
+ +
+
+ 2 + Pair with this site +
+
+ porch pair --site=foreman-hq + +
+
+ +
+
+ 3 + Name it +
+ +
+ +
+
Already on site
+
+
+ tower-01online +
+
+ tower-02offline +
+
+ gpu-boxonline +
+
+
+
+ + +
+
+ Pairing + + waiting + +
+
+
+
7F3K-91QD
+
expires in 04:52
+
+
+
agent installed
+
tunnel opened
+
waiting for pairing…
+
+
+ +
+
+
+ +
+ 3 machines + pairing session active +
+
+ + + diff --git a/codev/research/v2-mockups/uxpilot/add-machine-to-porch/HOt71AQtECabPPgK5ZNK.html b/codev/research/v2-mockups/uxpilot/add-machine-to-porch/HOt71AQtECabPPgK5ZNK.html new file mode 100644 index 000000000..a5f0c543d --- /dev/null +++ b/codev/research/v2-mockups/uxpilot/add-machine-to-porch/HOt71AQtECabPPgK5ZNK.html @@ -0,0 +1,209 @@ + + + + + +Add Machine + + + + + + + + + +
+ + + + +
+
+ +
+
Site Register · Add Machine
+

Break ground on a new machine

+

Install the Porch agent on the target machine and pair it with this site. Once paired it appears in the register as a new lot.

+
+ +
+ + +
+ +
+
+
1
+
+
+
+
Install the agent
+
+ curl -fsSL porch.dev/install.sh | sh + +
+

Run on macOS, Linux, or WSL. Requires a git identity already configured on the machine.

+
+
+ +
+
+
2
+
+
+
+
Pair with this site
+

Scan the code with the Porch mobile companion, or run the pairing command shown and enter the code manually.

+
+ porch pair --site=foreman-hq + +
+
+
+ +
+
+
3
+
+
+
Name the lot
+

Once paired, give this machine a name — it appears exactly as typed in the register.

+ +
+
+ +
+ + +
+
+ Pairing ticket + + waiting + +
+ +
+
+
+
+ +
+
+
+
Scan with Porch companion
or enter code below
+
7F3K–91QD
+
expires in 04:52
+
+ +
+
Connection log
+
+
+ + agent installed — v2.4.1 +
+
+ + outbound tunnel opened +
+
+ + waiting for scan / code entry… +
+
+ + register machine to site +
+
+
+
+ +
+ + +
+
Already on site
+
+
+ +
+
tower-01
+
Mac Studio · online
+
+
+
+ +
+
tower-02
+
Linux box · offline
+
+
+
+
+ +
+
+ +
+
+ 2 machines + pairing session active +
+ foreman: you +
+ +
+ + + diff --git a/codev/research/v2-mockups/uxpilot/add-machine-to-porch/cKttggjpN8Xa2xL5RXD7.html b/codev/research/v2-mockups/uxpilot/add-machine-to-porch/cKttggjpN8Xa2xL5RXD7.html new file mode 100644 index 000000000..fbd9dc27f --- /dev/null +++ b/codev/research/v2-mockups/uxpilot/add-machine-to-porch/cKttggjpN8Xa2xL5RXD7.html @@ -0,0 +1,217 @@ + + + + + + Add Machine + + + + + + + + + +
+ + + + +
+ + +
+

Add a new machine

+

Connect a tower to your site fleet.

+
+ + +
+
+ Pairing Session + + waiting + +
+
+
+ +
+
7F3K-91QD
+
expires in 04:52
+
+
+
+
+ +
+ agent installed +
+
+
+ +
+ tunnel opened +
+
+
+ +
+ waiting for pairing… +
+
+
+ + +
+
Setup Instructions
+ + +
+
+ 1 + Install Agent +
+
+ curl -fsSL porch.dev/install.sh | sh + +
+
+ + +
+
+ 2 + Pair Site +
+
+ porch pair --site=foreman-hq + +
+
+ + +
+
+ 3 + Machine Name +
+ +
+
+ + +
+
Already on site
+
+
+ + tower-01 + online +
+
+ + tower-02 + offline +
+
+ + gpu-box + online +
+
+
+ +
+ + +
+
+ + 3 machines active +
+
+ PAIRING ACTIVE +
+
+ + + + +
+ + + + + diff --git a/codev/research/v2-mockups/uxpilot/add-machine-to-porch/qwYWc6topSJn0NbcLFQA.html b/codev/research/v2-mockups/uxpilot/add-machine-to-porch/qwYWc6topSJn0NbcLFQA.html new file mode 100644 index 000000000..0e3372aea --- /dev/null +++ b/codev/research/v2-mockups/uxpilot/add-machine-to-porch/qwYWc6topSJn0NbcLFQA.html @@ -0,0 +1,209 @@ + + + + + +Add Machine + + + + + + + + + +
+ + + + +
+
+ +
+
Site Register · Add Machine
+

Break ground on a new machine

+

Install the Porch agent on the target machine and pair it with this site. Once paired it appears in the register as a new lot.

+
+ +
+ + +
+ +
+
+
1
+
+
+
+
Install the agent
+
+ curl -fsSL porch.dev/install.sh | sh + +
+

Run on macOS, Linux, or WSL. Requires a git identity already configured on the machine.

+
+
+ +
+
+
2
+
+
+
+
Pair with this site
+

Scan the code with the Porch mobile companion, or run the pairing command shown and enter the code manually.

+
+ porch pair --site=foreman-hq + +
+
+
+ +
+
+
3
+
+
+
Name the lot
+

Once paired, give this machine a name — it appears exactly as typed in the register.

+ +
+
+ +
+ + +
+
+ Pairing ticket + + waiting + +
+ +
+
+
+
+ +
+
+
+
Scan with Porch companion
or enter code below
+
7F3K–91QD
+
expires in 04:52
+
+ +
+
Connection log
+
+
+ + agent installed — v2.4.1 +
+
+ + outbound tunnel opened +
+
+ + waiting for scan / code entry… +
+
+ + register machine to site +
+
+
+
+ +
+ + +
+
Already on site
+
+
+ +
+
tower-01
+
Mac Studio · online
+
+
+
+ +
+
tower-02
+
Linux box · offline
+
+
+
+
+ +
+
+ +
+
+ 2 machines + pairing session active +
+ foreman: you +
+ +
+ + + diff --git a/codev/research/v2-mockups/uxpilot/find-node-screen-flow/CsPhgzxbCUWacaa4xcfW.html b/codev/research/v2-mockups/uxpilot/find-node-screen-flow/CsPhgzxbCUWacaa4xcfW.html new file mode 100644 index 000000000..e91953ad1 --- /dev/null +++ b/codev/research/v2-mockups/uxpilot/find-node-screen-flow/CsPhgzxbCUWacaa4xcfW.html @@ -0,0 +1,199 @@ + + + + + + Find Node + + + + + + + + + +
+ + + + + +
+
+ + +
+ + + +
+ + + + + +
+
+ 6 nodes match 'pay' +
+
+ Tap to focus +
+
+ +
+ + + +
+ +
+ + + + diff --git a/codev/research/v2-mockups/uxpilot/find-node-screen-flow/D3UEUmQeN43goRsYxUaJ.html b/codev/research/v2-mockups/uxpilot/find-node-screen-flow/D3UEUmQeN43goRsYxUaJ.html new file mode 100644 index 000000000..40bbb392b --- /dev/null +++ b/codev/research/v2-mockups/uxpilot/find-node-screen-flow/D3UEUmQeN43goRsYxUaJ.html @@ -0,0 +1,122 @@ + + + + + +Find Node + + + + + + + + +
+ + +
+
+
+
+ Porch +
+
+
+
+
+
+
+ + +
+
+ +
+ + + esc +
+ + + +
+
+ ↑↓navigate + open +
+ 6 results +
+ +
+
+ +
+ + + diff --git a/codev/research/v2-mockups/uxpilot/find-node-screen-flow/cL4RvRXLrWQEGFt7ugmi.html b/codev/research/v2-mockups/uxpilot/find-node-screen-flow/cL4RvRXLrWQEGFt7ugmi.html new file mode 100644 index 000000000..77c2533e9 --- /dev/null +++ b/codev/research/v2-mockups/uxpilot/find-node-screen-flow/cL4RvRXLrWQEGFt7ugmi.html @@ -0,0 +1,165 @@ + + + + + +Find Node + + + + + + + + + +
+ + +
+
+
+
+
Porch
+
+
+
+
+
+
+
+
+ + +
+
+ + +
+ + + esc +
+ + +
+ all · 6 + machines · 0 + workspaces · 0 + architects · 1 + builders · 5 +
+ + + + + +
+
+ ↑↓navigate + open + tabfilter +
+ 6 results across 2 machines +
+ +
+
+ +
+ + + diff --git a/codev/research/v2-mockups/uxpilot/find-node-screen-flow/fNx6eGEgyV2GDY4ASzod.html b/codev/research/v2-mockups/uxpilot/find-node-screen-flow/fNx6eGEgyV2GDY4ASzod.html new file mode 100644 index 000000000..685a10412 --- /dev/null +++ b/codev/research/v2-mockups/uxpilot/find-node-screen-flow/fNx6eGEgyV2GDY4ASzod.html @@ -0,0 +1,118 @@ + + + + + +Find Node + + + + + + + + +
+ + +
+
+
+
+ Porch +
+
+
+
+
+
+
+
+ + +
+
+ +
+ + + esc +
+ + + +
+
+ ↑↓navigate + open +
+ 6 results +
+ +
+
+ +
+ + + diff --git a/codev/research/v2-mockups/uxpilot/find-node-screen-flow/nwrrq0r5q6FUBL9HgGad.html b/codev/research/v2-mockups/uxpilot/find-node-screen-flow/nwrrq0r5q6FUBL9HgGad.html new file mode 100644 index 000000000..0408654aa --- /dev/null +++ b/codev/research/v2-mockups/uxpilot/find-node-screen-flow/nwrrq0r5q6FUBL9HgGad.html @@ -0,0 +1,162 @@ + + + + + +Find Node + + + + + + + + + +
+ + +
+
+
+
+
Porch
+
+
+
+
+
+
+
+
+ + +
+
+ + +
+ + + esc +
+ + +
+ all · 6 + machines · 0 + workspaces · 0 + architects · 1 + builders · 5 +
+ + + + + +
+
+ ↑↓navigate + open + tabfilter +
+ 6 results across 2 machines +
+ +
+
+ +
+ + + diff --git a/codev/research/v2-mockups/uxpilot/gate-queue-sheet/YjOhy7S3Pz06oilXMo6R.html b/codev/research/v2-mockups/uxpilot/gate-queue-sheet/YjOhy7S3Pz06oilXMo6R.html new file mode 100644 index 000000000..a68a3a787 --- /dev/null +++ b/codev/research/v2-mockups/uxpilot/gate-queue-sheet/YjOhy7S3Pz06oilXMo6R.html @@ -0,0 +1,145 @@ + + + + + +Gate Queue + + + + + + + + +
+ + +
+
+
+
+
+ Porch +
+
+
+
+
+
+
+
+ + +
+ + + + +
+ + + diff --git a/codev/research/v2-mockups/uxpilot/porch-gate-interaction-design/3sOUJgaqK6CgFX4eb1Sb.html b/codev/research/v2-mockups/uxpilot/porch-gate-interaction-design/3sOUJgaqK6CgFX4eb1Sb.html new file mode 100644 index 000000000..9fe582d47 --- /dev/null +++ b/codev/research/v2-mockups/uxpilot/porch-gate-interaction-design/3sOUJgaqK6CgFX4eb1Sb.html @@ -0,0 +1,206 @@ + + + + + +Gate + + + + + + + + + +
+ + + + + +
+ +
+ + +
+
+
+ +
+ Porch +
+ tower-01 / checkout / payments-arch +
+ +
+ +
+
+ + +
+ +
+
+
+
+ pay-2201 + gate +
+ builder/pay-2201 +
+
+
24:07
+
held
+
+
+
+ + +
+
The question
+
Delete legacy refunds_legacy table, or keep it for audit purposes?
+
+ + +
+
+ + last output +
+
+ $ migrate --dry-run refunds_legacy
+ checking foreign key constraints…
+ ⚠ 3 FKs still reference this table:
+   audit_log.refund_ref
+   disputes.refund_id
+   payouts.refund_source

+ ? delete legacy refund table or keep for audit +
+
+ + +
+ + +
+ +
+
If you rule each way
+
+
+ + Keep for audit +
+

Table stays, renamed to refunds_legacy_archived. All 3 FKs remain valid. No data loss.

+
+
+
+ + Approve drop +
+

Table is dropped this run. Orphans audit_log.refund_ref — builder will need a follow-up migration.

+
+
+ +
+
Context
+
    +
  • ·Compliance requires 7yr audit retention on refunds
  • +
  • ·Last touched by builder/pay-2189, 3 days ago
  • +
+
+ + +
+
+ +
+
+ + +
+
+ +
+ +
+
+ +
+
+ 2 machines5 architects11 builders +
+ ● 3 gates open +
+ +
+
+ +
+ + + diff --git a/codev/research/v2-mockups/uxpilot/porch-gate-interaction-design/EdGJMIYxdc5nlaj5fyxX.html b/codev/research/v2-mockups/uxpilot/porch-gate-interaction-design/EdGJMIYxdc5nlaj5fyxX.html new file mode 100644 index 000000000..31d7f06ed --- /dev/null +++ b/codev/research/v2-mockups/uxpilot/porch-gate-interaction-design/EdGJMIYxdc5nlaj5fyxX.html @@ -0,0 +1,239 @@ + + + + + + Gate + + + + + + + + + + +
+ + + + + +
+
+
+ Pending Gates + +
+
+
+
+ pay-2201 + 24m +
+ Delete legacy refund table or keep for audit? +
+ checkout / payments-arch +
+
+ +
+
+ air-22 + 9m +
+ Approve new snapshot baseline? +
+ marketing-site / redesign-arch +
+
+ +
+
+ bugfix-1455 + 3m +
+ Use prod rate-limit value? +
+ api-core / rate-limits-arch +
+
+
+
+
+ + +
+ + +
+
+
+ pay-2201 + Gate +
+
+
24:07
+
Held
+
+
+
+ tower-01 / checkout / payments-arch +
+
+ + +
+
+ +
+
Pending Decision
+
+ Delete legacy refunds_legacy table, or keep it for audit purposes? +
+
+ + +
+
+
Agent Context
+ +
+
    +
  • +
    + 3 foreign keys reference this table: audit_log, disputes, payouts +
  • +
  • +
    + Dropping now would orphan audit_log.refund_ref +
  • +
  • +
    + Compliance requires 7yr audit retention on refunds +
  • +
+
+ + + + +
+ + +
+
+ +
+
+ +
+ + +
+ + +
+
+
+ + +
+
+ 2M5A11B +
+
+ + 3 Gates Open +
+
+ +
+ + + + + diff --git a/codev/research/v2-mockups/uxpilot/porch-gate-interaction-design/c6PfQn1i22G2IcFejzaZ.html b/codev/research/v2-mockups/uxpilot/porch-gate-interaction-design/c6PfQn1i22G2IcFejzaZ.html new file mode 100644 index 000000000..b0097a9ef --- /dev/null +++ b/codev/research/v2-mockups/uxpilot/porch-gate-interaction-design/c6PfQn1i22G2IcFejzaZ.html @@ -0,0 +1,216 @@ + + + + + +Gate + + + + + + + + + +
+ + + + +
+ + + + + +
+ +
+ + +
+
+
+
+ Gate — work has stopped +
+

builder/pay-2201

+
+ tower-01 + · + checkout + · + spawned by architect/checkout-v3 +
+
+
+
held for
+
24:07
+
+
+
+
+ worktree: /checkout/pay-2201 + fix/legacy-refund-migration + 18 commits this run +
+
+ + +
+
The question
+

"Delete the legacy refunds_legacy table, or keep it for audit purposes?"

+
+ + +
+
+ Last terminal output + 14:41:52 +
+
+$ migrate --dry-run refunds_legacy
+found 41,208 rows referencing refunds_legacy
+3 foreign keys still point at this table:
+  - audit_log.refund_ref
+  - disputes.original_refund_id
+  - payouts.refund_source

+⚠ dropping refunds_legacy now would orphan audit_log.refund_ref
+⚠ compliance retention policy requires 7yr audit trail on refunds

+two paths forward:
+  1. drop table, migrate audit_log to reference refunds_v2 first
+  2. keep refunds_legacy as read-only archive, add view for audit_log

+? delete legacy refund table or keep for audit +
+
+ + +
+
What happens next
+
+
+
+ + If you say drop it +
+

Builder migrates audit_log.refund_ref to refunds_v2, drops refunds_legacy, runs full checkout test suite, opens PR for review.

+
+
+
+ + If you say keep it +
+

Builder marks refunds_legacy read-only, adds a compatibility view for audit_log, skips the drop migration, opens PR for review.

+
+
+
+ + +
+ + + +
+ +
+
+
+ +
+
+ 2 machines + 4 architects + 11 builders +
+
+ 3 gates open + foreman: you +
+
+
+ + + diff --git a/codev/research/v2-mockups/uxpilot/porch-gate-interaction-design/cI0vQS8yxrTmLcD5gokz.html b/codev/research/v2-mockups/uxpilot/porch-gate-interaction-design/cI0vQS8yxrTmLcD5gokz.html new file mode 100644 index 000000000..9a91e40ad --- /dev/null +++ b/codev/research/v2-mockups/uxpilot/porch-gate-interaction-design/cI0vQS8yxrTmLcD5gokz.html @@ -0,0 +1,171 @@ + + + + + +Gate + + + + + + + + +
+ + + + +
+ + + + + +
+ +
+ + +
+
+
+ pay-2201 + Gate +
+
tower-01 / checkout / payments-arch
+
+
+
24:07
+
held
+
+
+ + +
+
Issue
+
Delete legacy refunds_legacy table, or keep it for audit purposes?
+
+ + +
+
Context
+
    +
  • ·3 foreign keys reference this table: audit_log, disputes, payouts
  • +
  • ·Dropping now would orphan audit_log.refund_ref
  • +
  • ·Compliance requires 7yr audit retention on refunds
  • +
+
+ + + + + +
+
+ +
+
+ + +
+
+ +
+
+
+ +
+
+ 2 machines5 architects11 builders +
+ ● 3 gates open +
+
+ + + diff --git a/codev/research/v2-mockups/uxpilot/porch-gate-interaction-design/wtSunFZw8rCeadZpqDW8.html b/codev/research/v2-mockups/uxpilot/porch-gate-interaction-design/wtSunFZw8rCeadZpqDW8.html new file mode 100644 index 000000000..3c9baa71a --- /dev/null +++ b/codev/research/v2-mockups/uxpilot/porch-gate-interaction-design/wtSunFZw8rCeadZpqDW8.html @@ -0,0 +1,167 @@ + + + + + +Gate + + + + + + + + +
+ + + + +
+ + + + + +
+ +
+ + +
+
+
+ pay-2201 + Gate +
+
tower-01 / checkout / payments-arch
+
+
+
24:07
+
held
+
+
+ + +
+
Issue
+
Delete legacy refunds_legacy table, or keep it for audit purposes?
+
+ + +
+
Context
+
    +
  • ·3 foreign keys reference this table: audit_log, disputes, payouts
  • +
  • ·Dropping now would orphan audit_log.refund_ref
  • +
  • ·Compliance requires 7yr audit retention on refunds
  • +
+
+ + + + + +
+
+ +
+
+ + +
+
+ +
+
+
+ +
+
+ 3 machines5 architects11 builders +
+ 3 gates open +
+
+ + + diff --git a/codev/research/v2-mockups/uxpilot/porch-site-mobile-redesign/9GvvtY66cZ9o588S1ZG6.html b/codev/research/v2-mockups/uxpilot/porch-site-mobile-redesign/9GvvtY66cZ9o588S1ZG6.html new file mode 100644 index 000000000..b1fbf12aa --- /dev/null +++ b/codev/research/v2-mockups/uxpilot/porch-site-mobile-redesign/9GvvtY66cZ9o588S1ZG6.html @@ -0,0 +1,411 @@ + + + + + +Site + + + + + + + + +
+ + + + +
+ + + + + +
+ + +
+
+ + payments-arch + checkout +
+ + +
+
+
+
+
+ + pay-2201 + blocked · 24m +
+
+ $ migrate --dry-run refunds_legacy
+ ⚠ 3 FKs still reference this table
+ ? delete legacy refund table or keep for audit +
+
+
+
+ + pay-2189 + running +
+
+ $ vitest run src/checkout
+ ✓ 22/48 passing… +
+
+
+
+ + +
+
+ + bugfix-1455 + api-core + blocked +
+ + +
+
+
+ $ cargo test rate_limits::
+ FAIL rate_limits::prod_constant_mismatch
+ expected 1000, staging config has 500

+ ? use prod rate-limit value (1000) or match staging (500)? +
+
+ + +
+
+ + +
+
+ + pay-2189 + checkout + running +
+ + +
+
+
+ $ vitest run src/checkout/*.test.ts
+ applies promo before tax (14ms)
+ rejects expired promo (9ms)
+ rounds to nearest cent (3ms)
+ running 22/48 … +
+
+ + +
+ + Open a builder or architect +
+ +
+ + + + +
+ + +
+
+ 2 machines + 5 architects + 11 builders + 4 panes open +
+ 3 gates open +
+ +
+ + + diff --git a/codev/research/v2-mockups/uxpilot/porch-site-mobile-redesign/GnWkqflXk3dHyEAyMkCe.html b/codev/research/v2-mockups/uxpilot/porch-site-mobile-redesign/GnWkqflXk3dHyEAyMkCe.html new file mode 100644 index 000000000..645dacd35 --- /dev/null +++ b/codev/research/v2-mockups/uxpilot/porch-site-mobile-redesign/GnWkqflXk3dHyEAyMkCe.html @@ -0,0 +1,284 @@ + + + + + +Site + + + + + + + + +
+ + + + +
+ + + + + +
+ + +
+
+
Name
+
Status
+
Time
+
+
+ + +
+
+ + + tower-01 + Mac Studio + 41% load +
+ + + + + + + + + +
+ + +
+
+ + + tower-02 + Linux box + offline · 2h ago +
+
+ + +
+
+ + + gpu-box + Linux · 4x A100 + 78% load +
+ +
+
+ + + ml-pipeline-arch + inference-svc + 2 builders +
+ + + infer-04 + Running · benchmark + 31m + + + + + infer-03 + Idle + + + +
+
+ +
+
+ + +
+
+ 3 machines + 5 architects + 11 builders +
+
+ 3 gates open +
+
+ +
+ + + diff --git a/codev/research/v2-mockups/uxpilot/porch-site-mobile-redesign/JVQ55vBl3KuTQK6MKEnn.html b/codev/research/v2-mockups/uxpilot/porch-site-mobile-redesign/JVQ55vBl3KuTQK6MKEnn.html new file mode 100644 index 000000000..8b1f4dc59 --- /dev/null +++ b/codev/research/v2-mockups/uxpilot/porch-site-mobile-redesign/JVQ55vBl3KuTQK6MKEnn.html @@ -0,0 +1,406 @@ + + + + + +Site + + + + + + + + +
+ + + + +
+ + + + + +
+ + +
+
+ + payments-arch + checkout +
+ + +
+
+
+
+
+ + pay-2201 + blocked · 24m +
+
+ $ migrate --dry-run refunds_legacy
+ ⚠ 3 FKs still reference this table
+ ? delete legacy refund table or keep for audit +
+
+
+
+ + pay-2189 + running +
+
+ $ vitest run src/checkout
+ ✓ 22/48 passing… +
+
+
+
+ + +
+
+ + bugfix-1455 + api-core + blocked +
+ + +
+
+
+ $ cargo test rate_limits::
+ FAIL rate_limits::prod_constant_mismatch
+ expected 1000, staging config has 500

+ ? use prod rate-limit value (1000) or match staging (500)? +
+
+ + +
+
+ + +
+
+ + pay-2189 + checkout + running +
+ + +
+
+
+ $ vitest run src/checkout/*.test.ts
+ applies promo before tax (14ms)
+ rejects expired promo (9ms)
+ rounds to nearest cent (3ms)
+ running 22/48 … +
+
+ + +
+ + Open a builder or architect +
+ +
+ + + + +
+ + +
+
+ 2 machines + 5 architects + 11 builders + 4 panes open +
+ 3 gates open +
+ +
+ + + diff --git a/codev/research/v2-mockups/uxpilot/porch-site-mobile-redesign/PXL1ch4T5kjMO4LYGdN9.html b/codev/research/v2-mockups/uxpilot/porch-site-mobile-redesign/PXL1ch4T5kjMO4LYGdN9.html new file mode 100644 index 000000000..2f3ce142c --- /dev/null +++ b/codev/research/v2-mockups/uxpilot/porch-site-mobile-redesign/PXL1ch4T5kjMO4LYGdN9.html @@ -0,0 +1,295 @@ + + + + + +Site + + + + + + + + +
+ +
+ + + + + +
+ + +
+
+ Site plan · 2 machines surveyed + 11 builders +
+ +
+ + +
+
+ Machine lot + +
+ tower-01 + + + online + +
+ +
+ + +
+
Workspace · checkout
+ + +
+ + payments-arch +
+ + + + + pay-2201 + + + + gate + + + + pay-2189 + + + + run + +
+ + +
+
Workspace · api-core
+ + +
+ + rate-limits-arch +
+ + + + bugfix-1441 + + + + stalled + +
+ +
+
+ + +
+
+ Machine lot + +
+ tower-02 + + + online + +
+ +
+ + +
+
Workspace · inference-svc
+ + +
+ + ml-pipeline-arch +
+ + + + infer-04 + + + + run + + + + infer-03 + + + + idle + +
+ +
+
+ +
+
+ + +
+ + +
+
+ + payments-arch + checkout +
+ + +
+
+
+
+
+ + pay-2201 + gate · 24m +
+
+ $ migrate --dry-run refunds_legacy
+ ⚠ 3 FKs still reference this table
+ ? delete legacy refund table or keep for audit +
+
+
+
+ + pay-2189 + running +
+
+ $ vitest run src/checkout
+ 22/48 passing… +
+
+
+
+ + +
+
+ + pay-2189 + checkout + running +
+ + +
+
+
+ foreman@tower-01 ~/checkout $ vitest run src/checkout/*.test.ts

+ applies promo before tax (14ms)
+ rejects expired promo (9ms)
+ rounds to nearest cent (3ms)

+ running 22/48 … +
+
+ builder/pay-2189 · uptime 41m +
+
+ +
+ +
+ + +
+
+ 2 machines + 5 architects + 11 builders + 2 panes open +
+ ● 3 gates open +
+ +
+ +
+ + + diff --git a/codev/research/v2-mockups/uxpilot/porch-site-mobile-redesign/alggCr6fYS7YFpxmiGWt.html b/codev/research/v2-mockups/uxpilot/porch-site-mobile-redesign/alggCr6fYS7YFpxmiGWt.html new file mode 100644 index 000000000..78d75e91e --- /dev/null +++ b/codev/research/v2-mockups/uxpilot/porch-site-mobile-redesign/alggCr6fYS7YFpxmiGWt.html @@ -0,0 +1,426 @@ + + + + + +Site + + + + + + + + +
+ + + + +
+ + + + + +
+ + +
+
+ + payments-arch + checkout +
+ + +
+
+
+
+
+ + pay-2201 + blocked · 24m +
+
+ $ migrate --dry-run refunds_legacy
+ ⚠ 3 FKs still reference this table
+ ? delete legacy refund table or keep for audit +
+
+
+
+ + pay-2189 + running +
+
+ $ vitest run src/checkout
+ ✓ 22/48 passing… +
+
+
+
+ + +
+
+ + bugfix-1455 + api-core + blocked +
+ + +
+
+
+ $ cargo test rate_limits::
+ FAIL rate_limits::prod_constant_mismatch
+ expected 1000, staging config has 500

+ ? use prod rate-limit value (1000) or match staging (500)? +
+
+ + +
+
+ + +
+
+ + pay-2189 + checkout + running +
+ + +
+
+
+ $ vitest run src/checkout/*.test.ts
+ applies promo before tax (14ms)
+ rejects expired promo (9ms)
+ rounds to nearest cent (3ms)
+ running 22/48 … +
+
+ + +
+ + Open a builder or architect +
+ +
+ + + + +
+ + +
+
+ 2 machines + 5 architects + 11 builders + 4 panes open +
+ ● 3 gates open +
+ +
+ + + diff --git a/codev/research/v2-mockups/uxpilot/porch-site-mobile-redesign/da25kSWpzRdJUZGp4dFB.html b/codev/research/v2-mockups/uxpilot/porch-site-mobile-redesign/da25kSWpzRdJUZGp4dFB.html new file mode 100644 index 000000000..fac836359 --- /dev/null +++ b/codev/research/v2-mockups/uxpilot/porch-site-mobile-redesign/da25kSWpzRdJUZGp4dFB.html @@ -0,0 +1,451 @@ + + + + + +Site + + + + + + + + +
+ + + + +
+ + + + + +
+ + +
+
+ + payments-arch + checkout +
+ + +
+
+
+
+
+ + pay-2201 + blocked · 24m +
+
+ $ migrate --dry-run refunds_legacy
+ ⚠ 3 FKs still reference this table
+ ? delete legacy refund table or keep for audit +
+
+
+
+ + pay-2189 + running +
+
+ $ vitest run src/checkout
+ ✓ 22/48 passing… +
+
+
+
+ + +
+
+ + bugfix-1455 + api-core + blocked +
+ + +
+
+
+ $ cargo test rate_limits::
+ FAIL rate_limits::prod_constant_mismatch
+ expected 1000, staging config has 500

+ ? use prod rate-limit value (1000) or match staging (500)? +
+
+ + +
+
+ + +
+
+ + pay-2189 + checkout + running +
+ + +
+
+
+ $ vitest run src/checkout/*.test.ts
+ applies promo before tax (14ms)
+ rejects expired promo (9ms)
+ rounds to nearest cent (3ms)
+ running 22/48 … +
+
+ + +
+ + Open a builder or architect +
+ +
+ + + + +
+ + +
+
+ 2 machines + 5 architects + 11 builders + 4 panes open +
+ 3 gates open +
+ +
+ + + + + diff --git a/codev/research/v2-mockups/uxpilot/porch-site-mobile-redesign/jClfsPTbpz9rne4YAGBh.html b/codev/research/v2-mockups/uxpilot/porch-site-mobile-redesign/jClfsPTbpz9rne4YAGBh.html new file mode 100644 index 000000000..b1a4700aa --- /dev/null +++ b/codev/research/v2-mockups/uxpilot/porch-site-mobile-redesign/jClfsPTbpz9rne4YAGBh.html @@ -0,0 +1,339 @@ + + + + + + Dashboard + + + + + + + + + + +
+ + + + + + + + +
+ + +
+ + +
+
+ + bugfix-1455 + Gate +
+
+
+ $ cargo test rate_limits::
+ FAIL rate_limits::prod_constant_mismatch
+ expected 1000, staging config has 500

+ ? use prod rate-limit value (1000) or match staging (500)? +
+
+ + +
+
+
+ api-core + 3m ago +
+
+ + +
+
+ + payments-arch + checkout + +
+
+ +
+
+ + pay-2201 + BLOCKED +
+
+ ⚠ 3 FKs still reference table +
+
+ +
+
+ + pay-2189 + RUNNING +
+
+ ✓ 22/48 passing… +
+
+
+
+ + +
+
+ + pay-2189 + checkout + running +
+
+ $ vitest run src/checkout/*.test.ts
+ applies promo before tax (14ms)
+ rejects expired promo (9ms)
+ rounds to nearest cent (3ms)
+ handles currency edge cases (21ms)
+ ... processing suite
+ running 22/48 … +
+
+ + +
+ + + + + + + +
+ + +
+
+ 5 architects + 11 builders +
+
+ + 3 GATES OPEN +
+
+ + + + + +
+ + + + + diff --git a/codev/research/v2-mockups/uxpilot/porch-site-mobile-redesign/lxhbQ26SZ1QzUt8vTpUK.html b/codev/research/v2-mockups/uxpilot/porch-site-mobile-redesign/lxhbQ26SZ1QzUt8vTpUK.html new file mode 100644 index 000000000..708d946d9 --- /dev/null +++ b/codev/research/v2-mockups/uxpilot/porch-site-mobile-redesign/lxhbQ26SZ1QzUt8vTpUK.html @@ -0,0 +1,367 @@ + + + + + +Site + + + + + + + + + +
+ + + + +
+ + + + + +
+ + +
+
+
+

tower-01

+ Mac Studio · foreman's rig + online · 41% load +
+ + +
+ + +
+
+
checkout
+ architect/checkout-v3 +
+ +
+
+
+ builder/pay-2201 + gate +
+
held 24 min
+
+
+
+ builder/pay-2189 + +
+
+ +
+
+
+
+ + +
+
+
api-core
+ architect/rate-limits +
+ +
+
+
+ builder/bugfix-1455 + gate +
+
held 3 min
+
+
+
+ builder/bugfix-1441 + stuck? +
+
no output 6 min
+
+
+
+ + +
+
+
marketing-site
+ architect/redesign-q3 +
+ +
+
+
+ builder/air-22 + gate +
+
held 9 min
+
+
+
+ builder/air-19 + +
+
+ +
+
+
+
+ builder/air-18 + +
+
idle
+
+
+
+ +
+
+ + +
+
+
+

tower-02

+ Linux box · basement rack + offline · last seen 2h ago +
+ +
+
+
+
billing-svc
+ architect/dunning-flow +
+
+
+
+ builder/pir-12 + +
+
idle
+
+
+
+
+ reconnect to resume +
+
+
+ + +
+
+

Live panes

+
+ 4 of 11 pinned +
+ +
+ + +
+
+ builder/pay-2201 + awaiting gate +
+
+$ migrate --dry-run refunds_legacy
+found 41,208 rows referencing refunds_legacy
+3 foreign keys still point at this table (audit_log, disputes, payouts)
+⚠ dropping now would orphan audit_log.refund_ref
+? delete legacy refund table or keep for audit +
+
+ + +
+
+ builder/air-22 + awaiting gate +
+
+$ pnpm test --update-snapshots=false
+FAIL src/hero.spec.tsx (2 snapshots)
+- Hero renders headline
+- Hero renders CTA row
+? visuals changed intentionally — approve new baseline +
+
+ + +
+
+ builder/pay-2189 + running +
+
+$ vitest run src/checkout/*.test.ts
+✓ applies promo before tax (14ms)
+✓ rejects expired promo (9ms)
+✓ rounds to nearest cent (3ms)
+running 22/48 … +
+
+ + +
+
+ builder/bugfix-1441 + no output 6 min +
+
+$ npm run build
+webpack 5.94.0 compiling…
+·
+·
+(no output since 14:12:08) +
+
+ +
+
+ +
+
+ + +
+
+ 2 machines + 4 architects + 11 builders +
+
+ 3 gates open + foreman: you +
+
+ +
+ + + diff --git a/codev/research/v2-mockups/uxpilot/porch-site-mobile-redesign/pcuGTxWBv4S195IB7nXO.html b/codev/research/v2-mockups/uxpilot/porch-site-mobile-redesign/pcuGTxWBv4S195IB7nXO.html new file mode 100644 index 000000000..86f0e8449 --- /dev/null +++ b/codev/research/v2-mockups/uxpilot/porch-site-mobile-redesign/pcuGTxWBv4S195IB7nXO.html @@ -0,0 +1,415 @@ + + + + + +Site + + + + + + + + +
+ + + + +
+ + + + + +
+ + +
+
+ + payments-arch + checkout +
+ + +
+
+
+
+
+ + pay-2201 + blocked · 24m +
+
+ $ migrate --dry-run refunds_legacy
+ ⚠ 3 FKs still reference this table
+ ? delete legacy refund table or keep for audit +
+
+
+
+ + pay-2189 + running +
+
+ $ vitest run src/checkout
+ ✓ 22/48 passing… +
+
+
+
+ + +
+
+ + bugfix-1455 + api-core + blocked +
+ + +
+
+
+ $ cargo test rate_limits::
+ FAIL rate_limits::prod_constant_mismatch
+ expected 1000, staging config has 500

+ ? use prod rate-limit value (1000) or match staging (500)? +
+
+ + +
+
+ + +
+
+ + pay-2189 + checkout + running +
+ + +
+
+
+ $ vitest run src/checkout/*.test.ts
+ applies promo before tax (14ms)
+ rejects expired promo (9ms)
+ rounds to nearest cent (3ms)
+ running 22/48 … +
+
+ + +
+ + Open a builder or architect +
+ +
+ + + + +
+ + +
+
+ 2 machines + 5 architects + 11 builders + 4 panes open +
+ ● 3 gates open +
+ +
+ + + diff --git a/codev/research/v2-mockups/uxpilot/split-terminals/GyhcwHplwDsZ0ENiyTnI.html b/codev/research/v2-mockups/uxpilot/split-terminals/GyhcwHplwDsZ0ENiyTnI.html new file mode 100644 index 000000000..6f4360ad2 --- /dev/null +++ b/codev/research/v2-mockups/uxpilot/split-terminals/GyhcwHplwDsZ0ENiyTnI.html @@ -0,0 +1,152 @@ + + + + + +Split Terminals + + + + + + + + +
+ +
+ + + + + +
+ 2 builders tiled · vertical split +
+ + +
+
+ + +
+ + +
+
+ + pay-2189 + checkout + running + + +
+
+ foreman@tower-01 ~/checkout $ vitest run src/checkout/*.test.ts

+ applies promo before tax (14ms)
+ rejects expired promo code (9ms)
+ rounds to nearest cent (3ms)
+ stacks loyalty + promo (18ms)
+ handles zero-value cart (2ms)

+ running 22/48 … +
+
+ builder/pay-2189 · uptime 41m +
+
+ + +
+
+ + bugfix-1441 + api-core + stalled · 6m + + +
+
+ foreman@tower-01 ~/api-core $ cargo watch -x test

+ Compiling api-core v0.9.2
+ warning: unused import `std::sync::Arc`

+ no output for 6m — process idle, no error, no exit

+ ⚠ builder has not produced output since 14:02 +
+
+ builder/bugfix-1441 · idle 6m + +
+
+ +
+ +
+ 2 panes open · vertical split + ● 3 gates open +
+ +
+ +
+ + + diff --git a/codev/research/v2-mockups/uxpilot/terminal-soft-keyboard/TiCebhzPvbU1AeCZqj5z.html b/codev/research/v2-mockups/uxpilot/terminal-soft-keyboard/TiCebhzPvbU1AeCZqj5z.html new file mode 100644 index 000000000..b05b3e890 --- /dev/null +++ b/codev/research/v2-mockups/uxpilot/terminal-soft-keyboard/TiCebhzPvbU1AeCZqj5z.html @@ -0,0 +1,152 @@ + + + + + +Terminal + + + + + + + + +
+ +
+ + + + + +
+
+ foreman@tower-01 ~/api-core $ cargo watch -x test

+ Compiling api-core v0.9.2 (/srv/lots/api-core)
+ warning: unused import: `std::sync::Arc`
+   --> src/rate_limits.rs:4:5

+ Finished dev [unoptimized + debuginfo] in 8.41s
+ Running unittests src/lib.rs

+ test rate_limits::default_window_ok ... ok
+ test rate_limits::burst_cap_enforced ... ok
+ test rate_limits::prod_constant_mismatch ... FAILED

+ expected 1000, staging config has 500

+ no output for 6m — process idle, no error, no exit

+ ⚠ builder has not produced output since 14:02

+ foreman@tower-01 ~/api-core $ +
+ + +
+ + + +
+ + + + +
+ + + +
+ + +
+ + +
+
+
q
+
w
+
e
+
r
+
t
+
y
+
u
+
i
+
o
+
p
+
+
+
a
+
s
+
d
+
f
+
g
+
h
+
j
+
k
+
l
+
+
+
+
z
+
x
+
c
+
v
+
b
+
n
+
m
+
+
+
+
123
+
+
space
+
+
+
+
+
+ +
+ + +