d+
devoteam
Snowflake Partner

Expert quiz

Seuil de réussite : 24/30. Prérequis : ≥ 12 mois d'utilisation.

Questions#

0/ 30auto-scored: 0 / 30 · pass 24/30
Q1Multiple choice

Qu'est-ce que CocoSession utilise en interne pour piloter le client du SDK ?#

Q2Multiple choice

Quel invariant permet à examples/headless_pipeline.py de s'exécuter depuis un terminal ordinaire sans Streamlit installé ?#

Q3Multiple choice

Quand un appel d'outil nécessite une approbation, qu'est-ce qui bloque exactement, et jusqu'à quand ?#

Q4Multiple choice

Quels champs CocoOptions.options_hash() hashe-t-il, et à quoi cela sert-il ?#

Q5Multiple choice

Pourquoi app_viewer() n'importe-t-il jamais copilot_rail() (et inversement) ?#

Q6Multiple choice

Quelles familles d'outils sont traitées comme cas particulier dans permissions.py pour toujours créer une nouvelle demande d'approbation, en ignorant tout « always allow » antérieur ?#

Q7Multiple choice

Quel message SnowflakeConfigNotFoundError porte-t-elle ?#

Q8Multiple choice

Quelle exception est levée lorsqu'un binaire cortex est trouvé au chemin configuré mais ne répond pas correctement à --version ?#

Q9Multiple choice

En quoi SessionStartError diffère-t-elle de SessionNotReadyError ?#

Q10Multiple choice

Que fait le kwarg context= de wrap_exception() ?#

Q11Multiple choice

Que couvre CwdUploadError ?#

Q12Multiple choice

Quelle exception est également une TimeoutError, en plus d'être une CocoError ?#

Q13Multiple choice

Dans le modèle de menace STRIDE, quelle sévérité est attribuée à l'injection de prompt déclenchant des outils dangereux, et qu'est-ce qui l'atténue ?#

Q14Multiple choice

Quelle sévérité et quelle atténuation s'appliquent au risque d'escalade lié à « Always allow » ?#

Q15Multiple choice

Quel est le statut du risque de répudiation (absence de journal persisté des actions destructrices approuvées) ?#

Q16Multiple choice

Comment le risque de divulgation d'informations lié à l'apparition de secrets dans l'historique de conversation/les journaux est-il atténué ?#

Q17Multiple choice

Quel risque de chaîne d'approvisionnement le modèle de menace signale-t-il, et comment est-il atténué ?#

Q18Multiple choice

Selon le guidage « Roles and grants », pourquoi se connecter avec ACCOUNTADMIN (ou un grant tel que MANAGE WAREHOUSES) est-il déconseillé, même avec des portes d'approbation en place ?#

Q19Select all that apply

Lesquels de ces éléments sont explicitement hors périmètre pour le pack de guides de ce produit, selon la décision de cadrage par module ? (Choix multiple — sélectionnez toutes les réponses applicables)#

Q20Multiple choice

Quelles cibles de déploiement le modèle de menace considère-t-il, et lesquelles sont réellement livrées aujourd'hui ?#

Q21Multiple choice

Pourquoi le pack de guides omet-il un chapitre « Infrastructure as code » ?#

Q22Multiple choice

Pourquoi reference-examples traite-t-il chacune des trois applications d'exemple comme une seule section, plutôt que de documenter chaque page Streamlit interne de chaque application ?#

Q23Multiple choice

Qu'est-ce que text_renderer en tant que point d'extension ?#

Q24Multiple choice

Comment la librairie décide-t-elle de rendre la carte d'un outil inconnu ou fourni via MCP ?#

Q25Multiple choice

Comment l'App Builder permet-il à un « type » d'apporter son propre guidage CoCo dans un job de génération ?#

Q26Multiple choice

Qu'est-ce qui détermine si l'étape de profilage d'un type de l'App Builder est un analyseur déterministe ou un job CoCo ?#

Q27Multiple choice

Qui récupère les sources de grounding « documents » ou « urls » de l'App Builder — la session CoCo ou l'application hôte ?#

Q28Multiple choice

Un collègue demande pourquoi le dépôt n'a pas besoin d'un chapitre reference-commands de flags CLI comme le ferait un outil CLI typique. Quelle est l'explication exacte ?#

Q29Multiple choice

Deux dépôts sont impliqués dans la publication vers PyPI aujourd'hui. Quel est l'arrangement actuel (temporaire), et pourquoi ?#

Q30Multiple choice

En formant un nouveau membre de l'équipe au flux de release : quelle étape vient immédiatement après que DRY_RUN=1 make sync-release semble correct ?#

Answer Key#

Every answer is also reachable per question above. This section keeps the full key for offline review and printing.

