docs: promoter kryssmodell-review + masterplan til aktiv plan

- review-2026-07.md: uavhengig Fable 5-review (19 funn, 1 BLOCKER/8 MAJOR,
  M1-M11 avgjort, verifiseringslogg) committet som levert
- masterplan.md: promotert fra replan-proposed.md (status FORSLAG -> AKTIV);
  sesjonsko A-F til v1.0.0, B1 (reell round-trip) foran videre brief-produksjon
- roadmap.md: markert erstattet av masterplanen; revideres i sesjon A1
- STATE.md (local-only, gitignored): overskrevet fra STATE-proposed.md;
  NESTE = sesjon A1 (dok-resync). STATE-proposed.md slettet etter promotering

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GD2GDkdMZsNWy2hoiGjeLR
This commit is contained in:
Kjell Tore Guttormsen 2026-07-10 21:47:11 +02:00
commit a2c0844b58
3 changed files with 667 additions and 0 deletions

364
docs/masterplan.md Normal file
View file

@ -0,0 +1,364 @@
# 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 (A7) krever eksplisitt operatør-mandat. **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), **A7** (app-factory-synk), **endrer E1** (drill-down redefineres før HTML-spec) |
| 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 B3B5** (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 A7, C3** |
| 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 B3B5** (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 S14S15-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 (forslag)** · **S** · **[OPERATØR-MANDAT kreves]** · *(cross-repo: app-factory)*
- **Mål:** app-factory-briefene sluttet å referere slettede Voyage-flater; v0.4.0-definisjonene identiske.
- **Scope-grense:** Kun `docs/alignment-brief.md` + `docs/architecture-brief.md` i app-factory; ingen design-endringer utover synk.
- **Avhengigheter:** A1 (så formuleringene gjenbrukes konsistent). Eksplisitt operatør-mandat for å skrive i app-factory-repoet.
- **Fremgangsmåte:** Oppdater Tier 1-beskrivelsene (architecture-brief:26,66-68,125,133) fra «Plugin Playground (v4.3+)»/«Handover 8» til annotate-HTML-virkeligheten; noter i alignment-brief Funn 1 at Voyage v5.5.0 leverte PUBLIC CONTRACT (R-19); synk Funn 4-listen mot roadmapens 5 punkter.
- **Verifisering:** `grep -rn "Handover 8\|v4\.3" app-factory/docs/` → kun historisk-merkede treff; v0.4.0-listene ordrett like; commit i app-factory.
### 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-T01T03** · **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 B1B5 — 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 B1B5). 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.
---
**B9B12 — Featurevis Voyage-syklus til ≥5 shipped** · **L (serie; ~1 kø-oppføring per 12 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 B3B5 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:** B9B12 (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.
- **Verifisering:** roadmap-bokser 12 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 12 / 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: 12; E2/E3: 3; B9B12: 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 ⚙]
A1 --> A7[A7 app-factory-synk ⚙]
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[B9B12 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
A7 --> 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 når mandat gis. 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 B9B12-sykluser] → F3
```
De harde operatør-blokkerne, i rekkefølge: (1) **Voyage-kjøringene** (B1, B8, B9B12) — 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 B9B12 (≥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.

301
docs/review-2026-07.md Normal file
View file

@ -0,0 +1,301 @@
# Uavhengig kryssmodell-review av app-creator
**Reviewer:** Fable 5 (xhigh) · **Dato:** 2026-07-10 · **Oppdrag:** `fable-review-prompt.local.md`
**Metode:** Alt arbeid under er skrevet av Opus 4.8; hver påstand i repoet og i oppdragets orientering er behandlet som premiss, ikke fakta, og verifisert mot disk, søsterrepoer og web. Hvert funn har `fil:linje`- eller kommando-belegg og et konkret feilscenario. Verifiseringslogg nederst.
**Skrivedisiplin:** Dette dokumentet, `replan-proposed.md` og `STATE-proposed.md` er de eneste filene skrevet. Ingen live-filer er endret.
---
## Sammendrag
Repoets kjerneidé — fase-pipeline fra app-konsept til Voyage-briefer, filhandover, human-in-the-loop — står seg. Prototypen har levert reell, brukbar empiri. Men **design-dokumentasjonen har råtnet mot to bevegelige mål den selv utpekte som kritiske**: Voyage (som har flyttet seg fem minor-versjoner og slettet flaten app-creator bygger drill-down på) og sin egen prototype (hvis viktigste lærdommer fra S14S15 aldri nådde friksjonsloggen). I tillegg er den mest siterte suksesspåstanden — «Voyage strict-mode round-trip-test PASS» — en mental simulering, aldri en kjøring. Ingen Voyage-kjøring har startet; `voyage_running: 0`.
De tre alvorligste realitetene:
1. **Drill-down-leveransen er udefinert.** Voyage v5.0.0 (2026-05-12) slettet `playground/`, Handover 8 og `/trekrevise`. Fire app-creator-filer og begge app-factory-briefene bygger fortsatt på dem. (R-01)
2. **Fase 7-templaten er pinnet til en kontraktversjon to skjemaversjoner bak**, midt i kontraktens dokumenterte «producer-elective»-hull — og handoverens operasjonelle inngang (`How to continue` med `--project`) peker på en katalog som ikke finnes. Voyage ville likevel *ikke* avvist F-001-briefen (M2 delvis felt). (R-02, R-03)
3. **Reviewens eget instrument er upålitelig:** friksjonsloggen stopper 26 kalenderdager og 8 sesjoner før virkeligheten, og versjonsdisiplinen for domain-packs brøt ved første reelle test (tre ulike pack-versjoner i omløp: 0.1.0 / 0.2.0 / «0.2.1»). (R-08, R-12)
Ingen av disse er dødelige. Alle er reparerbare med dokumentarbeid + én tidlig, reell round-trip. Re-planen (`replan-proposed.md`) starter der.
---
## Mistanke-oppgjør (M1M11)
Orienteringens elleve mistanker, felt eller bekreftet uavhengig:
| # | Verdikt | Belegg | Funn |
|---|---|---|---|
| M1 | **Bekreftet — og verre** | Voyage `CHANGELOG.md:499-505` («**Breaking.** `/trekrevise` is removed. The `playground/` directory, Handover 8 … gone», v5.0.0, 2026-05-12); `ls playground/` → finnes ikke. Utover M1: `phase-design-draft.md:882,938` foreskriver Handover 8 + `/trekrevise` som gjeldende Voyage-mønster. | R-01 |
| M2 | **Delvis felt / nyansert** | `framing` + `## TL;DR` er påkrevd **kun ved `brief_version ≥ 2.2`** (`HANDOVER-CONTRACTS.md:76,79,103`); 2.0-briefer er eksplisitt gyldige (N-1-vindu, `:46,:105`). Papir-round-trip av F-001 rev 6: **PASS** på 5.9.1. Voyage ville ikke avvist. Men templaten er to versjoner bak, i kontraktens dokumenterte forsvars-hull. | R-02 |
| M3 | **Bekreftet — og eskalert** | Flat grense står (`phase-design-draft.md:21,62,211,581`); målt 1830→4523 ord. Revisjonslogg-i-artefakt gjør fase 7-filer ubegrensede: F-001 `brief.md` er nå **4523 ord** (`wc -w`), 9× grensen. | R-07 |
| M4 | **Bekreftet** | `friksjon.md` siste entry #15/S13 (2026-05-14, `friksjon.md:449-499`); Akashic `state.json:88-94` viser S14bg + S15 med design-relevante lærdommer som aldri ble logget. | R-08 |
| M5 | **Bekreftet** (orienteringens linjenumre delvis feil) | «iOS 18/iOS 19» på `phase-design-draft.md:315,386,524,625` (grep); `domain-pack-spec.md:158` korrigerer eksplisitt. Eksternt verifisert: iOS 26 gjeldende, iOS 1925 finnes ikke, iOS 27 GA ~sept 2026. | R-13 |
| M6 | **Bekreftet** | Fase 2 gis pack-input på `phase-design-draft.md:423`; utelatt i `:66`, tabellen `:70-77`, `domain-pack-spec.md:9,99-106`, `ios-app/pack.json:7` (`phases: [1,3,4,5,6,7]`). | R-14 |
| M7 | **Bekreftet — og verre** | Frontmatter-enum `:204` (4 verdier, mangler `pending-review`); state.json-spec `:934` (6 strenger + 2 objektformer); Akashic bruker i praksis en **tredje** form ingen spec dekker (`state.json:13-14`). | R-06 |
| M8 | **Bekreftet** | `annotate.mjs:933-934` skriver kun `<input>.html`; annotasjoner i localStorage (5 treff). `find`-søk: null `.review.md` i Akashic. Sidecar refereres normativt i `phase-design-draft.md:58,903,926-931,1021,1042-1048`. | R-05 |
| M9 | **Bekreftet på papir — de facto omgått** | Fase 5-input `:596` + 3 core-checklists + `gotchas.md` = 4 filer > max-3 (`:68`, spec `:108`). Akashic leste i praksis snapshotet (alle 5 core-filer i ett dokument) — regelen er både brutt og meningsløs slik den står. | R-15 |
| M10 | **Bekreftet** | `CHANGELOG.md:8` refererer «ROADMAP, TODO»; `TODO.md` finnes ikke (`find`), roadmap heter `docs/roadmap.md`. | R-17 |
| M11 | **Bekreftet** | `git remote -v` → tom. 25 commits, aldri pushet. | R-18 |
Orienteringens småfeil, for ordens skyld: repoet har **42** tracked filer (`git ls-files | wc -l`), ikke 41; `ios-app`-packen har **18** filer, ikke 16; pack-versjonen på disk er **0.2.0**, ikke 0.2.1 (se R-12).
---
## Akse 1 — Premiss- og kontrakt-integritet mot ekstern virkelighet
### R-01 [BLOCKER] Den arkitektoniske forfaren er slettet; drill-down-leveransen er udefinert; døde kontraktsreferanser i normativ tekst
**Belegg:** Voyage v5.0.0 (2026-05-12) fjernet `playground/`, Handover 8, `/trekrevise` og anchor-/revisjonsbibliotekene (`voyage/CHANGELOG.md:499-505`). Erstatningen er `scripts/annotate.mjs` (v5.0.2, `CHANGELOG.md:443-449`) — per-artefakt annoterings-HTML, ikke en playground-flate. Gjeldende Voyage: **5.9.1** (`plugin.json:4`).
Rammet tekst som fortsatt behandler det slettede som eksisterende:
- `docs/roadmap.md:25` (v0.4.0-boks: «drill-down til Voyage Plugin Playground») og `:38`
- `CLAUDE.md:24,30,56,58,84` («klikk en feature → åpne v4.3-flaten»), `README.md:19`
- `phase-design-draft.md:882` (foreskriver «Voyages anchor-format (Handover 8)» med `ANN-NNNN` + `annotation_digest` for fase 7-briefer) og `:938``scripts/annotate.mjs` + `/trekrevise`-flyten, Handover 8»)
- Utenfor skrivemandatet, men rammet: `app-factory/docs/architecture-brief.md:26,66-68,75,125,133` («Tier 1 (Voyage v4.3): under utvikling per Voyages egen roadmap» — flaten er tvert imot slettet) og `alignment-brief.md:112`
**Feilscenario:** En Opus-sesjon som implementerer per-app HTML per roadmap-boksen leter etter en playground-flate å lenke til, finner ingen, og enten (a) stopper, eller (b) finner på en kobling (generere Voyages HTML selv, kjøre Voyage) som bryter «aldri eksekvere Voyage»-invarianten. En sesjon som følger `:882` produserer anchor-kommentarer og digests ingen Voyage-versjon lenger konsumerer.
**Foreslått fiks:** (1) Merk «v4.3 Plugin Playground» som *historisk* forfar overalt (mønstrene — single-file, vendored DS, polling, theme — er fortsatt arven; flaten er borte). (2) Redefiner drill-down: klikk en feature → åpne dens `voyage_run_dir`-artefakter og/eller annotate-HTML-filer; ellers vis briefen. (3) Fjern Handover 8-/`trekrevise`-referansene fra normativ tekst. (4) Foreslå (ikke utfør) tilsvarende synk i app-factory-briefene. → Sesjon A1/A7/E1 i re-planen.
### R-02 [MAJOR] Fase 7-templaten er to kontraktversjoner bak og sitter i kontraktens dokumenterte forsvars-hull; verifikasjonspåstanden er stale
**Belegg:** `phase-design-draft.md:780` hevder formatet er «verifisert mot Voyage-kildekode 2026-05-11» og pinner `brief_version: "2.0"` (`:786`). Gjeldende kontrakt er **2.2** (`HANDOVER-CONTRACTS.md:13,63`): v5.1 innførte 2.1 (sequencing-gate: `phase_signals` ELLER `phase_signals_partial` påkrevd ved ≥2.1, `:95`), v5.5 innførte 2.2 (`framing`-enum + `## TL;DR` påkrevd ved ≥2.2, `:76,79,103`). Voyages egen `templates/trekbrief-template.md:3` emitterer 2.2. Kontrakten sier eksplisitt at hullet templaten sitter i er kjent: «any producer can sidestep the entire defense — deliberately or by shipping a legacy template — simply by declaring `brief_version: "2.1"`» (`:105`), og at remedien er «require upstream producers to emit `brief_version: "2.2"`» — formulert med adresse: «downstream producers (e.g. **a Tier-2 per-app producer**) that emit `brief_version: "2.2"` MUST also emit `framing` + `## TL;DR`» (`:103`).
**Papir-round-trip F-001 rev 6 mot 5.9.1-validatoren, felt for felt:** `type: trekbrief` ✓ · `brief_version: "2.0"` ✓ (gyldig under N-1) · `created` ✓ · `task` ✓ · `slug` ✓ · `project_dir` ✓ format · `research_topics: 1` ✓ · `research_status: pending` ✓ · state-machine (topics>0 ∧ skipped ⇒ partial) ikke trigget ✓ · sequencing-gate trigger kun ≥2.1 ✓ · framing-gate trigger kun ≥2.2 ✓ · ukjente frontmatter-nøkler (app-creator-interne felter) tolereres eksplisitt (`:46`) ✓ · ingen nestede dicts ✓ · body `## Intent`/`## Goal`/`## Success Criteria` ✓. **Resultat: PASS, også strict.** M2s «hva ville Voyage avvise?» har svaret: *ingenting* — i dag.
**Feilscenario (to retninger):** (a) Generatoren blir stående på 2.0: hver app-creator-brief omgår hele framing-alignment-forsvaret Voyage bygget i v5.5, og ryker den dagen Voyage fjerner legacy-stier i neste major (`:101`). (b) En sesjon «oppdaterer til gjeldende kontrakt» naivt: bump til 2.1 uten `phase_signals``BRIEF_V51_MISSING_SIGNALS` strict-halt; bump til 2.2 uten `framing`+TL;DR → `BRIEF_MISSING_FRAMING`/`BRIEF_MISSING_SECTION` strict-halt. Begge feiler først ved neste reelle `/trekplan`, med kostnaden hos operatøren.
**Foreslått fiks:** Beslutt 2.2 som mål (anbefalt). Design: `framing`-avledningsregel for fase 7 (brief avledet av operatør-godkjent backlog ⇒ normalt `preserve`; ved revisjon av eksisterende feature ⇒ `refine`), `## TL;DR`-generering (≤5 linjer), `phase_signals`-strategi (settes av generatoren eller `phase_signals_partial: true`), re-datert verifikasjonsnote med kontraktversjon. → Sesjon A5, testet i B1.
### R-03 [MAJOR] Handoverens operasjonelle inngang er brutt: `How to continue` peker på en `project_dir` som ikke finnes
**Belegg:** F-001 `brief.md:306-317` instruerer `/trekresearch --project .claude/projects/2026-05-13-sun-position/ …`, `/trekplan --project …`, `/trekexecute --project …`. Kontraktens project-dir-modus forventer briefen på `.claude/projects/{date}-{slug}/brief.md` (`HANDOVER-CONTRACTS.md:54-55`). Katalogen finnes verken i Akashic-repoet eller `~/.claude/projects/` (`ls` begge → finnes ikke), og ingen mekanikk i `phase-design-draft.md` legger briefen der. Draftens egen operatør-flyt (`:777`) bruker loose-modus (`--brief <sti>`) — men kun for `/trekplan`, og F-001s egne instruksjoner gjør det ikke.
**Feilscenario:** Operatøren limer inn `How to continue` fra den «Voyage-klare» briefen → `BRIEF_NOT_FOUND`-halt på første kommando. Papir-round-tripen (friksjon `#14:402`) fanget ikke dette fordi den validerte skjema, ikke invokasjonssti.
**Foreslått fiks:** Definér handover-mekanikken eksplisitt i § Fase 7: enten (a) loose-modus konsekvent (`--brief features/{NN}-{slug}/brief.md`) også for research, eller (b) et kopieringssteg («operatør kopierer brief.md til {project_dir} før kjøring») som del av handoveren. Verifiseres i den reelle round-tripen. → Sesjon A5 + B1.
### R-04 [MAJOR] «Round-trip-test PASS» er en papirpåstand som siver oppover som fakta; `research.md`-konsum er en utestet antakelse om Voyage-adferd
**Belegg:** Friksjon `#14:402`: «**Voyage strict-mode round-trip-test PASS:** *Mental simulering* av `/trekplan --brief …`». Akashic `state.json:85` (S12-loggen): «Voyage strict-mode round-trip-test PASS» — uten simulerings-forbeholdet. `voyage_running: 0, shipped: 0` (`state.json:61-67`): ingen Voyage-kommando har noensinne konsumert en app-creator-brief. Roadmap-forutsetning #3 (`roadmap.md:13`, «round-trip-testet på reell brief») er uinnfridd. I tillegg antar F-001 `brief.md:131` at «Voyage konsumerer den fila [`research.md`] som primær-input til `/trekresearch`» — ingen Handover-kontrakt omtaler en produsent-levert `research.md` (Handover 2 er *Voyages egne* research-filer i `{project_dir}`, `HANDOVER-CONTRACTS.md:131-133`), og fila ligger i `features/01-sun-position/`, utenfor `project_dir`.
**Feilscenario:** v0.4.0-kontraktlåsing skjer på papir-PASS; første reelle kjøring avslører sti-/konsum-gap (R-03, research.md-antakelsen), og «låst» format må brytes opp igjen — nøyaktig det låsingen skulle forhindre.
**Foreslått fiks:** Reell round-trip på F-001 (`/trekresearch` for AQ-001 + `/trekplan`) som egen, tidlig sesjon — den krever **ingen** signert build og er uavhengig av Apple-portalen. Observer hva Voyage faktisk gjør med `research.md`. → Sesjon B1, foran all videre brief-produksjon.
### R-05 [MAJOR] Review-gaten hviler på en ukontraktfestet Voyage-intern fil — og den dokumenterte kommando-stien er allerede død
**Belegg:** Review-gaten er «adoptert 1:1» fra `scripts/annotate.mjs` (`phase-design-draft.md:936-958`; operatør-direktiv i `STATE.md:16-20`). annotate.mjs er *ikke* del av noen Handover-kontrakt — Handover 1 er «the *only* public integration boundary» (`HANDOVER-CONTRACTS.md:46`). Voyage har dokumentert vilje til å slette interne flater uten varsel: playground (v5.0.0), `render-artifact.mjs` (v5.0.1 — slettet dagen etter innføring), `/playground`-invokasjonen (v5.0.2 — samme). Første konsekvens har allerede inntruffet: den dokumenterte stien `~/.claude/plugins/marketplaces/ktg-plugin-marketplace/plugins/voyage/scripts/annotate.mjs` (`STATE.md:20`, `phase-design-draft.md:950`, tilsv. `:865` for kontrakts-stien) **finnes ikke** (`test -f` → FINNES IKKE); den installerte pluginen ligger i `~/.claude/plugins/cache/ktg-plugin-marketplace/voyage/5.9.1/`. Akashic-snapshotet oppgir en tredje rot (`00-context/domain-pack-ios-app.md:6`: `…/marketplaces/ktg-privat/plugins/app-creator/…`).
**Feilscenario:** Neste sesjon følger STATE.md-ens *obligatoriske* review-gate-kommando → `ENOENT` → improvisasjon under tidspress. På lengre sikt: Voyage v6 endrer annotate.mjs → hele gate-mekanikken (og dermed operatør-direktivet) dør uten varsel.
**Foreslått fiks:** (1) Kortsiktig: kanonisk sti-referanse via cache (`…/cache/ktg-plugin-marketplace/voyage/<nyeste>/scripts/annotate.mjs`), dokumentert ett sted. (2) Strukturelt: vendor en kopi av annotate.mjs inn i app-creator (self-contained `.mjs`, zero deps — forenlig med alle invarianter; «aldri modifisere Voyage» berøres ikke av å kopiere fra den), med notat om opphavsversjon og resync-rutine. Se også Akse 3, angrep 1. → Sesjon A1 (sti), D7 (vendoring — operatør-beslutning).
### R-13 [MINOR] Ekstern versjonering: pack-ene holder; utkastet og HTML-invarianten spriker
**Belegg (web-verifisert 2026-07-10 av hovedsesjon + kryssbekreftet av uavhengig research-agent; kilder i verifiseringsloggen):** iOS 26 er gjeldende (iOS 1925 finnes ikke; siste stabile punktversjon 26.5.2, 2026-06-29 — 26.6 er kun beta). iOS 27 annonsert WWDC juni 2026; offisiell utgivelse «this fall» — september-dato er presse-estimat, ikke Apple-bekreftet. Pack-ens drift-prognose i `domain-pack-spec.md:198` traff. Xcode: siste stabile 26.6 (25. juni 2026); STATE.md-ens «Xcode 26.5» var plausibel i mai, nå datert. App Store-byggekravet i `ios-app/pack.json:10` («build-krav siden 2026-04-28» — Xcode 26+/iOS 26 SDK) er uavhengig bekreftet mot Apple Developer Upcoming Requirements. MASVS 2.1.0 (jan 2024) fortsatt gjeldende. WCAG 2.2 gjeldende Rec (nå også ISO/IEC 40500:2025); WCAG 3.0 er Working Draft, Rec tidligst ~2029. `ios-app/pack.json:8-11` er altså korrekt per sin `verified`-dato. Sprikene: «iOS 18/iOS 19» i `phase-design-draft.md:315,386,524,625` (M5) og «WCAG **2.1** AA-kontrast» som HTML-invariant (`CLAUDE.md:105`, `app-factory/docs/architecture-brief.md:103`) mot WCAG **2.2** AA i fase 5 og pack-ene.
**Feilscenario:** Neste app som bruker fase 1-templaten arver «{iOS 18 / iOS 19}»-eksemplet (`:386`) — samme feil friksjon #9 dokumenterte at kostet en revisjonsrunde. HTML-en bygges mot 2.1-kriterier mens constraints-laget krever 2.2.
**Foreslått fiks:** Rett template-eksemplene til domene-nøytrale plassholdere («{min-versjon — verifiser mot domain-pack conventions}»); avklar WCAG-nivå for HTML-flaten (anbefalt: 2.2 AA, konsistent med resten). Planlegg pack-reverifisering ved iOS 27-GA (~sept 2026). → Sesjon A1; kø-oppføring for pack-refresh.
### R-16 [MINOR] Runtime-asymmetrien er dok-brutt — bevisst, og med lav kostnad; app-creators formulering er nå usann
**Belegg:** `CLAUDE.md:74`: «Voyage vet ikke om app-creator finnes, og skal ikke vite det.» Voyage `HANDOVER-CONTRACTS.md:48` navngir «**Tier 2 `app-creator`**» og «Tier 3 `app-factory`» i en «Trinity producer context (informational)»-blokk — som samtidig presiserer det som faktisk bærer verdien: «No producer is privileged … Voyage stays unaware of Tier 2/3 — this Handover is the only coupling.»
**Vurdering:** Bruddet er reelt på kunnskaps-/dok-nivå, kosmetisk på arkitektur-nivå. Skjema-asymmetrien (ingen privilegert produsent, ingen runtime-kobling) er intakt og er den som gjør lagene uavhengig utviklbare. Å kreve at Voyage «avlærer» app-creator ville vært teater.
**Feilscenario:** En fremtidig sesjon håndhever CLAUDE.md-formuleringen bokstavelig og «retter» Voyage-dokumentasjonen (bryter «aldri modifisere Voyage»), eller avviser nyttige design-valg med henvisning til en invariant som allerede er redefinert i praksis.
**Foreslått fiks:** Omformuler invarianten i `CLAUDE.md` til det den faktisk beskytter: «Ingen runtime-kobling; briefen er en umerket, velformet Voyage-brief; Handover 1 er eneste koblingspunkt; ingen produsent er privilegert.» → Sesjon A1.
### R-19 [SUGGESTION] Alignment-briefens Funn 1 er innfridd av Voyage — sterkere enn skissert — uten at noen har notert det
**Belegg:** `app-factory/docs/alignment-brief.md:64-83` etterlyser en «Stability promise»/STABILITY.md. Voyage v5.5.0 leverte mer: Handover 1 som **PUBLIC CONTRACT** med breaking-change-protokoll og N-1-vindu (`HANDOVER-CONTRACTS.md:44-46,20-26`). Positiv drift — men udokumentert på app-creator/app-factory-siden, og v0.4.0-definisjonen har samtidig driftet (alignment-brief Funn 4 lister 4 punkter, `roadmap.md:23-27` lister 5 — «Per-app HTML klar» mangler i alignment-briefen, i strid med Funn 4s egen synk-regel `alignment-brief.md:125`).
**Foreslått fiks:** Synk-notat i A7-sesjonen (cross-repo, krever operatør-mandat).
---
## Akse 2 — Design-koherens
### R-06 [MAJOR] `phase_status`-vokabularet finnes i tre innbyrdes uforenlige varianter — og virkelighetens variant er udokumentert
**Belegg:** (a) Frontmatter-spec: `in-progress | complete | revised | skipped` (`phase-design-draft.md:204`) — **mangler `pending-review`**, tilstanden hele review-gaten hviler på (`:58`). (b) state.json-spec: `complete | in-progress | not-started | revised | pending-review | revision-in-progress` + to objektformer (`:934`). (c) Akashic i praksis: `"revised"`-objekt med `revision/revised_at/driver/open_questions` (`state.json:13`) og `"complete"`-objekt med `completed/total/completed_at/completed_note` (`state.json:14`) — ingen av dem i noen spec. Attention-typene har samme sprik: spec-en nevner `review-pending`/`decision`/`review` (`:925-929`); virkeligheten bruker `decision-pending`, `action-pending`, `environment-blocker`, `revision-pending` (`state.json:97-139`). `phase`-feltet i attention er fritekst («xcode-bootstrap», «pre-submission») uten definisjon. Toppnivå-feltene `review_gate_history` (`state.json:16-50`) og `implementation` (`:142-158`) finnes ikke i spec-en. state.json har **intet** schema-/versjonsfelt.
**Feilscenario 1 (gjentakelse av friksjon #15):** En sesjon som følger frontmatter-spec-en kan bare skrive `complete` når den mener `pending-review` — nøyaktig forvekslingen som utløste operatør-stoppen i S13. **Feilscenario 2 (Tier 3):** En app-factory-parser bygget mot `:890-932` knekker eller feiltolker på første reelle instans; spesifikt leser den `phase_status."7": "complete"` som «fase 7 ferdig» mens `feature_summary.brief_pending: 11` (`state.json:63`) sier 11 av 12 briefer gjenstår.
**Foreslått fiks:** Én autoritativ enum-tabell + JSON Schema for state.json (med `"schema"`-felt); redesign av fase 7-status til per-feature-semantikk (fase 7 er kontinuerlig, ikke skalar); normaliser Akashic-instansen mot skjemaet. → Sesjoner A1 (enum-samling), C2 (schema), D3 (validator).
### R-07 [MAJOR] Lengdegrense-regimet er empirisk motbevist åtte ganger, tabell-fiksen er aldri applisert — og revisjonslogg-konvensjonen har gjort kontraktsfila ubegrenset
**Belegg:** Flat ≤500-ordsgrense: `phase-design-draft.md:21,62,211,581`. Målt (wc -w, 2026-07-10): app-brief 1855, research 1317, arkitektur 1827, constraints 3535, features 4435 (rev 1), F-001 brief.md **4523** (rev 6), context.md 641, research.md **5611** (rev 6). Friksjon #10/#12/#13/#14 foreslo en differensiert per-artefakt-tabell i fire iterasjoner (`friksjon.md:205-213,285-295,340-351,404-410`) — aldri skrevet inn i utkastet. Ny driver ingen friksjonsentry fanger: `## Revisjons-logg`-seksjonen skrives *inn i* `brief.md` (`:990-1000`), så seks S14-runder la ~3800 ord norsk beslutningshistorikk **inn i selve kontraktsfila som overleveres Voyage**.
**Feilscenario:** (a) En brief-forfatter-sesjon som lyder spec-en strammer bort substans (Success Criteria er det som ryker — det Voyage faktisk konsumerer) eller drukner i review-flagg. (b) Voyages planner leser 4523 ord der ~740 er kontrakt og resten er audit-trail; intern historikk («operatør valgte Alt 5», forkastede alternativer 14) lekker inn i planleggingen og kan feilvekte den.
**Foreslått fiks:** (1) Applisér #14-tabellen i § Hard lengde-grense. (2) Beslutt Revisjons-logg-plassering — tre alternativer: (a) egen fil `features/{NN}/revisions.md`, (b) flytt til `context.md`, (c) strip ved handover (krever kopieringssteg, jf. R-03). Anbefaling: (a) — audit-trail er app-creator-intern state, ikke kontrakt. → Sesjon A2 (operatør-valg + applisering).
### R-08 [MAJOR] Friksjonsloggen — metodens primærinstrument — ligger 8 sesjoner bak, og de tapte lærdommene er de viktigste
**Belegg:** `friksjon.md` slutter med #15/S13 (2026-05-14). Akashic `state.json:87-94` dokumenterer S14S14g + S15 med minst fire design-relevante lærdommer som aldri nådde loggen: (1) **S14e**: F-001 rev 03 bar en faktafeil (AI oppfant et fjerde tidspunkt / «30° synkende»; verifisering mot Isha-kilder viste tre) — og den *retroaktive* S14-reviewen med 0 annotasjoner godkjente den feilaktige briefen (`state.json:39-49`); feilen ble fanget først da operatøren ba om å få reglene vist. (2) Review-gaten virker *iterativt* — fire runder S14→S14g, dokumentert konklusjon i `state.json:93`. (3) Ny artefakt-praksis (revisjonslogg-eksplosjonen, R-07). (4) b59928b-lærdommen («rask validering med `echo {initialize} | server-cmd` før scaffold-templates publiseres», commit-melding 2026-05-15) — ble stående i git, aldri i friksjon/spec. Siste substansielle commit i app-creator: 2026-05-15; STATE-innhold datert 2026-05-29.
**Feilscenario:** Neste `phase-design-draft`-revisjon bruker friksjon.md som kilde (det er dens deklarerte rolle, `friksjon.md:3`) og går glipp av prototypens sterkeste empiri: at *passive* gates (åpnet HTML, ingen annotasjoner) ikke validerer, og at gate-timing er avgjørende. Review-gate-designet låses da på svakere grunnlag enn dataene tillater.
**Foreslått fiks:** Etterregistrering som friksjon #16#18 (kilde: Akashic state.json-loggen + git) før neste design-revisjon. → Sesjon A4, foran A5.
### R-09 [MAJOR] Flersesjons-protokollen i utkastet foreskriver et mønster operatøren har forbudt og repoet selv har migrert bort fra
**Belegg:** `phase-design-draft.md:83-89` formaliserer `SESSION-ROADMAP.local.md` + `NEXT-SESSION-PROMPT.local.md` + `SESSION-LOG.local.md`; `:979` instruerer «start neste sesjon med "Les og følg NEXT-SESSION-PROMPT.local.md nøyaktig"». `prototype-run/README.md` (tabellen) beskriver de samme filene som levende. Repoets egen git-historikk viser at mønsteret er avviklet og konsolidert til STATE.md-konvensjonen (commits 8eb625f, c8e6aa5, b8a6a31, 2026-05-2906-26); filene finnes ikke på disk (`find` → kun `fable-review-prompt.local.md`). Operatørens globale konvensjon forbyr eksplisitt lokale kontinuitetsmekanismer av denne typen.
**Feilscenario:** En Opus-sesjon som følger § Flersesjons-protokoll gjenoppretter det forbudte mønsteret i neste app-instans; eller en sesjon leter etter `NEXT-SESSION-PROMPT.local.md` som re-entry og finner ingenting.
**Foreslått fiks:** Omskriv § Flersesjons-protokoll til STATE.md-konvensjonen (per-instans `STATE.md` med 👉 NESTE-blokk; `state.json.session`-feltet beholdes som maskinlesbart eksport-speil). Oppdater prototype-run/README-tabellen. → Sesjon A1.
### R-12 [MINOR] Versjonsdisiplinen for domain-packs brøt ved første reelle test: tre versjoner i omløp, stale snapshot
**Belegg:** Commit `b59928b` (2026-05-15) endret pack-innhold (`patterns/xcode-mcp-toolchain.md`, `scaffold/mcp.json`) og annonserte «v0.2.1» i commit-meldingen — men `pack.json:4` står på **0.2.0**, uten 0.2.1-changelog-entry (`git show b59928b --stat`; `git log -p -- …/pack.json`). Dette er nøyaktig patch-bump-tilfellet `domain-pack-spec.md:123` definerer. Konsekvens-kjeden: `STATE.md:44` hevder «v0.2.1» (matcher commit-melding, ikke manifest); Akashic `state.json:4` pinner `ios-app@0.1.0`; F-001 `brief.md:21` pinner `0.1.0`; `implementation.domain_pack_version_at_bootstrap` sier `0.2.0` (`state.json:152`); snapshotet er materialisert fra **0.1.0** (2026-05-13, `00-context/domain-pack-ios-app.md:4-5`) og aldri re-materialisert gjennom to innholdsendringer — i strid med sin egen disclaimer («re-materialiser ved pack-bump», `:8`). Spec-en innrømmer at `verified` ikke håndheves (`domain-pack-spec.md:196`) — dette er beviset på at disiplin alene ikke holdt én eneste bump.
**Feilscenario:** En sesjon premiss-verifiserer «pack er v0.2.1» mot disk, finner 0.2.0, og bruker tid på å avgjøre hvilken som er sann. Verre: en re-materialisering tar utgangspunkt i feil versjon, og fase 7-context-utdrag genereres fra et snapshot uten MCP-toolchain-lærdommene.
**Foreslått fiks:** pack.json → 0.2.1 + changelog-entry; re-materialiser Akashic-snapshotet; oppdater pins. Vurder `check-pack.mjs`-lint (se Ambisiøse utvidelser, B). → Sesjon A3.
### R-14 [MINOR] Fase 2s pack-konsum er selvmotsigende (M6)
**Belegg:** `phase-design-draft.md:423` gir fase 2 `gotchas.md` + `patterns/` som input; `:66` («fasene 1/37»), tabellen `:70-77`, `domain-pack-spec.md:9,99-106` og `ios-app/pack.json:7` utelater alle fase 2. **Feilscenario:** En fase 2-implementasjon (D-fasen) må velge side; velger den `:423`, bryter den pack-manifestets `phases`-kontrakt og en evt. validator. **Foreslått fiks:** Ta stilling: enten legg fase 2 inn i `phases` overalt (Akashic-erfaringen: fase 2 klarte seg uten pack-filer — taler for å fjerne), eller stryk input-linjen på `:423`. Anbefaling: stryk. → Sesjon A1.
### R-15 [MINOR] Max-3-regelen er både brutt på papir og omgått i praksis (M9)
**Belegg:** Fase 5-input (`:596`): `checklist.md` + `gotchas.md`; checklist-splitten gjør «checklist» til tre core-filer (`ios-app/pack.json:28-30`); fase 5-templaten dekker alle tre domenene (`:604-667`) ⇒ 4 filer > max-3 (`:68`, spec `:108`). I praksis leste Akashic fase 5 snapshotet — som inneholder **alle fem** core-filene i ett dokument (`00-context/domain-pack-ios-app.md:8`), altså mer innhold enn regelen tillater, gjennom ett filhandle. **Feilscenario:** En implementert fase-agent håndhever max-3 bokstavelig og må velge bort én av tre obligatoriske checklists i fase 5. **Foreslått fiks:** Redefiner regelen til det den faktisk skal beskytte (kontekstbudsjett): «snapshot teller som én lasting; utover snapshot maks 3 supplementary-filer», og oppdater fase 5-inputlisten. → Sesjon A1.
### R-17 [MINOR] CHANGELOG refererer filer som ikke finnes, og er selv 25 commits gammel (M10)
**Belegg:** `CHANGELOG.md:8`: «Initial repo scaffolding (CLAUDE.md, README, ROADMAP, TODO, CHANGELOG)» — `TODO.md` finnes ikke; roadmap heter `docs/roadmap.md`. Hele fila har 13 linjer og dekker ingenting etter scaffolding (25 commits, inkl. to spec-låsinger og en pack-release). **Feilscenario:** Kosmetisk i dag; villedende den dagen repoet publiseres på Forgejo. **Fiks:** Rett referansene; etabler changelog-disiplin fra A-fasen. → Sesjon A1.
### R-20 [SUGGESTION] Småsprik: «6-tema-intervju» har 8 temaer; interne teller-avvik
**Belegg:** `phase-design-draft.md:112,258` sier «6-tema-intervju»; sjekklisten `:271-279` og prioriteringen `:291` lister 8 (Eierskap, Problem, Brukere, Suksess, Omfang, Appetite, Plattform, Tidshorisont). Friksjons-tallene for ordtelling avviker litt fra dagens disk (1830→1855, 3497→3535 osv. — filer har driftet etter måling). **Fiks:** Tell om og rett i A1; ingen strukturell konsekvens.
---
## Akse 3 — Arkitektur-invarianter under press
Mandat: hvert angrep krever konkret feilscenario + navngitt alternativ. Vetorett hos operatør.
**1. Tre-tier-oppdelingen — grensen holder, men Tier 2 har allerede én ulisensiert import fra Tier 1.**
Angrep: Review-gaten (kjerne-mekanikk i Tier 2) avhenger av `annotate.mjs` — en Voyage-*intern* fil utenfor eneste public contract (R-05). Feilscenario: som R-05; presedensen er at Voyage sletter interne flater med én dags varsel. Navngitt alternativ: **vendor annotate.mjs** (fork-and-own-kopi i app-creator, opphavsversjon notert, resync-rutine) — bevarer «Handover 1 er eneste kobling» *og* zero-deps/single-file-invariantene, uten å røre Voyage. Ellers står tre-tier-oppdelingen seg: ingen funn tyder på at Tier 2 må absorbere task- eller portefølje-ansvar; fristelsen dokumentert i alignment-brief Funn 5 er reell men adressert med test-spørsmålene der.
**2. Runtime-asymmetrien — omformuler, ikke gjenopprett.**
Angrep + vurdering: se R-16. Alternativ: invariant-tekst som beskytter det som faktisk bærer verdi (skjema-konformitet, ingen runtime-kobling, ingen privilegert produsent) i stedet for en kunnskaps-påstand som allerede er usann. Ingen handling mot Voyage.
**3. De syv fasene — riktig meny, misvisende som lineær skala.**
Angrep: Empirien (n=1) kjørte 1, 2, 3, 5, 6, 7; fase 4 er *designet* for som regel aldri å trigge (`:565`). En «fase-progress 17»-visning (CLAUDE.md:52, roadmap:25) viser dermed et permanent hull for de fleste apper, og `phase_status."7": "complete"` ved 1/12 briefer (R-06) viser at fase 7 ikke er en fase men en kontinuerlig aktivitet. Feilscenario: app-factory-aggregering («hvilken fase er appen i?», alignment-brief:92) gir meningsløse svar for fase 4/7. Navngitt alternativ: behold de syv *kapabilitetene* og artefakt-nummereringen (innarbeidet), men modellér progresjon som status-per-kapabilitet (kjørt/hoppet/utrigget/kontinuerlig med teller) i state-eksporten og HTML-en — ikke som posisjon på en 17-linjal. Ikke slå sammen faser nå: empirien er for tynn (én app, eskaleringssti only — se Akse 5).
**4. Brief-som-filhandover vs. validerbart schema — behold filen, tilfør validatoren.**
Angrep: Uten egen validering oppdages kontraktsbrudd først i Voyages validator, med kostnaden hos operatøren (alignment-brief:119 forutså dette). Feilscenario: R-02(b). Navngitt alternativ: `validate-brief.mjs` i app-creator som implementerer Handover 1 (public contract) for målversjonen — *ikke* å kjøre Voyages `brief-validator.mjs` (gråsone mot eksekverings-grensen, og skaper enda en intern avhengighet). Filhandover som prinsipp: uangripelig gitt målene; ingen alternativ fremmes.
**5. Filsystem som state-backend / `state.json` som sannhet — backend holder; sannhets-påstanden gjør ikke.**
Angrep: state.json er i dag *ikke* eneste sannhet: review-gate-annotasjoner lever i nettleserens localStorage (nøklet på absolutt sti — tapt ved maskinbytte/rydding), og revisjonshistorikk lever i artefaktene. Feilscenario: operatør bytter maskin → åpne annotasjonsrunder (AQ-003-svaret!) er borte; state.json sier `decision-pending` med ref til en HTML hvis tilstand ikke finnes lenger. Navngitt alternativ: hold fast på filsystem-backend, men gjør annotasjons-*eksport* til fil til en del av gate-protokollen (Copy Prompt limes inn og *committes* som del av revisjonen — allerede de facto praksis via Revisjons-logg; formaliser det, jf. R-07-beslutningen). SQLite o.l. vurdert og forkastet: bryter zero-deps-ånden uten gevinst på denne skalaen.
**6. Verktøy-agnostisk — står.**
Ingen funn gir feilscenario. Ingen alternativ fremmes. (Prototypen har klart seg uten PM-verktøy gjennom 15+ sesjoner — svak men reell bekreftelse.)
**7. Single-file HTML, zero deps, polling — står; polling er upraktisert.**
annotate.mjs (single-file output, zero deps) og Akashic `index.html` (385 linjer, `data-theme`, statisk) bekrefter mønsterets levedyktighet. Merk: Akashic-index-en **poller ikke** (grep etter `fetch`/`setInterval`: null treff) — polling-invarianten er fortsatt utestet på Tier 2. Ikke et angrep; en åpen verifikasjon for E-fasen.
**8. Hard 500-ordsgrense — fell den flate grensen, behold prinsippet.**
Angrep: R-07; åtte målinger mot, null for. «Én skjerm»-formuleringen (`:62`) er uoperasjonaliserbar. Navngitt alternativ: #14-tabellen (differensiert per artefakt-type, review-flagg over terskel) + bredde/dybde/fokus-typologien fra friksjon #13 — empirisk fundert av prototypens egne tall.
### Fem-nivå-vurdering (Shapiro-rammeverket; bindende ramme: nivå 3 fast, muliggjør nivå 4)
**Plassering i dag: nivå 2, med nivå 3-stillas på plass for R og P — og et åpent hull der I og V skulle vært.**
Begrunnelse: R-PIV-loopen på app-nivå er lukket til og med P: research (fase 2, reelle kjøringer), plan (fase 1/3/5/6-artefakter med operatør-gates), og review-gate-mekanikken etter S13 er et ekte nivå 3-trekk — mennesket planlegger og validerer ved hver fasegrense. Men **I og V har aldri kjørt**: `voyage_running: 0, shipped: 0`. Ingen brief er implementert, ingen validering av at pipelinens output faktisk bærer implementering. Tilliten som definerer nivå 3 («delegerer all koding, stoler på systemet») kan ikke være opptjent når systemets nedstrøms-halvdel er ukjørt. Det er ikke et designproblem — det er hvor prototypen står — men reviewens dom er at *påstander om nivå 3 er premature før B-fasen i re-planen er gjennomført*.
**Gate-kvaliteten er dokumentert ujevn — det er den viktigste nivå-3-empirien repoet har:** S14e (R-08) viser at en passiv gate (åpnet HTML, null annotasjoner) godkjente en faktafeil, mens en aktiv operatør-spørring fanget den. Nivå 3 hviler på gate-kvalitet; systemet mangler i dag mekanismer som gjør gates aktive (sjekkliste-spørsmål per gate, «vis meg reglene»-prompter, diff-mot-forrige-revisjon).
**Muliggjør dagens design nivå 4 for app-factory? Ikke ennå.** Nivå 4 krever at aggregatoren kan stole på signalene uten å lese artefaktene. I dag: state-eksport udesignet (alignment-brief Funn 2 åpen), `phase_status`-semantikk villedende (R-06), attention-vokabular udefinert i praksis, `session.next_action` er prosa. En app-factory bygget på dagens state.json ville tatt feil beslutninger om «hvilken app trenger meg» — f.eks. lest Akashic som «fase 7 complete».
**Hva som mangler for å klatre (konkret, i re-planens rekkefølge):** (1) reell round-trip → første I/V-datapunkt (B1); (2) brief-validator + state-schema → maskinsjekkbare kontrakter (C2/D2/D3); (3) Voyage-retur-ingest → lukker V→R-loopen på app-nivå (parkert til første retur, se Ambisiøse utvidelser D); (4) friksjon→systemforbedring-disiplinen håndhevet (R-08 viser at loopen henger; b59928b viser lærdom som ble patch-notat, ikke mekanisme); (5) aktive gate-sjekklister. Invarianten «ingen autonome loops uten human-in-the-loop» er respektert i alt over — nivå 4 *muliggjøres* av eksport-kvalitet, ikke av at app-creator selv kjører autonomt.
---
## Akse 4 — Plan-fullstendighet og manglende features
`docs/roadmap.md` er 43 linjer; null avkryssede bokser; ingen sesjonskø. Re-planen (Del 2) bygger køen fra grunnen. Hull som må inn i planen, utover roadmapens egne punkter:
1. **Premiss-vedlikehold har ingen plass i roadmapen.** Ingen mekanisme fanger at Voyage flytter seg (R-01/R-02 lå uoppdaget i ~8 uker). → A-fasen + «kontrakt-resync»-sjekk som fast innslag i STATE-ens NESTE-blokk ved lengre pauser.
2. **Brief-generatoren** trenger mer enn «riktig frontmatter» (roadmap:37): målversjon 2.2, framing-avledning, TL;DR-generering, `phase_signals`-strategi, stripping-/plasseringsregel for interne felter og revisjonslogg (R-07), handover-mekanikk for `project_dir` (R-03), og en validator å testes mot (D2).
3. **`state.json`-schema** (roadmap nevner eksport, ikke schema): JSON Schema + `"schema"`-felt + validator + semantikk-fiks for fase 7 (R-06). Alignment-brief Funn 2 gir felt-listen aggregatoren trenger.
4. **Per-app HTML**: rendering-listen finnes (CLAUDE.md:50-56), men drill-down må redefineres (R-01), attention-heuristikkene er ulåst (`:1067`), polling er upraktisert (Akse 3.7), og Akashic `index.html` bør høstes som de facto prototype.
5. **App-state-eksport til app-factory er udesignet i det hele tatt** — bekreftet; eneste spec er ønskelisten i alignment-brief:91-97.
6. **Levende arkitektur-fil / Voyage-retur-ingest**: `voyage_run.md` «skrives av state-eksport» (`:188`) — en mekanisme som ikke finnes noe sted. Kan ikke designes empirisk før første Voyage-retur; planlegg observasjon, ikke spekulasjon.
7. **Backtracking-propagering** `[åpent]` (`:1063`): korrekt holdt åpent; planlegg en observasjons-sesjon ved første reelle backtrack i stedet for design nå.
8. **Versjonering av app-creator selv**: repoet er ikke en plugin ennå (ingen `plugin.json`); implementeringsfasen må definere plugin-identitet, versjonssync-disiplin (jf. R-12) og CHANGELOG-vedlikehold (R-17).
9. **Domain-pack-versjonsdrift**: iOS 27-reverifisering ~sept 2026 (pack-ens egen prognose, nå web-bekreftet); pack-lint (utvidelse B under).
10. **`claude-code-plugin`-packen** er ærlig merket stub (`pack.json:22`) men er samtidig eneste forsvar mot n=1-generaliseringen — se Akse 5 for billigste mottiltak; planen må eksplisitt si om den er i eller ute av v1.0.0.
11. **Forgejo-remote** (R-18/M11): operatør-steg; per global konvensjon skal repoet ligge på Forgejo, aldri GitHub.
12. **Multi-platform** `[åpent]` (`:1075`): hold eksplisitt utenfor v1.0.0.
13. **v0.4.0-definisjons-synk** mot app-factory (R-19).
### Ambisiøse utvidelser (utover godkjent scope) — FORSLAG, flettes ikke inn uten operatør-godkjenning
Hver testet mot scope-testen i `CLAUDE.md` § Arbeidsregler 5: (i) per-app-disiplin? (ii) hører i en av de syv fasene eller per-app HTML? (iii) tjener reell friksjon?
**A. `validate-brief.mjs` — egen Handover 1-validator som pre-handover-gate i fase 7.** Kost: SM (én sesjon, TDD; kontrakten er presist dokumentert). Scope-test: (i) ja — per-brief-disiplin i fase 7; (ii) ja — fase 7; (iii) ja — R-02/R-03/R-04 er nettopp friksjonen den fanger. **PASS.** Sterkeste kandidat; allerede innarbeidet som D2 i re-planen (fjernes derfra hvis operatør avviser).
**B. `check-pack.mjs` — pack-lint** (components↔disk-konsistens, `verified`-alder-flagg, versjon↔changelog-samsvar). Kost: S. Scope-test: (i) delvis — det er pakke-forfatter-disiplin, ikke app-disiplin; (ii) indirekte (pakkene konsumeres av fase 1/37); (iii) ja — R-12 er dokumentert friksjon. **PASS med anmerkning** om at det er verktøy for pack-vedlikeholdet, ikke pipelinen.
**C. Annotasjons-eksport til committet fil** — utvid den *vendorede* annotate-kopien (forutsetter Akse 3.1-beslutningen) med «Export annotations» til f.eks. `<artefakt>.annotations.md`, slik at audit-trail overlever localStorage og revisjonslogg kan flyttes ut av kontraktsfila (R-07). Kost: M. Scope-test: (i) ja; (ii) ja — review-gate/per-app HTML; (iii) ja — R-07 + Akse 3.5. **PASS**, betinget av vendoring-beslutningen. NB: modifiserer vendored kopi, aldri Voyage.
**D. Voyage-retur-ingest** (les `progress.json`/`review.md` fra `voyage_run_dir``voyage_run_status` + attention). Scope-test: (i) ja; (ii) ja — fase 7/HTML; (iii) **nei — ingen Voyage-run har returnert; friksjonen er hypotetisk.** **FAIL i dag.** Parkeres til første retur (da blir den trolig obligatorisk, ikke ambisiøs).
**E. Friksjon-capture som sesjonsslutt-gate** («har sesjonen produsert friksjon? → friksjon.md før commit»). Scope-test: (iii) ja — R-08 er beviset. Men (i)/(ii): dette er en *kontinuitetssystem*-utvidelse, og global konvensjon krever at slike utvides globalt, ikke lokalt per repo. **FAIL som app-creator-feature**; noteres som forslag til operatørens globale system.
---
## Akse 5 — Prototypens bevisverdi
**1. Dekning: fem av syv faser er kjørt — men bare langs den ene grenen.** Akashic kjørte full-variant fase 1, reell fase 2, 3, 5, 6 og 1/12 av fase 7 (`state.json:7-15`). Det som *aldri* er kjørt: **minimal-variant fase 1, rapid mode, skip av fase 2/5, fase 4-trigging** — altså hele default-stien i eskalerings-stigen (`phase-design-draft.md:16-25,163`). Designets deklarerte default («default er kort») er 100 % hypotese; kun eskaleringsgrenen har belegg. Det er ikke tilstrekkelig grunnlag for å låse *stige-modellen* i v0.4.0 — det er tilstrekkelig for å låse eskaleringsgrenens artefakt-kontrakter (som er det v0.4.0 faktisk trenger).
**2. Round-trip: aldri reell (R-04).** Risikoen for at fase 7-*formatet* er feil er lav (papir-PASS mot dokumentert kontrakt); risikoen for at fase 7-*prosessen* er feil er reell og udekket: project_dir-mekanikken (R-03), `research.md`-konsum-antakelsen (R-04), stripping-spørsmålet (R-07). Alle tre avgjøres av én reell kjøring.
**3. n=1-domene.** Systematisk blindsone: alt som er iOS-spesifikt kan ha lekket inn i det domene-nøytrale laget uten at noen merker det (spec-en er «domene-nøytral» kun på papir — `claude-code-plugin`-packen er en ukonsummert stub, `pack.json:22`). Billigste mottiltak, og det dekker to hull samtidig: **kjør én rapid mode-runde med `claude-code-plugin`-packen på en reell, liten plugin-oppgave** (forfatteren produserer plugins løpende). Én sesjon gir (a) første datapunkt på den utestede default-stien og (b) n=2-domene. Foreslått som egen sesjon i re-planen (B6).
**4. Friksjonsloggen som instrument: upålitelig i dagens tilstand (R-08).** Instrumentet er godt *når det føres*#1#15 er konkrete, daterte, med foreslåtte revisjoner. Men det føres ikke lenger: loggen har 0 entries etter 2026-05-14 tross 8 sesjoner med sterk empiri. En metode som hviler på «friksjons-data låser designet» (CLAUDE.md § Status) har da mistet målekjeden sin. Etterregistrering (A4) er mulig fordi Akashic state.json-loggen er uvanlig god — denne gangen. Disiplinen må inn i sesjonsprotokollen, ikke bero på flaks.
**5. Er Apple-portal-blokkeren en app-creator-blokker? Nei — og dette avgjør kritisk sti.** `/trekresearch` og `/trekplan` konsumerer filer og trenger verken signert build eller simulator (`HANDOVER-CONTRACTS.md` Handover 1/2). Round-trip-testen (roadmap-forutsetning #3) kan altså kjøres **nå**. Blokkeren gjelder først `/trekexecute` (bygg/test): simulator-runtime-installasjonen er et reelt operatør-steg; om App Groups-entitlement krever DEVELOPMENT_TEAM også for simulator-bygg er **ikke verifisert** — planlegges som eksplisitt sjekk i B7. Konsekvens: prototypens gjenstående verdi hentes i rekkefølgen round-trip → briefer → execute, med portal-stegene parallelt — ikke som forutsetning for alt.
**Samlet dom over metoden:** Én manuell kjøring av én iOS-app har produsert *mer enn nok* friksjon til å revidere designet (15 nummererte punkter + 8 sesjoner ulogget empiri) — metoden virker. Men den har ikke produsert nok til å *låse* kontraktene: null Voyage-kjøringer, null default-sti-empiri, n=1-domene. Roadmapens egen formulering («låses når prototypen viser hva som faktisk fungerer», `roadmap.md:21`) er riktig standard; dagens tilstand oppfyller den ikke, og papir-PASS-retorikken (R-04) er den ene stedet repoet er i ferd med å lure seg selv.
---
## Verifiseringslogg
Nøkkelpåstand → kilde/kommando som bekrefter den (alle kjørt 2026-07-10):
| Påstand | Belegg |
|---|---|
| 25 commits, ingen remote, rent tre, 42 tracked filer | `git log --oneline \| wc -l` = 25; `git remote -v` → tom; `git status --short` → tom; `git ls-files \| wc -l` = 42 |
| Voyage gjeldende versjon 5.9.1 | `voyage/.claude-plugin/plugin.json:4`; `~/.claude/plugins/cache/ktg-plugin-marketplace/voyage/` inneholder 5.6.05.9.1 |
| Playground + Handover 8 + `/trekrevise` slettet i v5.0.0 (2026-05-12) | `voyage/CHANGELOG.md:499-505` (verbatim «Breaking … gone»); `ls voyage/playground/` → No such file or directory |
| annotate.mjs skriver kun `<input>.html`; ingen sidecar | `grep -n writeFileSync scripts/annotate.mjs` → linje 934 (én skriving, `:933` default `<input>.html`); `find akashic -name "*.review.md"` → 0 treff |
| Dokumentert annotate-sti død | `test -f ~/.claude/plugins/marketplaces/ktg-plugin-marketplace/plugins/voyage/scripts/annotate.mjs` → FINNES IKKE; fungerende: `…/cache/…/5.9.1/scripts/annotate.mjs` (41 368 B) |
| Handover 1: 2.2 gjeldende; framing/TL;DR kun ≥2.2; 2.0 gyldig (N-1); ukjente nøkler tolereres; Tier-2 navngitt | `voyage/docs/HANDOVER-CONTRACTS.md:13,44-105` (lest i sin helhet) |
| Voyages egen template emitterer 2.2 + framing + phase_signals + TL;DR | `voyage/templates/trekbrief-template.md:3,18,24,43` |
| F-001 rev 6 papir-PASS felt-for-felt | `akashic/features/01-sun-position/brief.md:1-27` mot kontraktstabellen `:60-84` (gjennomgang i R-02) |
| `project_dir` finnes ingen steder | `ls akashic/.claude/projects/` → No such file; `ls ~/.claude/projects/ \| grep sun-position` → 0 treff |
| Akashic-status: fase-tabell, 1/12, `voyage_running: 0` | `akashic/state.json:7-15,61-67` (lest i sin helhet) |
| Ordtellinger (1855/1317/1827/3535/4435/4523/641/5611) | `wc -w` på artefaktene i akashic-repoet |
| Snapshot fra 0.1.0, aldri re-materialisert | `akashic/00-context/domain-pack-ios-app.md:4-8` |
| Pack-versjonskaos (0.1.0/0.2.0/«0.2.1») | `ios-app/pack.json:4` = 0.2.0; `git show b59928b --stat` (endret 2 pack-filer, bumpet ikke manifest); `STATE.md:44`; `akashic/state.json:4,152` |
| Friksjonslogg stopper #15/S13 2026-05-14 | `prototype-run/friksjon.md:449-499` (lest i sin helhet); Akashic S14bS15: `state.json:88-94` |
| SESSION-*.local.md-filene finnes ikke; STATE-migrering | `find . -name "*.local.md"` → kun oppdragsfila; commits 8eb625f/c8e6aa5/b8a6a31 |
| iOS 26 gjeldende (26.5.2 stabil; 26.6 kun beta); iOS 27 WWDC juni 2026, GA offisielt «this fall» (sept = presse-estimat) | WebSearch: [Apple Newsroom](https://www.apple.com/newsroom/2026/06/apple-unveils-next-generation-of-apple-intelligence-siri-ai-and-more/), [TechCrunch WWDC 2026](https://techcrunch.com/2026/06/09/wwdc-2026-everything-announced-on-siri-ai-os-27-apple-intelligence-and-more/), [Tom's Guide](https://www.tomsguide.com/phones/iphones/ios-27-is-official-all-the-new-upgrades-and-features-announced-at-wwdc-2026); kryssbekreftet av research-agent (Wikipedia iOS 26, support.apple.com/100100) |
| App Store-byggekrav Xcode 26+/iOS 26 SDK siden 2026-04-28 (bekrefter `pack.json:10`); privacy-manifest-krav 2024-05-01 + SDK-utvidelse 2025-02-12 | Research-agent: [Apple Upcoming Requirements](https://developer.apple.com/news/upcoming-requirements/), [Apple privacy-manifest-doc](https://developer.apple.com/documentation/bundleresources/adding-a-privacy-manifest-to-your-app-or-third-party-sdk) |
| Xcode 26.6 siste stabile (2026-06-25) | [Apple Developer Releases](https://developer.apple.com/news/releases/?id=06252026a), [xcodereleases.com](https://xcodereleases.com/) |
| MASVS 2.1.0 fortsatt gjeldende | [mas.owasp.org/MASVS](https://mas.owasp.org/MASVS/), [GitHub OWASP/masvs](https://github.com/OWASP/masvs) |
| WCAG 2.2 gjeldende Rec (ISO/IEC 40500:2025); 3.0 = WD, Rec ~2029 | [W3C TR WCAG22](https://www.w3.org/TR/WCAG22/), [W3C WAI-oversikt](https://www.w3.org/WAI/standards-guidelines/wcag/) |
**Ikke verifisert (eksplisitt):** (a) Om App Groups-entitlement krever `DEVELOPMENT_TEAM` for simulator-bygg — planlagt sjekk i B7. (b) Voyages faktiske adferd overfor en produsent-levert `research.md` — avgjøres av B1. (c) Nøyaktig hvilken CC-versjonsendring som flyttet plugin-stien fra `marketplaces/` til `cache/` — irrelevant for fiksen, ikke undersøkt. (d) Fire Opus-subagenter ble spawnet for bredde-sveip (Voyage-historikk, app-factory, Akashic, ekstern versjonering). Kun versjonerings-agenten leverte rapport (etter førsteutkastet av dette dokumentet); den **kryssbekreftet samtlige eksterne versjonspåstander uten motsigelser** og bidro med presisjonene om iOS 26.5.2/26.6-beta, «this fall» og SDK-byggekravet (flettet inn over). De tre øvrige avsluttet uten leverte funn. **Alle påstander i dette dokumentet er uansett verifisert direkte av hovedsesjonen** med kommandoene/kildene over.

View file

@ -1,5 +1,7 @@
# app-creator — roadmap # app-creator — roadmap
> **Erstattet 2026-07-10:** Gjeldende plan til v1.0.0 er `masterplan.md` (promotert fra kryssmodell-reviewen; funn i `review-2026-07.md`). v0.4.0-milepælen under står som milepæl underveis i masterplanen. Dette dokumentet revideres i sesjon A1 — flere punkter bærer verifisert utdaterte premisser (bl.a. «drill-down til Voyage Plugin Playground», jf. R-01).
Gjeldende status og aktiv oppgave: se `../STATE.md` (gitignored). Invarianter og scope-grenser: se `../CLAUDE.md`. Gjeldende status og aktiv oppgave: se `../STATE.md` (gitignored). Invarianter og scope-grenser: se `../CLAUDE.md`.
Dette dokumentet er **planer** — fremtidige milepæler og deliverables. Det er ikke state og ikke invarianter. Dette dokumentet er **planer** — fremtidige milepæler og deliverables. Det er ikke state og ikke invarianter.