# Masterplan: app-creator → v1.0.0 **Forfattet av:** Fable 5 (xhigh), 2026-07-10, som Del 2 av kryssmodell-review-oppdraget. **Status: AKTIV** — promotert av operatør 2026-07-10. Levert som `docs/replan-proposed.md`; `docs/review-2026-07.md` refererer planen under det navnet. Funn-grunnlag: `docs/review-2026-07.md`. **Definition of done (v1.0.0, bindende ramme):** full fase-pipeline + per-app HTML + brief-generator + app-state-eksport. v0.4.0 (kontrakt-låsing, `docs/roadmap.md:19-27`) er milepæl underveis. Prototypen (11 gjenstående briefer, Voyage-kjøringene, shipping av Akashic) er **del av planen**, ikke ekstern forutsetning. Nivå 3 fast; muliggjør nivå 4; ingen sesjon introduserer autonome loops uten human-in-the-loop. **Repo-skille (gjelder hele planen):** app-creator-sesjoner skriver i `/Users/ktg/repos/app-creator`; Akashic-instans-arbeid skriver i `/Users/ktg/repos/akashic-intelligence` (etablert arbeidsform, jf. STATE); app-factory-endringer krever eksplisitt operatør-mandat (tidligere eksemplifisert ved A7, strøket 2026-08-11 — se § A7). **Voyage kjøres alltid av operatøren** — ingen sesjon eksekverer Voyage (invariant, `CLAUDE.md:71-75`). --- ## Endringslogg: review-funn → sesjoner | Funn (review-2026-07.md) | Skaper/endrer | |---|---| | R-01 playground slettet, drill-down udefinert, døde Handover 8-refs | **Skaper A1** (dok-resync), **endrer E1** (drill-down redefineres før HTML-spec); app-factory-siden dekket av deres egen H0-1 (A7 strøket 2026-08-11) | | R-02 brief_version 2.0-pin, forsvars-hull, stale verifikasjon | **Skaper A5** (2.2-design), **endrer B1** (round-trip på 2.2), **endrer D4** (generator-mål) | | R-03 `How to continue`/project_dir brutt | **Endrer A5 + B1** (handover-mekanikk eksplisitt + testes) | | R-04 round-trip aldri reell; research.md-antakelse | **Skaper B1** som tidligste prototype-sesjon, foran all videre brief-produksjon | | R-05 review-gate på ukontraktfestet intern fil; død sti | **Endrer A1** (sti-fiks), **skaper D7** (vendoring-beslutning) | | R-06 phase_status/attention-sprawl; fase 7-semantikk | **Skaper C2** (schema-design), **D3** (validator), **endrer A1** (enum-samling) | | R-07 lengdegrenser motbevist; revisjonslogg i kontraktsfila | **Skaper A2** (tabell + plasseringsbeslutning), **endrer B3–B5** (brief-konvensjon) | | R-08 friksjonslogg 8 sesjoner bak | **Skaper A4** (etterregistrering), **endrer alle B-sesjoner** (friksjonsføring i exit-kriteriene) | | R-09 forbudt flersesjons-mønster i normativ tekst | **Endrer A1** | | R-12 pack-versjonskaos, stale snapshot | **Skaper A3** | | R-13 iOS 18/19-eksempler; WCAG 2.1/2.2-sprik; iOS 27-drift | **Endrer A1**; **skaper vedlikeholds-oppføring V1** (pack-reverifisering ved iOS 27) | | R-16 asymmetri-formulering usann | **Endrer A1** | | R-18/M11 ingen remote | **Skaper A6** (operatør) | | R-19 v0.4.0-definisjons-drift | **Endrer C3**; app-factory-siden dekket av deres egen H0-1 (A7 strøket 2026-08-11) | | Akse 5.1 default-sti utestet; n=1 | **Skaper B6** (rapid mode × claude-code-plugin-pack) | | Akse 5.5 portal ikke round-trip-blokker | **Endrer kritisk sti**: B1 foran B7; B7 gater kun B8+ | | Akse 3.5 localStorage-varighet | **Endrer A2** (plasseringsbeslutning) + **D7** (eksport-utvidelse, betinget godkjenning) | | Fem-nivå-vurderingen: passive gates | **Endrer B3–B5** (aktiv gate-sjekkliste i fremgangsmåten) | Ambisiøse utvidelser (review § Akse 4): A/validator er absorbert som **D2** (mandatets minimumsliste krever den); B/pack-lint ligger som **valgfri D8**; C/annotasjons-eksport er betinget del av **D7**; D/retur-ingest er parkert til første Voyage-retur (blir da del av F1); E/friksjon-gate er henvist til operatørens globale system. --- ## Masterplan-kø Én oppføring ≈ én sesjon. Størrelse S/M/L. **[OPERATØR]** = manuelt operatør-steg, ikke Opus-eksekverbart. Design-/prototype-sesjoner: Iron Law gjelder ikke, men verifiserbare exit-kriterier gjelder alltid. Kode-sesjoner (D/E/F): failing test først. ### Fase A — Premiss-opprydding og kontrakt-resync --- **A1 — Dok-resync av app-creator mot verifisert virkelighet** · **M** - **Mål:** Fjerne alle utdaterte/usanne premisser fra normativ tekst, med review-2026-07.md som fasit. - **Scope-grense:** Ingen nye design-beslutninger (de hører i A2/A5); ingen endringer i `domain-packs/**` (A3) eller andre repos. - **Avhengigheter:** Ingen. Operatør har godkjent denne planen. - **Filer:** `CLAUDE.md`, `README.md`, `CHANGELOG.md`, `docs/phase-design-draft.md`, `docs/roadmap.md`, `prototype-run/README.md`. - **Fremgangsmåte:** Applisér funn-for-funn: (1) R-01: merk «v4.3 Plugin Playground» historisk i CLAUDE.md:24,30,56,58,84 / README:19 / CHANGELOG:12-13; omformuler drill-down i roadmap:25,38 til «drill-down til feature-ens Voyage-run-artefakter (voyage_run_dir) og annotate-HTML»; fjern Handover 8/`trekrevise` fra phase-design-draft:882,938 (behold annotate.mjs-beskrivelsen). (2) R-05: erstatt død sti i :865,:950 med cache-sti-regel. (3) R-09: omskriv § Flersesjons-protokoll (:83-89,:979) til STATE.md-konvensjonen; rett prototype-run/README-tabellen. (4) R-13/M5: rett iOS-eksempler :315,:386,:524,:625 til domene-nøytrale plassholdere; avklar WCAG 2.2 AA i CLAUDE.md:105. (5) R-14/M6: stryk fase 2-pack-input :423. (6) R-15/M9: redefiner max-3 («snapshot = én lasting»), rett fase 5-input :596. (7) R-16: omformuler CLAUDE.md:74. (8) R-06 (delvis): samle phase_status-enum i én tabell, legg til `pending-review` i frontmatter-enum :204. (9) R-17/M10: rett CHANGELOG:8 + ny Unreleased-entry for denne oppryddingen. (10) R-20: «6-tema» → «8-tema». (11) R-04: omformuler friksjon-#14-siteringer i draft der de fremstår som reell test (kun draft-tekst — friksjon.md er logg og røres ikke). - **Nøkkelantakelser:** Review-funnenes linjenumre stemmer fortsatt (test: grep før hver edit). - **Verifisering:** `grep -rn "Handover 8\|trekrevise" docs/ CLAUDE.md README.md` → 0 treff; `grep -n "iOS 19" docs/phase-design-draft.md` → 0; `grep -rn "NEXT-SESSION-PROMPT" docs/ prototype-run/README.md` → 0; `grep -c "pending-review" docs/phase-design-draft.md` ≥ frontmatter-forekomst; `grep -n "plugins/marketplaces" docs/` → 0; commit. --- **A2 — Lengdegrense-tabell + revisjonslogg-plassering** · **S** · **[OPERATØR-beslutning inngår]** - **Mål:** Erstatte flat 500-ordsgrense med friksjon-#14-tabellen og beslutte hvor revisjonshistorikk bor. - **Scope-grense:** Ingen omskriving av eksisterende Akashic-artefakter (B-fasen tar F-001 ved B1). - **Avhengigheter:** A1 (ren base). - **Filer:** `docs/phase-design-draft.md` (§ Hard lengde-grense, § Fase 7, § Review-gate). - **Fremgangsmåte:** Presentér operatøren for de tre plasserings-alternativene fra R-07 (a: `features/{NN}/revisions.md`-sidecar, b: context.md, c: strip ved handover; anbefaling a). Applisér valget + #14-tabellen (app-brief ~2000, research ~1500, arkitektur ~2000, constraints ~3500, features ~3000 skalert, fase 7 brief ~750/context ~650/research ~600; unntak uendret). - **Verifisering:** `grep -n "≤500 ord eller én skjerm" docs/phase-design-draft.md` → 0 treff; tabellen til stede; beslutning + begrunnelse nedfelt i § Fase 7; commit. --- **A3 — Pack-versjonsreparasjon + Akashic-resync** · **M** · *(cross-repo: Akashic)* - **Mål:** Én sann pack-versjon (0.2.1) overalt; ferskt snapshot i Akashic. - **Scope-grense:** Ingen innholdsendringer i pack-filene utover manifest/changelog; ingen re-verifisering mot iOS 27 (egen oppføring V1). - **Avhengigheter:** Ingen (kan gå parallelt med A1/A2). - **Filer:** `domain-packs/ios-app/pack.json` (app-creator); `00-context/domain-pack-ios-app.md`, `state.json`, `features/01-sun-position/brief.md` frontmatter-pin, `app.md` (akashic-intelligence). - **Fremgangsmåte:** (1) pack.json `version` → 0.2.1 + changelog-entry som beskriver b59928b-innholdet (MCP-gotchas). (2) Re-materialiser Akashic-snapshotet fra 0.2.1 per den LÅSTE mekanikken (`domain-pack-spec.md:184-192`), inkl. korrekt kilde-sti. (3) Oppdater `domain_pack`-pins (state.json:4, brief-frontmatter, app.md) til `ios-app@0.2.1`. (4) Kontroller at pack-overrides fortsatt gjelder mot nytt snapshot. - **Nøkkelantakelser:** b59928b var eneste umanifesterte endring (test: `git log --oneline -- domain-packs/ios-app/` og diff 0.2.0-tag-punkt→HEAD). - **Verifisering:** `grep '"version"' domain-packs/ios-app/pack.json` → 0.2.1; `head -6 akashic…/00-context/domain-pack-ios-app.md` viser 0.2.1 + ny dato; `grep -rn "ios-app@0.1.0" akashic…/` → 0 treff; begge repo committet. --- **A4 — Friksjon #16+ etterregistrering** · **S** - **Mål:** Gjenopprette friksjonsloggen som pålitelig instrument før neste design-revisjon. - **Scope-grense:** Kun etterregistrering (kilder: Akashic state.json S14–S15-loggen, git-historikk, review R-08); ingen nye design-forslag utover det kildene bærer. - **Avhengigheter:** Ingen. - **Filer:** `prototype-run/friksjon.md` (append). - **Fremgangsmåte:** Skriv minst: #16 passiv-gate-svikten (S14e: retroaktiv 0-annotasjons-review godkjente faktafeil; aktiv operatør-spørring fanget den) med foreslått revisjon (aktiv gate-sjekkliste); #17 revisjonslogg-eksplosjonen (brief.md 743→4523 ord over 6 revisjoner; kobling til A2-beslutningen); #18 versjonsdisiplin-brudd (b59928b; kobling til A3 og evt. pack-lint D8). Dater ærlig: «observert S14/S15, etterregistrert 2026-07-XX». - **Verifisering:** `grep -c "^## #1[678]" prototype-run/friksjon.md` = 3; hver entry har Fase/Type/Observert/Beskrivelse/Foreslått revisjon; commit. --- **A5 — Fase 7-kontraktdesign: brief_version 2.2** · **M** · **[OPERATØR-beslutning inngår]** - **Mål:** Omskrevet § Fase 7 som produserer 2.2-briefer og en eksplisitt handover-mekanikk. - **Scope-grense:** Design i utkastet, ikke omskriving av F-001 (B1) og ikke generator-kode (D4). - **Avhengigheter:** A1, A2, A4. Operatør bekrefter 2.2 som mål (anbefalt; alternativet — bli på 2.0 — betyr bevisst å stå utenfor framing-forsvaret og dokumenteres i så fall som risiko). - **Filer:** `docs/phase-design-draft.md` (§ Fase 7). - **Fremgangsmåte:** (1) Re-les `HANDOVER-CONTRACTS.md` § Handover 1 og `templates/trekbrief-template.md` FØRST (kontrakten kan ha flyttet seg siden 2026-07-10 — premiss-verifisering). (2) Oppdater frontmatter-blokken: `brief_version: "2.2"`, `framing` med avledningsregel (ny feature fra godkjent backlog → `preserve`; revidert feature → `refine`; operatør kan overstyre), `phase_signals`-strategi (generator setter liste, eller `phase_signals_partial: true` som ærlig fallback — begrunn valget), `## TL;DR`-regel (≤5 linjer, genereres fra task+Goal). (3) Definér handover-mekanikk (R-03): anbefalt loose-modus konsekvent (`--brief ` for research og plan) ELLER dokumentert kopieringssteg til `{project_dir}`; rett `How to continue`-templaten. (4) Avklar `research.md`-rollen ærlig: merk som «konsum av Voyage IKKE verifisert — avgjøres i B1». (5) Ny verifikasjonsnote med dato + kontraktversjon. - **Nøkkelantakelser:** Handover 1 er fortsatt 2.2 (test i steg 1); `phase_signals`-enum `[research, plan, execute, review]` × effort `[low, standard, high]` uendret (test: grep i kontrakten). - **Verifisering:** `grep -n '"2.2"' docs/phase-design-draft.md` ≥1; `grep -n "framing" docs/phase-design-draft.md` viser avledningsregel; `grep -n "2\.0" docs/phase-design-draft.md` § Fase 7 → 0 normative treff; How-to-continue-templaten inneholder ikke `--project` uten kopieringssteg; commit. --- **A6 — Forgejo-remote** · **S** · **[OPERATØR]** - **Mål:** Repoet tracked på privat Forgejo (aldri GitHub). - **Avhengigheter:** Ingen; bør skje tidlig (backup av 25 commits). - **Operatør-steg:** Opprett repo på `git.fromaitochitta.com`. Deretter (sesjon eller operatør): `git remote add origin ` + `git push -u origin main`. - **Merk:** STATE.md forblir gitignored (privat remote ville tillatt tracking per konvensjon — operatørvalg; dagens `.gitignore`-linje beholdes til det er besluttet). - **Verifisering:** `git remote -v` viser Forgejo-URL; `git status` viser `origin/main`-tracking; push uten feil. --- **A7 — app-factory-brief-synk** · **[STRØKET 2026-08-11 — operatør-beslutning]** · *(cross-repo: app-factory)* - **Opprinnelig mål:** app-factory-briefene sluttet å referere slettede Voyage-flater; v0.4.0-definisjonene identiske. - **Hvorfor strøket:** app-factory utførte samme arbeid selv i sesjon H0-1 (2026-08-10, commit `954c99b`) — de identifiserte overlappet i sin egen review (`app-factory/docs/review-2026-07.md:74`: «app-creators uratifiserte A7-sesjon foreslår å gjøre deler av dette derfra — eierskapet må avklares (anbefaling: H0-1 eier det)») og anbefalte selv at H0-1 eier det. Varslet app-creator via coord-melding 2026-08-10; operatør besluttet å stryke A7 fremfor å redusere den til en kryss-sjekk-sesjon. - **Re-verifisert herfra 2026-08-11:** `grep -rn "Handover 8\|v4\.3" app-factory/docs/` → samtlige treff er enten historisk-merket («flaten er slettet i Voyage v5.0.0», «v4.3-tiden») eller negerende («Ikke Handover 8», «Handover-settet er 1–7», «tidligere referanser … var feil og er fjernet»). Ingen normativ tekst hevder lenger v4.3/Handover 8 er gjeldende. - **Konsekvens:** C3s avhengighet til A7 er innfridd via app-factory H0-1, ikke via en app-creator-sesjon (se C3). R-01/R-19 lukkes av samme arbeid. ### Fase B — Prototypen: reell round-trip, briefer, Voyage-kjøringer, shipping --- **B1 — F-001: første reelle Voyage-round-trip** · **M** · **[OPERATØR kjører Voyage]** · *(cross-repo: Akashic)* - **Mål:** Én app-creator-produsert brief konsumert av Voyage `/trekresearch` + `/trekplan` uten ad-hoc-reparasjon — roadmap-forutsetning #3 innfridd reelt. - **Scope-grense:** IKKE `/trekexecute` (gates av B7); ingen nye feature-briefer. - **Avhengigheter:** A5 (og A3 for korrekt pack-pin). **Krever IKKE Apple-portal/Xcode** (review Akse 5.5). - **Filer:** `features/01-sun-position/brief.md` (oppgradering til 2.2 + revisjonslogg-flytting per A2-beslutning), evt. `revisions.md`; `state.json`; `prototype-run/friksjon.md` (app-creator-repo, ved funn). - **Fremgangsmåte:** (1) Sesjon: oppgrader F-001 til 2.2 per A5 (framing, TL;DR, phase_signals, korrigert How-to-continue); flytt revisjonslogg per A2; review-gate på endringen (annotate via fungerende cache-sti). (2) **Operatør** kjører `/trekresearch` (AQ-001: NOAA-pakke vs egen impl) og deretter `/trekplan` per den korrigerte handover-mekanikken. (3) Sesjon: dokumentér utfallet — validator-respons, om `research.md` ble konsumert (lukker review-«Ikke verifisert (b)»), AQ-001-svar, plan-kvalitet; oppdater `voyage_run_dir`/status i state; friksjonsfør ALT som skurret. - **Nøkkelantakelser:** (a) 2.2-brief passerer strict (test: selve kjøringen; ved avvisning er feilmeldingen funnet — logg og fiks). (b) Voyage leser produsent-levert research.md (test: observasjon i steg 2; ved nei: A5-designet justeres — merket risiko). - **Verifisering:** Voyage-validator uten strict-halt (operatør-bekreftet output); `{project_dir}/plan.md` eksisterer; `state.json` viser `voyage_running: 1` eller research/plan-fase gjennomført; friksjon ført; begge repo committet. --- **B2 — AQ-003-lukking + backlog rev 2 + revision-pending-lukkinger** · **S** · **[OPERATØR-beslutning inngår]** · *(cross-repo: Akashic)* - **Mål:** Åpne tråder fra S14 lukket: AQ-003 (F-001 pre-fetch — alt. 1/2/3), app-brief § Omfang #6/#7, constraints § F6/F7-policy. - **Avhengigheter:** Operatør-svar på AQ-003 (`state.json:111-114` har alternativene; AI-anbefaling der: 2 eller 3). - **Fremgangsmåte:** Applisér valget i 06-features-brief (rev 2) med review-gate; lukk de to revision-pending-attention-postene (`state.json:117-127`) med små revisjoner av app-brief/constraints-brief; oppdater state. - **Verifisering:** `state.json.attention` uten `decision-pending`/`revision-pending`-entries for disse; revisjons-logger oppdatert; commit. --- **B3 — Fase 7-briefer: F-007 + F-002** · **M** · *(cross-repo: Akashic; operatør annoterer)* **B4 — Fase 7-briefer: F-003 + F-004 + F-005** · **M** · *(dito)* **B5 — Fase 7-briefer: resterende funksjonelle + F-T01–T03** · **L, splittes ved behov (B5a/B5b)** · *(dito)* - **Mål (felles):** Alle 12 features har operatør-godkjent `brief.md` (2.2) + `context.md` per validert B1-mønster. - **Scope-grense:** Ingen Voyage-kjøringer i disse sesjonene; ingen template-endringer (avvik → friksjon + evt. A-fase-revisjon). - **Avhengigheter:** B1 (validert mønster), B2 (stabil backlog). B3 før B4 før B5 (mønster-modning); innbyrdes uavhengig av B7/B8. - **Fremgangsmåte (per feature):** Les 06-features-entry + relevante ADR/constraints/snapshot-utdrag; skriv brief.md + context.md innenfor A2-tabellen; **aktiv review-gate** (fra friksjon #16): annotate-HTML + eksplisitt sjekkliste til operatør («vis meg reglene»-spørsmål: er vindu-/domene-regler verifisert mot kilde? sporer Success Criteria til backlog-entry? er Non-Goals fullstendige?); applisér annotasjoner; friksjonsfør. - **Nøkkelantakelser:** F-001-mønsteret generaliserer (test: første brief i B3 sammenlignes strukturelt mot F-001 rev 6 + validator-sjekk når D2 finnes — inntil da papir-sjekk mot kontrakt). - **Verifisering:** `ls features/*/brief.md | wc -l` → 3 (B3) / 6 (B4) / 12 (B5); hver med `phase_status`-gate gjennomført (state.json per-feature-status per C2-semantikk når den finnes, inntil da feature_summary-tellere); ordtellinger innenfor A2-tabell eller flagget; commit per sesjon. --- **B6 — Rapid mode × claude-code-plugin-pack: n=2-test** · **M** · *(egen instans-katalog, IKKE Akashic)* - **Mål:** Første empiri på (a) den utestede default-stien (minimal app-brief → fase 7 direkte) og (b) domene-nøytralitet (n=2). - **Scope-grense:** Én liten, reell plugin-oppgave fra operatørens faktiske behov; maks én feature-brief; ingen pack-utbygging utover det kjøringen krever (stub-hull dokumenteres som friksjon, tettes bare hvis kjøringen blokkeres). - **Avhengigheter:** A1 (korrekt doc-base). Uavhengig av B1–B5 — kan kjøres når som helst etter A-fasen. - **Fremgangsmåte:** Operatør velger reell plugin-idé; kjør pre-pipeline init + minimal-variant fase 1 + rapid-mode-hopp til fase 7 per utkastet, med `claude-code-plugin`-packen; friksjonsfør hvert punkt der templater/pack er iOS-farget eller stub-hull stopper flyten. - **Verifisering:** Instans-katalog med `app.md`, minimal `01-app-brief.md`, `state.json` (`mode: "rapid"`), én `features/01-*/brief.md`; ≥1 ny friksjons-entry om default-stien; commit. --- **B7 — Xcode-miljø + Apple Developer Portal** · **M** · **[OPERATØR]** - **Mål:** Bygg-miljøet klart for `/trekexecute`: simulator-runtime installert, portal-stegene (Team ID, Bundle ID + capabilities, App Group) fullført per `akashic…/00-context/apple-developer-portal-checklist.md` (8 steg). - **Avhengigheter:** Ingen (kan gå parallelt med B1–B5). Gater B8. - **Eksplisitt verifikasjon som del av steget:** Test om simulator-bygg fungerer FØR portal-stegene er komplette (`xcodebuild build -scheme AkashicApp -destination 'generic/platform=iOS Simulator'`) — lukker review-«Ikke verifisert (a)» (App Groups-entitlement vs. tomt DEVELOPMENT_TEAM på sim). - **Verifisering:** `xcodebuild build` → BUILD SUCCEEDED (sim); portal-checklistens 8 punkter avkrysset; Xcode-versjon notert (26.6+ per juli 2026). --- **B8 — F-001 gjennom `/trekexecute` + `/trekreview`: pipelinen lukket ende-til-ende** · **M** · **[OPERATØR kjører Voyage]** · *(cross-repo: Akashic)* - **Mål:** Første feature implementert og reviewet via Voyage — roadmap-forutsetning #1 innfridd; første I/V-datapunkt (fem-nivå-vurderingen). - **Avhengigheter:** B1 (plan finnes), B7 (byggmiljø). - **Fremgangsmåte:** Operatør kjører `/trekexecute` + `/trekreview`; sesjon etterpå: observér og dokumentér Voyage-retur-artefaktene (`progress.json`, `review.md` i `voyage_run_dir`) — dette er den empiriske inputen til retur-ingest-designet (parkert utvidelse D) og C2; oppdater feature-status + state; friksjonsfør. - **Verifisering:** `{voyage_run_dir}/review.md` eksisterer; F-001-status `voyage-complete` (eller ærlig blocked-status med årsak); `state.json.feature_summary` oppdatert; friksjon ført; commit. --- **B9–B12 — Featurevis Voyage-syklus til ≥5 shipped** · **L (serie; ~1 kø-oppføring per 1–2 features)** · **[OPERATØR kjører Voyage]** · *(cross-repo: Akashic)* - **Mål:** ≥5 features fra brief til ferdig (v0.4.0-boks 4, `roadmap.md:26`); Akashic reelt byggbar app. - **Avhengigheter:** B8; briefer fra B3–B5 etter dependency-grafen i 06-features-brief (F-001 → F-002/F-003 → …). - **Mønster per syklus:** operatør: `/trekresearch?`+`/trekplan`+`/trekexecute`+`/trekreview` → sesjon: status-ingest, evt. backtrack-håndtering (første reelle backtrack = observasjons-sesjon for `[åpent]`-mekanikken, `phase-design-draft.md:1063`), friksjonsføring. - **Verifisering (per syklus + samlet):** `state.json.feature_summary.shipped` teller; ved ≥5: boks 4 kan krysses. Commit per syklus. --- **B13 — Pre-submission-sporet** · **M** · **[OPERATØR: Isha-brev, App Store Connect]** · *(cross-repo: Akashic)* - **Mål:** Submission-forutsetningene lukket: Isha-forespørsel sendt (5.2.2-autorisasjon + AQ-004/Alt 5-spørsmålene, `state.json:129-133`), App Privacy re-screen («Data Not Collected»-posisjon), App Store-metadata per pack-scaffold. - **Avhengigheter:** B9–B12 (nær-ferdig app). Selve submission er operatør-milepæl utenfor sesjonskøen. - **Verifisering:** attention-postene `action-pending`(pre-submission) lukket eller datert sendt; metadata-artefakter finnes; commit. ### Fase C — Konsolidering og kontrakt-låsing --- **C1 — Friksjonssammenstilling + pre-brief** · **M** - **Mål:** Roadmap-forutsetning #2 og #5: friksjons-data sammenstilt; pre-brief for implementeringen skrevet basert på observert mønster. - **Avhengigheter:** A4, B1, B8 (+ løpende friksjon fra B-serien; trenger ikke ≥5 shipped). - **Filer:** `docs/pre-brief.md` (ny; input til `/trekbrief` for D-fasen), `prototype-run/friksjon.md` (sammenstillings-seksjon). - **Fremgangsmåte:** Destillér #1–#18+ til: hva av utkastet er `[testet]`, hva ble `[justert]`, hva forblir `[hypotese]` (og hvorfor det er akseptabelt); skriv pre-brief med intent/goal/non-goals/constraints/success criteria for plugin-implementeringen — Voyage-kompatibel form slik at D-fasen kan startes med `/trekbrief`-disiplin om ønsket. - **Verifisering:** `docs/pre-brief.md` finnes med de fem forutsetningene adressert punkt for punkt; roadmap-forutsetningene #1–#5 kan krysses av (eller gjenstående eksplisitt datert); commit. --- **C2 — state.json-schema + eksport-design** · **M** - **Mål:** Dokumentert, versjonert schema for `state.json` og app-state-eksporten app-factory skal lese (alignment-brief Funn 2-feltene), med R-06-fiksene: `"schema"`-felt, samlet enum, per-feature fase 7-semantikk, attention-vokabular. - **Scope-grense:** Design + JSON Schema-fil; validator-kode er D3. - **Avhengigheter:** B8 (eksporten designes mot observert bruk, ikke hypotese — roadmap-forutsetning #4). - **Filer:** `docs/state-schema.md` + `schemas/app-state.schema.json` (ny katalog). - **Fremgangsmåte:** Modellér: identitet, per-fase status (kapabilitet-semantikk, jf. review Akse 3.3), feature_summary, per-feature status inkl. voyage_run_status-enum, attention (lukket type-enum: decision-pending/action-pending/revision-pending/environment-blocker/review-pending + definert `phase`-domene), session-felt, review_gate_history, implementation. Valider Akashic-instansen mot skjemaet på papir; avvik → normaliserings-liste. - **Verifisering:** Skjemafilen parser (`node -e 'JSON.parse(...)'`); alle felter i dagens `akashic/state.json` er enten dekket eller eksplisitt avvist med migrasjonsnote; commit. --- **C3 — Kontrakt-låsing + roadmap-oppdatering** · **S** - **Mål:** Brief-handover-format erklært låst (v0.4.0-boks 1) og app-state-schema låst (boks 2); roadmap + alignment-synk oppdatert. - **Avhengigheter:** B1 + minst tre reelle Voyage-konsumerte briefer (B8/B9-serien påbegynt), C1, C2. (A7 strøket 2026-08-11 — innfridd via app-factory H0-1, commit `954c99b`, ikke via en app-creator-sesjon.) - **Verifisering:** roadmap-bokser 1–2 krysset med dato + commit-referanse; `phase-design-draft.md` § Fase 7 merket `[testet — reell round-trip]`; commit. ### Fase D — Implementering (plugin) — **gate: roadmap-forutsetningene #1–#5 reelle (C1 bekrefter)** Iron Law gjelder alle D-sesjoner: ingen produksjonskode uten feilende test først (`node --test`, zero deps). --- **D1 — Plugin-skjelett + test-harness** · **M** - **Mål:** `.claude-plugin/plugin.json` (navn/versjon 0.5.0-dev), katalogstruktur (commands/skills/scripts/schemas/domain-packs), `node --test`-oppsett med første røyk-test. - **Avhengigheter:** C1 (pre-brief), C3. - **TDD:** Failing test: `node --test` kjører og finner testkatalog; manifest-validering (plugin-validator) grønn. - **Verifisering:** `node --test` → pass; plugin-validator uten feil; commit. --- **D2 — `validate-brief.mjs`** · **M** - **Mål:** Egen Handover 1-validator (målversjon 2.2) som pre-handover-gate — implementerer PUBLIC CONTRACT, kjører ikke Voyage-kode. - **Avhengigheter:** D1; A5 (kontraktmål). **Premiss-sjekk først:** re-les HANDOVER-CONTRACTS for drift siden C3. - **TDD:** Failing tests først: F-001 rev 6-fixture (2.0 → forventet pass m/advarsel om versjon under mål), syntetiske: manglende framing ved 2.2, topics>0∧skipped uten partial, nestet dict, manglende TL;DR, ugyldig phase_signals. - **Filer:** `scripts/validate-brief.mjs`, `tests/validate-brief.test.mjs`, fixtures. - **Verifisering:** `node --test` grønn; `node scripts/validate-brief.mjs akashic…/features/01-sun-position/brief.md` → exit 0; dokumentert i README-seksjon; commit. --- **D3 — `validate-state.mjs`** · **M** — Avh: D1, C2. TDD mot `schemas/app-state.schema.json`; fixture: normalisert Akashic-state. Verifisering: `node scripts/validate-state.mjs akashic…/state.json` → exit 0 etter normalisering (normaliseringen av Akashic-instansen er del av sesjonen, cross-repo). **D4 — Brief-generator (fase 7)** · **L** — Avh: D2. TDD: generator tar 06-features-entry + upstream-utdrag → brief.md+context.md som passerer D2 i strict; fixtures fra Akashic (F-007). Scope-grense: ingen interaktivitet utover det § Fase 7 spec-er; revisjonslogg per A2-beslutning. Verifisering: generert brief → `validate-brief.mjs` exit 0; diff mot håndskrevet F-007 vurdert i review-gate. **D5 — init + snapshot-generator** · **M** — Avh: D1. TDD mot den LÅSTE materialiserings-mekanikken (`domain-pack-spec.md:184-192`); fixture: ios-app@0.2.1 → sammenlign strukturelt med Akashic-snapshotet. Verifisering: generert snapshot byte-diffes mot forventet struktur (H1/metadata/patterns-pekere/H2-per-core-fil/overrides-tabell). **D6a/D6b/D6c — Fase-commands 1–2 / 3+5 / 6+readiness** · **M×3** — Avh: D1, D5. Hver: command/skill-tekst per phase-design-draft (som revidert i A-fasen), med review-gate-steg innebygd (aktiv sjekkliste fra friksjon #16); TDD for evt. skript-deler, prompt-artefakter verifiseres med tørrkjøring på fixture-app. Scope-grense: fase 4 implementeres IKKE som command (trigges-på-bruk-dokumentasjon holder til behovet oppstår — YAGNI). **D7 — annotate-vendoring** · **S** · **[OPERATØR-beslutning]** — Avh: D1. Beslutning per review R-05/Akse 3.1: vendor kopi av annotate.mjs (opphav: voyage@, resync-notat) slik at review-gaten ikke avhenger av Voyage-interne stier. Hvis utvidelse C (annotasjons-eksport til fil) godkjennes: legg til i den vendorede kopien med TDD. Verifisering: `node scripts/annotate.mjs ` → `.html`; gate-dokumentasjonen peker på vendored sti. **D8 (valgfri) — `check-pack.mjs`** · **S** — Kun hvis operatør godkjenner utvidelse B. TDD: components↔disk, verified-alder, versjon↔changelog. Verifisering: kjørt mot begge packs → 0 feil. ### Fase E — Per-app HTML --- **E1 — HTML-spec** · **M** — Avh: C2 (state-schema er datakilden), A1 (drill-down-redefinisjon). Høst Akashic `index.html` (385 l) som prototype; spesifisér: rendering av alle artefakter, fase-progress med kapabilitet-semantikk, attention-liste, drill-down til `voyage_run_dir`-artefakter + annotate-HTML, polling-design (intervall, re-render-guard), theme-bootstrap, WCAG 2.2 AA. Verifisering: spec-dokument med eksplisitt DOM-datakontrakt mot `app-state.schema.json`; operatør-godkjent. **E2 — HTML-implementasjon** · **L** — Avh: E1, D1. TDD der logikk er testbar (state→DOM-transformasjoner som rene funksjoner testet i node); single-file, vendored DS, zero deps. Verifisering: åpne mot Akashic-instansen via `file://` → alle artefakter rendret, attention synlig, polling observert (endre state.json → UI oppdatert <30s); `node --test` grønn. **E3 — HTML-verifisering + Akashic-adopsjon** · **S** · *(cross-repo)* — Kontrast-sjekk begge tema (WCAG 2.2 AA), erstatt/suppler statisk index.html i Akashic. Verifisering: kontrastverdier dokumentert; Akashic-commit. ### Fase F — Eksport og v1.0.0 --- **F1 — App-state-eksport + Voyage-retur-ingest** · **M** — Avh: C2, D3, B8 (observerte retur-artefakter). Implementér eksport-skriving (om eksporten er state.json selv eller derivat avgjøres i C2) + ingest av `progress.json`/`review.md` → `voyage_run_status`/attention (utvidelse D, nå empirisk fundert). TDD. Verifisering: `validate-state.mjs` exit 0 på eksport; papir-test: alignment-brief Funn 2-spørsmålene besvarbare fra eksporten alene. **F2 — v0.4.0-erklæring** · **S** — Avh: alle fem roadmap-bokser reelle (C3: 1–2; E2/E3: 3; B9–B12: 4; C1: 5). Verifisering: roadmap alle bokser krysset m/dato; CHANGELOG-entry; tag `v0.4.0`; push. **F3 — v1.0.0** · **M** — Avh: F1, F2 + at DoD-en (pipeline + HTML + generator + eksport) er verifisert i bruk på Akashic. Versjonssync (plugin.json, README, CHANGELOG), lisensvalg (README:38 «TBD»), tag, push. Verifisering: `git tag` viser v1.0.0; alle versjonsreferanser konsistente (grep); Forgejo viser taggen. ### Vedlikeholds-oppføringer (utenfor sekvensen) **V1 — ios-app-pack reverifisering ved iOS 27-GA (~sept 2026)** · **S** — conventions/gotchas/checklists/pack.json `verified` mot iOS 27 + ny Xcode; bump per D5-reglene i spec-en. --- ## Avhengighetsgraf ```mermaid graph TD A1[A1 dok-resync] --> A2[A2 lengde+revlogg] A1 --> A5[A5 fase7 2.2-design] A2 --> A5 A4[A4 friksjon 16-18] --> A5 A3[A3 pack 0.2.1 + resync] --> B1 A5 --> B1[B1 F-001 round-trip ⚙] A6[A6 Forgejo ⚙] B1 --> B3[B3 F-007+F-002] B2[B2 AQ-003 ⚙] --> B3 B3 --> B4[B4 F-003..005] --> B5[B5 rest+F-T] A1 --> B6[B6 rapid×plugin-pack] B7[B7 Xcode+portal ⚙] --> B8 B1 --> B8[B8 F-001 execute+review ⚙] B8 --> B9[B9–B12 sykluser til ≥5 shipped ⚙] --> B13[B13 pre-submission ⚙] A4 --> C1 B1 --> C1[C1 friksjon+pre-brief] B8 --> C1 B8 --> C2[C2 state-schema] C1 --> C3[C3 kontrakt-låsing] C2 --> C3 C1 --> D1[D1 plugin-skjelett] C3 --> D1 D1 --> D2[D2 validate-brief] --> D4[D4 brief-generator] C2 --> D3[D3 validate-state] D1 --> D3 D1 --> D5[D5 init+snapshot] --> D6[D6a-c fase-commands] D1 --> D7[D7 annotate-vendoring ⚙] C2 --> E1[E1 HTML-spec] --> E2[E2 HTML-impl] --> E3[E3 verif+adopsjon] D1 --> E2 C2 --> F1[F1 eksport+ingest] D3 --> F1 B8 --> F1 C3 --> F2[F2 v0.4.0] E3 --> F2 B9 --> F2 C1 --> F2 F1 --> F3[F3 v1.0.0] F2 --> F3 ``` ⚙ = inneholder manuelt operatør-steg. ## Anbefalt sesjonssekvens **Sprint 1 (opprydding, alt Opus-eksekverbart):** A1 → A2 → A3 → A4 → A5. Parallelt: **A6 [operatør]** når som helst. (A7 strøket 2026-08-11 — app-factory dekket den selv i H0-1.) Begrunnelse: ingenting annet bør bygges på premisser reviewen har felt; A-fasen er billig og fjerner all kjent råte. **Sprint 2 (bevis før volum):** B1 (med operatørens Voyage-kjøring) → B2 → B3. Begrunnelse: én reell round-trip *før* 11 briefer skrives — hvis kjøringen feller deler av A5-designet, arver ikke briefene feilen. B6 kan flettes inn hvor som helst her (uavhengig spor, gir n=2 + default-sti-empiri billig). **B7 [operatør]** startes parallelt med B3 — den gater bare B8, ikke brief-skrivingen. **Sprint 3 (to parallelle spor):** *Brief-sporet* B4 → B5 (Opus + operatør-gates) parallelt med *bygge-sporet* B8 → B9… (operatør-tungt). Sporene serialiseres kun der en Voyage-review tvinger backtrack inn i backloggen. **Sprint 4 (konsolidering):** C1 → C2 → C3 så snart B8 + ~3 konsumerte briefer foreligger — venter ikke på ≥5 shipped (shipping-sporet fortsetter parallelt). **Sprint 5+ (bygging):** D1 → {D2, D3, D5} → D4 → D6a-c → D7/D8; deretter E1 → E2 → E3; F1. F2 erklæres når shipping-sporet når ≥5; F3 til slutt. Begrunnelse: D/E bygger mot kontrakter som C-fasen har låst mot reelle data; HTML (E) sist av byggefasene fordi den konsumerer state-skjemaet og drill-down-artefakter som først da finnes. ## Kritisk sti (manuelle operatør-blokkere markert) ``` A1 → A5 → B1[⚙ operatør kjører /trekresearch+/trekplan] → B8[⚙ B7: Xcode-komponentinstall + Apple-portal (8 steg) MÅ være ferdig] → C1/C2 → C3 → D1 → D2 → D4 → E1 → E2 → F1 → F2[⚙ ≥5 shipped via B9–B12-sykluser] → F3 ``` De harde operatør-blokkerne, i rekkefølge: (1) **Voyage-kjøringene** (B1, B8, B9–B12) — per invariant kan ingen sesjon kjøre dem; (2) **Xcode/portal** (B7) — eneste blokker for execute-leddet, IKKE for round-trip; (3) **Forgejo-repo** (A6) — gater ingen sesjon, men backup-risiko løper til den er gjort; (4) **beslutningene** A2 (revisjonslogg-plassering), A5 (2.2-mål), AQ-003 (B2), D7 (vendoring); (5) **Isha-forespørsel + App Store-submission** (B13) — gater kun submission-milepælen. Lengste ledetid er B9–B12 (≥5 features × full Voyage-syklus + operatør-review); den bør startes så tidlig som B8 tillater og løpe parallelt med C/D/E — det er derfor F2, ikke D/E, som til slutt venter på den.