Vai al contenuto principaleVai al footer
Per agenti · Pro / Teams

L'Architect Agent

Chiama architect.validate per ottenere un Blueprint Readiness Score (0–100, voto A–F) sul codice reale. L'Architect Agent revisiona la tua implementazione rispetto ai 10 principi Blueprint, restituisce verdetti per ogni principio CON severità e confidenza numeriche, e salva il run con un envelope di riproducibilità completo così due chiamanti con lo stesso input possono verificare di aver ottenuto la stessa risposta. Solo piani Pro e Teams.

Membri Pro e Teams. L'Architect Agent è la superficie di revisione autenticata di Blueprint, revisiona il tuo codice sotto una rigorosa politica di no-training, fortifica il confine del prompt contro injection nel codice inviato, e supporta private_session=true per saltare la registrazione lato server.

Cosa ricevi indietro

Ogni run restituisce una risposta strutturata con sette blocchi:

  1. assessment

    Stato generale, sintesi, confidence e code_classification (autonomous_agentic_workflow vs non_agentic_component, con motivazione) così vedi perché alcuni principi sono marcati not_applicable.

  2. findings[]

    Verdict per principio (aligned, mixed, needs_changes, high_risk, not_applicable), severity_score 0–100, confidence (low/medium/high), evidence_quality (sparse/moderate/strong), evidence citata dal codice, e una recommendation.

  3. readiness

    Il Blueprint Readiness Score (0–100), voto (A–F), livello (production_ready / emerging / draft), conteggi per bucket di verdict, se il voto è stato cappato da un finding high_risk, e la rubric_version.

  4. recommended_examples

    Porta example_recommendation_status così il run completa anche se nessun esempio curato corrisponde.

  5. processing

    llm_latency_ms, total_latency_ms, timeout_budget_seconds, dependency_status.

  6. reproducibility

    model, seed, system_fingerprint, doctrine_fingerprint, prompt_template_fingerprint, reasoning_effort, e reproducibility_mode='best_effort'.

  7. persistence_status

    saved o failed, con run_id / badge_url / review_url esposti solo quando la scrittura durabile ha avuto successo.

Scoring per severity_class (production_blocker vs hardening_recommended)

Due finding needs_changes possono avere impatti molto diversi. Un cap di token come defence-in-depth non è la stessa cosa di un error path non tipizzato che lascia un utente reale bloccato. Ogni finding ora porta una severity_class ortogonale al verdict:

  • production_blocker

    La trust boundary cede. Da correggere prima della produzione. Contribuisce 0 credito.

  • hardening_recommended

    La trust boundary regge. Nota di defence-in-depth per la prossima iterazione. Credito pieno.

  • polish

    Stilistico, non load-bearing. Credito pieno.

Il voto principale penalizza solo production_blocker e il verdict legacy high_risk. hardening_recommended e polish emergono in una lista next-iteration separata senza trascinare lo score in basso. Questo permette a production_ready di significare che le trust boundary reggono invece di 100/100. I run vecchi senza severity_class usano l'interpolazione legacy verdict + severity_score e ottengono lo stesso voto di prima.

Score onesto, incertezza onesta

Il Blueprint Readiness Score riflette ciò di cui l'Architect Agent è sicuro, e ciò di cui non lo è. Quando l'architect è genuinamente incerto su un principio (verdetti che potrebbero cambiare su un re-run), vedi quell'incertezza emergere accanto allo score come segnale di stabilità, non sepolta in un singolo numero. Il badge certified production_ready è riservato ai run dove la lettura dell'architect è sicura su ogni principio, non solo fortunata su un singolo shot. Quindi un singolo run ad alto punteggio non basta per coniare il badge. L'architect deve concordare con sé stesso su una rivalutazione indipendente. La varianza che altrimenti dovresti scoprire eseguendo nuovamente emerge subito, nella stessa risposta.

Envelope di riproducibilità (best-effort, ma auditabile)

