canot.ioExit scan · Scan de sortie

Diffusion interne

Scan de sortie : dbt

Constats au 2026-10-19 10:00 UTC · édition : dbt 1.12.6 · Canot X

DSI

8 modèles dbt, 8 tests dbt, 4 sources dbt ; 8 relations stockées ; 19 liens de dépendance. Matérialisations : 4 table, 4 view. Portabilité : 17 traduisibles, 0 à reconstruire (F13), 0 non déterminé, 4 portables tel quel. Rejouabilité : 8 modèles traduits, non testés par EXPLAIN DuckDB (catalog.json non lu : EXPLAIN DuckDB non exécuté).

DAF

Consommation non lue : fichiers de projet : ni crédits ni octets facturés ; le scan de la plateforme cible les mesure.

RSSI

Aucune connexion à une plateforme : fichiers lus localement ; le code est réduit à des empreintes et des comptes. 0 dépendance externe déclarée (F01) ; écritures hors de la plateforme, droits et politiques non lus ici.

Périmètre

  • Plateforme : dbt
  • Périmètre : projet dbt canot_lab : adaptateur snowflake, dbt 1.12.6, manifeste du 2026-10-17
  • Niveau de droits : 1 (inventaire, volumes, consommation)
  • Mode SQL : aucun SQL émis (fichiers lus)
  • Lectures : 2 faites sur 3
  • Contenu lu : 8 tables, 23 objets, 0 famille de requêtes
  • Versions : canot X, duckdb X, sqlglot X

Capacités

Ce rapport est un inventaire : inventorié, ni exporté ni rejoué.

NiveauCe rapportCanot sur dbt
Inventairefait par ce scan (niveau 1)complet, niveau 1
Exportnon fait par ce scaniceberg, avec canot drill
Preuvenon faite par ce scanP1 parité des données ; P2 rejeu des requêtes ; P3 rejeu du pipeline, avec canot drill dbt://PROJET DESTINATION (lecture seule, avec les identifiants du profil dbt)

Connecteur dbt : testé ; test enregistré : 2026-10-19 : canot scan dbt://lab/dbt (projet dbt du banc d'essai, manifeste dbt 1.12.6, adaptateur Snowflake) ; canot drill dbt://lab/dbt --target snowflake sur le compte d'essai Snowflake : 8 relations copiées et identiques, 8 modèles rejoués (docs/scan.md) ; profils BigQuery et Databricks écrits, non testés.

Ce que Canot ne peut pas prouver ici : P1 couvre les sources, seeds, snapshots et modèles table ou incrémentaux trouvés dans l'entrepôt ; P3 couvre les modèles SQL que DuckDB rejoue et dont la table d'origine est dans la copie ; les vues sont rejouées sans comparaison ; les modèles Python, les modèles incrémentaux et les modèles à reconstruire (F13) sont comptés, non prouvés.

Coûts observés

Non lu : fichiers de projet : ni crédits ni octets facturés ; le scan de la plateforme cible les mesure.

Mouvements

0 figée, 4 vivantes, 0 recréée, 4 non déterminées.

recréée : DDL de moins de 7 jours sans écriture ultérieure ; vivante : écriture de moins de 30 jours ; figée : dernière écriture plus ancienne ; non déterminée : écritures non lues. Base : B02.

TableTypeVolumeMouvementPreuve
CANOT_LAB.DBT_dbt_mart.dbt_customer_ltvTABLEnon luvivantedernière écriture le 2026-10-17
CANOT_LAB.DBT_dbt_mart.dbt_daily_revenueTABLEnon luvivantedernière écriture le 2026-10-17
CANOT_LAB.DBT_dbt_mart.dbt_fct_ordersTABLEnon luvivantedernière écriture le 2026-10-17
CANOT_LAB.DBT_dbt_mart.int_order_totalsTABLEnon luvivantedernière écriture le 2026-10-17
CANOT_LAB.RAW.customersTABLEnon lunon déterminéécritures non lues
CANOT_LAB.RAW.order_linesTABLEnon lunon déterminéécritures non lues
CANOT_LAB.RAW.ordersTABLEnon lunon déterminéécritures non lues
CANOT_LAB.RAW.productsTABLEnon lunon déterminéécritures non lues

