fix(a7): stryk A7 (app-factory gjorde arbeidet i H0-1) + fix verified.against-drift i ios-app-pack

A7 (app-factory-brief-synk) strøket per operatør-beslutning: app-factory
utførte samme dok-resync selv i sesjon H0-1 (commit 954c99b), og deres
egen review flagget overlappet og anbefalte at H0-1 eier det. Re-verifisert
herfra: grep mot v4.3/Handover 8 i app-factory/docs/ gir kun historisk-
merkede eller negerende treff. masterplan.md synket på alle 8
referansepunkter (A7-seksjon, R-01/R-19-mapping, C3-avhengighet,
avhengighetsgraf, sprint-plan, repo-skille-linje) — ingen dangling refs.

ios-app pack.json 0.2.1 -> 0.2.2 (patch, D5): verified.against
XcodeBuildMCP-tier rettet fra "v2.3.x-tier" til "v2.5.2", matchende
patterns/xcode-mcp-toolchain.md som selv var internt inkonsistent
(header-linje sa v2.3.2-tier, en gotcha-linje lenger ned sa v2.5.2) —
begge nå synket. Ren tekstlig synk, ingen re-verifisering av verktøyet.
Lukker A3s eksplisitt utsatte funn.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XpFPJDg8XKNxSHxH9uxGZr
This commit is contained in:
Kjell Tore Guttormsen 2026-08-11 14:08:38 +02:00
commit a0854a670b
3 changed files with 19 additions and 17 deletions

View file

