{
  "status": "complete",
  "generated_at": "2026-07-30",
  "target": {
    "mode": "live_desktop_instance",
    "connection_name": "PBIDesktop--49707",
    "data_source": "localhost:49707",
    "process_id": 8616,
    "parent_process": "PBIDesktop",
    "instance_start_time": "2026-07-29T18:48:11.8936973+10:00",
    "database_name_live": "16c950fc-7ca6-4d5e-876f-5b7b8f7a7f5a",
    "database_name_source": "FDEFinance",
    "model_name": "Model",
    "compatibility_level_live": 1606,
    "compatibility_level_source": 1601,
    "tmdl_source_path": "fixtures/FDEFinance.SemanticModel/definition",
    "mcp_server": "@microsoft/powerbi-modeling-mcp@0.5.0-beta.11",
    "mcp_mode": "readonly",
    "fallback_used": false
  },
  "summary": {
    "headline": "One live Power BI Desktop instance hosting a small deterministic test fixture model. Business logic matches the governed TMDL source exactly and all four measures reconcile to their documented expected values. All observed drift is machine-generated Auto Date/Time bloat. Principal risks are governance: no row-level security, no marked date table, a hard-coded budget constant, and implicit measures left enabled.",
    "table_count": 6,
    "visible_table_count": 4,
    "hidden_auto_table_count": 2,
    "column_count_reported_by_stats": 31,
    "column_count_reported_by_listing": 25,
    "measure_count": 4,
    "relationship_count": 3,
    "relationship_count_authored": 2,
    "relationship_count_auto": 1,
    "partition_count": 6,
    "role_count": 0,
    "perspective_count": 0,
    "culture_count": 0,
    "calculation_group_count": 0,
    "function_count": 0,
    "named_expression_count": 0,
    "query_group_count": 0,
    "calendar_object_count": 0,
    "hierarchy_count": 2,
    "hierarchy_count_authored": 0,
    "data_source_count": 0,
    "estimated_size_bytes": 545220,
    "storage_mode": "Import",
    "all_measures_reconcile": true,
    "referential_integrity_clean": true,
    "model_modified": false,
    "files_written": [
      "reports/claude-powerbi-discovery.md",
      "reports/claude-powerbi-discovery.json"
    ]
  },
  "facts": {
    "server": {
      "local_instances_found": 1,
      "databases_on_server": 1,
      "database_state": "Unprocessed",
      "all_partition_states": "Ready",
      "created_timestamp": "2026-07-29T18:48:20.076667+10:00",
      "last_processed": "2026-07-29T18:48:37.916667+10:00",
      "language": 1033,
      "culture": "en-US"
    },
    "model_settings": {
      "default_mode": "Import",
      "default_data_view": "Full",
      "default_powerbi_datasource_version": "PowerBI_V3",
      "discourage_implicit_measures": false,
      "discourage_report_measures": false,
      "discourage_composite_models": false,
      "direct_lake_behavior": "Automatic",
      "value_filter_behavior": "Automatic",
      "metadata_access_policy": "Inherited",
      "annotations": {
        "PBI_QueryOrder": "[\"Account\",\"Calendar\",\"Ledger\",\"Metrics\"]",
        "__PBI_TimeIntelligenceEnabled": "1"
      }
    },
    "tables": [
      {
        "name": "Account",
        "role": "dimension",
        "columns": 3,
        "measures": 0,
        "partitions": 1,
        "partition_source_type": "M",
        "hidden": false,
        "row_count": 3,
        "column_names": ["AccountKey", "AccountName", "AccountType"],
        "source_expression_kind": "inline #table literal"
      },
      {
        "name": "Calendar",
        "role": "dimension",
        "columns": 3,
        "measures": 0,
        "partitions": 1,
        "partition_source_type": "M",
        "hidden": false,
        "row_count": 3,
        "column_names": ["DateKey", "Date", "FiscalMonth"],
        "marked_as_date_table": false,
        "source_expression_kind": "inline #table literal"
      },
      {
        "name": "Ledger",
        "role": "fact",
        "columns": 4,
        "measures": 0,
        "partitions": 1,
        "partition_source_type": "M",
        "hidden": false,
        "row_count": 10,
        "column_names": ["DateKey", "AccountKey", "SignedAmount", "IsAdjustment"],
        "source_expression_kind": "inline #table literal"
      },
      {
        "name": "Metrics",
        "role": "measure_holder",
        "columns": 1,
        "measures": 4,
        "partitions": 1,
        "partition_source_type": "M",
        "hidden": false,
        "row_count": 1,
        "column_names": ["Placeholder"],
        "source_expression_kind": "inline #table literal"
      },
      {
        "name": "DateTableTemplate_4a3e593b-a196-4a2f-9343-f7dc0519ce56",
        "role": "auto_generated_date_template",
        "columns": 7,
        "measures": 0,
        "partitions": 1,
        "partition_source_type": "Calculated",
        "hidden": true,
        "is_private": true,
        "hierarchies": 1
      },
      {
        "name": "LocalDateTable_88a1fec1-b827-4666-af6e-18472a67bc31",
        "role": "auto_generated_local_date_table",
        "columns": 7,
        "measures": 0,
        "partitions": 1,
        "partition_source_type": "Calculated",
        "hidden": true,
        "show_as_variations_only": true,
        "hierarchies": 1,
        "annotation": "__PBI_LocalDateTable = true",
        "calculated_partition_source": "Calendar(Date(Year(MIN('Calendar'[Date])), 1, 1), Date(Year(MAX('Calendar'[Date])), 12, 31))"
      }
    ],
    "measures": [
      {
        "table": "Metrics",
        "name": "Actual Net",
        "expression": "SUM(Ledger[SignedAmount])",
        "format_string": "$#,0.00;($#,0.00)",
        "data_type": "Decimal",
        "description": "Deterministic fixture total. Expected 110000.00.",
        "expected_value": 110000.0,
        "actual_value": 110000.0,
        "reconciles": true,
        "state": "Ready",
        "is_hidden": false,
        "display_folder": "",
        "lineage_tag": "2e37ba82-dc58-4d9d-8e76-dfa7646b066e"
      },
      {
        "table": "Metrics",
        "name": "Actual Revenue",
        "expression": "CALCULATE(SUM(Ledger[SignedAmount]), Account[AccountType] = \"Revenue\")",
        "format_string": "$#,0.00;($#,0.00)",
        "data_type": "Decimal",
        "description": "Deterministic fixture total. Expected 310000.00.",
        "expected_value": 310000.0,
        "actual_value": 310000.0,
        "reconciles": true,
        "state": "Ready",
        "is_hidden": false,
        "display_folder": "",
        "lineage_tag": "98ca1a9c-b86b-4cfe-ab41-a079f31bc74d"
      },
      {
        "table": "Metrics",
        "name": "Budget Net",
        "expression": "108000",
        "format_string": "$#,0.00;($#,0.00)",
        "data_type": "Int64",
        "description": "Deterministic fixture constant for metadata and DAX smoke testing.",
        "expected_value": 108000.0,
        "actual_value": 108000.0,
        "reconciles": true,
        "state": "Ready",
        "is_hidden": false,
        "display_folder": "",
        "lineage_tag": "a243f152-c9c6-4663-b6f9-c59a173c150a"
      },
      {
        "table": "Metrics",
        "name": "Net Variance",
        "expression": "[Actual Net] - [Budget Net]",
        "format_string": "$#,0.00;($#,0.00)",
        "data_type": "Decimal",
        "description": "Deterministic fixture variance. Expected 2000.00.",
        "expected_value": 2000.0,
        "actual_value": 2000.0,
        "reconciles": true,
        "state": "Ready",
        "is_hidden": false,
        "display_folder": "",
        "lineage_tag": "cd4246ca-1710-4f8c-a667-8adbe88723d5"
      }
    ],
    "relationships": [
      {
        "name": "00000000-0000-0000-0000-000000000010",
        "from": "Ledger[DateKey]",
        "to": "Calendar[DateKey]",
        "is_active": true,
        "cross_filtering": "OneDirection",
        "cardinality": "Many-to-One",
        "present_in_tmdl_source": true,
        "origin": "authored"
      },
      {
        "name": "00000000-0000-0000-0000-000000000020",
        "from": "Ledger[AccountKey]",
        "to": "Account[AccountKey]",
        "is_active": true,
        "cross_filtering": "OneDirection",
        "cardinality": "Many-to-One",
        "present_in_tmdl_source": true,
        "origin": "authored"
      },
      {
        "name": "5beaf11a-44f7-458d-8b92-4560c1f572c7",
        "from": "Calendar[Date]",
        "to": "LocalDateTable_88a1fec1-b827-4666-af6e-18472a67bc31[Date]",
        "is_active": true,
        "cross_filtering": "OneDirection",
        "cardinality": "Many-to-One",
        "present_in_tmdl_source": false,
        "origin": "auto_generated"
      }
    ],
    "hierarchies": [
      {
        "table": "DateTableTemplate_4a3e593b-a196-4a2f-9343-f7dc0519ce56",
        "name": "Date Hierarchy",
        "levels": ["Year", "Quarter", "Month", "Day"],
        "origin": "auto_generated"
      },
      {
        "table": "LocalDateTable_88a1fec1-b827-4666-af6e-18472a67bc31",
        "name": "Date Hierarchy",
        "levels": ["Year", "Quarter", "Month", "Day"],
        "origin": "auto_generated"
      }
    ],
    "data_profile_aggregates": {
      "ledger_rows": 10,
      "account_rows": 3,
      "calendar_rows": 3,
      "metrics_rows": 1,
      "distinct_accountkeys_in_ledger": 3,
      "distinct_datekeys_in_ledger": 3,
      "adjustment_rows": 1,
      "adjustment_amount": -2000,
      "sum_all_signed_amount": 110000,
      "orphan_ledger_datekeys": 0,
      "orphan_ledger_accountkeys": 0
    },
    "source_expressions": {
      "all_partitions_use_inline_literals": true,
      "external_data_sources": 0,
      "gateways_or_credentials_present": false,
      "note": "Every M partition is a hard-coded #table(...) literal; there is no upstream system, connection string, or credential in this model."
    },
    "objects_confirmed_absent": [
      "security roles",
      "table permissions",
      "perspectives",
      "cultures / translations",
      "calculation groups",
      "calculation items",
      "model functions",
      "named expressions and Power Query parameters",
      "query groups",
      "logical calendar objects",
      "data sources",
      "author-created hierarchies"
    ],
    "source_vs_live_drift": [
      {
        "aspect": "database name",
        "tmdl_source": "FDEFinance",
        "live": "16c950fc-7ca6-4d5e-876f-5b7b8f7a7f5a",
        "drift": true,
        "significance": "expected Desktop behaviour"
      },
      {
        "aspect": "compatibility level",
        "tmdl_source": 1601,
        "live": 1606,
        "drift": true,
        "significance": "upgraded on open"
      },
      {
        "aspect": "table count",
        "tmdl_source": 4,
        "live": 6,
        "drift": true,
        "significance": "two auto date tables injected"
      },
      {
        "aspect": "relationship count",
        "tmdl_source": 2,
        "live": 3,
        "drift": true,
        "significance": "one auto variation relationship injected"
      },
      {
        "aspect": "hierarchy count",
        "tmdl_source": 0,
        "live": 2,
        "drift": true,
        "significance": "auto date hierarchies"
      },
      {
        "aspect": "calculated columns",
        "tmdl_source": 0,
        "live": 14,
        "drift": true,
        "significance": "all hidden, auto-generated"
      },
      {
        "aspect": "__PBI_TimeIntelligenceEnabled",
        "tmdl_source": "not present in model.tmdl",
        "live": "1",
        "drift": true,
        "significance": "governance setting not captured in source control"
      },
      {
        "aspect": "Calendar[FiscalMonth] summarizeBy",
        "tmdl_source": "none",
        "live": "Sum",
        "drift": true,
        "significance": "month identifier will silently aggregate in visuals"
      },
      {
        "aspect": "measure expressions and descriptions",
        "tmdl_source": "4 measures",
        "live": "4 measures, identical",
        "drift": false,
        "significance": "business logic intact"
      },
      {
        "aspect": "partition M expressions",
        "tmdl_source": "as authored",
        "live": "byte-identical",
        "drift": false,
        "significance": "data definitions intact"
      }
    ],
    "visibility_boundaries": {
      "visible_to_this_local_mcp": [
        "model, database, and table metadata",
        "columns, data types, format strings, summarizeBy",
        "measures with full DAX expressions and descriptions",
        "relationships including inactive and auto-generated ones",
        "partitions and full Power Query M expressions",
        "security role definitions and table permissions",
        "perspectives, cultures, translations, hierarchies",
        "calculation groups, functions, query groups, calendars",
        "TMDL and TMSL export of any object",
        "DAX query execution and trace capture against live data"
      ],
      "requires_pbir_or_desktop_bridge": [
        "report pages, visuals, and field bindings",
        "bookmarks, themes, report-level filters",
        "report-level measures",
        "which measures and columns are actually consumed by reports",
        "orphan / unused object analysis"
      ],
      "requires_remote_fabric_mcp_and_tenant_auth": [
        "workspace inventory and published dataset lineage",
        "gateway and data source credentials",
        "refresh history and schedules",
        "dataset endorsement and certification status",
        "sensitivity labels",
        "RLS role membership (principals mapped to roles)",
        "usage metrics and deployment pipelines",
        "comparison against a published Service copy"
      ]
    }
  },
  "inferences": [
    {
      "id": "I1",
      "statement": "This is a purpose-built deterministic test fixture, not a production finance model.",
      "basis": "All data is inline literals; 10 fact rows total; measure descriptions are phrased as test assertions ('Expected 110000.00'); relationships use hand-assigned sequential GUIDs.",
      "confidence": "high"
    },
    {
      "id": "I2",
      "statement": "The two hidden date tables, 14 hidden calculated columns, two hierarchies and the third relationship were created by Power BI's Auto Date/Time feature, not by an author.",
      "basis": "DateTableTemplate_/LocalDateTable_ naming, annotation __PBI_LocalDateTable = true, TemplateId annotations on every column, calculated Calendar(...) partition, model annotation __PBI_TimeIntelligenceEnabled = 1, and absence from the TMDL source.",
      "confidence": "high"
    },
    {
      "id": "I3",
      "statement": "Auto Date/Time engaged specifically because the curated Calendar table was never marked as a date table.",
      "basis": "calendar_operations.List returned 0 logical calendars; the auto LocalDateTable is derived from Calendar[Date].",
      "confidence": "high"
    },
    {
      "id": "I4",
      "statement": "The Metrics table follows the standard 'measure holder' design pattern.",
      "basis": "Single text column named Placeholder with one literal row, and all four measures assigned to it.",
      "confidence": "high"
    },
    {
      "id": "I5",
      "statement": "The discrepancy between GetStats (31 columns, 8 per date table) and column.List (25 columns, 7 per date table) is the implicit RowNumber system column counted by one API and suppressed by the other.",
      "basis": "Difference is exactly one column per table across six tables; RowNumber is the standard implicit column in Tabular.",
      "confidence": "medium"
    },
    {
      "id": "I6",
      "statement": "Time intelligence written against this model would resolve against the machine-generated shadow calendar rather than Calendar[FiscalMonth], making the curated fiscal calendar effectively unreachable by standard DAX time patterns.",
      "basis": "Auto date table is the only marked date dimension; no logical calendar object exists.",
      "confidence": "medium"
    },
    {
      "id": "I7",
      "statement": "Reported Actual Revenue of 310,000 silently nets the single -2,000 adjustment row; no measure isolates or excludes adjustments.",
      "basis": "IsAdjustment column exists with one TRUE row worth -2,000 against AccountKey 10 (Product Revenue); none of the four measures filters on IsAdjustment.",
      "confidence": "high"
    }
  ],
  "unknowns": [
    {
      "id": "U1",
      "question": "Do any reports consume these four measures, and in which visuals?",
      "blocked_by": "Requires PBIR / Desktop Bridge access; not visible to this MCP."
    },
    {
      "id": "U2",
      "question": "Does a published Fabric/Service copy of this model exist, and what are its roles, refresh history, endorsement state and sensitivity labels?",
      "blocked_by": "Requires remote Fabric Power BI MCP with tenant authentication."
    },
    {
      "id": "U3",
      "question": "Who are the intended RLS principals?",
      "blocked_by": "Role membership is a Service-side concept; no role definitions exist locally to reason from."
    },
    {
      "id": "U4",
      "question": "Does Calendar[DateKey] retain its isKey flag in the live model? The TMDL source declares isKey but the live column listing did not surface it.",
      "blocked_by": "Not separately confirmed via targeted column_operations.Get; may be a listing-verbosity artefact."
    },
    {
      "id": "U5",
      "question": "Does the fixture definition folder contain further TMDL files (roles, expressions, cultures, perspectives) beyond the six read?",
      "blocked_by": "Directory enumeration was not available to this agent; six files were read by known path."
    },
    {
      "id": "U6",
      "question": "Was the 1601 to 1606 compatibility-level upgrade intended, or an incidental side effect of opening the file in a newer Desktop build?",
      "blocked_by": "No change history or build metadata available."
    },
    {
      "id": "U7",
      "question": "What is the provenance of the 108000 Budget Net figure?",
      "blocked_by": "Hard-coded literal with no source, partition, or lineage; requires a business owner."
    },
    {
      "id": "U8",
      "question": "Should IsAdjustment rows be excluded from any reported metric?",
      "blocked_by": "Requires the metric contract / business definition, not discoverable from model metadata."
    },
    {
      "id": "U9",
      "question": "Is the Calendar[FiscalMonth] summarizeBy change from 'none' (source) to 'Sum' (live) deliberate or accidental drift?",
      "blocked_by": "Requires change history or an author."
    }
  ],
  "assurance_findings": [
    {
      "id": "F1",
      "severity": "high",
      "category": "security",
      "title": "No row-level security whatsoever",
      "detail": "Zero security roles and zero table permissions. RoleCount is 0. Ledger amounts by account are fully exposed to any principal with model access.",
      "evidence": ["security_role_operations.List = 0 roles", "model_operations.GetStats RoleCount: 0"],
      "remediation_implemented": false
    },
    {
      "id": "F2",
      "severity": "high",
      "category": "drift_and_governance",
      "title": "Auto Date/Time has injected objects absent from the governed TMDL source",
      "detail": "__PBI_TimeIntelligenceEnabled = 1 has produced 2 hidden tables, 14 hidden calculated columns, 2 hierarchies and 1 relationship that do not exist in source control. Round-tripping the live model back to TMDL would commit this bloat; at production scale it inflates model size and refresh time.",
      "evidence": ["model_operations.Get annotation __PBI_TimeIntelligenceEnabled = 1", "table_operations.List shows 6 tables vs 4 in TMDL", "table_operations.ExportTMDL shows annotation __PBI_LocalDateTable = true"],
      "remediation_implemented": false
    },
    {
      "id": "F3",
      "severity": "medium",
      "category": "modelling",
      "title": "Calendar is not marked as a date table and no logical calendar exists",
      "detail": "Time intelligence resolves against the auto-generated shadow calendar rather than the curated fiscal calendar, leaving Calendar[FiscalMonth] unreachable by standard DAX time-intelligence patterns.",
      "evidence": ["calendar_operations.List = 0 calendars", "auto LocalDateTable derived from Calendar[Date]"],
      "remediation_implemented": false
    },
    {
      "id": "F4",
      "severity": "medium",
      "category": "lineage",
      "title": "Budget Net is a hard-coded literal with no source lineage",
      "detail": "Budget Net = 108000 with no table, partition, or upstream system behind it. Net Variance inherits this. The figure cannot be versioned, refreshed, or traced to a budget system.",
      "evidence": ["measure_operations.Get expression: 108000"],
      "remediation_implemented": false
    },
    {
      "id": "F5",
      "severity": "medium",
      "category": "governance",
      "title": "Implicit measures and report-level measures are both permitted",
      "detail": "discourageImplicitMeasures and discourageReportMeasures are both false. Report authors can drag raw columns or define report-level measures that bypass the four governed measures and will not reconcile.",
      "evidence": ["model_operations.Get: discourageImplicitMeasures false, discourageReportMeasures false"],
      "remediation_implemented": false
    },
    {
      "id": "F6",
      "severity": "medium",
      "category": "modelling",
      "title": "Calendar[FiscalMonth] summarizes as Sum in the live model",
      "detail": "A month identifier with summarizeBy Sum will silently aggregate as a number in visuals, a classic source of nonsense totals. The TMDL source declares summarizeBy none, so this is a genuine live-versus-source discrepancy.",
      "evidence": ["column_operations.List: FiscalMonth summarizeBy Sum", "fixtures Calendar.tmdl: summarizeBy none"],
      "remediation_implemented": false
    },
    {
      "id": "F7",
      "severity": "low",
      "category": "documentation",
      "title": "No documentation or semantic layer",
      "detail": "Zero column descriptions, zero display folders, zero perspectives, zero translations. Only the four measures carry descriptions, and those are test assertions rather than business definitions.",
      "evidence": ["column_operations.List", "measure_operations.Get", "perspective_operations.List = 0", "culture_operations.List = 0"],
      "remediation_implemented": false
    },
    {
      "id": "F8",
      "severity": "low",
      "category": "usability",
      "title": "Metrics placeholder table is visible to end users",
      "detail": "The one-row Placeholder column serves no analytical purpose and would normally be hidden in a measure-holder pattern.",
      "evidence": ["table_operations.List: Metrics has no isHidden flag", "column_operations.List: Placeholder visible"],
      "remediation_implemented": false
    },
    {
      "id": "F9",
      "severity": "low",
      "category": "metric_completeness",
      "title": "IsAdjustment is modelled but unused by any measure",
      "detail": "One adjustment row of -2,000 exists against Product Revenue and materially affects March, yet no measure isolates or excludes adjustments. Actual Revenue silently nets it.",
      "evidence": ["DAX aggregate: adjustment_rows 1, adjustment_amount -2000", "measure_operations.Get: no measure filters IsAdjustment"],
      "remediation_implemented": false
    },
    {
      "id": "F10",
      "severity": "informational",
      "category": "operations",
      "title": "Database reports Unprocessed while all partitions report Ready",
      "detail": "Benign for a Desktop session, but relevant if any automation gates on database-level state.",
      "evidence": ["database_operations.List state: Unprocessed", "partition_operations.List: all 6 partitions Ready"],
      "remediation_implemented": false
    }
  ],
  "recommended_next_discovery_actions": [
    "Obtain PBIR / Desktop Bridge access to enumerate report pages and visual field bindings, enabling measure-usage and orphan-object analysis.",
    "Authenticate to the remote Fabric Power BI MCP to compare against any published Service twin: roles, refresh history, endorsement, sensitivity labels.",
    "Confirm the estate governance baseline for Auto Date/Time and re-run this drift check as a deterministic gate.",
    "Run targeted column_operations.Get on Calendar[DateKey] and Calendar[FiscalMonth] to resolve unknowns U4 and U9.",
    "Use trace_operations during a report interaction to observe which measures and columns are queried at runtime, as a partial substitute for PBIR access.",
    "Enumerate the full fixture definition folder to close unknown U5.",
    "Establish the intended RLS principals and the provenance of the 108000 budget figure with a business owner."
  ],
  "mcp_calls": [
    { "seq": 1, "tool": "connection_operations", "operation": "ListLocalInstances", "purpose": "Discover local Desktop/AS instances", "result": "1 instance: localhost:49707, PBIDesktop, PID 8616" },
    { "seq": 2, "tool": "connection_operations", "operation": "ListConnections", "purpose": "Confirm no pre-existing session", "result": "0 connections" },
    { "seq": 3, "tool": "connection_operations", "operation": "Connect", "purpose": "Attach to the live instance", "result": "Connection 'PBIDesktop--49707' established" },
    { "seq": 4, "tool": "database_operations", "operation": "List", "purpose": "Database identity, compatibility level, size, state", "result": "1 database, GUID name, compat 1606, 545220 bytes, Unprocessed" },
    { "seq": 5, "tool": "model_operations", "operation": "Get", "purpose": "Model settings and annotations", "result": "Import model, en-US, __PBI_TimeIntelligenceEnabled = 1" },
    { "seq": 6, "tool": "model_operations", "operation": "GetStats", "purpose": "Per-table object counts", "result": "6 tables, 4 measures, 31 columns, 6 partitions, 3 relationships, 0 roles/cultures/perspectives" },
    { "seq": 7, "tool": "table_operations", "operation": "List", "purpose": "Table inventory with hidden/private flags", "result": "6 tables, 2 hidden auto date tables" },
    { "seq": 8, "tool": "column_operations", "operation": "List", "purpose": "Column inventory with data types and summarizeBy", "result": "25 columns across 6 tables" },
    { "seq": 9, "tool": "measure_operations", "operation": "List", "purpose": "Measure inventory", "result": "4 measures, all in Metrics" },
    { "seq": 10, "tool": "relationship_operations", "operation": "List", "purpose": "Relationship inventory", "result": "3 relationships, 1 auto-generated" },
    { "seq": 11, "tool": "measure_operations", "operation": "Get", "purpose": "Full DAX expressions, descriptions, lineage tags", "result": "4 measures retrieved, all state Ready" },
    { "seq": 12, "tool": "partition_operations", "operation": "List", "purpose": "Partition inventory and source types", "result": "6 partitions: 4 M, 2 Calculated, all Ready" },
    { "seq": 13, "tool": "named_expression_operations", "operation": "List", "purpose": "Power Query parameters and shared expressions", "result": "0" },
    { "seq": 14, "tool": "security_role_operations", "operation": "List", "purpose": "RLS role definitions", "result": "0 roles" },
    { "seq": 15, "tool": "partition_operations", "operation": "Get", "purpose": "Full M source expressions for the 4 real partitions", "result": "All inline #table literals; no external sources" },
    { "seq": 16, "tool": "perspective_operations", "operation": "List", "purpose": "Perspectives", "result": "0" },
    { "seq": 17, "tool": "culture_operations", "operation": "List", "purpose": "Cultures and translations", "result": "0" },
    { "seq": 18, "tool": "user_hierarchy_operations", "operation": "List", "purpose": "User hierarchies", "result": "2, both on auto date tables" },
    { "seq": 19, "tool": "calculation_group_operations", "operation": "ListGroups", "purpose": "Calculation groups", "result": "0" },
    { "seq": 20, "tool": "function_operations", "operation": "List", "purpose": "Model functions", "result": "0" },
    { "seq": 21, "tool": "query_group_operations", "operation": "List", "purpose": "Query groups", "result": "0" },
    { "seq": 22, "tool": "calendar_operations", "operation": "List", "purpose": "Logical calendar objects", "result": "0" },
    { "seq": 23, "tool": "dax_query_operations", "operation": "Execute", "purpose": "Aggregate row counts and distinct key counts", "result": "Ledger 10, Account 3, Calendar 3, Metrics 1, 1 adjustment row" },
    { "seq": 24, "tool": "dax_query_operations", "operation": "Execute", "purpose": "Measure values and orphan-key referential integrity checks", "result": "All 4 measures reconcile; 0 orphan keys both directions" },
    { "seq": 25, "tool": "table_operations", "operation": "ExportTMDL", "purpose": "Full TMDL of the auto-generated LocalDateTable", "result": "Confirmed __PBI_LocalDateTable annotation and TemplateId columns" }
  ],
  "non_mcp_evidence": {
    "files_read": [
      "CLAUDE.md",
      ".mcp.json",
      "fixtures/FDEFinance.SemanticModel/definition/database.tmdl",
      "fixtures/FDEFinance.SemanticModel/definition/model.tmdl",
      "fixtures/FDEFinance.SemanticModel/definition/relationships.tmdl",
      "fixtures/FDEFinance.SemanticModel/definition/tables/Ledger.tmdl",
      "fixtures/FDEFinance.SemanticModel/definition/tables/Calendar.tmdl",
      "fixtures/FDEFinance.SemanticModel/definition/tables/Metrics.tmdl"
    ],
    "purpose": "Establish the governed TMDL baseline for source-versus-live drift comparison."
  },
  "data_handling": {
    "aggregate_dax_only": true,
    "raw_rows_retrieved": false,
    "personal_data_retrieved": false,
    "credentials_transmitted": false,
    "mcp_readonly_mode": true,
    "write_operations_attempted": 0
  }
}
