Internal review pack — Stephen first (Agree / Change / Drop). Not stakeholder-ready yet. Unbranded. Checklist: docs/REVIEW_PACK.md

1 · Contents

Forge[MFP] · full review pack

System · stack · data · workflows · self-improve · maturity · IDS must-work.

Use Next → (or → / Space). G built · A part-built · R envisaged. Narrative 2–19 · self-improve 20 · testing 21 · screens 22 · maturity 23–27 · IDS 28–30.

2 · Purpose & objectives

Why Forge[MFP] exists

Umbrella editorial platform: plan, create, approve, fit pages — across titles and countries. Agents assist; named roles decide.

Plan pre · horizon · issue Create list · Desk · A1–A4 Approve MBE · Editor · Writer Fit / pin APL · target ≥90%
1Automation and efficiency by design — to European best standards
2Brand flexibility — add and run titles fast; each brand faster / better / lower cost with AI
3Reduce legacy tech — replace Monday planning/tracking/blueprints by mid-2027; WWA likely replaced in 2 years+
4APL ≥90% target — pages fit with no designer (ops priority). Not claimed until live IDS proves it.
5AI planning and content assist — where possible; humans keep higher-level tasks and publish quality
6Self-improve in use — L1 friction → L2 ship → L3 prioritise (agents + process, not a separate programme)

3 · System context

Forge[MFP] as the umbrella

Forge[MFP] — umbrella platform Planning · briefs · articles · roles · APL · image sets · IdsJob · Improve L1 SAP Corporate and publishing data Monday.com Pre-planning, planning — replace in 2027 WWA / WWS Base article to layout mapping Archive (articles, images, Layouts) InDesign Server Layout templating, injection, design, fit Dataplan flatplan · ID Layouts Connected upward into the umbrella — not peer tools beside it

Solid line = durable. Dashed = transitional / exit. Working title Forge[MFP].

4 · Technical stack

How the demo stack is built up

L5 · BUILD / AGENTS Cursor · Hermes · review pack — ship continuously (L2), not a LangGraph product yet L4 · BROWSER UI Static site :8082 · HTML/CSS/JS · Create · Issue · Layout QA · review-deck · theme shell L3 · API FastAPI :8083 · SQLAlchemy · seed · IdsJob queue · APL simulate-pin · improvements L2 · DEMO SoR SQLite mfp2.db — editorial truth for Mag A–D TARGET SoR Postgres (planned cutover) L1 · ADAPTERS (in process) ids_adapter.py · fixture today → live IDS/cloud later · browser never talks to IDS EXTERNAL / TRANSITIONAL (dotted = plug points, not live) Monday WWA / WWS InDesign Svr Dataplan SAP Corpus :8084

Solid = running in demo. Dashed = known plug / target — not claimed live. Parked: LangGraph, n8n, SSO.

5 · Data architecture

Layers of the data model

PORTFOLIO Country → Magazine (brand) → Brand guidelines PLANNING Blueprint → Issue → Slot → Cascade plans CONTENT Brief → Article (+ A/P) → Image set → Approvals → Create-state LAYOUT & FIT BA ↔ Layout (APL-1) · Fit contracts · IdsJob / pin Roles · Propose · Improve L1 · Adapters

Read top → bottom: portfolio truth, then planning, then content, then layout/fit. Side systems attach via adapters.

6 · Data model

Editorial SoR — what we store

Magazine + BrandPack BlueprintSlot A/P · layout · SlotCard Issue dates · cover Article gates · A/P · status Brief CreateState ImageSet Approval / Gate Task AplPin IdsJob Cover IssueSlotState topic · colour · writer Cascade giver → taker CalendarEvent press · work · plan ImprovementProposal L1 · IMP-… Decision Propose APL CONTRACTS (in SoR) BA template LayoutCompatibility ElementFitContract SlotCard EXTERNAL PLUGS (dotted — known targets only · not live sync) Monday.com Issue · Blueprint WWA / WWS Article · Image · Layout InDesign Server ← IdsJob adapter Dataplan flatplan · ID Layouts SAP corp · publishing data Demo SoR = SQLite · same shape for Postgres cutover · no invented plugs