Ce qui ne part pas avec la copie

Objets à reconstruire ou à décrire

TypeNombreExemples
DAG1dbt:canot_lab
modèle dbt8model.canot_lab.dbt_customer_ltv, model.canot_lab.dbt_daily_revenue, model.canot_lab.dbt_fct_orders, model.canot_lab.int_order_totals, model.canot_lab.stg_customers …
paquet dbt2paquet:dbt, paquet:dbt_snowflake
source dbt4source.canot_lab.raw.customers, source.canot_lab.raw.order_lines, source.canot_lab.raw.orders, source.canot_lab.raw.products
test dbt8test.canot_lab.not_null_dbt_customer_ltv_customer_id.187864d35c, test.canot_lab.not_null_dbt_fct_orders_order_id.42b5497576, test.canot_lab.not_null_stg_customers_customer_id.e2cfb1f9aa, test.canot_lab.not_null_stg_orders_order_id.81cfe2fe64, test.canot_lab.unique_dbt_customer_ltv_customer_id.d86203d0a3 …

Colonnes de type propre à la plateforme (0)

Aucun.

Carte de sortie

Portabilité déclarée par la collecte pour chaque objet lu. « Exporté » n'est pas « portable » : une archive au format de l'éditeur ne s'utilise qu'avec cet éditeur.

PortabilitéFamille d'objetObjets
portable tel queldonnées4
traduisible (texte ouvert, rejeu possible)planification1
traduisible (texte ouvert, rejeu possible)traitement16

Dépendances

Aucune dépendance externe observée dans les lectures faites.

Rejouabilité des requêtes

CatégorieSignificationFamillesExécutionsPoids
C0traduite et acceptée par DuckDB0non lunon lu
C1non analysable0non lunon lu
C2commande, non analysée0non lunon lu
C3traduction impossible0non lunon lu
C4erreur d'analyse DuckDB0non lunon lu
C5erreur de liaison (objet ou fonction propre à la plateforme)0non lunon lu
C6variable0non lunon lu
C7DDL, COPY, MERGE, requêtes de métadonnées : comptées à part0non lunon lu
ÉlémentValeurNature et base
Taux C0, par famillesNon estimé : catalog.json non lu : EXPLAIN DuckDB non exécuté.non estimé
Taux C0, par exécutionsNon estimé : sans objet : les fichiers dbt ne portent aucun historique par requête.non estimé
Taux C0, pondéréNon lu : crédits et octets non lus (fichiers dbt).non lu

Base : 0/0 modèles testés, 8 non testés, SQL des modèles et snapshots du manifeste, sqlglot X, duckdb X.

accepté ≠ résultat identique. Traduit vers DuckDB, non comparé.

8 familles non testées.

Familles les plus exécutées (formes normalisées)

Aucun.

Fourchettes

Estimations de cadrage : chaque fourchette porte ses hypothèses. Un canot drill remplace le débit supposé par une mesure.

ÉlémentValeurNature et base
Volume à copierNon lu : catalog.json non lu.non lu
Durée de lecture de la copieNon estimé : volume non lu.non estimé
Coût de lecture de la copieNon estimé : dépend de la plateforme qui héberge les tables, non lue ici.non estimé
Reprise0,0 j
  • 0 objet à reconstruire et 0 colonne de type propre à la plateforme
  • hypothèses q4o : 0,25 à 1,5 jour par objet, 0,1 à 0,5 par colonne, à discuter
estimé, confiance basse
objets × jours par objet + colonnes × jours par colonne

Constats

Chaque constat est étiqueté « À examiner », sans niveau de gravité. Il dit ce qui est observé et ce qui ne l'est pas.

