Ask Daniel's CODEX · index

Grok Build Handoff — SynNA Publish Pipeline

Grok Build Handoff — SynNA Publish Pipeline

IN Lattice · Intelligent Netware · MA5 Council

FieldValue
Last updated2026-06-18
Carbon StewardDaniel Comp (+ Angelina, live testing)
Primary build partnerGrok Build (D:\04_WORK\Code\Lattice\_ChatUI)
Prior spec authorClaude (charters/specs only; execution is Grok)
Status2.5 assemble shipped & verified · Gate 2 Codey: see Grok_Handoff_SynNA_Gate2_Codey.md

Partnership model

Daniel is phasing out Claude as the day-to-day build partner. Grok Build is primary — direct project access, runs syn_pipeline.py / app.py, edits index.html, Cursor integration incoming.

RoleOwner
Carbon direction, ratification, live testingDaniel (+ Angelina)
Spec / charter edits (optional)Claude or Daniel
Implementation, verification, handoffsGrok Build
Runtime agents (Arnie, Picasso, etc.)Hermes / daniel container

New thread opener: Read this file first, then build the next item in Pathway forward only.


Executive summary

The SynNA pipeline watcher is working end-to-end through Gate 1 image selection:

`` promote inbox → packet (drafted) → xAI n=4 → masters_pending (4 candidates in modal) → user picks master → divider + 4 crops → images_pending (6 files) → assemble → [NEXT] sql_ready → publish ``

Gate 1 UX (shipped): Picasso chat + 2×2 modal in the Chat UI. User picks a master, or Regen all 4 (same prompt), or More like #N (Picasso refines text prompt → new panel). Crops run only after Use this.

Verified live by Daniel and Angelina (2026-06-18). Backups taken.


What exists (do not regress)

Key files

PathRole
.Scripts/syn_pipeline.pyWatcher: inbox, panel n=4, masters_pending, --select, divider, crops, images_approved → assemble
.Scripts/syn_assemble.pyParse article.md, infill Tahoe template, assembled.html + preview.html
.Scripts/syn_assemble_template.htmlParameterized Tahoe body fragment (divider slot + [Portal:Keywords])
.Scripts/syn_config.yamlPaths, xAI, crops, scaled.divider.w, panel_count: 4
.Scripts/syn_pipeline.logWatcher log
.Scripts/arnie_output_contract.mdSYN_PIPELINE parser fixtures
app.pyChat bridge, regen, teach, pipeline API, more-like
index.htmlChat UI, Gate 1 modal, composer buttons, resize grips
agent_order.jsonSidebar: Dachs → Forrest → Arnie → … → Picasso
handoffs/Grok_Handoff_SynNA_Gate1_Panel.mdThis file
D:/03_MAP/Syn_Pipeline/{slug}/Packet root (images flat, not images/ subfolder)
D:/03_MAP/Line_Editing/_Promote/Arnie Article-*.md promote inbox

State machine (image stages)

StateSet byNext action
draftedpacket create / regenwatcher: xAI n=4
masters_pending4 candidates savedGate 1 modal — pick / regen / more-like
images_pendingpick + divider + cropsPicasso refine / approve
images_approvedhuman approvewatcher: assemble
assembledassemble (2.5)sql_build (2.6)
sql_readysql_build (later)Gate 2 review
publishedpublish (later)terminal

Regen sets drafted (not regen_requested). Clears candidates, images metadata, reruns panel.

Candidate + final image files

Before pick (masters_pending):

filenotes
{slug}_candidate_1.jpg_4.jpgxAI panel; listed in status.candidates

After pick (images_pending) — six files:

keyfilenamehow produced
master{slug}_master.jpgpromoted from chosen candidate
divider{slug}_{w}x{h}.jpgfull-frame scale (default 1920×960 for 2:1)
banner{slug}_1920x420.jpgcover_crop
tablet{slug}_768x420.jpgcover_crop
mobile{slug}_480x420.jpgcover_crop
thumb{slug}_200.jpgcover_crop

status.yamlcandidates[], master_choice, panel_generated; after pick images.{key} each has file, w, h, bytes.

Observed live master: 2912×1456 (2k / 2:1). Divider height derived at runtime.

Agent workflow (chat-first, not kanban)