Solid boxes = tables we use. Dotted = planned adapter edges. Not shown: SSO/User (no SoR yet), LangGraph checkpoints.

7 · Process map

End-to-end spine

1 Pre-plan blueprint 1.5 Horizon titles×iss 2 Issue topics·Propose 3 Create list·Desk 3.9 Approve selective 4 APL · Layout QA pin · fit · L1 back Images cross-cut · Brief/cover on Issue · Cascade (A4/P3) skips brief Self-improve (L1) can fire from any step · slide 20

Nomenclature: Propose (on Issue) not a separate Recommend app · Editor ≠ Hub lead ≠ MBE. Detail: slides 8–19 · maturity 22–26.

8 · Workflow 1.0

Pre-planning

Brand 1.1 Blueprint 1.2 A / P 1.3–1.4 Layouts 1.5 matrix Cascade plans 1.6 giver → taker
1.1 Define the magazine brand
1.2 Design the standard blueprint
1.3 Set how each slot is created (A1–A4)
1.4 Set how original each slot is (P1–P3)
1.5 Attach matching layout files only
1.6 Plan content cascades between titles
ParticipantsAcquisition / Brand manager · Planner · Production (layouts) · MBE (standards)
InputsCountry, frequency, grade · content types · sample pages · cascade opportunities
OutputsMagazine · Blueprint · Slot defaults (A/P) · Compatible layouts (APL-1 hard-block) · Cascade plans

A1–A4 = how we make it. P1–P3 = new vs reuse. Demo: Mag A–D UK blueprints on preplan.html.

9 · Workflow 1.5

Horizon Board

Excel-like overview between pre-plan and a single issue — or planners stay in spreadsheets.

1.0 Pre-plan title setup 1.5 Horizon Board titles × issues · 3-issue lens Excel replacement 2.0 Issue this cycle
WhyWithout Horizon, the multi-issue overview stays in Excel.
NowTitles × issues · Mag A–D flick · scroll + 3-issue magnified lens · drill to issue. horizon.html
LaterTrue mix/gap engine · multi-title content-area views · live cell titles everywhere

10 · Workflow 2.0

Issue planning

Fill this issue from the blueprint — not redesign the magazine. Propose lives on the board.

Open board 2.0 slots Topics down page Propose Why/sources Brief P1/P2 Cover/TOC MBE Gates chips
1 Open blank issue plan shaped by blueprint
2 Enter working topics / angles down the page
3 Propose candidates (Why + sources) · accept to seed
4 Brief per article (P1/P2) · publish → writer task · P3 skips brief
5 Cover package / TOC / leads — MBE gates
6 Status chips · hand off to Create
ParticipantsPlanner · Editor (delivery) · Hub · MBE (cover/TOC/leads) · Writer (assigned) · Agent (Propose)
InputsBlueprint · press date · slot cards · archive/serials · cover assets
OutputsIssue topics · decisions · briefs/tasks · cover package · gate state · (P3 cascade-ready)

Demo: issue.html · two articles on one spread = two briefs.

11 · Workflow — slot / Propose

Slot card drives Propose (on Issue)

Primary UX: Propose on the Issue board (per-row popup · Propose all). slot.html remains the detail card — not a separate “Recommend” product.
Slot card tone · purpose length · templates special rules drives Propose candidates Why · sources soft-fit · risks Decide accept · adapt hold · reject → brief / cascade
1 Review slot card (pre-plan SoR)
2 Propose candidates that match the card
3 Show Why / sources · soft BA/layout fit
4 Accept → seed angle / brief
5 Or hold / reject / adapt
6 Hand off to brief, task, or P3 cascade
Slot cardArticle design / prompt for the slot — tone, purpose, length, templates. Drives selection and eligibility.
ParticipantsPlanner (decides) · Agent (proposes) · Hub (tone) · Editor (quality)
NowPropose UI on Issue · candidates still canned (not full DB) · soft-fit amber
OutputsDecision · accepted candidate · next brief/task or cascade-ready

