Akashic-instansen utforte og committet sin halvdel av A3 (commit bd38b23 + d39b7b8). Verifisert direkte mot deres repo: pin-inventar matcher eksakt det de rapporterte (6x0.1.0 historisk, 1x0.2.0 bootstrap-markor, 6x0.2.2 live, sum 13). A3 lukket pa begge sider. To feil i vart eget arbeid denne A3-runden, funnet og bekreftet av Akashic: (1) det faktiske hoppet var 0.1.0 -> 0.2.2, ikke 0.2.1 -> 0.2.2 -- live-pinsene var aldri oppdatert forbi forste materialisering. (2) snapshotets pack-kilde-felt pekte pa en slettet plugin-marketplace-sti. Begge dokumentert i masterplan.md § A3 med korrekt framstilling. Nytt friksjonsfunn logget som #19: snapshot-overrides kan drive fra pack-overrides.md uavhengig av pack-versjon -- en ren versjonssammen- ligning fanger det ikke, siden override-dokumentet ikke er del av pakken. To spec-revisjonsretninger skissert, ingen valgt (kandidat D-fase eller B2). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01XpFPJDg8XKNxSHxH9uxGZr
375 lines
39 KiB
Markdown
375 lines
39 KiB
Markdown
# 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)* · **✅ LUKKET 2026-08-11 (begge halvdeler)**
|
||
|
||
**Akashic-halvdelen committet:** `bd38b23` (+ `d39b7b8`, STATE.md-oppsett), 2026-08-11T19:19. Verifisert herfra mot deres repo — sluttilstand matcher eksakt det de rapporterte: `ios-app@0.1.0` → 6 treff (historiske, frosne fase-briefer), `ios-app@0.2.0` → 1 treff (`state.json:152`, bootstrap-markør — korrekt, ikke et avvik), `ios-app@0.2.2` → 6 treff (alle live). Sum 13, ingen pin tapt eller lagt til.
|
||
|
||
**To ting Akashic fant som app-creator-siden bommet på (verifisert, ikke bestridt):**
|
||
1. **Det faktiske hoppet var 0.1.0 → 0.2.2, ikke 0.2.1 → 0.2.2.** Alle live-pins sto fortsatt på `0.1.0` — de har ALDRI blitt oppdatert, ikke engang til 0.1.0→0.2.0 eller →0.2.1. Fremgangsmåten under (skrevet før dette var kjent) beskriver feilaktig et enkelt-patch-hopp; reelt var det snapshotets FØRSTE re-materialisering i repoets levetid, og steg 4 (overrides-kontroll) dermed en større jobb enn ordlyden antydet — snapshotet lå to minor- og to patch-bump bak.
|
||
2. **Pack-kilde-stien i snapshotet var død** (pekte på en slettet plugin-marketplace-sti). Rettet til `/Users/ktg/repos/app-creator/domain-packs/ios-app/` i re-materialiseringen. Verdt å sjekke om `domain-pack-spec.md:184-192`s snapshot-mekanikk bare kopierer materialiseringstidspunktets sti uten normalisering — samme dødlenke vil da oppstå igjen ved neste flytting. **Ikke undersøkt videre her — flagg for D5/D-fasen.**
|
||
|
||
**Ett bevisst avvik fra vår klassifisering, med god begrunnelse:** Vi merket `index.html:367` som historisk prosa-fotnote (la stå). Akashic oppdaterte den likevel — teksten («pack nå v0.2.0», «4 overrides, 2 åpne») var en present-tense påstand om levende tilstand i et operatør-dashboard, ikke en frossen genererings-markør, og var dessuten alt utdatert på det andre tallet. Reklassifiseringen holder; `01-app-brief.md:137` (som VI ba dem la stå) ble stående — den er inne i en frossen fase-brief med eksplisitt dato, altså genuint et tidspunkt-utsagn. Presedens for fremtidige pin-klassifiseringer: «present-tense dashboard-påstand» ≠ «frossen artefakt-markør», selv når begge er prosa.
|
||
|
||
**Substansielt friksjonsfunn fra deres steg 3 (logget `prototype-run/friksjon.md` #19):** Override-kontrollen fant at snapshotets override-markører (OVERRIDE-1, OVERRIDE-2) hadde drevet fra `pack-overrides.md` **uavhengig av pack-versjon** — begge sto som ÅPEN i snapshotet mens de var LUKKET i override-dokumentet siden 2026-05-13. En versjonssammenligning (pack X → pack Y) fanger ikke dette, fordi override-dokumentet ikke er en del av pakken. Steg 4s ordlyd («kontroller at pack-overrides fortsatt gjelder») er ikke presis nok — det må også kontrolleres at snapshotet *gjengir* overrides-status korrekt, ikke bare at reglene fortsatt *anvender seg*. Se friksjonsloggen for full drøfting; mulig spec-konsekvens for `domain-pack-spec.md` D5/materialiserings-mekanikken, ikke besluttet.
|
||
|
||
- **Mål:** Én sann pack-versjon (0.2.2) 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).
|
||
- **Pin-inventar (re-verifisert 2026-08-11, `grep -rn "ios-app@0\.[12]\.[0-9]" akashic-intelligence/` — full liste, ikke antatt):** 13 treff i 10 filer, som deler seg i to klasser per `domain-pack-spec.md:127` («Slik vet man alltid hvilken pack-versjon som genererte et gitt prosjekt — selv om pakken senere endrer seg»):
|
||
- **LIVE pins — skal oppdateres til `ios-app@0.2.2`** (5 av grep-treffene, pluss snapshotet som ikke matcher grep-mønsteret): `state.json:4` (`domain_pack`, app-nivå aktiv pekepinn), `app.md:6` (`domain_packs`), `features/01-sun-position/brief.md:21` (**aktiv** F-001-brief, revision 6, ikke kjørt gjennom Voyage ennå — i motsetning til de avsluttede fase-briefene under), `00-context/pack-overrides.md:3` (prosa-referanse — overrides skal fortsatt gjelde mot nytt snapshot, jf. steg 4), `index.html:162` (dashboard-visningstekst) — **6 filer totalt**, siste er `00-context/domain-pack-ios-app.md` (selve snapshotet; bruker eget `**Versjon:**`-felt, ikke `ios-app@`-strengen, derfor utenfor grep-treffet — aldri re-materialisert forbi 0.1.0).
|
||
- **Historiske pins — IKKE rør, permanent genererings-markør per design** (de resterende 8 grep-treffene, i 5 filer utover state.json/index.html over): `01-app-brief.md:6`, `01-app-brief.md:137`, `03-architecture-brief.md:6`, `05-constraints-brief.md:6`, `06-features-brief.md:6`, `02-research-briefs/01-sadhguru-copyright.md:6` (frontmatter `domain_pack`-felt i avsluttede fase-briefer — `phase_status: complete`/`revised` — registrerer hvilken pack-versjon som genererte DEN artefakten, ikke en aktiv pekepinn), `state.json:152` (`domain_pack_version_at_bootstrap` — eksplisitt et engangs-tidsstempel for Xcode-bootstrap/S15, ikke ment å følge senere pack-bumps), `index.html:367` (prosa-fotnote, allerede selv formulert historisk — «pack nå v0.2.0»).
|
||
- Tidligere versjoner av denne planen instruerte kun 3 filer (state.json, én brief-frontmatter, app.md) og hadde en verifiseringslinje (`grep "ios-app@0.1.0" → 0 treff`) som var **feil** — den ville aldri kunne bli sann, siden 7 av de 8 historiske pinene legitimt forblir `0.1.0` for alltid (den åttende, `state.json:152`, forblir `0.2.0` — begge korrekte, ulike bootstrap-tidspunkt). Rettet her; korreksjon sendt til Akashic 2026-08-11 (coord-melding, deres innboks var fortsatt uhåndtert).
|
||
- **Filer:** `domain-packs/ios-app/pack.json` (app-creator); de 6 LIVE-filene over (akashic-intelligence). De historiske pinene røres ikke.
|
||
- **Fremgangsmåte:** (1) pack.json `version` → 0.2.1 (commit `4f152c7`, MCP-gotcha-changelog) → **0.2.2** (commit `a0854a6`, 2026-08-11: verified.against-drift-fix, egen liten oppføring — se § verified.against nedenfor). Begge patch (D5). (2) Re-materialiser Akashic-snapshotet (`00-context/domain-pack-ios-app.md`) fra **0.2.2** per den LÅSTE mekanikken (`domain-pack-spec.md:184-192`), inkl. korrekt kilde-sti — dette er snapshotets FØRSTE re-materialisering noensinne (står fortsatt på 0.1.0 fra 2026-05-13). (3) Oppdater kun de 6 LIVE-pinene (se over) til `ios-app@0.2.2`. (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.2; `head -6 akashic…/00-context/domain-pack-ios-app.md` viser 0.2.2 + ny dato; alle 6 LIVE-filene viser `ios-app@0.2.2`; de 8 historiske pinene (5 rene historie-filer + `state.json:152` + `index.html:367`) er **uendret** (fortsatt `0.1.0`/`0.2.0` — dette er korrekt, ikke et avvik); 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 <sti>` 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 <forgejo-url>` + `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 <dato> — 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@<versjon>, 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 <fixture.md>` → `<fixture>.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.
|