app-creator/docs/masterplan.md
Kjell Tore Guttormsen 3e60e2bed1 docs(a3): lukk A3 — Akashic-halvdel committet (bd38b23), logg override-drift-friksjon #19
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
2026-08-11 21:27:02 +02:00

39 KiB
Raw Permalink Blame History

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 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 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 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) · 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-192s 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 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 · [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 17», «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-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 strøket 2026-08-11 — innfridd via app-factory H0-1, commit 954c99b, ikke via en app-creator-sesjon.)
  • 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@, 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.mdvoyage_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

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[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
  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 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.