diff --git a/CLAUDE.md b/CLAUDE.md index 630b15f..98f44e5 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -25,6 +25,24 @@ **Spec completa**: `STANDARD_TIMEZONE_CONVENTIONS.md` (slug `timezone-conventions` v1.0, owner VIGILE). +## 🍎 STANDARD apple-developer-multi-prodotto 2026-05-31 (per chi fa app iOS) + +> Standard cross-suite `hub_standards` id=23 v1.0. Doc completo: `docs/INCOMING_FROM_AGILEHUB_2026_05_31_apple_developer_multi_prodotto.md`. + +**Cosa dice in 5 punti**: +- **1 sola iscrizione** Apple Developer Program ($99/anno per tutta la suite), Team ID `5W6WYDQKTS`, Apple ID `devapp@agile.software`. +- **Bundle ID convention**: `it..app` (es. `it.alltax.app`, `it.dfm-pro.app`, `it.nis2.app`). +- **Credenziali Apple nel vault**: namespace condiviso `tier1__shared-apple__developer/*` (`apple_id`, `team_id`, `authkey_p8`, `authkey_id`, `issuer_id`, `password_main`). App vault dedicata `shared-apple-reader` con scope read-only. +- **Onboarding nuovo prodotto mobile in 30 min**: procedura in §3 dello standard (Bundle ID → App Store Connect entry → `ascAppId` → `eas.json` → `eas credentials` → primo build). Da quel momento il prodotto builda + submitta autonomo. +- ⚠️ **NON committare MAI** `.p8` o password Apple. Aggiungere al `.gitignore`: `*.p8`, `AuthKey_*.p8`, `apple-developer.txt`, `appstore-connect-api-key.txt`. + +**Se il tuo prodotto non avrà app iOS**: solo informativo, nessuna azione richiesta. + +**Stato adoption suite**: ALLTAX `acknowledged` (pending `ascAppId`), DFM PRO `implemented`, altri `pending` (aderiscono se serve l'app). + +--- + + ## 🔵 VAULT-STEWARD chain fix 2026-05-31 (informativo) > Aggiunto da VIGILE. Doc completo: `docs/INCOMING_FROM_AGILEHUB_2026_05_31_vault_chain_fix.md`. diff --git a/docs/INCOMING_FROM_AGILEHUB_2026_05_31_apple_developer_multi_prodotto.md b/docs/INCOMING_FROM_AGILEHUB_2026_05_31_apple_developer_multi_prodotto.md new file mode 100644 index 0000000..d41268b --- /dev/null +++ b/docs/INCOMING_FROM_AGILEHUB_2026_05_31_apple_developer_multi_prodotto.md @@ -0,0 +1,89 @@ +# OUTGOING → TUTTI i container DevEnv — Apple Developer multi-prodotto (2026-05-31) + +> **Da**: AgileHub-side (VIGILE) +> **A**: ogni sessione Claude su tutti i dev container. +> **Trigger**: direttiva utente "studia tu un modo per rendere autonomo ALLTAX" + politica broadcast cross-suite. Standard `hub_standards` id=23 v1.0 `apple-developer-multi-prodotto`. + +--- + +## TL;DR + +**Una sola iscrizione Apple Developer Program** ($99/anno) per **TUTTA la suite AgileHub** — non per prodotto. Tutti i prodotti che vogliono fare app iOS pubblicano sotto lo stesso Team (`5W6WYDQKTS`), distinguendosi solo per Bundle ID. + +| Cosa | Stato | +|---|---| +| Apple Developer account condiviso `devapp@agile.software` | ✅ attivo | +| Team ID `5W6WYDQKTS` | ✅ noto | +| App Store Connect API Key `7B76D7Y596` + Issuer ID `b710802d-…` | ✅ nel vault | +| ALLTAX app iOS (Bundle `it.alltax.app`) | ⏳ manca solo `ascAppId` da App Store Connect, poi autonomo | +| DFM PRO app iOS | ✅ già autonomo (account, .p8, eas.json) | +| Altri prodotti (NIS2, SUSTAINAI, ALLRISK, …) | Possono aderire seguendo l'onboarding in 30 min | + +--- + +## Cosa cambia (vincolante) + +### 1. Credenziali Apple sono nel vault — namespace condiviso + +**Era**: `.p8` e `apple-developer.txt` con password in chiaro in `/docs/credentials/`. +**Ora**: tutto sotto `tier1__shared-apple__developer/*` nel vault: +- `apple_id`, `team_id`, `authkey_id`, `authkey_p8`, `issuer_id`, `password_main`, `bundle_id_convention` + +**Da fare lato vostro** (solo se il vostro prodotto avrà un'app iOS): +- Aggiungere al `.env` del container: `VAULT_APP_TOKEN=sk_shared-apple-reader_*` (chiedere a VIGILE) + `VAULT_URL=https://vault-steward:8443`. +- Connettere il container alla network `vault-net` (probabilmente già fatto). +- Negli script EAS (`eas-ios-build.sh`, `.exp`, ecc.) fetchare le credenziali on-demand invece di leggere dal filesystem. Pattern in §4 dello standard. + +### 2. Bundle ID convention + +Pattern: **`it..app`** (es. `it.alltax.app`, `it.dfm-pro.app`, `it.nis2.app`). Eccezioni motivate (branding cliente) vanno documentate nel CLAUDE.md del prodotto. + +### 3. `.p8` e password Apple ID NON vanno mai committati + +`.gitignore` di ogni prodotto deve avere: `*.p8`, `AuthKey_*.p8`, `apple-developer.txt`, `appstore-connect-api-key.txt`. + +ALLTAX e DFM PRO sono già a posto (verificato). Per gli altri: aggiungere se necessario. + +--- + +## Onboarding nuovo prodotto mobile (~30 minuti) + +Procedura completa in `docs/STANDARD_APPLE_DEVELOPER_MULTI_PRODOTTO.md` §3, qui il riassunto: + +1. **Decidere Bundle ID** (`it..app`) +2. **Creare app su App Store Connect** (browser, `+`, ottieni `ascAppId` numerico) +3. **Verificare Bundle ID su developer.apple.com** (App IDs) +4. **Configurare `eas.json`** (template completo nello standard) +5. **EAS credentials** (`eas credentials` interattivo, una tantum, usa la API key dal vault) +6. **Primo build di prova** (`eas build -p ios --profile development`) + +Da qui in poi il prodotto **builda e submitta autonomamente**, senza dipendere da altri prodotti né da AgileHub-side. + +--- + +## Anti-pattern da evitare + +| ❌ Sbagliato | ✅ Corretto | +|---|---| +| `.p8` committato nel repo | `.gitignore` + fetch on-demand dal vault | +| Password Apple ID in `*.txt` in chiaro | Vault `password_main` o app-specific password | +| Iscriverti a un secondo Apple Developer Program ($99 sprecati) | Usare l'account condiviso `devapp@agile.software` + tuo Bundle ID | +| `eas login` interattivo ogni build | EXPO_TOKEN nel vault + API key configurata una tantum | + +--- + +## ALLTAX — ultimi 15 minuti per essere autonomo + +Solo per la sessione TaxAi: vai su https://appstoreconnect.apple.com/ → My Apps → "+" → Bundle ID `it.alltax.app` → nome "ALLTAX" → annota l'**App ID numerico** che ti dà Apple → sostituisci `"ascAppId": "PENDING_APP_STORE_CONNECT"` in `mobile/eas.json` con quel numero → da quel momento `eas build -p ios && eas submit -p ios` funziona autonomamente. Doc puntuale: `taxai-agile/docs/TAXAI_IOS_BUILD_SPEC.md` + `MOBILE_IOS_DEPLOYMENT_GUIDE.md`. + +--- + +## Riferimenti + +- Standard cross-suite: `agile-services/docs/STANDARD_APPLE_DEVELOPER_MULTI_PRODOTTO.md` (`hub_standards` id=23 v1.0) +- VIGILE audit log: `agile-services/docs/VIGILE_AUDIT_LOG.md` entry 31/5 `[APPLE-DEVELOPER-MULTI-PRODOTTO]` +- Spec orchestrazione TSSP mobile: `docs/SPEC_TSSP_V3_MOBILE_BUILDS.md` (compatible, scope diverso) + +--- + +**Fine documento.** Lavorate sicuri.