12 · Workflow 3.0 · A1

A1 — Build a generator, fill a pool, then select

A1.1 · Certify generator ~10 pages → prompt → test AI fit · editor signs off then run pool 50–100 Pool certified store ready to pick A1.2 Select task → edit

Inside A1.1 — certify the generator first

1 Review ~10 similar pages
2 Extract the content patterns
3 Draft the generation prompt
4 Create a test article from it
5 AI-check fit vs the 10 · iterate
Editor signs off · then run the pool
ParticipantsAutomation + Editor (certify generator) · Planner · Writer (select & review)
InputsSlot card · ~10 example pages · fit/layout rules
OutputsCertified generator · bulk pool · selected article on a task

Both A1.1 and A1.2 required. Cover is always A1 — cover package, not a standard brief. Maturity: red/stub in demo (pool/certify not built) — path is design intent.

13 · Create journey ★

One path from planned slot to ready draft

Post-planning — create.html Articles list + Desk. Enrichment does not overwrite the planning brief. Layout preview while drafting ≠ Pin. Pin only after approve.

My tasks list Brief on Desk Enrich ≠ SoR brief Sources rail first Draft A2 gen / A3 Ready approve Pin* fixture A3: writer drafts instead of Generate · A1 joins at Edit · A4 mostly skips Create * Pin after approve · adapter fixture until client IDS · meters ≠ page truth
Default biasMany pages are retrieve → select → combine → refresh archive — not blank-page AI. Sources before generate.
Enrich ruleExtra prompt fields + brand-pack auto-fill. Does not rewrite the planning-system brief.
Must workList → Desk → meters → ready → approve → pin path. Create-state persists. Length bands respected (APL-2).
HandoffLayout CMS / live WW later. Today: pin stays in Forge[MFP] (fixture) → Layout QA.

Canonical: CANONICAL_SPEC.md §4.0 · Next = A2 / A3 paths · maturity slide 26. · Bauer SME pack: Forge/Editor pitch →

14 · Workflow 3.0 · A2

A2 — Generate path through the Create journey

Task + brief thin → full planner/editor Enrich brand pack ≠ planning SoR Select sources archive first then generate Generate brief + sources + slot + brand Edit / lock blocks · fit Ready → approve
1 Task + draft brief (minimal OK)
2 Enrich (does not overwrite planning brief)
3 Select archive articles / images / PDFs
4 Generate — blocks from brief + enrich + sources + slot card + brand
5 Edit · lock · fit checks · research rail
6 Writer ready → approve (Desk or inbox) → pin when gated OK
Who briefsPlanner and Editor own the task and draft brief. Writer can enrich — they do not start from a blank brief.
BiasPrefer select sources first, then generate. Pure brief→generate is valid but not the only pattern.
Generate usesBrief · enrich · selected sources · slot card · brand guidelines · APL-2 length bands
ParticipantsPlanner · Editor · Hub · Writer · Agent (assist) · Approver · Production (pin)
DemoPrimary Create path today · generate assist is thin · meters amber

15 · Workflow 3.0 · A3

A3 — Open-format writing (skilled writer)

Directional brief “Go to Ascot…” event · news not a generate-spec Skilled writer experiences / reports open format cannot predefine Images select or receive Write to page
1 Planner/editor commission a directional brief and task
2 Writer goes to the event, news, or open assignment
3 Writer selects or receives images for the page
4 Writer drafts in the layout-ready editor (AI assists)
5 Improve with AI tools and fit checks
6 Writer ready → approve → handoff when you choose
Why A3The article cannot be fully predefined in a brief. Open format · needs a more skilled writer than A1/A2 template slots.
Brief examples“Go to Ascot, review the races, write about it” · cover an event · report a news piece — directional, not a generate-spec.
ImagesOften writer selects (or is given) pictures and writes the article to fit the page.
vs A2Same Create chrome. A2 = enrich + sources → press generate. A3 = assignment brief → writer creates the piece.
ParticipantsWriter (lead) · Planner/Editor (commission) · Hub · Agent (assist only)
MaturityRed / stub as dedicated desk — path is design intent; A2 chrome is the demo workhorse