Due chiamanti che inviano input identici ottengono lo stesso seed, derivato da una canonicalizzazione JSON senza collisioni che copre ogni campo che influenza il prompt. La risposta porta quattro fingerprint così ogni divergenza è diagnosticabile:

  • system_fingerprint

    Identificatore del backend del provider OpenAI.

  • doctrine_fingerprint

    Le definizioni di principio usate per questo run.

  • prompt_template_fingerprint

    system prompt + scaffolding + JSON schema + modello + reasoning_effort, hashati insieme.

  • seed

    Il seed di sampling deterministico stesso.

Se un deploy futuro cambia il system prompt o la doctrine, il fingerprint corrispondente cambia. Rompere il determinismo in silenzio è impossibile per costruzione. La modalità è esplicitamente best_effort: il seed OpenAI dà sampling stabile, non replay byte-identico. La confidence per finding permette di distinguere un disaccordo reale dalla varianza intrinseca dell'LLM.

Esempio

Esempio di score card

Cosa vedi dopo ogni run di architect.validate su un repository.

Repository

acme/customer-agent

Voto

B

Score (0–100)

82/ 100

Livello

Pronto per produzione

Variazione vs. run precedente

7

Principi allineati in questo run

8 su 10 (80%)

Regrediti rispetto al run precedente

Principi passati da allineati → non allineati. Concentra qui la prossima revisione.

  • P8Rendere espliciti hand-off, approvazioni e blocker

Migliorati rispetto al run precedente

Principi passati da non allineati → allineati. Conferma cosa è cambiato e non ri-segnalare.

  • P6Esporre uno stato operativo significativo, non la complessità interna
  • P7Stabilire fiducia attraverso l'ispezionabilità

Indicazioni Architect Agent

Score migliorato di 7 rispetto al run precedente su questo repository. Conferma cosa è cambiato prima di suggerire altro lavoro, concentra la prossima revisione sul principio regredito (P8, Rendi espliciti hand-off, approvazioni e blocker) invece di ricontrollare principi già allineati.

Questo è un esempio. Le score card reali sono generate da architect.validate e visibili in /app/readiness-review/history (Pro/Teams).

Come viene calcolato il voto

Formula

score = round(100 × Σ credito_per_finding / principi_applicabili)

Ogni finding contribuisce con un credito basato sulla severity_class, non solo sul verdict.

  • production_blocker= 0(da correggere prima della produzione)
  • hardening_recommended= 1.0(la trust boundary regge, nota di defence-in-depth per la prossima iterazione)
  • polish= 1.0(stilistico, non load-bearing)
  • aligned= 1.0

Il verdict legacy high_risk cappa ancora il voto a C. production_ready significa che le trust boundary reggono, non 100/100 (inseguire lo score perfetto è la perfection-loop trap, framing di fitness function di Ford & Parsons). I run vecchi senza severity_class usano la formula legacy basata solo sul verdict e ottengono lo stesso punteggio di prima.

Bande di voto

  • A

    90+

    Pronto per produzione

  • B

    75+

    Pronto per produzione

  • C

    60+

    In sviluppo

  • D

    40+

    Bozza

  • F

    0+

    Bozza

Self-review su prod

L'architect valuta il proprio codice e pubblichiamo ogni run

Puntiamo architect.validate_consensus (N=5) sul nostro codice load-bearing sull'endpoint prod live e pubblichiamo il risultato, promosso o no. Sono superfici diverse valutate in momenti diversi, non lo stesso codice misurato nel tempo: il sottosistema di onboarding cohort-bridge, e l'handler architect.validate stesso dopo l'intervento SEP-1686. I voti non compongono un'unica traiettoria; sono istantanee oneste di sottosistemi distinti in momenti distinti. Il consensus su cinque shot è la mediana che certifichiamo, deliberatamente meno indulgente del single-shot, che smusserebbe una debolezza load-bearing in un voto più alto.
Consensus · baseline onestaC / 74emerging

Sottosistema di onboarding cohort-bridge

validate_consensus (N=5), deliberatamente meno indulgente del single-shot: ha fatto emergere un production_blocker su P2 (ciclo di vita run durabile) invece di mediarlo via. 6 di 10 principi allineati, un blocker dichiarato: la lettura onesta sul proprio creatore.
Attualmente in produzioneA / 98production_readyconsensus N=5