F11 · Chaîne planifiée et ses échecsÀ examiner

1 constat

CibleObservé
objet dbt:canot_labDAG, planification non lue (orchestrateur hors des fichiers dbt), état dernière invocation : build ; 1 exécution, 0 échec, dernière le 2026-10-17.

F12 · Lecture incomplèteÀ examiner

1 constat

CibleObservé
lecture B03target/catalog.json non lu (absent ou non exposé) ; limite : colonnes, types et volumes des relations ; rejouabilité non testée par EXPLAIN DuckDB.

Aucun constat pour : F01, F02, F03, F04, F05, F06, F07, F08, F09, F10, F13, F14, F15, F16. Une absence de constat ne vaut que pour les lectures faites (voir F12 et la méthode).

Ce que ce rapport ne chiffre pas

  • Consommation de la plateforme : non lue : fichiers de projet : ni crédits ni octets facturés ; le scan de la plateforme cible les mesure.
  • Volume à copier : catalog.json non lu.
  • Durée de lecture de la copie : volume non lu.
  • Coût de lecture de la copie : dépend de la plateforme qui héberge les tables, non lue ici.
  • Historique facturé : fichiers de projet : ni crédits ni octets facturés ; le scan de la plateforme cible les mesure.
  • Votre tarif contractuel : prix de votre contrat non lu.
  • Stockage de destination, fonctionnement en parallèle des deux plateformes, exploitation après la sortie : dépendent de votre contrat et de votre architecture.
  • Résultats identiques des requêtes traduites : accepté ≠ résultat identique ; traduites vers DuckDB, non comparées ; un canot drill compare les résultats.
  • Projections de coût fournies par la plateforme : non utilisées, car elles ne peuvent pas être vérifiées depuis le scan.

Utiliser ce rapport pour vos travaux réglementaires (RGPD, DORA, NIS2, Data Act, SecNumCloud, ABE)

Ces éléments peuvent appuyer vos propres travaux sur le RGPD, DORA, NIS2, le Data Act, SecNumCloud ou les orientations de l'ABE sur l'externalisation. Ce sont des éléments de preuve, pas une conclusion : ce rapport n'est pas une certification, ce n'est pas un conseil juridique, et il ne dit pas si vos contrats ou votre organisation satisfont à une réglementation.

CadreCe qu'il demande, en brefCe que ce rapport vous apporteCe qu'il ne couvre pas
DORA (règlement (UE) 2022/2554)Art. 28, § 8, et art. 30, § 3, point f) : une transition réaliste, avec une période adéquate.Le débit mesuré et une fourchette de temps de reprise issus de l'exercice ; une fourchette de durée de copie (estimée) dans le scan.Hors validation humaine et bascule de vos applications.
DORA (règlement (UE) 2022/2554)Art. 28 : savoir ce qui dépend du prestataire TIC.Ce qui ne se déplace pas tel quel : vues, routines, tâches, politiques, dépendances externes, avec les éléments à l'appui de chaque constat.Un inventaire de la plateforme, pas de vos contrats ni des applications qui y sont connectées.
Data Act (règlement (UE) 2023/2854)Art. 29 : les frais de changement sont supprimés à partir du 12 janvier 2027.L'effort qui reste à votre charge : coût de lecture, durée de copie et estimations de reprise, chacun marqué mesuré, calculé ou estimé.Ne dit rien des frais que votre prestataire peut encore appliquer avant cette date. Les prix sont des tarifs catalogue datés, pas votre contrat.
RGPD (règlement (UE) 2016/679)Chapitre V (transferts) et art. 32 (sécurité du traitement).L'endroit où la copie est hébergée, et les objets de sécurité qui ne la suivent pas (politiques de masquage et d'accès aux lignes, tags).Le lieu d'hébergement est la destination que vous avez choisie. L'appréciation juridique d'un transfert vous revient.
RGPD (règlement (UE) 2016/679)Art. 5, § 1, point c) : minimisation des données.Le scan lit les métadonnées et l'historique d'exécution, pas le contenu des tables. Le texte SQL est masqué et les identités sont pseudonymisées.Vaut pour le scan seulement : un exercice de sortie (drill) lit les données qu'il copie.
NIS2 (directive (UE) 2022/2555)Art. 21, § 2, point d) : sécurité de la chaîne d'approvisionnement, y compris la relation avec chaque prestataire direct.Ce qui vous lie à ce prestataire : dépendances externes et objets qui ne se déplacent pas tels quels, avec les éléments à l'appui de chaque constat.N'évalue pas les mesures de sécurité du prestataire.
Orientations de l'ABE sur l'externalisation (EBA/GL/2019/02)Stratégies de sortie : documentées, réalistes, suffisamment testées et réexaminées périodiquement, pour les externalisations visées par les orientations.L'exercice de sortie (drill) et l'inventaire de ce qui ne se déplace pas (scan), comme éléments de test dans votre dossier de sortie.Un exercice. Les prestataires alternatifs, le volet métier et le réexamen périodique vous reviennent. Vérifiez quel texte s'applique à vous en plus de DORA.