`` Dachs → Forrest → Arnie → promote → packet (drafted) → panel of 4 (masters_pending) → modal pick → six images (images_pending) → Picasso (regen, learn, more-like) → assemble → [NEXT] sql_ready → publish ``

Picasso Gate 1: open with Gate 1 — {slug} + scotoma. Sidebar Gate 1 — Images card also opens the modal.

Chat UI — Picasso composer

ButtonAction
regenSame prompt → new panel of 4 → modal auto-opens
learnStanding heuristics proposal

Gate 1 modal buttons

ButtonAction
Use thisPOST .../select-master → crops → images_pending
Regen all 4Same as regen button
More like #NPicasso refines prompt toward pick → new panel

API

routes (Gate 1 — shipped)

MethodRoutePurpose
GET/api/pipeline/{slug}/statusstate, candidates, images metadata
GET/api/pipeline/{slug}/image/{filename}serve packet JPEG (path-safe)
POST/api/pipeline/{slug}/select-master{index: 1-4} → finalize + crops
POST/api/regenwrite prompt, --packet, open modal
POST/api/more-likePicasso refine + new panel
GET/api/pipeline/{slug}/previewserve preview.html (Gate 2)
POST/api/pipeline/{slug}/approve-imagesimages_pendingimages_approved
POST/api/pipeline/{slug}/assemblerun assemble → assembled

Chat UI composer buttons (all agents)

AgentButtons
DachsSave Research (funnel)
Forrestcats + assemble (brief)
Arniehandoff + assemble + learn
Picassoregen + learn
Othershandoff + assemble

Divergences from SynNA Build Spec v1.0 (2026-06-09)

v1.0 assumptionCurrent reality
IMAGE_PROMPT in Arnie articlePicassoimage_prompt.txt
Packet metadataSYN_PIPELINE: TITLE, SLUG, SCOTOMA
images\master.jpg{slug}_master.jpg at packet root
Single master at Gate 14 candidates in modal before crops
Pipeline kanban (§9)Deferred — Gate 1 in Chat UI
Banner 1800×3941920×420
Thumb _200x200{slug}_200.jpg
Master only+ section divider for assembled.html (no DB row)
regen_requested stateRegen → drafted
Folder review for imagesIn-app modal

Pathway forward (ordered backlog)

NOW

— SQL build (2.6) ← NEXT BUILD

Then — Publish (3.1)

Later

ItemNotes
Pipeline kanban (v1.0 §9)Full board when Gate 1/2 stable in chat
Picasso 2.9Automated prompt at drafted via Hermes
pyodbc insertReplace SSMS gate
webp variantsOnly if PageSpeed matters

Shipped milestones (reference)

1.4 — Master rename + section divider (2026-06-17)

2.5 — Assemble (2026-06-18)

Gate 1 panel-of-4 (2026-06-17, verified 2026-06-18)


Verification commands

```bash cd D:\04_WORK\Code\Lattice\_ChatUI\.Scripts python syn_pipeline.py --test-crops python syn_pipeline.py --test-parser python syn_pipeline.py --test-assemble python syn_pipeline.py --packet {slug}

state: drafted → masters_pending

python syn_pipeline.py --select {slug}:{1-4}

masters_pending → images_pending

python syn_pipeline.py --assemble {slug}

images_pending/approved → assembled

```

Gate 2 preview: http://127.0.0.1:8780/api/pipeline/{slug}/preview (after assemble)

Server: http://127.0.0.1:8780

Restart app.py after backend changes. If port in use:

``powershell netstat -ano | findstr :8780 taskkill /PID <pid> /F python app.py ``

Hard-refresh UI (Ctrl+Shift+R) after index.html changes.

Live packet: D:\03_MAP\Syn_Pipeline\what-outlives-me\


Reference specs (historical)

DocumentRole
SynNA Build Spec v1.0 (2026-06-09)Original architecture map
Master Rename + Divider v21.4 — shipped
Gate 1 panel spec (this handoff, §shipped)2.1 + 1.6 — shipped

When older specs and this handoff disagree, this handoff + the filesystem win.


Session continuity for Grok

  1. Read this file
  2. git status / tail syn_pipeline.log if debugging
  3. Read target packet status.yaml
  4. Build one backlog item — no drive-by refactors
  5. Update this handoff when a milestone ships

Updated by Grok Build · 2026-06-18 · 2.5 assemble shipped.

Ask Daniel's CODEX