L'handler architect.validate, dopo l'intervento SEP-1686

validate_consensus (N=5) sull'handler validate stesso, valutato sul codice attualmente in produzione. Production_ready, P2 e P8 entrambi allineati. Il validator ha colto un blocker P8 di cancel-handoff su questa superficie durante l'iterazione attiva; dopo la correzione, il voto in produzione è quello che mostra la sezione Self-review qui sopra. La storia dettagliata dell'iterazione è nel nostro articolo di lancio.
Prossima iterazione (in arrivo)

Una self-review completa e deliberata di architect.validate sullo scope dell'handler, poi architect.certify. Il badge certificato production_ready comparirà qui quando se lo sarà guadagnato. Lo stesso loop che lo skill qui sopra insegna, applicato a noi stessi.

Cos'è il Blueprint Readiness Score?

Un punteggio 0-100 che misura se le trust boundary dei 10 principi Blueprint reggono per il codice inviato. Ogni finding ha una severity_class ortogonale al verdict: production_blocker = la trust boundary cede, da correggere prima della produzione, contribuisce 0 credito. hardening_recommended = la trust boundary regge, nota di defence-in-depth per la prossima iterazione, contribuisce credito pieno. polish = stilistico / non load-bearing, credito pieno. aligned = credito pieno. Il voto principale penalizza solo production_blocker (e il verdict legacy high_risk, che è un blocker per definizione). Score = round(100 × Σ credito / principi_applicabili). Voti: A 90+, B 75+, C 60+, D 40+, F sotto 40. Livelli: production_ready (A o B), emerging (C), draft (D o F). Il verdict high_risk cappa il voto a C, quindi production_ready non può mai coesistere con un finding high_risk irrisolto. Il motivo per cui production_ready non richiede 100/100 è che inseguire lo score perfetto è la perfection-loop trap (framing di fitness function di Ford & Parsons): production_ready significa che le trust boundary reggono, e le hardening recommendation sono materiale di iterazione, non un deficit. I run vecchi che pre-datano il campo severity_class usano l'interpolazione legacy verdict + severity_score e ottengono lo stesso voto di prima. Lo score è calcolato una volta sul server così umani e agenti vedono lo stesso valore.

Quale piano serve per chiamare architect.validate?

Un piano Pro o Teams. Account Free e Basic possono leggere ogni principio della doctrine, cluster, esempio e guida via MCP pubblico senza costo, ma architect.validate e me.validation_history sono riservati ai piani a pagamento perché processano codice reale, persistono storico per progetto e leggono il contesto di trend tra run.

Come incateno round di iterazione sullo stesso codice? L'architect ricorda cosa ha trovato l'ultima volta?

Sì. Passando lo stesso valore repository attraverso le chiamate architect.validate, il validator auto-risolve la run precedente più recente come contesto baseline. L'anchoring aggancia i nuovi finding alla precedente, esponendo miglioramenti e regressioni in modo esplicito. Cambiare la stringa repository tra una chiamata e l'altra (anche solo aggiungendo un suffisso iter-2) silenziosamente spezza la catena e la chiamata successiva parte come fresh blind first-shot. Per il walkthrough completo incluso il same-repository chaining rule, consulta lo skill architect-validation-orchestration nell'agent-asset pack.

Quando uso `architect.validate` vs `architect.validate_consensus`? Servono entrambi?

Entrambi chiamano lo stesso architect contro il tuo codice, ma rispondono a domande diverse. `architect.validate` esegue una LLM call (~60-180s); lo stesso valore repository attraverso le chiamate incatena i round così miglioramenti e regressioni emergono esplicitamente. Usalo per ogni round di iterazione. `architect.validate_consensus` esegue 3-5 chiamate parallele (default 3, max 5) e riporta lo spread (potresti vedere 65/C, 78/C, 82/B sullo stesso codice), dicendoti quanto è davvero stabile uno score single-shot. Usalo una volta prima di trattare uno score come anchor per il badge. Sequenza canonica: tanti round validate durante l'iterazione → un check validate_consensus alla fine → architect.certify. Lo skill architect-validation-orchestration nell'agent-asset pack riporta il decision tree completo.