Références arrêtées au 2026-10-19. Vérifiez les textes en vigueur : ils évoluent, et leur application dépend de votre situation.

Méthode

2 lectures faites sur 3. Chaque lecture est enregistrée avec son statut et son motif ; une valeur non lue reste vide, jamais 0.

IdVueStatutMotifLignesFenêtreLatence
B03target/catalog.jsonnon luabsent ou non exposé ; limite : colonnes, types et volumes des relations ; rejouabilité non testée par EXPLAIN DuckDBnon lu
B01target/manifest.jsonlu583
B02target/run_results.jsonlu16du 2026-10-17 au 2026-10-17

Droits utilisés

Niveau 1 : lecture des fichiers manifest.json, run_results.json et catalog.json du dossier target/. Jamais demandés : le scan n'ouvre aucune connexion à l'entrepôt et ne lance aucune commande dbt (ni parse, ni compile, ni run).

Coût du scan

ÉlémentValeurNature et base
Requêtes envoyées0 requêtemesuré
Durée de lecture0 smesuré

Garde-fous

  • Aucune connexion : Canot lit les fichiers JSON du projet, sans réseau ni commande ; aucune requête n'est envoyée.
  • Utilisateurs et rôles des requêtes pseudonymisés par HMAC, avec un sel tiré pour ce scan et jamais écrit ; valeurs d'étiquettes hachées ; emplacements réduits au bucket.
  • Le texte SQL brut n'est jamais écrit : seules les formes normalisées, littéraux masqués, sortent de la collecte.

Règles

  • Mouvement : recréée : DDL de moins de 7 jours sans écriture ultérieure ; vivante : écriture de moins de 30 jours ; figée : dernière écriture plus ancienne ; non déterminée : écritures non lues.
  • Stockage sans lecture : fenêtre réelle de la vue lue, comparée à 365 jours ; les angles morts de chaque vue sont listés dans le constat.
  • Durée de copie : débit supposé de 20 à 80 Mo/s.
  • Les prix catalogue sont datés et sourcés ; ils ne remplacent pas le prix de votre contrat.

Suite

Ce rapport décrit votre plateforme ; il ne recommande ni de partir ni de rester.

Pour mesurer une sortie sur un périmètre choisi : canot drill copie vers Apache Iceberg, compare la source et la copie, et signe un dossier de preuve.

Pour aller plus loin, le diagnostic q4o, dès 22 000 € HT : votre tarif contractuel, l'exécution réelle, des scénarios, les étapes à suivre. canot.io

Internal distribution

Exit scan: dbt

Findings as of 2026-10-19 10:00 UTC · edition: dbt 1.12.6 · Canot X

CIO