16 · Workflow 3.0 · A4

A4 — P3 cascade (design goal: no work)

1 Plan cascade only to a compatible taker layout
2 System places the article automatically
3 Spot-check · tweak only if needed
4 Approve / pin — not a rewrite
Article type X fits layouts 1 · 6 · 9 · 11 · 15 · 25 Magazine A slot uses Layout 6 write once cascade Magazine B slot Layout 15 fits · no edit
Design goal100% automated · no work. Occasional micro-tweak is the exception — not a writer cycle.
Hard ruleCascade only if taker layout is in the article-type ↔ layout matrix (APL-1). Otherwise blocked.
ParticipantsPlanner (cascade) · system (place) · Editor (spot-check) — Writer ideally idle
InputsGiver article · matrix · taker slot/layout · P3 · no separate brief
OutputsArticle on taker slot · usage history · pin-ready (still needs approve/pin)
DemoSeeded B→A / B→C / A→D · cascade.html one-shot · lag edits often local — amber

17 · Workflow 3.9

Approvals (selective)

MBE decides Cover package Contents list Lead features after writer ready Editor / Planner Other articles when gate is set after writer ready Writer authority Marks ready to publish enough if no higher gate
Writer agencyWriter can mark ready after they have checked the piece. Real authority when no higher gate.
Higher gatesMBE — cover / TOC / leads. Editor — selective non-leads (issue delivery). Hub lead ≠ Editor.
Surfacesapprovals.html (view-as filter) · Approve from Desk on Create · reject / reopen
ParticipantsWriter · MBE · Editor · Planner · Hub (if gate set)
OutputsReady / ApprovalGate · eligible for APL-3 pin (fixture today)

18 · Workflow 4.0

APL — Automated Page Layout

APL-1 Compatibility article type ↔ layout matrix · pre-plan APL-2 Live fit checks min/max while writing quality may trump fit APL-3 Pin & prove IDS · target ≥90% tweak or design
APL-1Compatible base article ↔ layout only. Participants: Planner, Production. Out: pair matrix.
APL-2Live min/max on title, subhead, text blocks. Quality may trump fit → exception. Participants: Writer, Agent.
APL-3Pin → prove on engine (≥90% is a target, not claimed). Today: fixture IdsJob · miss → tweak → re-pin. Participants: Production, Agent, Subeditor.
InputsApproved article · PinningRuleSet · ElementFitContract · image set
Outputs todayIdsJob · FitResult (bands) · TweakProposal — fixture · proof_url null until client IDS · see slides 28–30
Build nowG APL-1 hard-block · pin requires Approval · layout-qa tweak/re-pin/sign-off · A APL-2 meters / fit-check · fixture pin · R live IDS / proof PDF / ≥90%

IDS must-work: slides 28–30 · ACT_FIRST_IDS.md · IDS_TRIAL_PLAYBOOK.md

19 · Workflow 5.0

Images — article image set (Process 5)

SOURCES (prefer left → right) 1 · Archive usually free 2 · Agency may pay on use 3 · AI-gen not real people Article image set 1 = Main · typically 3–5 · same selector
Brief Attach set with the brief
Write Writer selects / completes
Late News: pictures before press
Article image setOrdered pictures for one article → INDD frames. Typically 3–5 (range 0–10). Position 1 = Main; 2–N support.
Source orderArchive first (usually free) → external agency (may pay when used) → AI-gen illustrative only — not real celebrities / royals / identifiable people.
DiscoveryOpen across markets — everyone can see all group articles, images, and PDFs. Do not narrow search to one country.
Rights at useGroup-owned assets are usually fine across markets. Purchased licences often stay in the buying country. Show owned vs licensed · markets cleared when committing to a set — warn/block unsafe use.
Same selectorOne Image Selector in Forge[MFP] — open from brief, writer task, or late pre-press. Always writes into the same article image set.
OutputsArticleImageSet (ordered) · rights / pay-on-use flags · ready for APL frames
DemoCreate Desk images · pool → frames · Library → Place handoff · images.html · cover image pool
Build nowG set order · Place/Clear/↑↓ · archive hybrid search · A rights warn-only · hash-v0 embeddings · R pay-on-use engine · true semantic NL · agency checkout