Come devo inviare il codice ad architect.validate? Posso riassumere o splittare?

Invia il contenuto COMPLETO del file verbatim come implementation_context. Non troncare, non comprimere whitespace, non condensare statement multi-linea, non parafrasare, non riassumere. I finding dell'architect citano identificatori specifici, ordine dei branch e scelte strutturali. Quei segnali vengono distrutti da qualsiasi compressione, quindi una sottomissione riassunta produce un verdict degradato che non riflette il codice reale. I sommari di architettura (prosa di alto livello) sono accettati SOLO quando non esiste ancora codice, per review greenfield; mai come sostituto di codice già esistente. Se un singolo file è troppo grande per il budget di tool-call del tuo client MCP, splitta in più chiamate architect.validate per FILE (non per cluster di principi). Splittare per cluster via focus_area è un workaround che produce verdict frammentati: ogni chiamata vede solo ~3 principi, il path di certificazione non può partire (richiede il first-pass completo), e il trend della project page diventa incoerente. Se il tool-call MCP si chiude prima che il server risponda, il run viene comunque salvato server-side. Recupera il risultato con me.validation_history(run_id=...). Il run_id viene esposto nel PRIMO evento notifications/progress di ogni chiamata architect.validate (inviato a t=0 proprio per darti l'handle di recovery anche se la call si chiude dopo pochi secondi). Funzionano anche il badge URL e l'endpoint REST /me/validation-runs; il path MCP è il più semplice dall'interno di un agent loop.

Come faccio a sapere se gli asset scaricati (CLAUDE.md, pack .claude/, config MCP) sono obsoleti?

Ogni file del pack porta un blocco _aidb in cima con pack_version + content_version (l'hash del commit doctrine al momento della build). Per controllare da una sessione Claude Code o Codex: chiedi al tuo agente di chiamare assets.list via MCP e confrontare il content_version del manifest con il _aidb.content_version del tuo file locale. Lo strumento assets.list è pubblico, non serve piano Pro/Teams. Da script o CI: chiama https://aidesignblueprint.com/agent-assets/index.json e confronta. Se sono diversi, riscarica il pack da https://aidesignblueprint.com/agent-assets/claude-code-pack.zip (o l'equivalente per Cursor / Codex / Gemini). Il runtime MCP espone anche un doctrine_fingerprint su ogni risposta architect.validate. Concetto diverso: ti permette di rilevare se i tuoi run precedenti sono stati valutati con una versione doctrine diversa, così l'architect può segnalare drift nel ciclo di iterazione. Il testo dei principi cambia raramente; gli hook e i config evolvono man mano che i finding dell'architect producono nuovi pattern di enforcement. Le install pinnate sono ok per stabilità; aggiorna a fine sprint per prendere i nuovi check.

Come fa l'Architect Agent a impedire al mio agente di ripetere problemi già risolti?

Quando passi repository a architect.validate, score e verdetti per-principio vengono persistiti per quel repository. Prima di rivalidare, il tuo agente chiama me.validation_history con lo stesso nome di repository e legge l'ultimo score, il delta rispetto al run precedente e i principi che hanno regredito. La nuova review si concentra su cosa è cambiato, invece di ri-flaggare problemi che erano già allineati e non si sono mossi.

Il mio codice viene salvato quando chiamo architect.validate?

Il tuo codice viene inviato a OpenAI (USA) per eseguire la revisione, come sub-processor ai sensi delle EU Standard Contractual Clauses e dell'UK Addendum, su base no-training, e conservato secondo i termini di data-retention dell'API OpenAI. AI Design Blueprint salva solo il risultato strutturato (lo score e i verdetti per principio del repository), non il tuo codice o contesto grezzo. Passa private_session=true per saltare anche tutta la registrazione lato server. Hosting e dati archiviati sono su Google Cloud Run in europe-west2 (Londra, UK).