8 dbt models, 8 dbt tests, 4 dbt sources; 8 stored relations; 19 dependency links. Materializations: 4 table, 4 view. Portability: 17 translatable, 0 to rebuild (F13), 0 not determined, 4 portable as is. Replayability: 8 models translated, not tested by DuckDB EXPLAIN (catalog.json not read: DuckDB EXPLAIN not run).

CFO

Consumption not read: project files: no credits and no billed bytes; the scan of the target platform measures them.

CISO

No connection to a platform: files read locally; code is reduced to fingerprints and counts. 0 declared external dependencies (F01); writes outside the platform, privileges and policies not read here.

Scope

  • Platform: dbt
  • Scope: dbt project canot_lab: adapter snowflake, dbt 1.12.6, manifest of 2026-10-17
  • Privilege level: 1 (inventory, volumes, consumption)
  • SQL mode: no SQL issued (files read)
  • Reads: 2 done out of 3
  • Content read: 8 tables, 23 objects, 0 query families
  • Versions: canot X, duckdb X, sqlglot X

Capabilities

This report is an inventory: inventoried, neither exported nor replayed.

LevelThis reportCanot on dbt
Inventorydone by this scan (level 1)full, level 1
Exportnot done by this scaniceberg, with canot drill
Evidencenot done by this scanP1 data parity; P2 query replay; P3 pipeline replay, with canot drill dbt://PROJECT DESTINATION (read-only, with the dbt profile's credentials)

dbt connector: tested; recorded test: 2026-10-19: canot scan dbt://lab/dbt (test bench dbt project, dbt 1.12.6 manifest, Snowflake adapter); canot drill dbt://lab/dbt --target snowflake on the Snowflake trial account: 8 relations copied and identical, 8 models replayed (docs/scan.md); BigQuery and Databricks profiles written, untested.

What Canot cannot prove here: P1 covers the sources, seeds, snapshots and table or incremental models found in the warehouse; P3 covers the SQL models that DuckDB replays and whose original table is in the copy; views are replayed without comparison; Python models, incremental models and models to rebuild (F13) are counted, not proven.

Observed costs

Not read: project files: no credits and no billed bytes; the scan of the target platform measures them.

Movements

0 frozen, 4 live, 0 recreated, 4 not determined.

recreated: DDL less than 7 days old with no later write; live: write less than 30 days old; frozen: older last write; not determined: writes not read. Based on: B02.

TableTypeVolumeMovementEvidence
CANOT_LAB.DBT_dbt_mart.dbt_customer_ltvTABLEnot readlivelast write on 2026-10-17
CANOT_LAB.DBT_dbt_mart.dbt_daily_revenueTABLEnot readlivelast write on 2026-10-17
CANOT_LAB.DBT_dbt_mart.dbt_fct_ordersTABLEnot readlivelast write on 2026-10-17
CANOT_LAB.DBT_dbt_mart.int_order_totalsTABLEnot readlivelast write on 2026-10-17
CANOT_LAB.RAW.customersTABLEnot readnot determinedwrites not read
CANOT_LAB.RAW.order_linesTABLEnot readnot determinedwrites not read
CANOT_LAB.RAW.ordersTABLEnot readnot determinedwrites not read
CANOT_LAB.RAW.productsTABLEnot readnot determinedwrites not read

What does not leave with the copy

Objects to rebuild or describe

TypeCountExamples
DAG1dbt:canot_lab
dbt model8model.canot_lab.dbt_customer_ltv, model.canot_lab.dbt_daily_revenue, model.canot_lab.dbt_fct_orders, model.canot_lab.int_order_totals, model.canot_lab.stg_customers …
dbt package2paquet:dbt, paquet:dbt_snowflake
dbt source4source.canot_lab.raw.customers, source.canot_lab.raw.order_lines, source.canot_lab.raw.orders, source.canot_lab.raw.products
dbt test8test.canot_lab.not_null_dbt_customer_ltv_customer_id.187864d35c, test.canot_lab.not_null_dbt_fct_orders_order_id.42b5497576, test.canot_lab.not_null_stg_customers_customer_id.e2cfb1f9aa, test.canot_lab.not_null_stg_orders_order_id.81cfe2fe64, test.canot_lab.unique_dbt_customer_ltv_customer_id.d86203d0a3 …