20 · Self-improvement ★

Agents + process improve while we work

Not a side programme. Every spine step should be able to learn: editorial friction (L1), builders/agents ship (L2), Stephen prioritises (L3). Rule: agents propose; named roles decide.

L1 Editorial friction · flag · propose improve.html · APL flag L3 Meta what matters next Stephen · review pack L2 Build / agents Cursor · Hermes · ship UI · API · seed · docs pain build L2 ships → L1 uses again
In productPropose Why · meters · Approve · pin miss → tweak · Raise flag → L1 · Improve form. Agents assist; they never silent-publish or invent page truth.
One-click L1Create pin miss · Layout QA re-pin miss / File L1 · Approvals reject · APL Raise flag — all via MFP2.l1.file with context. Flash shows IMP-….
In buildSame loop for us: maturity boards (L3 dashboard) · honest fixture labels · AUTONOMOUS_HANDOFF · Hermes lanes · gold-set before client IDS · regression point/area/full.
L1 nowimprove.html · one-click from miss / reject / flag · amber = triage board only (intake is green)
L2 nowLive — not aspirational. Cursor/Hermes agents ship continuously. Do not paint L2 red on maturity boards.
L3 nowYou + review pack Agree/Change/Drop · maturity G/A/R colours are the L3 dashboard
IDS flywheelWhen client IDS lands: repeated oversets → L1 → tighten frame map / contracts — real learning (not fake ≥90%)
Do notSeparate “self-improve industry” · agent owns publish quality · fake green on IDS · treat L2/L3 as “not built”

WORKING_MODEL.md §4–5 · docs/SELF_IMPROVE.md · HANDOFF_JUL11_AGENTS.md §8

21 · Automated testing ★

Regression that keeps pace with the build

Self-improve finds friction. Automated tests lock what we claim is green or amber — continuously updated, not a one-shot pack.

Point — one function Area — page / domain set Full — occasional gate
Inventorytruth
Capability IDs (J1–J4 · SI · IDS · GATE · WS.1)
UI chrome inventory (~312 static)
Deep FP ~1500 Mag A · ~2000+ multi-mag
Deck ↔ test map · workset pack
Auth / SSO regression
Pointdaily
Run IDs you just changed
GATE.01–05 · UI.2.01 · WS.1.01–10
Agent default after a fix
Areachunk
archive · preplan · create · ui
After work on a page/domain
Local set, not whole pack
Fullcadence
Multi-area block end
Before a release tag
Weekly / demo prep
Not every edit
Honestyrules
Green/amber → named test
Red = SKIP — no fake pass
Fixture / hash-v0 labelled
Live IDS until client env
Click proofUI
Playwright ui-smoke (38+)
Row stress Mag A / Mag B–C
Role audits → LIVE promote
Full 2000 FP click coverage
Commands./scripts/regression.sh point GATE.01 · area ui · full · .venv-ui/bin/python scripts/ui-smoke.py
DocsREGRESSION_CADENCE.md · ROLE_FUNCTION_MATRIX.md · DEEP_FUNCTION_POINTS.md
RulePack grows with the product. Smoke ≠ maturity-board done. VERIFY ≠ works.

Sits after Self-improvement: L1 finds pain · L2 ships · tests keep claims honest · L3 prioritises what to harden next.

22 · Screens in the demo today

What you can click (Jul 11 · refreshed)

Hub walk Pre-plan APL-1 Horizon Start plan Issue Propose A–D Brief /cover Create list+Desk pin* Approve gates Layout QA Pin jobs* fixture