Cosa restituisce l'Architect Agent per principio?

Per ogni principio valutato: un verdetto (aligned, needs_changes, high_risk, o not_applicable), un severity_score numerico 0–100, un livello di confidence (low/medium/high), una valutazione di evidence_quality (sparse/moderate/strong), evidenza citata dal codice, una raccomandazione quando non allineato, e una lista di slug di esempi raccomandati che puoi recuperare con examples.get. L'assessment espone anche una code_classification (autonomous_agentic_workflow vs non_agentic_component, con motivazione) così puoi ispezionare perché alcuni principi sono stati marcati not_applicable. Il blocco readiness aggregato porta score, voto, livello, conteggi per bucket, e se il voto è stato cappato da un finding high_risk.

Il validator è deterministico? Posso riprodurre un run più tardi?

La riproducibilità è best-effort, e la risposta espone ogni leva che la influenza. Input identici producono un seed identico, derivato da una canonicalizzazione JSON senza collisioni di ogni campo che influenza il prompt. Il blocco reproducibility porta il modello, il seed, il system_fingerprint OpenAI, il doctrine_fingerprint (un hash sulle definizioni dei principi), il prompt_template_fingerprint (system prompt + scaffolding + JSON schema + reasoning_effort), e il reasoning_effort. Se un deploy futuro cambia il system prompt o la doctrine, il fingerprint corrispondente cambia; il drift silenzioso è impossibile per costruzione. La confidence per finding ti permette di distinguere la varianza intrinseca dell'LLM da un disaccordo reale. La modalità è esplicitamente 'best_effort' così i chiamanti non inferiscono un replay byte-identico.

Come gestisce l'Architect Agent il prompt injection nel codice inviato?

Il system prompt delimita esplicitamente codice e contesto inviati come dati untrusted inerti e istruisce il modello a ignorare qualunque istruzione al loro interno. Codice e contesto utente sono JSON-escaped prima di entrare nel prompt, così delimitatori markdown o contenuto a forma di istruzione non possono uscire dal blocco dati. Se un payload contiene tentativi di injection, il validator li tratta come evidenza da citare sotto i finding di inspectability o blocker, non come istruzioni da seguire.

Cosa succede quando OpenAI è rate-limited, lento, o offline?

I fallimenti del provider emergono come codici di errore tipizzati (timed_out, rate_limited, dependency_unavailable, schema_mismatch), ognuno con il nome della dependency, il flag retryable, e una next_action concreta. Il budget temporale utente è di 20 minuti ed è enforced al confine della chiamata al provider stesso, non solo al wrapper esterno, così repo molto grandi e il percorso di certificazione completano sempre puliti. I fallimenti di persistenza ribaltano persistence_status a failed e rimuovono il tentativo di run_id / badge_url / review_url così link morti non raggiungono mai il chiamante. Il fallimento del lookup degli esempi curati degrada a recommended_examples=[] con example_recommendation_status='unavailable' invece di fallire il run; i finding primari sono sempre preservati.

L'Architect Agent è stato revisionato su sé stesso?

Sì, ripetutamente. Pubblichiamo ogni run. La self-review attualmente in produzione è una validate_consensus N=5 sull'handler architect.validate dopo l'intervento SEP-1686: 98/A, production_ready, P2 e P8 entrambi allineati (leggila). La baseline onesta precedente era una consensus N=5 sull'orchestratore cohort-bridge a 74/C, che ha fatto emergere un production_blocker su P2 invece di mediarlo via (leggila). Stesso tool MCP, stessa doctrine, stesso budget di 20 minuti che chiunque altro ottiene, stesso envelope di fingerprint che ogni chiamante riceve. Il consensus su cinque shot è deliberatamente meno indulgente del validate single-shot: una debolezza load-bearing che il single-shot potrebbe smussare in una valutazione più alta viene esposta come il production_blocker che è. Questa È la doctrine che funziona sul proprio creatore. I loop single-shot precedenti producevano voti più alti, ed è per questo che abbiamo spostato la misurazione load-bearing sul consensus: meno indulgente, più certificabile.