Columns with a platform-specific type (0)

None.

Exit map

Portability declared by collection for each object read. "Exported" is not "portable": an archive in the vendor's format can only be used with that vendor.

PortabilityObject familyObjects
portable as isdata4
translatable (open text, replay possible)scheduling1
translatable (open text, replay possible)processing16

Dependencies

No external dependency observed in the reads done.

Query replayability

CategoryMeaningFamiliesExecutionsWeight
C0translated and accepted by DuckDB0not readnot read
C1not parseable0not readnot read
C2command, not analyzed0not readnot read
C3translation impossible0not readnot read
C4DuckDB parse error0not readnot read
C5binding error (platform-specific object or function)0not readnot read
C6variable0not readnot read
C7DDL, COPY, MERGE, metadata queries: counted separately0not readnot read
ItemValueNature and basis
C0 rate, by familiesNot estimated: catalog.json not read: DuckDB EXPLAIN not run.not estimated
C0 rate, by executionsNot estimated: not applicable: dbt files carry no per-query history.not estimated
C0 rate, weightedNot read: credits and bytes not read (dbt files).not read

Based on: 0/0 models tested, 8 not tested, SQL of the manifest models and snapshots, sqlglot X, duckdb X.

accepted ≠ identical result. Translated to DuckDB, not compared.

8 families not tested.

Most executed families (normalized forms)

None.

Ranges

Planning estimates: each range carries its assumptions. A canot drill replaces the assumed throughput with a measurement.

ItemValueNature and basis
Volume to copyNot read: catalog.json not read.not read
Copy read timeNot estimated: volume not read.not estimated
Copy read costNot estimated: depends on the platform that hosts the tables, not read here.not estimated
Rework0.0 d
  • 0 objects to rebuild and 0 columns with a platform-specific type
  • q4o assumptions: 0.25 to 1.5 day per object, 0.1 to 0.5 per column, open to discussion
estimated, low confidence
objects × days per object + columns × days per column

Findings

Each finding is labeled "To review", with no severity level. It states what is observed and what is not.

F11 · Scheduled chain and its failuresTo review

1 finding

TargetObserved
object dbt:canot_labDAG, schedule not read (orchestrator outside the dbt files), state last invocation: build; 1 run, 0 failures, last on 2026-10-17.

F12 · Incomplete readTo review

1 finding

TargetObserved
read B03target/catalog.json not read (absent or not exposed); limits: columns, types and volumes of relations; replayability not tested by DuckDB EXPLAIN.

No finding for: F01, F02, F03, F04, F05, F06, F07, F08, F09, F10, F13, F14, F15, F16. An absence of findings only holds for the reads done (see F12 and the method).

What this report does not quantify

  • Platform consumption: not read: project files: no credits and no billed bytes; the scan of the target platform measures them.
  • Volume to copy: catalog.json not read.
  • Copy read time: volume not read.
  • Copy read cost: depends on the platform that hosts the tables, not read here.
  • Billed history: project files: no credits and no billed bytes; the scan of the target platform measures them.
  • Your contract rate: your contract price not read.
  • Destination storage, running both platforms in parallel, operations after the exit: depend on your contract and your architecture.
  • Identical results of translated queries: accepted ≠ identical result: translated to DuckDB, not compared; a canot drill compares the results.
  • Cost projections provided by the platform: not used: they cannot be verified from the scan.

Using this report for your regulatory work (GDPR, DORA, NIS2, Data Act, SecNumCloud, EBA)

These elements can support your own work on GDPR, DORA, NIS2, the Data Act, SecNumCloud or the EBA outsourcing guidelines. They are evidence, not a finding: this report is not a certification, it is not legal advice, and it does not say whether your contracts or your organization meet any regulation.