* Pin / Layout QA = fixture adapter until client IDS. Legend on 23–27: G built · A part-built · R envisaged.

Hub / walkindex · walk · review deck · roles · process (events/registry)
Planpreplan (lock · Excel · A/P Apply · cascade SoR) · horizon (lens · Start plan) · issue Mag A–D (picker · Propose · Suggest)
Brief / coverbrief · cover package · hub/writer on Save
Create / taskscreate · tasks · Library→Place · ready→approve→pin gates
Approve / APLapprovals (reject note) · apl · layout-qa
Also livelibrary · images · calendar · cascade · improve · brand-pack · brand-ingest (simulated)
Prototype onlycreate-mockup — gated · not the live Create path

API :8083 Postgres · site :8082 · corpus :8084. Parked: live IDS · true embeddings · SSO. Next → maturity 23–27.

23 · Start here · Journey 1

Pre-planning — function maturity

Define the magazine (not this week’s topics). G built · A part-built · R envisaged / not built.

Green — built & usable Amber — part-built (gaps) Red — envisaged / stub
Brand1.1
Brand pack edit + mag sync
Magazine A–D titles
Apply ingest → preplan?mag=
Brand ingest OCR (simulated)
Live OCR / guidelines SoR
Acquisition auth
Blueprint1.2
UK Mag A–D slots (~40)
Lock / unlock edit
Import Excel → slots
Add / delete slot
Layout / INDD field edit
Upload PDF → AI blueprint
A / P tags1.3–1.4
A1–A4 · P1–P3 on slots
Suggest A/P + Apply selected
Suggest quality / history AI
Templates1.5 · APL-1
APL-1 matrix Mag A–D
Hard-block bad pairs
BA template attach
Slot-card API hydrate
Per-title matrix variants
Cascades1.6
P2/P3 cascade table
Create cascade → Postgres
Lag / mode PATCH SoR
Run cascade one-shot
APL giver mag name
Auto-cascade scheduler
Horizon bridge1.5H
Rolling 12 · Mag A–D
3-issue magnified lens
Start plan → new issue
Cell → correct issue id
Rich cell titles / cover·topic
True mix / gap engine

preplan.html · horizon.html · brand-pack · ROLE_FUNCTION_MATRIX.md

24 · Start here · Journey 2

Issue planning — function maturity

Fill this issue from the blueprint. Mag A–D. G built · A part-built · R envisaged.

Green — built & usable Amber — part-built Red — envisaged / stub
Open issue2.0
Board from blueprint
Week + press date
Mag A–D chips
Issue number picker
Horizon Start plan
Cover line UX
Topicsdown the page
Topics persist via API
Suggest plan (demo pool · Mag A–D)
Optimise (same pool · always visible)
Multi-option A/B/C pick
AI suggest from history
Proposecandidates
Per-row Propose popup
Propose all (title-aware)
Why / sources column
Select → seed brief
BA/layout soft-fit badge
Demo candidate pool
Durable pitch library
BriefP1/P2
Brief column + publish
Hub/writer on Save
P3 = no brief
Cover package path
Reject / defer → decisions API
Statusworkflow
Workflow status chips
needs_mbe / needs_editor
Gate chips on each row
Ready-before-approve
Multi-issue inbox
Cover / TOCMBE
Cover package UI
MBE approve / lock
TOC via Approval (not bypass)
Mag-safe Cover (not Mag A leak)
Designer mock-up upload

issue.html · brief.html · Mag B/C boards proven

25 · Start here · Journey 3

Article creation — function maturity

Articles list → Desk → ready → approve → pin. Editor ≠ Hub lead. G built · A part-built · R envisaged.