@ -4,7 +4,7 @@
**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. **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`). **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`).
--- ---
@ -12,7 +12,7 @@
| Funn (review-2026-07.md) | Skaper/endrer | | 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-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-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-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-04 round-trip aldri reell; research.md-antakelse | **Skaper B1** som tidligste prototype-sesjon, foran all videre brief-produksjon |
@ -25,7 +25,7 @@
| 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-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-16 asymmetri-formulering usann | **Endrer A1** |
| R-18/M11 ingen remote | **Skaper A6** (operatør) | | R-18/M11 ingen remote | **Skaper A6** (operatør) |
| R-19 v0.4.0-definisjons-drift | **Endrer A7, C3** | | 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.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 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) | | Akse 3.5 localStorage-varighet | **Endrer A2** (plasseringsbeslutning) + **D7** (eksport-utvidelse, betinget godkjenning) |
@ -111,13 +111,12 @@ Ambisiøse utvidelser (review § Akse 4): A/validator er absorbert som **D2** (m
--- ---
**A7 — app-factory-brief-synk (forslag)** · **S** · **[OPERATØR-MANDAT kreves]** · *(cross-repo: app-factory)* **A7 — app-factory-brief-synk** · **[STRØKET 2026-08-11 — operatør-beslutning]** · *(cross-repo: app-factory)*
- **Mål:** app-factory-briefene sluttet å referere slettede Voyage-flater; v0.4.0-definisjonene identiske. - **Opprinnelig 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. - **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.
- **Avhengigheter:** A1 (så formuleringene gjenbrukes konsistent). Eksplisitt operatør-mandat for å skrive i app-factory-repoet. - **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.
- **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. - **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.
- **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 ### Fase B — Prototypen: reell round-trip, briefer, Voyage-kjøringer, shipping
@ -228,7 +227,7 @@ Ambisiøse utvidelser (review § Akse 4): A/validator er absorbert som **D2** (m
**C3 — Kontrakt-låsing + roadmap-oppdatering** · **S** **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. - **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. - **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. - **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)** ### Fase D — Implementering (plugin) — **gate: roadmap-forutsetningene #1#5 reelle (C1 bekrefter)**
@ -304,7 +303,6 @@ graph TD
A4[A4 friksjon 16-18] --> A5 A4[A4 friksjon 16-18] --> A5
A3[A3 pack 0.2.1 + resync] --> B1 A3[A3 pack 0.2.1 + resync] --> B1
A5 --> B1[B1 F-001 round-trip ⚙] A5 --> B1[B1 F-001 round-trip ⚙]
A1 --> A7[A7 app-factory-synk ⚙]
A6[A6 Forgejo ⚙] A6[A6 Forgejo ⚙]
B1 --> B3[B3 F-007+F-002] B1 --> B3[B3 F-007+F-002]
B2[B2 AQ-003 ⚙] --> B3 B2[B2 AQ-003 ⚙] --> B3
@ -319,7 +317,6 @@ graph TD
B8 --> C2[C2 state-schema] B8 --> C2[C2 state-schema]
C1 --> C3[C3 kontrakt-låsing] C1 --> C3[C3 kontrakt-låsing]
C2 --> C3 C2 --> C3
A7 --> C3
C1 --> D1[D1 plugin-skjelett] C1 --> D1[D1 plugin-skjelett]
C3 --> D1 C3 --> D1
D1 --> D2[D2 validate-brief] --> D4[D4 brief-generator] D1 --> D2[D2 validate-brief] --> D4[D4 brief-generator]
@ -343,7 +340,7 @@ graph TD
## Anbefalt sesjonssekvens ## 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 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 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.

View file

@ -1,16 +1,21 @@
{ {
"schema": "domain-pack/v1", "schema": "domain-pack/v1",
"name": "ios-app", "name": "ios-app",
"version": "0.2.1", "version": "0.2.2",
"domain": "iOS-app-utvikling (Swift/SwiftUI, App Store-distribusjon)", "domain": "iOS-app-utvikling (Swift/SwiftUI, App Store-distribusjon)",
"description": "Domene-kunnskap for iOS-app-utvikling: HIG/Liquid Glass, Swift/SwiftUI-konvensjoner, offline-first-mønstre, App Store-submission, MASVS 2.1, WCAG 2.2 AA, privacy manifest, XcodeGen + MCP-toolchain (Spor B).", "description": "Domene-kunnskap for iOS-app-utvikling: HIG/Liquid Glass, Swift/SwiftUI-konvensjoner, offline-first-mønstre, App Store-submission, MASVS 2.1, WCAG 2.2 AA, privacy manifest, XcodeGen + MCP-toolchain (Spor B).",
"phases": [1, 3, 4, 5, 6, 7], "phases": [1, 3, 4, 5, 6, 7],
"verified": { "verified": {
"date": "2026-05-14", "date": "2026-05-15",
"against": "iOS 26 (gjeldende SDK; build-krav siden 2026-04-28), HIG / Liquid Glass (WWDC 2025), deployment-target-baseline iOS 1718, OWASP MASVS 2.1.0 (2024-01-18), WCAG 2.2 AA (W3C Rec 2023-10-05), XcodeGen 2.44.x, XcodeBuildMCP v2.3.x-tier, Apple mcpbridge (Xcode 26.3+).", "against": "iOS 26 (gjeldende SDK; build-krav siden 2026-04-28), HIG / Liquid Glass (WWDC 2025), deployment-target-baseline iOS 1718, OWASP MASVS 2.1.0 (2024-01-18), WCAG 2.2 AA (W3C Rec 2023-10-05), XcodeGen 2.44.x, XcodeBuildMCP v2.5.2, Apple mcpbridge (Xcode 26.3+).",
"note": "Kildebelegg: Apple Developer (developer.apple.com), W3C WAI (w3.org/WAI), OWASP MAS (mas.owasp.org), getsentry/XcodeBuildMCP. Se conventions.md / checklist*.md / patterns/xcode-mcp-toolchain.md for per-påstand-referanser. iOS 1925 finnes ikke — Apple gikk fra iOS 18 til iOS 26 (år-basert navn) på WWDC 2025." "note": "Kildebelegg: Apple Developer (developer.apple.com), W3C WAI (w3.org/WAI), OWASP MAS (mas.owasp.org), getsentry/XcodeBuildMCP. Se conventions.md / checklist*.md / patterns/xcode-mcp-toolchain.md for per-påstand-referanser. iOS 1925 finnes ikke — Apple gikk fra iOS 18 til iOS 26 (år-basert navn) på WWDC 2025."
}, },
"changelog": [ "changelog": [
{
"version": "0.2.2",
"date": "2026-08-11",
"notes": "verified.against-drift lukket (operatør-beslutning, A3-oppfølging): XcodeBuildMCP-tier rettet fra 'v2.3.x-tier' til 'v2.5.2' i både pack.json og patterns/xcode-mcp-toolchain.md (linje 5-header, som selv var inkonsistent med sin egen linje 66-gotcha). Ingen re-verifisering av verktøyet selv — ren tekstlig synk mot det som allerede var dokumentert i 0.2.1s mcp-subkommando-fix (commit b59928b, mai 2026). verified.date flyttet 2026-05-14 → 2026-05-15 for å matche den faktiske XcodeBuildMCP-verifiseringsdatoen. Patch (D5)."
},
{ {
"version": "0.2.1", "version": "0.2.1",
"date": "2026-05-15", "date": "2026-05-15",

View file

@ -2,7 +2,7 @@
**Status:** Anbefalt for nye iOS-prosjekter fra mai 2026. Erstatter Spor A (rent Bash `xcodebuild`-wrapper-mønster fra pre-2026 — fortsatt gyldig hvis MCP-avhengighet er uønsket). **Status:** Anbefalt for nye iOS-prosjekter fra mai 2026. Erstatter Spor A (rent Bash `xcodebuild`-wrapper-mønster fra pre-2026 — fortsatt gyldig hvis MCP-avhengighet er uønsket).
**Verifisert:** 2026-05-14 mot installert Xcode 26.5, XcodeBuildMCP v2.3.2-tier, Apple mcpbridge (universal binary) i Xcode.app. **Verifisert:** 2026-05-15 mot installert Xcode 26.5, XcodeBuildMCP v2.5.2, Apple mcpbridge (universal binary) i Xcode.app.
## Hvorfor ## Hvorfor