FrameworkWhat it asks, in shortWhat this report gives youWhat it does not cover
DORA (Regulation (EU) 2022/2554)Art. 28(8) and 30(3)(f): a realistic transition, with an adequate period.Measured throughput and a recovery time range from the exercise; a copy duration range (estimated) in the scan.Excludes human validation and the cutover of your applications.
DORA (Regulation (EU) 2022/2554)Art. 28: knowing what depends on the ICT provider.What does not move as is: views, routines, tasks, policies, external dependencies, with the evidence behind each finding.An inventory of the platform, not of your contracts or of the applications connected to it.
Data Act (Regulation (EU) 2023/2854)Art. 29: switching charges are withdrawn from 12 January 2027.The effort that remains yours: read cost, copy duration and rework estimates, each marked measured, computed or estimated.Says nothing about charges your provider may still apply before that date. Prices are dated catalogue figures, not your contract.
GDPR (Regulation (EU) 2016/679)Chapter V (transfers) and Art. 32 (security of processing).Where the copy is hosted, and which security objects do not move with it (masking and row policies, tags).The hosting location is the destination you chose. The legal assessment of a transfer is yours.
GDPR (Regulation (EU) 2016/679)Art. 5(1)(c): data minimisation.The scan reads metadata and execution history, not table contents. SQL text is masked and identities are pseudonymised.Applies to the scan only: an exit exercise (drill) reads the data it copies.
NIS2 (Directive (EU) 2022/2555)Art. 21(2)(d): security of the supply chain, including your relationship with each direct service provider.What ties you to this provider: external dependencies and objects that do not move as is, with the evidence behind each finding.Does not assess the provider's security measures.
EBA Guidelines on outsourcing arrangements (EBA/GL/2019/02)Exit strategies: documented, realistic, sufficiently tested and reviewed periodically for the outsourcing the guidelines target.The exit exercise (drill) and the inventory of what does not move (scan), as test evidence in your exit file.One exercise. Alternative providers, the business side and the periodic review are yours. Check which text applies to you alongside DORA.

References as of 2026-10-19. Check the current texts: they evolve, and their application depends on your situation.

Method

2 reads done out of 3. Each read is recorded with its status and its reason; a value that was not read stays empty, never 0.

IdViewStatusReasonRowsWindowLatency
B03target/catalog.jsonnot readabsent or not exposed; limits: columns, types and volumes of relations; replayability not tested by DuckDB EXPLAINnot read
B01target/manifest.jsonread583
B02target/run_results.jsonread16from 2026-10-17 to 2026-10-17

Privileges used

Level 1: read the manifest.json, run_results.json and catalog.json files in the target/ folder. Never requested: the scan opens no connection to the warehouse and runs no dbt command (no parse, compile or run).

Cost of the scan

ItemValueNature and basis
Queries sent0 queriesmeasured
Read time0 smeasured

Safeguards

  • No connection: Canot reads the project's JSON files, with no network and no command; no query is sent.
  • Query users and roles pseudonymized with HMAC, using a salt drawn for this scan and never written; tag values hashed; locations reduced to the bucket.
  • Raw SQL text is never written: only normalized forms, with literals masked, leave collection.

Rules

  • Movement: recreated: DDL less than 7 days old with no later write; live: write less than 30 days old; frozen: older last write; not determined: writes not read.
  • Storage with no read: actual window of the view read, compared with 365 days; the blind spots of each view are listed in the finding.
  • Copy time: assumed throughput of 20 to 80 MB/s.
  • List prices are dated and sourced; they do not replace your contract price.

Next steps

This report describes your platform; it recommends neither leaving nor staying.

To measure an exit on a chosen scope: canot drill copies to Apache Iceberg, compares source and copy, and signs an evidence report.

To go further, the q4o assessment, from €22,000 excl. VAT: your contract rate, actual execution, scenarios, the steps to follow. canot.io