Green — built & usable Amber — part-built Red — envisaged / stub
Articles listtab 1
Cross-title WIP list
Filters · sort · open Desk
My/Group · default Writer One
Tasks sync queue
Bulk actions
Desktab 2 · BA
BA form + autosave
Draft / proof / validate
Research rail + Cite
Library → Place handoff
Images Place/Clear/↑↓
Char meters + validate
Schema preview theatre
A1 generator pool
Readywriter
Mark ready → workflow
Create-state persist
E Ready panel + gate hint
Brand-pack tone/audience enrich
Writer-only signed inbox
Approve3.9
Approvals inbox + view-as
MBE / Editor / Writer gates
Ready-before-approve
Reject + note → L1
Approve from Desk
SSO / real role session
Pinafter approve
UI + API require Approval
Pin → IdsJob fixture
Miss → tweak → re-pin
Raise flag → L1
Live IDS engine
MethodsA1–A4
A2 primary path
A4 cascade seeded
A1 certify + pool
A3 open-format desk

create.html · approvals.html · library.html · tasks.html

26 · Start here · Journey 4

Layout QA — function maturity

APL loop is must-work. Fixture path is amber (contract only); live engine still red. Detail: slides 28–30.

Green — built & usable Amber — part-built / fixture Red — needs engine / envisaged
APL-1Pre-plan fit
Matrix Mag A–D API
Hard-block bad pairs
Layout edit on pre-plan
BA content Y/N test
APL-2Create length
Char meters on Desk
Validate → fit-check
ElementFitContract seed
Quality-trumps-fit exception
True page geometry
APL-3Pin / scan
Pin blocked until Approval
Pin → IdsJob fixture
Apply tweak → re-pin
parent_job_id chain
Raise design flag → L1
Live overset / bleed
Layout QApage view
Pin jobs list (honest)
Filters · article/status/mag
Job detail + tweak UI
Parent→child chain
Proof slot (placeholder)
Create→Layout QA handoff
Events on tweak/sign-off
Sign-off confirm → pinned
IdsJob fixture engine
Proof PDF / PNG viewer
Live IDS / AI QA checklist
L1 backlessons
Improve → Postgres
One-click L1 from miss/flag
improvement_proposals API
L1 triage filters
APL misses → matrix learn
Experiment / promote
Productionops
apl.html mag-aware pins
ids_adapter contract
Calendar CRUD + sync
Process events + Ack all
Live IDS / cloud adapter
≥90% fit metric

layout-qa.html · apl.html · ACT_FIRST_IDS.md

27 · Workflow maturity

End-to-end process — built · part · envisaged

Cross-spine model (not one journey). Same legend as slides 23–26: G built & usable · A part-built / fixture · R envisaged / not built. Twin: docs/WORKFLOW_MATURITY.md. Fixture pin ≠ page truth.

Built & usable Part-built · thin · fixture Envisaged / needs engine
Roles & gatesSoR
MBE ≠ Editor ≠ Hub
needs_mbe / needs_editor
Ready-before-approve
Pin requires Approval
View-as Approvals filter
Demo · no login (honest)
Real users / SSO
Pre-plan · APL-11.0–1.5
Mag A–D blueprints
A/P + Apply selected
Excel import · lock
Cascade create SoR
Hard-block bad pairs
Apply ingest → preplan
Brand ingest OCR sim
PDF → AI blueprint
Horizon · Issue1.5H · 2.0
Rolling 12 · Mag A–D
3-issue lens · Scr
Start plan → Iss N+
Issue board + picker
Topics · Propose · gates
Horizon rich cell snippets
Suggest = demo pool (labelled)
True mix / gap engine
Propose · Brief2.x
Propose + Why/sources
Accept → angle seed
Soft-fit Mag B/C/D
Reject / Defer API
Brief publish → task
Cover MBE (no bypass)
Demo candidate pool
Pitch intake / favourites
Create · Images3.0 · 5.0
Articles list + Desk
Library → Place
Clear images → API
APL-2 meters / validate
Draft / proof assist
A1 generator pool
True INDD preview
Approve · Cascade3.9 · A4
Approvals inbox
Reject + note → L1
Approve from Desk
P3 Run cascade
Multi-issue queue
A1 certify path
APL pin · QA4.0 · IDS ★
Gate: approve then pin
IdsJob fixture engine
layout-qa list/detail/tweak
Filters · chain · proof slot
Handoff + events + sign-off confirm
ui-smoke layout-qa-flow
ids_adapter contract
Raise flag → L1
Live IDS / cloud
Proof PDF · ≥90%
Improve · PersistL1 · SoR
Postgres + pgvector
Domain events · registry
One-click L1
UI smoke + GATE + WS.1
L1 triage filters
hash-v0 embeddings
LangGraph memory
SSO · true semantic NL