Show the complete answer key
A1

B — CocoSession possède un threading.Thread nommé coco-session exécutant une boucle asyncio qui enveloppe CortexCodeSDKClient.

A2

A — Les symboles headless du cœur s'importent sans charger Streamlit ; les exports UI se résolvent paresseusement via __getattr__/_LAZY_ATTRS, ce qui est ce qui permet à headless_pipeline.py de fonctionner sans Streamlit installé.

A3

B — can_use_tool bloque le thread worker sur PermissionManager.wait_for_decision() jusqu'à résolution ou jusqu'à ce que approval_timeout_seconds s'écoule.

A4

B — options_hash() ne hashe que les champs affectant les permissions d'outils ; le worker ne redémarre que lorsque ce hash change, pas à chaque édition d'option.

A5

B — C'est un invariant documenté : le composant de prévisualisation reste agnostique de l'hôte et ne connaît pas les files de jobs.

A6

B — permissions.py traite AskUserQuestion et ExitPlanMode comme cas particulier pour toujours créer une nouvelle demande, indépendamment de tout « always allow » antérieur.

A7

B — C'est le texte exact du message de SnowflakeConfigNotFoundError.

A8

B — CLIProbeError signifie spécifiquement que le binaire existe mais a échoué à répondre à --version ; CLINotFoundError couvre le cas non-sur-PATH.

A9

B — SessionStartError est une erreur de worker qui échoue à démarrer ; SessionNotReadyError couvre le délai/échec de démarrage une fois démarré.

A10

B — context= ("session_start", "session_ready"/"session", "query", "approval") oriente vers quelle sous-classe CocoError la détection de message aboutit.

A11

B — CwdUploadError est levée aussi bien pour les noms invalides, les extensions non autorisées, les charges surdimensionnées, que les conflits d'écrasement.

A12

B — ApprovalTimeoutError est documentée comme étant aussi une TimeoutError.

A13

B — L'injection de prompt est notée sévérité élevée ; les portes d'approbation interceptant avant l'exécution sont l'atténuation principale, aux côtés d'une recommandation de rôle à privilège minimal.

A14

B — L'escalade « Always allow » est de sévérité moyenne, atténuée purement par sa portée par outil/par session.

A15

B — La répudiation est de sévérité moyenne, ouverte sous SEC-01 — rien de durable n'est écrit en dehors de l'état de session en mémoire.

A16

B — L'atténuation est que la librairie ne journalise jamais les identifiants et que le SDK les masque (redacte) de sa propre sortie.

A17

A — Le risque signalé est l'élévation de privilège via une dépendance compromise ; l'atténuation est pip-audit, Gitleaks, et un uv.lock commité.

A18

A — Les portes d'approbation décident seulement si une instruction s'exécute ; une fois approuvée, sa portée est bornée uniquement par les grants réels du rôle connecté.

A19

A, B, C, F — A, B, C, F

A20

C — Le modèle de menace considère local/SiS/SPCS, mais seul local est réellement livré ; SiS/SPCS ne sont que du périmètre du modèle de menace et de la feuille de route.

A21

B — La raison de cadrage donnée est simplement qu'il n'existe aucun fichier *.tf où que ce soit dans le dépôt.

A22

A — La décision de cadrage explicite est un H2 par application d'exemple, pour éviter de reformuler les README d'exemple page par page.

A23

B — text_renderer accepte un nom de préréglage ou un callable sur panel() et les fonctions d'aide à l'affichage associées.

A24

B — Le dispatch tool_family(name) dans tool_names.py fait correspondre les noms d'outils à une ToolFamily, consommée par tool_cards.py/tool_extract.py pour le rendu.

A25

B — Chaque dossier de type peut porter son propre SKILL.md (+ reference/checklist), monté via add_dirs, plus un types/shared/SKILL.md partagé.

A26

B — grounding_kind décide : tabular utilise l'analyseur déterministe engine/profile.py, les autres types passent par CoCo.

A27

B — Les documents/URLs sont récupérés par l'application hôte ; aucun outil réseau n'est accordé à la session CoCo.

A28

B — La surface principale de la librairie est l'API Python, pas un CLI ; les cibles du Makefile obtiennent reference-commands pour les démos, tandis que l'API est le propre analogue « Commands » de la librairie.

A29

B — lletourmy/streamlit-coco est la surface de release publique temporaire taguée pour la publication PyPI, jusqu'à ce que DevoteamSP/streamlit-coco soit validé pour PyPI.

A30

B — Après un dry run propre, l'étape suivante documentée est la synchronisation commitée/poussée, puis le tag vX.Y.Z sur lletourmy/streamlit-coco, jamais sur -dev.