Journey detail: slides 23–26 · IDS must-work: 28–30 · depth: ROLE_FUNCTION_MATRIX.md · DEEP_FUNCTION_POINTS.md

28 · IDS · must work ★

IDS / APL pin loop — non‑negotiable

Watch this: Pin → scan → tweak → re-pin has to work on a real page. Today only the workflow + job contract runs — adapter is fixture (char bands, not geometry). Do not read amber/green on slide 27 as “IDS done.”

Same screens for fixture and live. Never invent page truth. Never claim ≥90% before the engine.

Approve gate OK Pin IdsJob APL-1/2 Adapter fixture NOW client IDS NEXT same JSON fit|miss frames* proof later Tweak · re-pin or flag → L1 Production decides parent_job_id

* Fixture frames are band guesses. Live = InDesign overflows + proof.

Works now (amber)Approve → Pin → job id · honest adapter: fixture · miss/tweak/re-pin API + UI path · Layout QA lists jobs — not page truth
Must work at I2Same path · adapter: ids on client test env · real overset · proof URL · one Health DPS
Waiting on~2 weeks: client test env + their templates/content (do not buy Dev IDS on speculation) · frame names or rename pass
Trylayout-qa.html · Create Pin on approved Health · label stays fixture · docs/ACT_FIRST_IDS.md

29 · IDS · status now (Jul 11)

What is green vs still red

Updated as we build — for your detailed review. Fixture ≠ engine; labels stay honest.

Amber (contract / chrome) IdsJob queue · ids_adapter.py · Pin from Create · tweak / re-pin APIs · parent_job_id · layout-qa list · APL-2 meters · JSX scaffold · frame-map · goldset A–E — all labelled fixture / not engine truth
Green (credible without IDS)Approve gates · Mag A–D blueprints · Issue board · Propose/Brief · APL-1 hard-block · Horizon lens · Create list/Desk · Improve L1 intake
Red (needs engine)Live IDS/cloud · proof PDF/PNG in UI · true bleed/overset · ≥90% metric · multi-template farm
WaitingClient test env + templates (~2 weeks) — no Dev IDS purchase on speculation · ACT_FIRST_IDS.md
DocsIDS_TRIAL_PLAYBOOK.md · ACT_FIRST_IDS.md · IDS_FRAME_MAP_HEALTH.md · goldset A–E
Credible without engine Fixture / partial Engine truth

Phases: I0 fixture path (amber) · I1 desktop JSX + their INDD · I2 client IDS · I3+ geometry tweaks / bleed.

30 · IDS · design lock

Design decisions (do not break these)

ContractOne result JSON for fixture and live: ok, stage, result, message, tweaks, frames, proof_url, scan, adapter, engine_truth
TransportBrowser → FastAPI only. Worker → adapter. Never JSX from the browser.
AuthorityProduction decides pin. Agents propose tweaks. Quality may trump fit at APL-2 (exception, not fake green).
Re-pinFirst-class: miss → tweak → new job with parent_job_id. Not a one-shot OK button.
First templateOne Mag A Health DPS · named frames (Title_A, Body1_A, IMG_A_Hero…) — see frame-map doc.
LicencePrefer client test env first. Own IDS Dev / InDesign APIs only if their env cannot run our script.
Say / don’tSay “fixture until engine” · Don’t say “auto-fit pages” or “≥90% achieved”.

Workflow owns process credibility · UI owns chrome · you own client env access + templates when they land. Agree / Change / Drop on this slide when you review.

1 / 29