{
  "schema_version": 1,
  "reviewed_on": "2026-10-28",
  "group": 4,
  "total_groups": 5,
  "base_commit": "546feb3caf5fa38f9ab368a06e76da088f497bbb",
  "scope": {
    "exams": [
      "DP-900",
      "MB-230",
      "MB-310",
      "MB-500",
      "MB-800",
      "MB-820",
      "PL-300",
      "PL-900",
      "SC-500",
      "AB-250"
    ],
    "guides_in_group": 10,
    "current_objectives": 784,
    "historical_mapped_objectives": 784,
    "future_objectives": 0,
    "initial_flags": 302,
    "subset_a_initial_flags_repaired": 69,
    "subset_b_flags_repaired": 81,
    "subset_b_flags_existing_adequate": 152,
    "independent_new_teaching_repairs": 4,
    "exam_repair_packets": 63,
    "remaining_guides_after_group": 8,
    "remaining_groups_after_group": 1,
    "whole_refresh_complete": false
  },
  "method": {
    "roles": [
      "exam/objectives",
      "technical",
      "learning resources"
    ],
    "coordinator_owns_shared_edits": true,
    "complete_input_reading": "Two subset exam researchers read all ten complete immutable guides and final complete diffs. Coordinator repaired independently identified small issues and rebound exact line offsets/spans. Other workers record narrower technical/resource scopes.",
    "research_proposals": "Research reports include proposals; accepted catalog changes and actual final guide/mapping bindings establish applied scope.",
    "fresh_context_review": "Two separate fresh-context read-only reviewers passed their bounded final checks after repairs. Initial findings and separate repair verifications retained; no full rubric-2/human/live audit inferred.",
    "full_independent_semantic_audit": false,
    "human_review": false,
    "live_product_labs_executed": false
  },
  "exams": [
    {
      "exam_code": "DP-900",
      "guide_path": "guides/DP-900-microsoft-azure-data-fundamentals.md",
      "guide_content_sha256": "1c618b776923450c7bbf59aac51ce2bf3b64cfb5dcc214e6b4b388a718332991",
      "objective_path": "data/objective-snapshots/dp-900-official-objectives.txt",
      "objective_raw_sha256": "7cef780d1a9e8e88b587fba89acb994985c4aedbd491710e814686ce5dc6559f",
      "objective_count": 30,
      "source_validation_id": "dp-900-2026-10-28-remaining-group04-source-validation",
      "link_evidence": {
        "unique_external_links": 69,
        "reachable": 67,
        "access_blocked": 2,
        "missing_or_error": 0
      },
      "source_ids": [
        "ai-200-service-overview",
        "az900-lifetime",
        "coursera-microsoft-dp-900-specialization",
        "dp-420-resource-model",
        "dp-750-structured-streaming",
        "dp-900-blueprint",
        "dp900-2-analytics-unit",
        "dp900-3-analytics-unit",
        "dp900-4-analytics-unit",
        "dp900-activator",
        "dp900-blob",
        "dp900-cosmos-pg",
        "dp900-documentdb",
        "dp900-documentdb-blog",
        "dp900-documentdb-releases",
        "dp900-eventhouse",
        "dp900-eventstream",
        "dp900-fabric-exercise-unit",
        "dp900-files",
        "dp900-groupby",
        "dp900-hns",
        "dp900-keys",
        "dp900-lake-sql",
        "dp900-mirroring",
        "dp900-mongo",
        "dp900-mysql",
        "dp900-point-blog",
        "dp900-pointread",
        "dp900-powerbi-compare",
        "dp900-semantic",
        "dp900-shortcuts",
        "dp900-table",
        "linkedin-learning-dp-900-microsoft-press",
        "measureup-dp-900-practice-test",
        "microsoft-azure-data-fundamentals-credential",
        "microsoft-azure-databricks-documentation-dp900",
        "microsoft-azure-databricks-introduction",
        "microsoft-azure-sql-documentation",
        "microsoft-azure-sql-options-overview",
        "microsoft-azure-storage-documentation-dp900",
        "microsoft-cosmos-db-api-selection",
        "microsoft-cosmos-db-consistency-levels",
        "microsoft-cosmos-db-documentation",
        "microsoft-cosmos-db-partitioning-overview",
        "microsoft-cosmos-db-request-units",
        "microsoft-dp-900-course",
        "microsoft-dp-900-practice-assessment",
        "microsoft-dp900-analytics-path",
        "microsoft-dp900-core-data-concepts-module",
        "microsoft-dp900-core-data-concepts-path",
        "microsoft-dp900-large-scale-analytics-module",
        "microsoft-dp900-nonrelational-data-path",
        "microsoft-dp900-relational-concepts-module",
        "microsoft-dp900-relational-data-path",
        "microsoft-dp900-relational-services-module",
        "microsoft-dp900-stream-processing-module",
        "microsoft-fabric-data-storage-options",
        "microsoft-fabric-documentation-dp900",
        "microsoft-fabric-overview-dp900",
        "microsoft-power-bi-documentation-dp900",
        "microsoft-power-bi-guided-learning-dp900",
        "microsoft-power-bi-semantic-models",
        "microsoft-power-bi-star-schema-guidance",
        "oreilly-certification-practice-tests",
        "oreilly-dp-900-video",
        "pluralsight-dp-900",
        "skilling-hub-levelup-dp-900",
        "udemy-dp-900-in28minutes",
        "whizlabs-dp-900"
      ],
      "outcome": "reviewed",
      "lab_execution": "not-executed",
      "remaining_limits": [
        "New examples and learning worksheets are proposed/tabletop only. No new service, tenant, engine or SDK execution.",
        "All new service/tenant/SDK labs are unexecuted; proposed exercises and expected outcomes are not observed product results. Human review and a complete independent semantic audit remain pending."
      ]
    },
    {
      "exam_code": "MB-230",
      "guide_path": "guides/MB-230-microsoft-dynamics-365-customer-service-functional-consultant.md",
      "guide_content_sha256": "f77caba6a0b5798ef90debb933287369323188d4dc567bbc11cdf9b4b875b743",
      "objective_path": "data/objective-snapshots/mb-230-official-objectives.txt",
      "objective_raw_sha256": "e5925c65c9de7fad2e0d1d921564490a83ce02092b95ad95382775abd6352b38",
      "objective_count": 50,
      "source_validation_id": "mb-230-2026-10-28-remaining-group04-source-validation",
      "link_evidence": {
        "unique_external_links": 54,
        "reachable": 53,
        "access_blocked": 1,
        "missing_or_error": 0
      },
      "source_ids": [
        "ab250-capacity",
        "ab250-knowledge",
        "exam-a-mb230-contacts",
        "exam-a-mb230-email",
        "exam-a-mb230-form",
        "exam-a-mb230-maker",
        "exam-a-mb230-notify",
        "exam-a-mb230-resolution",
        "exam-a-mb230-search",
        "exam-a-mb230-skills",
        "exam-a-mb230-table-example",
        "exam-a-mb230-translate",
        "mb-230-blueprint",
        "mb-230-course",
        "mb-230-credential",
        "mb-230-docs",
        "mb-230-path-cases",
        "mb-230-path-customer-voice",
        "mb-230-path-extend",
        "mb-230-path-knowledge",
        "mb-230-path-productivity",
        "mb-230-path-routing",
        "mb-230-path-slas",
        "mb-230-pluralsight-extend",
        "mb-230-practice",
        "mb-230-udemy-sharma",
        "mb-820-partner-skilling-hub",
        "mb230-agent-closure",
        "mb230-agent-resolution",
        "mb230-arc",
        "mb230-conversation-diagnostics",
        "mb230-copilot-filters",
        "mb230-copilot-pane",
        "mb230-deprecations",
        "mb230-external",
        "mb230-inbox",
        "mb230-integrated",
        "mb230-knowledge",
        "mb230-knowledge-filters",
        "mb230-macros",
        "mb230-profiles",
        "mb230-record-analytics",
        "mb230-service-blog",
        "mb230-sessions",
        "mb230-shadow-blog",
        "mb230-sla",
        "mb230-sla-calendar",
        "mb230-sla-items-unit",
        "mb230-sla-pause",
        "mb230-survey",
        "mb230-survey-settings",
        "mb230-survey-variables",
        "mb230-teams",
        "mb230-teams-use"
      ],
      "outcome": "reviewed-with-blockers",
      "lab_execution": "not-executed",
      "remaining_limits": [
        "Require-confirmation setup and semi-autonomous runtime-table send wording remain imprecise; preserve configured approval and require authorized runtime evidence.",
        "New examples and learning worksheets are proposed/tabletop only. No new service, tenant, engine or SDK execution.",
        "All new service/tenant/SDK labs are unexecuted; proposed exercises and expected outcomes are not observed product results. Human review and a complete independent semantic audit remain pending."
      ]
    },
    {
      "exam_code": "MB-310",
      "guide_path": "guides/MB-310-microsoft-dynamics-365-finance-functional-consultant.md",
      "guide_content_sha256": "a6f7f12e80a6131d1b9a58df4f8e0d8ed553f96f5d316dd2a7593a05c02f9f3b",
      "objective_path": "data/objective-snapshots/mb-310-official-objectives.txt",
      "objective_raw_sha256": "d5bbe85cad214566f2ba0cc7b266af0ff612664ba199a5c8ed948e28474d2284",
      "objective_count": 96,
      "source_validation_id": "mb-310-2026-10-28-remaining-group04-source-validation",
      "link_evidence": {
        "unique_external_links": 60,
        "reachable": 59,
        "access_blocked": 1,
        "missing_or_error": 0
      },
      "source_ids": [
        "exam-a-alias",
        "exam-a-mb310-asset-budget",
        "exam-a-mb310-billing",
        "exam-a-mb310-budget-register",
        "exam-a-mb310-centralized",
        "exam-a-mb310-company",
        "exam-a-mb310-excel",
        "exam-a-mb310-excel-design",
        "exam-a-mb310-expenses",
        "exam-a-mb310-forecast",
        "exam-a-mb310-intercompany-expense",
        "exam-a-mb310-interest",
        "exam-a-mb310-letters",
        "exam-a-mb310-mileage",
        "exam-a-mb310-perdiem",
        "exam-a-mb310-periodic",
        "exam-a-mb310-personal-expense",
        "exam-a-mb310-prepayment",
        "exam-a-mb310-recurring",
        "exam-a-mb310-split",
        "exam-a-mb310-tax",
        "exam-a-mb310-tax-payment",
        "exam-a-mb310-vendor-recurring",
        "exam-a-mb310-withholding",
        "mb-310-blueprint",
        "mb-310-course",
        "mb-310-credential",
        "mb-310-docs",
        "mb-310-labs",
        "mb-310-measureup",
        "mb-310-path-assets",
        "mb-310-path-budgeting",
        "mb-310-path-financial",
        "mb-310-path-payables",
        "mb-310-path-receivables",
        "mb-310-pluralsight",
        "mb-310-practice",
        "mb-310-udemy-financials",
        "mb-820-partner-skilling-hub",
        "mb310-bank-process",
        "mb310-bank-rules",
        "mb310-budget",
        "mb310-budget-report",
        "mb310-consolidation",
        "mb310-deferral-schedules",
        "mb310-deferrals",
        "mb310-derived",
        "mb310-derived-posting",
        "mb310-dimensions",
        "mb310-focused-lab",
        "mb310-fx",
        "mb310-matching",
        "mb310-netting",
        "mb310-release-plans",
        "mb310-settlement",
        "mb310-tags",
        "mb310-tags-blog",
        "mb330-erp-blog",
        "microsoft-ai-at-work-roadmap",
        "microsoft-ai-at-work-roadmap-transition"
      ],
      "outcome": "reviewed",
      "lab_execution": "not-executed",
      "remaining_limits": [
        "New examples and learning worksheets are proposed/tabletop only. No new service, tenant, engine or SDK execution.",
        "All new service/tenant/SDK labs are unexecuted; proposed exercises and expected outcomes are not observed product results. Human review and a complete independent semantic audit remain pending."
      ]
    },
    {
      "exam_code": "MB-500",
      "guide_path": "guides/MB-500-microsoft-dynamics-365-finance-operations-apps-developer.md",
      "guide_content_sha256": "e894c995a3376609e18a35286d6f962371f7eff79ff55e6f2c6f74ca72f1132f",
      "objective_path": "data/objective-snapshots/mb-500-official-objectives.txt",
      "objective_raw_sha256": "30b2b8913d63724b60099adcd9090a67bf818e3b0b42e7e57382a5ab240134cd",
      "objective_count": 89,
      "source_validation_id": "mb-500-2026-10-28-remaining-group04-source-validation",
      "link_evidence": {
        "unique_external_links": 64,
        "reachable": 62,
        "access_blocked": 2,
        "missing_or_error": 0
      },
      "source_ids": [
        "exam-a-cache",
        "exam-a-mb500-async-migration",
        "exam-a-mb500-attributes",
        "exam-a-mb500-change",
        "exam-a-mb500-composite",
        "exam-a-mb500-er",
        "exam-a-mb500-global",
        "exam-a-mb500-integration",
        "exam-a-mb500-issue",
        "exam-a-mb500-keyvault",
        "exam-a-mb500-outbound",
        "exam-a-mb500-query",
        "exam-a-mb500-rowversion",
        "exam-a-mb500-ssrs",
        "exam-a-mb500-store",
        "exam-a-mb500-xpp",
        "exam-a-sandbox",
        "exam-a-serializer",
        "exam-a-workflow",
        "g04-review-a-temporary-build",
        "g04-review-a-temporary-choice",
        "g04-review-a-xpp-inheritance",
        "g04-review-a-xpp-syntax",
        "mb-500-blueprint",
        "mb-500-course",
        "mb-500-credential",
        "mb-500-docs",
        "mb-500-labs",
        "mb-500-measureup",
        "mb-500-oreilly-power-platform",
        "mb-500-path-build",
        "mb-500-path-connect",
        "mb-500-path-extend",
        "mb-500-path-intro",
        "mb-500-path-migrate",
        "mb-500-path-reporting",
        "mb-500-practice",
        "mb-500-udemy-behnam",
        "mb-820-partner-skilling-hub",
        "mb500-admin",
        "mb500-batch-api",
        "mb500-coc",
        "mb500-dual-write",
        "mb500-entity-security",
        "mb500-events",
        "mb500-exceptions",
        "mb500-focused-lab",
        "mb500-lcs-freeze",
        "mb500-migration",
        "mb500-odata",
        "mb500-packages",
        "mb500-retry",
        "mb500-set-based",
        "mb500-test",
        "mb500-tools",
        "mb500-transaction",
        "mb500-types",
        "mb500-ude",
        "mb500-ude-blog",
        "mb500-ude-techtalk",
        "mb500-update",
        "mb500-virtual",
        "mb500-xds",
        "microsoft-ai-at-work-roadmap-transition"
      ],
      "outcome": "reviewed",
      "lab_execution": "not-executed",
      "remaining_limits": [
        "New examples and learning worksheets are proposed/tabletop only. No new service, tenant, engine or SDK execution.",
        "All new service/tenant/SDK labs are unexecuted; proposed exercises and expected outcomes are not observed product results. Human review and a complete independent semantic audit remain pending."
      ]
    },
    {
      "exam_code": "MB-800",
      "guide_path": "guides/MB-800-microsoft-dynamics-365-business-central-functional-consultant.md",
      "guide_content_sha256": "9a328507ddf796c5a0c5bbd6665ef4957a7a9bc307e9f93dafc3c276cc907a5a",
      "objective_path": "data/objective-snapshots/mb-800-official-objectives.txt",
      "objective_raw_sha256": "36a7035403d51e3f1558e097e03f5cd4da0949d205420aeb46a8bd2b4ff30a9d",
      "objective_count": 123,
      "source_validation_id": "mb-800-2026-10-28-remaining-group04-source-validation",
      "link_evidence": {
        "unique_external_links": 56,
        "reachable": 54,
        "access_blocked": 2,
        "missing_or_error": 0
      },
      "source_ids": [
        "exam-a-costing",
        "exam-a-mb800-blanket",
        "exam-a-mb800-combine",
        "exam-a-mb800-combine-purchase",
        "exam-a-mb800-depreciate",
        "exam-a-mb800-depreciation",
        "exam-a-mb800-inventory-ops",
        "exam-a-mb800-log",
        "exam-a-mb800-prepayment",
        "exam-a-mb800-recurring-sales",
        "exam-a-mb800-transfer",
        "exam-a-recurring",
        "g04-review-a-bc-acquire",
        "g04-review-a-bc-dimensions",
        "mb-800-blueprint",
        "mb-800-course",
        "mb-800-credential",
        "mb-800-docs",
        "mb-800-labs",
        "mb-800-measureup",
        "mb-800-oreilly-essentials",
        "mb-800-path-financial-operations",
        "mb-800-path-financials",
        "mb-800-path-setup",
        "mb-800-path-trade-operations",
        "mb-800-path-trade-setup",
        "mb-800-practice",
        "mb-800-udemy-gomathi",
        "mb-820-partner-skilling-hub",
        "mb800-bank",
        "mb800-bank-copilot",
        "mb800-cost-adjust",
        "mb800-dimensions",
        "mb800-discounts",
        "mb800-expected",
        "mb800-filters",
        "mb800-focused-lab",
        "mb800-inventory",
        "mb800-inventory-blog",
        "mb800-jobqueue",
        "mb800-overreceipt",
        "mb800-payables",
        "mb800-payables-setup",
        "mb800-posting-groups",
        "mb800-purchase-correction",
        "mb800-reconcile",
        "mb800-returns",
        "mb800-revalue",
        "mb800-reversal",
        "mb800-sales-agent",
        "mb800-sales-agent-blog",
        "mb800-sales-correction",
        "mb800-senders",
        "mb800-supervise",
        "mb800-year-close",
        "microsoft-ai-at-work-roadmap-transition"
      ],
      "outcome": "reviewed",
      "lab_execution": "not-executed",
      "remaining_limits": [
        "New examples and learning worksheets are proposed/tabletop only. No new service, tenant, engine or SDK execution.",
        "All new service/tenant/SDK labs are unexecuted; proposed exercises and expected outcomes are not observed product results. Human review and a complete independent semantic audit remain pending."
      ]
    },
    {
      "exam_code": "MB-820",
      "guide_path": "guides/MB-820-microsoft-dynamics-365-business-central-developer.md",
      "guide_content_sha256": "0be7abf3d006029e0009c97001c77e79025bc8a507b47333c403abb5ff0c4d55",
      "objective_path": "data/objective-snapshots/mb-820-official-objectives.txt",
      "objective_raw_sha256": "1e1a344d7da21661343df954d830f847f10aa2e3742893e8fab5381666dca108",
      "objective_count": 75,
      "source_validation_id": "mb-820-2026-10-28-remaining-group04-source-validation",
      "link_evidence": {
        "unique_external_links": 52,
        "reachable": 51,
        "access_blocked": 1,
        "missing_or_error": 0
      },
      "source_ids": [
        "g04-examb-devenv-al-variables",
        "g04-examb-devenv-application-insights-for-extensions",
        "g04-examb-devenv-instrument-application-for-telemetry-app-insights",
        "g04-examb-devenv-profile-object",
        "g04-examb-devenv-query-object",
        "g04-examb-devenv-report-dataset",
        "g04-examb-devenv-report-object",
        "g04-examb-devenv-substituting-reports",
        "g04-examb-devenv-test-codeunits-and-test-methods",
        "g04-examb-devenv-views",
        "g04-examb-devenv-xmlport-object",
        "g04-examb-onboarding-checklist",
        "mb-820-blueprint",
        "mb-820-community-session",
        "mb-820-course",
        "mb-820-credential",
        "mb-820-docs",
        "mb-820-labs",
        "mb-820-oreilly-companion",
        "mb-820-partner-skilling-hub",
        "mb-820-path-al",
        "mb-820-path-best-practices",
        "mb-820-path-customization",
        "mb-820-path-data",
        "mb-820-path-interface",
        "mb-820-path-reports",
        "mb-820-path-standards",
        "mb-820-path-ui",
        "mb-820-plataan-webinar",
        "mb-820-practice",
        "mb820-al-go",
        "mb820-api",
        "mb820-api-blog",
        "mb820-api-custom",
        "mb820-api-tips",
        "mb820-batch",
        "mb820-codeunit-run",
        "mb820-commit",
        "mb820-deprecated",
        "mb820-flowfields",
        "mb820-focused-lab",
        "mb820-http",
        "mb820-inherent",
        "mb820-ishandled",
        "mb820-outbox-blog",
        "mb820-partial",
        "mb820-read-scale",
        "mb820-telemetry",
        "mb820-test",
        "mb820-try",
        "mb820-upgrade",
        "microsoft-ai-at-work-roadmap-transition"
      ],
      "outcome": "reviewed",
      "lab_execution": "not-executed",
      "remaining_limits": [
        "New examples and learning worksheets are proposed/tabletop only. No new service, tenant, engine or SDK execution.",
        "All new service/tenant/SDK labs are unexecuted; proposed exercises and expected outcomes are not observed product results. Human review and a complete independent semantic audit remain pending."
      ]
    },
    {
      "exam_code": "PL-300",
      "guide_path": "guides/PL-300-microsoft-power-bi-data-analyst.md",
      "guide_content_sha256": "a8d85b7c0cc3756a49c5b9885f9462f98bfc5e3ce429986817cafff4bf6dc185",
      "objective_path": "data/objective-snapshots/pl-300-official-objectives.txt",
      "objective_raw_sha256": "c1c6a25ab5e6285ba4cce3603f6e2624f482ff1d6f237d68e6fa79da93d9e8d9",
      "objective_count": 78,
      "source_validation_id": "pl-300-2026-10-28-remaining-group04-source-validation",
      "link_evidence": {
        "unique_external_links": 56,
        "reachable": 52,
        "access_blocked": 4,
        "missing_or_error": 0
      },
      "source_ids": [
        "dp600-active-relationships",
        "dp600-adbc",
        "dp600-direct-lake-how",
        "g04-examb-calculation-groups",
        "g04-examb-copilot-create-narrative",
        "g04-examb-copilot-create-reports",
        "g04-examb-desktop-calculated-tables",
        "g04-examb-desktop-drillthrough",
        "g04-examb-desktop-quick-measures",
        "g04-examb-desktop-tooltips",
        "mb-820-partner-skilling-hub",
        "microsoft-ai-at-work-roadmap",
        "microsoft-ai-at-work-roadmap-transition",
        "pl-300-blueprint",
        "pl-300-course",
        "pl-300-coursera-microsoft",
        "pl-300-credential",
        "pl-300-measureup",
        "pl-300-official-labs",
        "pl-300-oreilly-study-guide",
        "pl-300-path-intro",
        "pl-300-path-manage",
        "pl-300-path-model",
        "pl-300-path-prepare",
        "pl-300-path-reports",
        "pl-300-pluralsight",
        "pl-300-power-bi-calculation-options",
        "pl-300-power-bi-dax-query-view",
        "pl-300-power-bi-performance-analyzer",
        "pl-300-power-bi-visual-calculations",
        "pl-300-practice",
        "pl-300-reactor-orientation",
        "pl-300-udemy-practice-2026",
        "pl-300-udemy-schuler",
        "pl-300-whizlabs",
        "pl-300-youtube-guy-in-a-cube",
        "pl-300-youtube-power-bi",
        "pl300-alerts",
        "pl300-buffer",
        "pl300-calculate",
        "pl300-calculated-columns",
        "pl300-copilot",
        "pl300-copilot-summary",
        "pl300-desktop-updates",
        "pl300-distinctcount",
        "pl300-focused-lab",
        "pl300-labels",
        "pl300-page-refresh",
        "pl300-qa-limits",
        "pl300-qa-update-blog",
        "pl300-qa-visual",
        "pl300-refresh",
        "pl300-refresh-data",
        "pl300-rls",
        "pl300-table-distinct",
        "pl300-visual-perf-blog"
      ],
      "outcome": "reviewed",
      "lab_execution": "not-executed",
      "remaining_limits": [
        "New examples and learning worksheets are proposed/tabletop only. No new service, tenant, engine or SDK execution.",
        "All new service/tenant/SDK labs are unexecuted; proposed exercises and expected outcomes are not observed product results. Human review and a complete independent semantic audit remain pending."
      ]
    },
    {
      "exam_code": "PL-900",
      "guide_path": "guides/PL-900-microsoft-power-platform-fundamentals.md",
      "guide_content_sha256": "d111dba01cb12e5fb753260ef6f19967ca34bcac282fd54f1bd8e5b8db253c77",
      "objective_path": "data/objective-snapshots/pl-900-official-objectives.txt",
      "objective_raw_sha256": "959c63326efa3e74735cd2abc1cb28246d816506296b218428802240f9f99bd0",
      "objective_count": 37,
      "source_validation_id": "pl-900-2026-10-28-remaining-group04-source-validation",
      "link_evidence": {
        "unique_external_links": 60,
        "reachable": 58,
        "access_blocked": 2,
        "missing_or_error": 0
      },
      "source_ids": [
        "ab100-advanced-connector-policies",
        "ab410-flow-limits",
        "ab410-long-approval",
        "copilot-studio-agent-build-overview",
        "copilot-studio-guidance",
        "g04-examb-ai-conversations-create-app",
        "g04-examb-authoring-create-edit-topics",
        "g04-examb-build-solution",
        "g04-examb-copilot-in-power-automate-for-desktop",
        "g04-examb-form-processing-model-in-flow",
        "g04-pluralsight-pl900-introduction",
        "linkedin-learning-pl-900-microsoft-press",
        "measureup-pl-900-practice-test",
        "microsoft-agent-365-ga-announcement",
        "microsoft-agent-365-overview-pl900",
        "microsoft-ai-at-work-roadmap",
        "microsoft-ai-at-work-roadmap-transition",
        "microsoft-copilot-studio-agent-evaluation-pl900",
        "microsoft-copilot-studio-agent-flows-overview-pl900",
        "microsoft-copilot-studio-agent-tools-ab100",
        "microsoft-copilot-studio-docs-pl900",
        "microsoft-copilot-studio-overview-pl900",
        "microsoft-dataverse-overview-pl900",
        "microsoft-dataverse-security-model-pl900",
        "microsoft-pl-900-course",
        "microsoft-pl-900-practice-assessment",
        "microsoft-power-apps-accessible-apps-pl900",
        "microsoft-power-apps-code-apps-overview-pl900",
        "microsoft-power-apps-delegation-overview-pl900",
        "microsoft-power-apps-docs-pl900",
        "microsoft-power-apps-model-driven-overview-pl900",
        "microsoft-power-apps-monitor-overview-pl900",
        "microsoft-power-apps-plan-designer-faq-pl900",
        "microsoft-power-apps-vibe-overview-pl900",
        "microsoft-power-automate-approvals-pl900",
        "microsoft-power-automate-cloud-flows-overview-pl900",
        "microsoft-power-automate-copilot-cloud-flow-pl900",
        "microsoft-power-automate-desktop-flows-intro-pl900",
        "microsoft-power-automate-docs-pl900",
        "microsoft-power-platform-dlp-pl900",
        "microsoft-power-platform-docs-pl900",
        "microsoft-power-platform-environments-overview-pl900",
        "microsoft-power-platform-pipelines-pl900",
        "microsoft-power-platform-security-docs-pl900",
        "microsoft-power-platform-solution-concepts-pl900",
        "microsoft-power-platform-well-architected-ab100",
        "oreilly-pl-900-video",
        "pl-900-blueprint",
        "pl400-september-updates",
        "pl900-app-building-blog",
        "pl900-certification-page",
        "pl900-dlp-combined",
        "pl900-knowledge-overview",
        "pl900-power-series",
        "pl900-upload-permissions",
        "power-platform-alm-docs",
        "power-platform-important-changes",
        "skilling-hub-levelup-pl-900",
        "udemy-pl-900-phillip-burton",
        "whizlabs-pl-900"
      ],
      "outcome": "reviewed",
      "lab_execution": "not-executed",
      "remaining_limits": [
        "New examples and learning worksheets are proposed/tabletop only. No new service, tenant, engine or SDK execution.",
        "All new service/tenant/SDK labs are unexecuted; proposed exercises and expected outcomes are not observed product results. Human review and a complete independent semantic audit remain pending."
      ]
    },
    {
      "exam_code": "SC-500",
      "guide_path": "guides/SC-500-microsoft-cloud-ai-security-engineer.md",
      "guide_content_sha256": "f9f604b2bf2b694b08f9da07b87fd918e26fc6713fa1b35deadc60c0122895a2",
      "objective_path": "data/objective-snapshots/sc-500-official-objectives.txt",
      "objective_raw_sha256": "9f832db799678f547b3272c902e5529c77077e2cd4272326cf8ad94ef50cf7c6",
      "objective_count": 87,
      "source_validation_id": "sc-500-2026-10-28-remaining-group04-source-validation",
      "link_evidence": {
        "unique_external_links": 66,
        "reachable": 62,
        "access_blocked": 4,
        "missing_or_error": 0
      },
      "source_ids": [
        "az-700-private-link-overview",
        "az-800-entra-private-access",
        "az-801-doc-05-plan-defender-for-servers-select-plan",
        "az-801-doc-15-disk-encryption-overview",
        "az104-sas",
        "g04-examb-connect-services-windows-based",
        "g04-examb-windows-security-event-id-reference",
        "mb-820-partner-skilling-hub",
        "microsoft-entra-conditional-access-overview",
        "microsoft-entra-pim-configure-sc900",
        "microsoft-reactor",
        "sc-100-agent-conditional-access",
        "sc-100-agent-identities",
        "sc-100-defender-cspm",
        "sc-100-defender-easm",
        "sc-500-ai-gateway-capabilities",
        "sc-500-ai-threat-protection",
        "sc-500-az500-transition",
        "sc-500-backup-security",
        "sc-500-blueprint",
        "sc-500-copilot-studio-protection",
        "sc-500-credential",
        "sc-500-data-ai-dashboard",
        "sc-500-defender-databases",
        "sc-500-defender-foundry-path",
        "sc-500-defender-key-vault",
        "sc-500-defender-storage",
        "sc-500-instructor-course",
        "sc-500-john-savill-az500-cram",
        "sc-500-key-vault-network-security",
        "sc-500-key-vault-rbac",
        "sc-500-learn-ai-security",
        "sc-500-learn-app-platform",
        "sc-500-learn-defender-posture",
        "sc-500-learn-entra-access",
        "sc-500-learn-governance",
        "sc-500-learn-key-vault",
        "sc-500-learn-network",
        "sc-500-learn-security-copilot",
        "sc-500-learn-sentinel-collection",
        "sc-500-learn-server-vm",
        "sc-500-learn-sql",
        "sc-500-learn-storage",
        "sc-500-managed-identities",
        "sc-500-network-watcher-diagnostics",
        "sc-500-oreilly-az500-legacy",
        "sc-500-pluralsight-az500-legacy",
        "sc-500-policy-effects",
        "sc-500-regulatory-compliance",
        "sc-500-security-copilot-docs",
        "sc-500-sentinel-defender-portal",
        "sc-500-tim-warner-companion",
        "sc-500-udemy-alan-rodrigues",
        "sc-500-udemy-john-christopher",
        "sc-500-udemy-practice-duffy",
        "sc100-cloud-release",
        "sc100-isoc-blog",
        "sc100-storm-blog",
        "sc500-3-protection-unit",
        "sc500-4-protection-unit",
        "sc500-ai-posture",
        "sc500-copilot-roles",
        "sc500-lake-retention",
        "sc500-multicloud-matrix",
        "sc500-scanning",
        "sc500-vault-schema"
      ],
      "outcome": "reviewed-with-blockers",
      "lab_execution": "not-executed",
      "remaining_limits": [
        "Earlier October27 Foundational CSPM opt-in announcement absent from current release body; actual default behavior unconfirmed. Omission proves neither rollout nor cancellation.",
        "New examples and learning worksheets are proposed/tabletop only. No new service, tenant, engine or SDK execution.",
        "All new service/tenant/SDK labs are unexecuted; proposed exercises and expected outcomes are not observed product results. Human review and a complete independent semantic audit remain pending."
      ]
    },
    {
      "exam_code": "AB-250",
      "guide_path": "guides/AB-250-transforming-contact-center-experiences-ai-dynamics-365.md",
      "guide_content_sha256": "4d10c415eb14245dd8dc4d38fee8f2ad3f69f332ed32ff791e40114c3855947f",
      "objective_path": "data/objective-snapshots/ab-250-official-objectives.txt",
      "objective_raw_sha256": "852f325868be15013f6b67d2fe5e0152744d4e1d8c1f86a82874b2eecaca5e11",
      "objective_count": 119,
      "source_validation_id": "ab-250-2026-10-28-remaining-group04-source-validation",
      "link_evidence": {
        "unique_external_links": 80,
        "reachable": 80,
        "access_blocked": 0,
        "missing_or_error": 0
      },
      "source_ids": [
        "ab-250-blueprint",
        "ab-250-course",
        "ab-250-credential",
        "ab-250-docs",
        "ab-250-linkedin-learning",
        "ab-250-partner-transition",
        "ab-250-path-channels",
        "ab-250-path-implement",
        "ab-250-path-monitor",
        "ab-250-path-representatives",
        "ab250-acs-migration",
        "ab250-acs-retirement",
        "ab250-agents",
        "ab250-capacity",
        "ab250-chat-auth",
        "ab250-connector",
        "ab250-deprecations",
        "ab250-diagnose",
        "ab250-embedded",
        "ab250-forecast",
        "ab250-hours",
        "ab250-intent",
        "ab250-knowledge",
        "ab250-masking",
        "ab250-overflow",
        "ab250-proactive",
        "ab250-quality",
        "ab250-quality-coach",
        "ab250-queues",
        "ab250-realtime",
        "ab250-realtime-setup",
        "ab250-record-api",
        "ab250-release-wave",
        "ab250-release26073",
        "ab250-rollout",
        "ab250-route-rules",
        "ab250-service-ops",
        "ab250-simulation",
        "ab250-supervisor-controls-unit",
        "ab250-teams-migration",
        "ab250-teams-voice",
        "ab250-voice-acs",
        "ab250-voice-deployment",
        "ab250-voice-faq",
        "ab250-voice-install",
        "ab250-voice-masking",
        "ab250-wem-blog",
        "ab250-wem-ga-blog",
        "ab250-wem-tools",
        "ab250-whatsnew",
        "g04-examb-agent-scripts",
        "g04-examb-auto-close-conversation-powerapps",
        "g04-examb-automation-dictionary-keys",
        "g04-examb-configure-surveys",
        "g04-examb-configure-time-out-rules",
        "g04-examb-contactcentermessagingsdk-android",
        "g04-examb-copilot-enable-help-pane",
        "g04-examb-copilot-enable-summary",
        "g04-examb-create-agent-experience-profile",
        "g04-examb-create-quick-replies",
        "g04-examb-custom-connectors-timeline-control",
        "g04-examb-customize-copilot-conv-summary",
        "g04-examb-extend-copilot-with-copilot-studio",
        "g04-examb-getconversationid",
        "g04-examb-getfocusedsession",
        "g04-examb-intro-messaging-apis",
        "g04-examb-irecordingoperationcompletedeventdata",
        "g04-examb-macros-productivity-automation",
        "g04-examb-microsoft-apm",
        "g04-examb-presence-custom-presence",
        "g04-examb-render-live-chat-widget-mobile",
        "g04-examb-send-auth-token-starting-chat",
        "g04-examb-smart-assist",
        "g04-examb-startchat",
        "g04-examb-voice-configuration",
        "g04-examb-voice-dtmf",
        "g04-examb-voice-sip-x-header",
        "g04-examb-voicemodule",
        "mb-820-partner-skilling-hub",
        "mb230-knowledge"
      ],
      "outcome": "reviewed-with-blockers",
      "lab_execution": "not-executed",
      "remaining_limits": [
        "Contact Center plan/ledger number-acquisition dates and ACS resource-versus-existing-number eligibility statements differ; specific-tenant acquisition/port-in eligibility still needs Microsoft confirmation.",
        "New examples and learning worksheets are proposed/tabletop only. No new service, tenant, engine or SDK execution.",
        "All new service/tenant/SDK labs are unexecuted; proposed exercises and expected outcomes are not observed product results. Human review and a complete independent semantic audit remain pending."
      ]
    }
  ],
  "objective_mapping_matrix": {
    "schema_version": 1,
    "reviewed_on": "2026-10-28",
    "current_objective_count": 784,
    "historical_objective_count": 784,
    "future_objective_count": 0,
    "initial_flags": 302,
    "initial_flag_dispositions": {
      "subset_a_initial_workflow_flags_repaired": 69,
      "subset_b_initial_conservative_flags": 233,
      "subset_b_actual_repairs": 81,
      "subset_b_existing_adequate": 152
    },
    "independent_new_teaching_repairs": 4,
    "exam_repair_packets": 63,
    "teaching_spans": 1126,
    "exams": [
      {
        "exam_code": "DP-900",
        "guide_path": "guides/DP-900-microsoft-azure-data-fundamentals.md",
        "captured_final_guide_path": "C:\\src\\certification-study-library\\.maintenance\\2026-10-28-remaining-refresh\\group-04\\review-inputs\\DP-900-microsoft-azure-data-fundamentals.md",
        "guide_lf_sha256": "1c618b776923450c7bbf59aac51ce2bf3b64cfb5dcc214e6b4b388a718332991",
        "objective_raw_sha256": "7cef780d1a9e8e88b587fba89acb994985c4aedbd491710e814686ce5dc6559f",
        "objective_count": 30,
        "group_count": 11,
        "line_count": 798,
        "diff_path": "C:\\src\\certification-study-library\\.maintenance\\2026-10-28-remaining-refresh\\group-04\\review-inputs\\DP-900.diff",
        "diff_raw_sha256": "96f0e5f4d5b4747857560da42cffd32d79ae58a2ce66ebbfdf3d1fc9e206e814",
        "initial_flags": 0,
        "remaining_material_named_workflow_gaps": [],
        "source_gate_state": "passed per coordinator; separate from this semantic review",
        "current_mapping": [
          {
            "wording": "Describe the features of structured data",
            "objective_wording_sha256": "e7d0bf603f586eebcced597107002a5330f5c0cae7f53c92f51c5669ca435bfd",
            "group": "Describe ways to represent data",
            "group_number": 1,
            "objective_number": 1,
            "objective_id": "1.1.1",
            "domain": "Describe core data concepts (25–30%)",
            "version": "Skills measured as of July 21, 2026",
            "evidence_spans": [
              {
                "heading": "Data representation",
                "start_line": 41,
                "end_line": 53,
                "span_lf_sha256": "c0bf30b264dce32c26ce4a7fcea35dd5bcc3bebc8a8a8fb2c631d009cbba9e90"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "The shape table distinguishes schema, flexible self-description and binary/document examples; the text separates representation from store choice.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "The shape table distinguishes schema, flexible self-description and binary/document examples; the text separates representation from store choice.",
            "independent_repair_ids": []
          },
          {
            "wording": "Describe the features of semi-structured data",
            "objective_wording_sha256": "75bf092a77498b0ccfe17acbf266eff5de71a7ac42589b8f7730b19a67d84dd1",
            "group": "Describe ways to represent data",
            "group_number": 1,
            "objective_number": 2,
            "objective_id": "1.1.2",
            "domain": "Describe core data concepts (25–30%)",
            "version": "Skills measured as of July 21, 2026",
            "evidence_spans": [
              {
                "heading": "Data representation",
                "start_line": 41,
                "end_line": 53,
                "span_lf_sha256": "c0bf30b264dce32c26ce4a7fcea35dd5bcc3bebc8a8a8fb2c631d009cbba9e90"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "The shape table distinguishes schema, flexible self-description and binary/document examples; the text separates representation from store choice.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "The shape table distinguishes schema, flexible self-description and binary/document examples; the text separates representation from store choice.",
            "independent_repair_ids": []
          },
          {
            "wording": "Describe the features of unstructured data",
            "objective_wording_sha256": "f87e44b5c06506910dee6868f90eae71640333bb176d305f735e244caaa0eb2b",
            "group": "Describe ways to represent data",
            "group_number": 1,
            "objective_number": 3,
            "objective_id": "1.1.3",
            "domain": "Describe core data concepts (25–30%)",
            "version": "Skills measured as of July 21, 2026",
            "evidence_spans": [
              {
                "heading": "Data representation",
                "start_line": 41,
                "end_line": 53,
                "span_lf_sha256": "c0bf30b264dce32c26ce4a7fcea35dd5bcc3bebc8a8a8fb2c631d009cbba9e90"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "The shape table distinguishes schema, flexible self-description and binary/document examples; the text separates representation from store choice.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "The shape table distinguishes schema, flexible self-description and binary/document examples; the text separates representation from store choice.",
            "independent_repair_ids": []
          },
          {
            "wording": "Describe common formats for data files",
            "objective_wording_sha256": "8badbeda54d1026af121dedae0c1fa6e15c5495da5db4de460756219d9b2b3b0",
            "group": "Identify options for data storage",
            "group_number": 2,
            "objective_number": 1,
            "objective_id": "1.2.1",
            "domain": "Describe core data concepts (25–30%)",
            "version": "Skills measured as of July 21, 2026",
            "evidence_spans": [
              {
                "heading": "Data representation",
                "start_line": 41,
                "end_line": 102,
                "span_lf_sha256": "630eae7a460fc96d09cb2674c200ec0cdb9ad8ca85d8c4766db10dfd5047fa20"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "File formats, model/store/engine boundaries and the data-choice table connect storage properties to use cases rather than listing brands.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "File formats, model/store/engine boundaries and the data-choice table connect storage properties to use cases rather than listing brands.",
            "independent_repair_ids": []
          },
          {
            "wording": "Describe features of common data stores including databases",
            "objective_wording_sha256": "6373098e8e0d016575458a671b0441bc21e11fa5d5f554d43099cbc95f4d7129",
            "group": "Identify options for data storage",
            "group_number": 2,
            "objective_number": 2,
            "objective_id": "1.2.2",
            "domain": "Describe core data concepts (25–30%)",
            "version": "Skills measured as of July 21, 2026",
            "evidence_spans": [
              {
                "heading": "Data representation",
                "start_line": 41,
                "end_line": 102,
                "span_lf_sha256": "630eae7a460fc96d09cb2674c200ec0cdb9ad8ca85d8c4766db10dfd5047fa20"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "File formats, model/store/engine boundaries and the data-choice table connect storage properties to use cases rather than listing brands.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "File formats, model/store/engine boundaries and the data-choice table connect storage properties to use cases rather than listing brands.",
            "independent_repair_ids": []
          },
          {
            "wording": "Identify Azure datastores for common use cases",
            "objective_wording_sha256": "4ffff35f4f80954c413d6cccbff6d0bc891f6d1618c58e050d478c13ee51e4af",
            "group": "Identify options for data storage",
            "group_number": 2,
            "objective_number": 3,
            "objective_id": "1.2.3",
            "domain": "Describe core data concepts (25–30%)",
            "version": "Skills measured as of July 21, 2026",
            "evidence_spans": [
              {
                "heading": "Data representation",
                "start_line": 41,
                "end_line": 102,
                "span_lf_sha256": "630eae7a460fc96d09cb2674c200ec0cdb9ad8ca85d8c4766db10dfd5047fa20"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "File formats, model/store/engine boundaries and the data-choice table connect storage properties to use cases rather than listing brands.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "File formats, model/store/engine boundaries and the data-choice table connect storage properties to use cases rather than listing brands.",
            "independent_repair_ids": []
          },
          {
            "wording": "Describe features of transactional workloads",
            "objective_wording_sha256": "e114645783ac8ce0883948501db7d4ab7a432107da30c7ed35b9ba4660b16cc3",
            "group": "Describe common data workloads",
            "group_number": 3,
            "objective_number": 1,
            "objective_id": "1.3.1",
            "domain": "Describe core data concepts (25–30%)",
            "version": "Skills measured as of July 21, 2026",
            "evidence_spans": [
              {
                "heading": "Operational and analytical workloads",
                "start_line": 55,
                "end_line": 69,
                "span_lf_sha256": "4f571f2f22bbe876276996d2fb7d959dc39879de7c72d6beac1321ea9fd7a202"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "OLTP/analytics contrast includes operation size, history, consumers, concurrency and transaction guarantees.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "OLTP/analytics contrast includes operation size, history, consumers, concurrency and transaction guarantees.",
            "independent_repair_ids": []
          },
          {
            "wording": "Describe features of analytical workloads",
            "objective_wording_sha256": "fab0a3c74e8ffe074f1be8245b65c00cd527a02f2340761c669bf798c12838be",
            "group": "Describe common data workloads",
            "group_number": 3,
            "objective_number": 2,
            "objective_id": "1.3.2",
            "domain": "Describe core data concepts (25–30%)",
            "version": "Skills measured as of July 21, 2026",
            "evidence_spans": [
              {
                "heading": "Operational and analytical workloads",
                "start_line": 55,
                "end_line": 69,
                "span_lf_sha256": "4f571f2f22bbe876276996d2fb7d959dc39879de7c72d6beac1321ea9fd7a202"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "OLTP/analytics contrast includes operation size, history, consumers, concurrency and transaction guarantees.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "OLTP/analytics contrast includes operation size, history, consumers, concurrency and transaction guarantees.",
            "independent_repair_ids": []
          },
          {
            "wording": "Describe responsibilities for database administrators",
            "objective_wording_sha256": "2c97ebabfe1146c4f7931a78ce63aa77c95957ad240d22f2e5baeb7724bfda09",
            "group": "Identify roles and responsibilities for data workloads",
            "group_number": 4,
            "objective_number": 1,
            "objective_id": "1.4.1",
            "domain": "Describe core data concepts (25–30%)",
            "version": "Skills measured as of July 21, 2026",
            "evidence_spans": [
              {
                "heading": "Data roles",
                "start_line": 71,
                "end_line": 79,
                "span_lf_sha256": "9bda1713563db34c419f83d92af601a2a65fc7d9f49f62422e1c33ec1b4bacab"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "The role table assigns operational, engineering and analytical responsibilities, allowing overlap without conflating ownership.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "The role table assigns operational, engineering and analytical responsibilities, allowing overlap without conflating ownership.",
            "independent_repair_ids": []
          },
          {
            "wording": "Describe responsibilities for data engineers",
            "objective_wording_sha256": "750e0f7db9fe793151d8251b036aadbfab446b9b919978dea15b734424836b0a",
            "group": "Identify roles and responsibilities for data workloads",
            "group_number": 4,
            "objective_number": 2,
            "objective_id": "1.4.2",
            "domain": "Describe core data concepts (25–30%)",
            "version": "Skills measured as of July 21, 2026",
            "evidence_spans": [
              {
                "heading": "Data roles",
                "start_line": 71,
                "end_line": 79,
                "span_lf_sha256": "9bda1713563db34c419f83d92af601a2a65fc7d9f49f62422e1c33ec1b4bacab"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "The role table assigns operational, engineering and analytical responsibilities, allowing overlap without conflating ownership.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "The role table assigns operational, engineering and analytical responsibilities, allowing overlap without conflating ownership.",
            "independent_repair_ids": []
          },
          {
            "wording": "Describe responsibilities for data analysts",
            "objective_wording_sha256": "ca738dcb9c07b243119e637ed10512f1deca34cecb0b99bbfb8f392226350c16",
            "group": "Identify roles and responsibilities for data workloads",
            "group_number": 4,
            "objective_number": 3,
            "objective_id": "1.4.3",
            "domain": "Describe core data concepts (25–30%)",
            "version": "Skills measured as of July 21, 2026",
            "evidence_spans": [
              {
                "heading": "Data roles",
                "start_line": 71,
                "end_line": 79,
                "span_lf_sha256": "9bda1713563db34c419f83d92af601a2a65fc7d9f49f62422e1c33ec1b4bacab"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "The role table assigns operational, engineering and analytical responsibilities, allowing overlap without conflating ownership.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "The role table assigns operational, engineering and analytical responsibilities, allowing overlap without conflating ownership.",
            "independent_repair_ids": []
          },
          {
            "wording": "Identify features of relational data",
            "objective_wording_sha256": "43131caa2d010f06a61ccd6381378b3b7ef6a820a0ccf8ba1bbb38a1e8b72fc7",
            "group": "Describe relational concepts",
            "group_number": 5,
            "objective_number": 1,
            "objective_id": "2.1.1",
            "domain": "Identify considerations for relational data on Azure (20–25%)",
            "version": "Skills measured as of July 21, 2026",
            "evidence_spans": [
              {
                "heading": "Tables, keys, and relationships",
                "start_line": 116,
                "end_line": 176,
                "span_lf_sha256": "23c78ddb06db95b09c2b42072a886932a91faa986707ebae5de469a278f79920"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "The normalized order model, SQL statement-intent table and SQL example explain relational structure, anomalies, operations and objects.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "The normalized order model, SQL statement-intent table and SQL example explain relational structure, anomalies, operations and objects.",
            "independent_repair_ids": []
          },
          {
            "wording": "Describe normalization and why it is used",
            "objective_wording_sha256": "882ba074d0a9550a1681821a869b66d8fd412c9bd6e966244e9b46e61b932c6f",
            "group": "Describe relational concepts",
            "group_number": 5,
            "objective_number": 2,
            "objective_id": "2.1.2",
            "domain": "Identify considerations for relational data on Azure (20–25%)",
            "version": "Skills measured as of July 21, 2026",
            "evidence_spans": [
              {
                "heading": "Tables, keys, and relationships",
                "start_line": 116,
                "end_line": 176,
                "span_lf_sha256": "23c78ddb06db95b09c2b42072a886932a91faa986707ebae5de469a278f79920"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "The normalized order model, SQL statement-intent table and SQL example explain relational structure, anomalies, operations and objects.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "The normalized order model, SQL statement-intent table and SQL example explain relational structure, anomalies, operations and objects.",
            "independent_repair_ids": []
          },
          {
            "wording": "Identify common structured query language (SQL) statements",
            "objective_wording_sha256": "a904f9bad82501e79d3580f72c839ff74604fafaab7bb8d28126b529f54db1ac",
            "group": "Describe relational concepts",
            "group_number": 5,
            "objective_number": 3,
            "objective_id": "2.1.3",
            "domain": "Identify considerations for relational data on Azure (20–25%)",
            "version": "Skills measured as of July 21, 2026",
            "evidence_spans": [
              {
                "heading": "Tables, keys, and relationships",
                "start_line": 116,
                "end_line": 176,
                "span_lf_sha256": "23c78ddb06db95b09c2b42072a886932a91faa986707ebae5de469a278f79920"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "The normalized order model, SQL statement-intent table and SQL example explain relational structure, anomalies, operations and objects.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "The normalized order model, SQL statement-intent table and SQL example explain relational structure, anomalies, operations and objects.",
            "independent_repair_ids": []
          },
          {
            "wording": "Identify common database objects",
            "objective_wording_sha256": "d2fab3cb6680a8c5a4d5778d4b5163c2719945543cb62ea3571e1081d7330bef",
            "group": "Describe relational concepts",
            "group_number": 5,
            "objective_number": 4,
            "objective_id": "2.1.4",
            "domain": "Identify considerations for relational data on Azure (20–25%)",
            "version": "Skills measured as of July 21, 2026",
            "evidence_spans": [
              {
                "heading": "Tables, keys, and relationships",
                "start_line": 116,
                "end_line": 176,
                "span_lf_sha256": "23c78ddb06db95b09c2b42072a886932a91faa986707ebae5de469a278f79920"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "The normalized order model, SQL statement-intent table and SQL example explain relational structure, anomalies, operations and objects.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "The normalized order model, SQL statement-intent table and SQL example explain relational structure, anomalies, operations and objects.",
            "independent_repair_ids": []
          },
          {
            "wording": "Describe the Azure SQL family of products, including Azure SQL Database, Azure SQL Managed Instance, and SQL Server on Azure Virtual Machines",
            "objective_wording_sha256": "d78d8f3d46abd12ae3d3c8b628d3f760beca665c83658e2ebc2491c3df85b940",
            "group": "Describe relational Azure data services",
            "group_number": 6,
            "objective_number": 1,
            "objective_id": "2.2.1",
            "domain": "Identify considerations for relational data on Azure (20–25%)",
            "version": "Skills measured as of July 21, 2026",
            "evidence_spans": [
              {
                "heading": "Azure relational services",
                "start_line": 178,
                "end_line": 217,
                "span_lf_sha256": "bd919d637536de4dd156691d8711b78f7896ab8278dad10edc718f35cbb4ecd8"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Service comparison and scenario matrix distinguish compatibility, operating-system control and PostgreSQL/MySQL engine fit.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Service comparison and scenario matrix distinguish compatibility, operating-system control and PostgreSQL/MySQL engine fit.",
            "independent_repair_ids": []
          },
          {
            "wording": "Identify Azure database services for open-source database systems",
            "objective_wording_sha256": "3e7e4f221ad1612f65b01fbe2ac2cdc5d02d35713eba67ec7f76807556982706",
            "group": "Describe relational Azure data services",
            "group_number": 6,
            "objective_number": 2,
            "objective_id": "2.2.2",
            "domain": "Identify considerations for relational data on Azure (20–25%)",
            "version": "Skills measured as of July 21, 2026",
            "evidence_spans": [
              {
                "heading": "Azure relational services",
                "start_line": 178,
                "end_line": 217,
                "span_lf_sha256": "bd919d637536de4dd156691d8711b78f7896ab8278dad10edc718f35cbb4ecd8"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Service comparison and scenario matrix distinguish compatibility, operating-system control and PostgreSQL/MySQL engine fit.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Service comparison and scenario matrix distinguish compatibility, operating-system control and PostgreSQL/MySQL engine fit.",
            "independent_repair_ids": []
          },
          {
            "wording": "Describe features of Azure Blob storage",
            "objective_wording_sha256": "40576f645f47fc43df8b6d249e37c94719667a930a6d238105a72358bda93db1",
            "group": "Describe the capabilities of Azure storage",
            "group_number": 7,
            "objective_number": 1,
            "objective_id": "3.1.1",
            "domain": "Describe considerations for working with non-relational data on Azure (15–20%)",
            "version": "Skills measured as of July 21, 2026",
            "evidence_spans": [
              {
                "heading": "Azure Storage options",
                "start_line": 230,
                "end_line": 251,
                "span_lf_sha256": "4b2a3ab85613b67a60c2f076e17cf34734964d5ac5304afc9183c11d0faa7772"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Protocol/use-case table, entity keys and hierarchical-namespace distinction explain Blob, Files and Table behavior.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Protocol/use-case table, entity keys and hierarchical-namespace distinction explain Blob, Files and Table behavior.",
            "independent_repair_ids": []
          },
          {
            "wording": "Describe features of Azure Files",
            "objective_wording_sha256": "77c40dfb5cead7774d22798ef2d9f16dccaa63f43c10daf5a0272159601c1322",
            "group": "Describe the capabilities of Azure storage",
            "group_number": 7,
            "objective_number": 2,
            "objective_id": "3.1.2",
            "domain": "Describe considerations for working with non-relational data on Azure (15–20%)",
            "version": "Skills measured as of July 21, 2026",
            "evidence_spans": [
              {
                "heading": "Azure Storage options",
                "start_line": 230,
                "end_line": 251,
                "span_lf_sha256": "4b2a3ab85613b67a60c2f076e17cf34734964d5ac5304afc9183c11d0faa7772"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Protocol/use-case table, entity keys and hierarchical-namespace distinction explain Blob, Files and Table behavior.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Protocol/use-case table, entity keys and hierarchical-namespace distinction explain Blob, Files and Table behavior.",
            "independent_repair_ids": []
          },
          {
            "wording": "Describe features of Azure Table storage",
            "objective_wording_sha256": "2d9b03baab576d11461a87c48f71cd6ba6a6d4193b47e97cdfc0dc62a1cbb1a6",
            "group": "Describe the capabilities of Azure storage",
            "group_number": 7,
            "objective_number": 3,
            "objective_id": "3.1.3",
            "domain": "Describe considerations for working with non-relational data on Azure (15–20%)",
            "version": "Skills measured as of July 21, 2026",
            "evidence_spans": [
              {
                "heading": "Azure Storage options",
                "start_line": 230,
                "end_line": 251,
                "span_lf_sha256": "4b2a3ab85613b67a60c2f076e17cf34734964d5ac5304afc9183c11d0faa7772"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Protocol/use-case table, entity keys and hierarchical-namespace distinction explain Blob, Files and Table behavior.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Protocol/use-case table, entity keys and hierarchical-namespace distinction explain Blob, Files and Table behavior.",
            "independent_repair_ids": []
          },
          {
            "wording": "Identify use cases for Azure Cosmos DB",
            "objective_wording_sha256": "311ba9069370fb5ea4a07bd8a8ff882e82b1572c6ff0b48c183f31697f325bc5",
            "group": "Describe the capabilities and features of Azure Cosmos DB",
            "group_number": 8,
            "objective_number": 1,
            "objective_id": "3.2.1",
            "domain": "Describe considerations for working with non-relational data on Azure (15–20%)",
            "version": "Skills measured as of July 21, 2026",
            "evidence_spans": [
              {
                "heading": "Azure Cosmos DB",
                "start_line": 253,
                "end_line": 307,
                "span_lf_sha256": "af6adaddda9e6dba4bf29a1cddff91a6f738e77cabf2a2632783fa2ee8e0e3db"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Partition/consistency/RU teaching and API table distinguish supported models and separate DocumentDB from RU-based Cosmos offerings.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Partition/consistency/RU teaching and API table distinguish supported models and separate DocumentDB from RU-based Cosmos offerings.",
            "independent_repair_ids": []
          },
          {
            "wording": "Describe Azure Cosmos DB APIs",
            "objective_wording_sha256": "262247ff67e27046f4a537a2d98008c8f7aec99aac9bbe78faad11755c16ca33",
            "group": "Describe the capabilities and features of Azure Cosmos DB",
            "group_number": 8,
            "objective_number": 2,
            "objective_id": "3.2.2",
            "domain": "Describe considerations for working with non-relational data on Azure (15–20%)",
            "version": "Skills measured as of July 21, 2026",
            "evidence_spans": [
              {
                "heading": "Azure Cosmos DB",
                "start_line": 253,
                "end_line": 307,
                "span_lf_sha256": "af6adaddda9e6dba4bf29a1cddff91a6f738e77cabf2a2632783fa2ee8e0e3db"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Partition/consistency/RU teaching and API table distinguish supported models and separate DocumentDB from RU-based Cosmos offerings.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Partition/consistency/RU teaching and API table distinguish supported models and separate DocumentDB from RU-based Cosmos offerings.",
            "independent_repair_ids": []
          },
          {
            "wording": "Describe considerations for data ingestion and processing",
            "objective_wording_sha256": "1ca3bee8dc5d41aaafc3634654c4e314786c741e0d7948f07fc88820e8c104b0",
            "group": "Describe common elements of large-scale analytics",
            "group_number": 9,
            "objective_number": 1,
            "objective_id": "4.1.1",
            "domain": "Describe an analytics workload (25–30%)",
            "version": "Skills measured as of July 21, 2026",
            "evidence_spans": [
              {
                "heading": "The analytics pipeline",
                "start_line": 311,
                "end_line": 343,
                "span_lf_sha256": "36a3b6eae3df6c2f872130cbd3f512de4411b5e428764a02088cc0054dc9a1a2"
              },
              {
                "heading": "Analytical stores and Microsoft services",
                "start_line": 378,
                "end_line": 409,
                "span_lf_sha256": "74f697ebbc7b1b89eda74806cb50cda204e129cfac25c3b9b58cc840fbb08371"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Ingest-transform-orchestrate stages and failure questions explain data flow; analytical store selection is taught at lines378–409.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Ingest-transform-orchestrate stages and failure questions explain data flow; analytical store selection is taught at lines378–409.",
            "independent_repair_ids": []
          },
          {
            "wording": "Describe options for analytical data stores",
            "objective_wording_sha256": "d5ba168f8daa5e7c5049f4a69e8b8fc2cb2feed52aa0aeb30032b755188f4e15",
            "group": "Describe common elements of large-scale analytics",
            "group_number": 9,
            "objective_number": 2,
            "objective_id": "4.1.2",
            "domain": "Describe an analytics workload (25–30%)",
            "version": "Skills measured as of July 21, 2026",
            "evidence_spans": [
              {
                "heading": "The analytics pipeline",
                "start_line": 311,
                "end_line": 343,
                "span_lf_sha256": "36a3b6eae3df6c2f872130cbd3f512de4411b5e428764a02088cc0054dc9a1a2"
              },
              {
                "heading": "Analytical stores and Microsoft services",
                "start_line": 378,
                "end_line": 409,
                "span_lf_sha256": "74f697ebbc7b1b89eda74806cb50cda204e129cfac25c3b9b58cc840fbb08371"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Ingest-transform-orchestrate stages and failure questions explain data flow; analytical store selection is taught at lines378–409.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Ingest-transform-orchestrate stages and failure questions explain data flow; analytical store selection is taught at lines378–409.",
            "independent_repair_ids": []
          },
          {
            "wording": "Describe Microsoft cloud services for large-scale analytics, including Azure Databricks and Microsoft Fabric",
            "objective_wording_sha256": "3c8e530132eb285c231e07a3aed11c9093e66e114ea11beeb330ff386e6f003a",
            "group": "Describe common elements of large-scale analytics",
            "group_number": 9,
            "objective_number": 3,
            "objective_id": "4.1.3",
            "domain": "Describe an analytics workload (25–30%)",
            "version": "Skills measured as of July 21, 2026",
            "evidence_spans": [
              {
                "heading": "The analytics pipeline",
                "start_line": 311,
                "end_line": 343,
                "span_lf_sha256": "36a3b6eae3df6c2f872130cbd3f512de4411b5e428764a02088cc0054dc9a1a2"
              },
              {
                "heading": "Analytical stores and Microsoft services",
                "start_line": 378,
                "end_line": 409,
                "span_lf_sha256": "74f697ebbc7b1b89eda74806cb50cda204e129cfac25c3b9b58cc840fbb08371"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Ingest-transform-orchestrate stages and failure questions explain data flow; analytical store selection is taught at lines378–409.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Ingest-transform-orchestrate stages and failure questions explain data flow; analytical store selection is taught at lines378–409.",
            "independent_repair_ids": []
          },
          {
            "wording": "Describe the difference between batch and streaming data",
            "objective_wording_sha256": "e26f5fa6922b1df5ca673c1e9f90a3346c34df4ca037f5ec87f18076a05ea7f1",
            "group": "Describe considerations for real-time data analytics",
            "group_number": 10,
            "objective_number": 1,
            "objective_id": "4.2.1",
            "domain": "Describe an analytics workload (25–30%)",
            "version": "Skills measured as of July 21, 2026",
            "evidence_spans": [
              {
                "heading": "Batch and streaming",
                "start_line": 345,
                "end_line": 376,
                "span_lf_sha256": "2f0cbe4910604efbe61161787b82e3dc71f0f31e7f55c84fbeb6959a7c922768"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Bounded versus unbounded input, time semantics and job-based service table distinguish stream ingestion, query and action.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Bounded versus unbounded input, time semantics and job-based service table distinguish stream ingestion, query and action.",
            "independent_repair_ids": []
          },
          {
            "wording": "Identify Microsoft cloud services for real-time analytics",
            "objective_wording_sha256": "ee910f6ed30fa2f106e87925027d07051ead2bdaff7e827234edddf09550a1bf",
            "group": "Describe considerations for real-time data analytics",
            "group_number": 10,
            "objective_number": 2,
            "objective_id": "4.2.2",
            "domain": "Describe an analytics workload (25–30%)",
            "version": "Skills measured as of July 21, 2026",
            "evidence_spans": [
              {
                "heading": "Batch and streaming",
                "start_line": 345,
                "end_line": 376,
                "span_lf_sha256": "2f0cbe4910604efbe61161787b82e3dc71f0f31e7f55c84fbeb6959a7c922768"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Bounded versus unbounded input, time semantics and job-based service table distinguish stream ingestion, query and action.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Bounded versus unbounded input, time semantics and job-based service table distinguish stream ingestion, query and action.",
            "independent_repair_ids": []
          },
          {
            "wording": "Identify the capabilities of Power BI",
            "objective_wording_sha256": "36c4a749a838706578f983b7b22d801672ce3661303d4a326dd26c2f1ee882cb",
            "group": "Describe data visualization in Microsoft Power BI",
            "group_number": 11,
            "objective_number": 1,
            "objective_id": "4.3.1",
            "domain": "Describe an analytics workload (25–30%)",
            "version": "Skills measured as of July 21, 2026",
            "evidence_spans": [
              {
                "heading": "Power BI concepts",
                "start_line": 411,
                "end_line": 448,
                "span_lf_sha256": "52651bdbb4f5980aad090ef4ca5bc0a696ea468269a60321edd531ec1fdd8d33"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Authoring/service/artifact distinctions, model layers and visual-selection table explain capabilities, semantic modeling and visualization fit.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Authoring/service/artifact distinctions, model layers and visual-selection table explain capabilities, semantic modeling and visualization fit.",
            "independent_repair_ids": []
          },
          {
            "wording": "Describe features of data models in Power BI",
            "objective_wording_sha256": "ef004fb7288bbf0397afad2c96e502d4ec266fcee0bf79f41c3ed84df7f64509",
            "group": "Describe data visualization in Microsoft Power BI",
            "group_number": 11,
            "objective_number": 2,
            "objective_id": "4.3.2",
            "domain": "Describe an analytics workload (25–30%)",
            "version": "Skills measured as of July 21, 2026",
            "evidence_spans": [
              {
                "heading": "Power BI concepts",
                "start_line": 411,
                "end_line": 448,
                "span_lf_sha256": "52651bdbb4f5980aad090ef4ca5bc0a696ea468269a60321edd531ec1fdd8d33"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Authoring/service/artifact distinctions, model layers and visual-selection table explain capabilities, semantic modeling and visualization fit.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Authoring/service/artifact distinctions, model layers and visual-selection table explain capabilities, semantic modeling and visualization fit.",
            "independent_repair_ids": []
          },
          {
            "wording": "Identify appropriate visualizations for data",
            "objective_wording_sha256": "b75eccc26f6cbe8b776826b7e11543bbecb7e02e99407aa53a9923971ad632a6",
            "group": "Describe data visualization in Microsoft Power BI",
            "group_number": 11,
            "objective_number": 3,
            "objective_id": "4.3.3",
            "domain": "Describe an analytics workload (25–30%)",
            "version": "Skills measured as of July 21, 2026",
            "evidence_spans": [
              {
                "heading": "Power BI concepts",
                "start_line": 411,
                "end_line": 448,
                "span_lf_sha256": "52651bdbb4f5980aad090ef4ca5bc0a696ea468269a60321edd531ec1fdd8d33"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Authoring/service/artifact distinctions, model layers and visual-selection table explain capabilities, semantic modeling and visualization fit.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Authoring/service/artifact distinctions, model layers and visual-selection table explain capabilities, semantic modeling and visualization fit.",
            "independent_repair_ids": []
          }
        ],
        "independent_repairs": 0
      },
      {
        "exam_code": "MB-230",
        "guide_path": "guides/MB-230-microsoft-dynamics-365-customer-service-functional-consultant.md",
        "captured_final_guide_path": "C:\\src\\certification-study-library\\.maintenance\\2026-10-28-remaining-refresh\\group-04\\review-inputs\\MB-230-microsoft-dynamics-365-customer-service-functional-consultant.md",
        "guide_lf_sha256": "f77caba6a0b5798ef90debb933287369323188d4dc567bbc11cdf9b4b875b743",
        "objective_raw_sha256": "e5925c65c9de7fad2e0d1d921564490a83ce02092b95ad95382775abd6352b38",
        "objective_count": 50,
        "group_count": 10,
        "line_count": 557,
        "diff_path": "C:\\src\\certification-study-library\\.maintenance\\2026-10-28-remaining-refresh\\group-04\\review-inputs\\MB-230.diff",
        "diff_raw_sha256": "bf1aabdfc6b6a3f71289cccdbb208db6e4a4e94773af6f13a3a8b62c1bab4317",
        "initial_flags": 15,
        "remaining_material_named_workflow_gaps": [],
        "source_gate_state": "blocked per coordinator; separate from semantic depth",
        "current_mapping": [
          {
            "wording": "Implement and monitor record creation and update rules",
            "objective_wording_sha256": "b9eb98b733b695310d9ec74bb5c1e1d88cea5e08106ecb7d4264fe365574f60c",
            "group": "Define and configure foundational Customer Service components",
            "group_number": 1,
            "objective_number": 1,
            "objective_id": "1.1.1",
            "domain": "Manage cases in Customer Service (51–55%)",
            "version": "Skills measured as of March 11, 2026",
            "evidence_spans": [
              {
                "heading": "Model the case lifecycle",
                "start_line": 52,
                "end_line": 74,
                "span_lf_sha256": "1a4bbf9dc050d61ffeedf377a82888d67780d24f3c6065d724481296e57669ed"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Intake-rule inputs and negative paths, resolution evidence, persona authorization and timeline/card design form a case-control model.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Intake-rule inputs and negative paths, resolution evidence, persona authorization and timeline/card design form a case-control model.",
            "independent_repair_ids": []
          },
          {
            "wording": "Configure and modify the case resolution experience",
            "objective_wording_sha256": "dd6077ec3e57f3d569e65c94475f7b89570cf472ed7b6fe000134ddece9a7576",
            "group": "Define and configure foundational Customer Service components",
            "group_number": 1,
            "objective_number": 2,
            "objective_id": "1.1.2",
            "domain": "Manage cases in Customer Service (51–55%)",
            "version": "Skills measured as of March 11, 2026",
            "evidence_spans": [
              {
                "heading": "Model the case lifecycle",
                "start_line": 52,
                "end_line": 74,
                "span_lf_sha256": "1a4bbf9dc050d61ffeedf377a82888d67780d24f3c6065d724481296e57669ed"
              },
              {
                "heading": "A resolution dialog is configuration plus permissions",
                "start_line": 62,
                "end_line": 66,
                "span_lf_sha256": "eeac083599844de066755609a8b9e3edff9883c24e325bc01a82204180021f35"
              }
            ],
            "initial_flag_disposition": "resolved",
            "reason": "The repair-dialog example selects customizable resolution, edits/publishes Case Resolution, aligns choice values and checks custom-role access; missing choices/permissions have distinct evidence paths.",
            "initial_flag_reason": "Resolution information is described, but the configurable dialog/form/permission path is missing.",
            "repair_id": [
              "exam-a-case-resolution"
            ],
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Resolution information is described, but the configurable dialog/form/permission path is missing.",
            "independent_repair_ids": []
          },
          {
            "wording": "Configure and manage security roles",
            "objective_wording_sha256": "a6891fe397db2e81ee72104e2ca52274e8e86ea0502b499c93eb3b6a62a2a032",
            "group": "Define and configure foundational Customer Service components",
            "group_number": 1,
            "objective_number": 3,
            "objective_id": "1.1.3",
            "domain": "Manage cases in Customer Service (51–55%)",
            "version": "Skills measured as of March 11, 2026",
            "evidence_spans": [
              {
                "heading": "Model the case lifecycle",
                "start_line": 52,
                "end_line": 74,
                "span_lf_sha256": "1a4bbf9dc050d61ffeedf377a82888d67780d24f3c6065d724481296e57669ed"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Intake-rule inputs and negative paths, resolution evidence, persona authorization and timeline/card design form a case-control model.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Intake-rule inputs and negative paths, resolution evidence, persona authorization and timeline/card design form a case-control model.",
            "independent_repair_ids": []
          },
          {
            "wording": "Configure the timeline control, including records, card forms, and highlights",
            "objective_wording_sha256": "5d473600cbca9ceeabd5a6563eb9d57d883af6ac63eb5ca3548764d49d249e04",
            "group": "Define and configure foundational Customer Service components",
            "group_number": 1,
            "objective_number": 4,
            "objective_id": "1.1.4",
            "domain": "Manage cases in Customer Service (51–55%)",
            "version": "Skills measured as of March 11, 2026",
            "evidence_spans": [
              {
                "heading": "Model the case lifecycle",
                "start_line": 52,
                "end_line": 74,
                "span_lf_sha256": "1a4bbf9dc050d61ffeedf377a82888d67780d24f3c6065d724481296e57669ed"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Intake-rule inputs and negative paths, resolution evidence, persona authorization and timeline/card design form a case-control model.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Intake-rule inputs and negative paths, resolution evidence, persona authorization and timeline/card design form a case-control model.",
            "independent_repair_ids": []
          },
          {
            "wording": "Configure internal knowledge search capabilities",
            "objective_wording_sha256": "925844b397d659319d7fee7f72dff189b8e341398b1e10c6a3a023e403e6d595",
            "group": "Create and administer knowledge management",
            "group_number": 2,
            "objective_number": 1,
            "objective_id": "1.2.1",
            "domain": "Manage cases in Customer Service (51–55%)",
            "version": "Skills measured as of March 11, 2026",
            "evidence_spans": [
              {
                "heading": "Govern knowledge from authoring to use",
                "start_line": 76,
                "end_line": 92,
                "span_lf_sha256": "033ab796f718c12bbde5022a64a075a33a85a7b3619e99afe01f587f8a9cddef"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Article governance, table/search security, translation ownership, external versus integrated sources and current knowledge-agent setup are explained.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Article governance, table/search security, translation ownership, external versus integrated sources and current knowledge-agent setup are explained.",
            "independent_repair_ids": []
          },
          {
            "wording": "Configure tables for knowledge management",
            "objective_wording_sha256": "802ec44ea5d2f689c5a7abbd76fda1f4fb05658caf5c8e72408d48d75d3954c3",
            "group": "Create and administer knowledge management",
            "group_number": 2,
            "objective_number": 2,
            "objective_id": "1.2.2",
            "domain": "Manage cases in Customer Service (51–55%)",
            "version": "Skills measured as of March 11, 2026",
            "evidence_spans": [
              {
                "heading": "Govern knowledge from authoring to use",
                "start_line": 76,
                "end_line": 92,
                "span_lf_sha256": "033ab796f718c12bbde5022a64a075a33a85a7b3619e99afe01f587f8a9cddef"
              },
              {
                "heading": "Enable a record type and maintain a translation",
                "start_line": 94,
                "end_line": 98,
                "span_lf_sha256": "49c0131f029502d2438b36001323babbdc32fbfc07c7543b2539287d8e6daccf"
              }
            ],
            "initial_flag_disposition": "resolved",
            "reason": "Knowledge Record types enables the supported table and side-pane search; defaults are distinguished from article-table privileges, with a synthetic service-record test.",
            "initial_flag_reason": "Knowledge-enabled tables are mentioned, without showing selection of a table and embedded search configuration.",
            "repair_id": [
              "exam-a-knowledge-workflow"
            ],
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Knowledge-enabled tables are mentioned, without showing selection of a table and embedded search configuration.",
            "independent_repair_ids": []
          },
          {
            "wording": "Manage translated knowledge articles",
            "objective_wording_sha256": "821a2db227ad5380c74eb15cc15a38a19bff22e49c25b26d01b0b094955ff7cf",
            "group": "Create and administer knowledge management",
            "group_number": 2,
            "objective_number": 3,
            "objective_id": "1.2.3",
            "domain": "Manage cases in Customer Service (51–55%)",
            "version": "Skills measured as of March 11, 2026",
            "evidence_spans": [
              {
                "heading": "Govern knowledge from authoring to use",
                "start_line": 76,
                "end_line": 92,
                "span_lf_sha256": "033ab796f718c12bbde5022a64a075a33a85a7b3619e99afe01f587f8a9cddef"
              },
              {
                "heading": "Enable a record type and maintain a translation",
                "start_line": 94,
                "end_line": 98,
                "span_lf_sha256": "49c0131f029502d2438b36001323babbdc32fbfc07c7543b2539287d8e6daccf"
              }
            ],
            "initial_flag_disposition": "resolved",
            "reason": "Source article→Translate→supported language/version→translated fields→review/publication→Related Translations is explicit; a stale translation has an assigned-reviewer failure case.",
            "initial_flag_reason": "Translation governance is sound but no source-article→language-variant→review/publication workflow is shown.",
            "repair_id": [
              "exam-a-knowledge-workflow"
            ],
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Translation governance is sound but no source-article→language-variant→review/publication workflow is shown.",
            "independent_repair_ids": []
          },
          {
            "wording": "Integrate and search external knowledge sources",
            "objective_wording_sha256": "c44efd57df0ef7700b25be1ab169015b76e4d2661b48f8edecf4a17991edeaa8",
            "group": "Create and administer knowledge management",
            "group_number": 2,
            "objective_number": 4,
            "objective_id": "1.2.4",
            "domain": "Manage cases in Customer Service (51–55%)",
            "version": "Skills measured as of March 11, 2026",
            "evidence_spans": [
              {
                "heading": "Govern knowledge from authoring to use",
                "start_line": 76,
                "end_line": 92,
                "span_lf_sha256": "033ab796f718c12bbde5022a64a075a33a85a7b3619e99afe01f587f8a9cddef"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Article governance, table/search security, translation ownership, external versus integrated sources and current knowledge-agent setup are explained.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Article governance, table/search security, translation ownership, external versus integrated sources and current knowledge-agent setup are explained.",
            "independent_repair_ids": []
          },
          {
            "wording": "Configure AI suggestions and Copilot-led knowledge article creation",
            "objective_wording_sha256": "caa07d0323b6c667b1d51b5ebe722c5aad499d9e81b2895a929e919b5a5dfc59",
            "group": "Create and administer knowledge management",
            "group_number": 2,
            "objective_number": 5,
            "objective_id": "1.2.5",
            "domain": "Manage cases in Customer Service (51–55%)",
            "version": "Skills measured as of March 11, 2026",
            "evidence_spans": [
              {
                "heading": "Govern knowledge from authoring to use",
                "start_line": 76,
                "end_line": 92,
                "span_lf_sha256": "033ab796f718c12bbde5022a64a075a33a85a7b3619e99afe01f587f8a9cddef"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Article governance, table/search security, translation ownership, external versus integrated sources and current knowledge-agent setup are explained.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Article governance, table/search security, translation ownership, external versus integrated sources and current knowledge-agent setup are explained.",
            "independent_repair_ids": []
          },
          {
            "wording": "Configure Microsoft Teams chat",
            "objective_wording_sha256": "c7d8848373ff3befde40a1c2cdbdac980ff97277a1e9b62a747b81d45f6053ae",
            "group": "Manage collaboration",
            "group_number": 3,
            "objective_number": 1,
            "objective_id": "1.3.1",
            "domain": "Manage cases in Customer Service (51–55%)",
            "version": "Skills measured as of March 11, 2026",
            "evidence_spans": [
              {
                "heading": "Configure Teams collaboration",
                "start_line": 100,
                "end_line": 106,
                "span_lf_sha256": "2c5540c9c287a5a66254031581de05bf9c2b0e052b4ec788bb8bed265bbebec1"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Linked-chat setup, participant and retention boundaries, and user-specific Join a Teams call prerequisites explain the Teams collaboration configuration.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Linked chats, participant/retention boundaries and Join a Teams call prerequisites are explained; contact-selection setup is thinner.",
            "independent_repair_ids": []
          },
          {
            "wording": "Configure Join a Teams call for specific users",
            "objective_wording_sha256": "2e23efc4d57ceb468adda18c748035f64d7ab3a66e458c59d5f31af30764baee",
            "group": "Manage collaboration",
            "group_number": 3,
            "objective_number": 2,
            "objective_id": "1.3.2",
            "domain": "Manage cases in Customer Service (51–55%)",
            "version": "Skills measured as of March 11, 2026",
            "evidence_spans": [
              {
                "heading": "Configure Teams collaboration",
                "start_line": 100,
                "end_line": 106,
                "span_lf_sha256": "2c5540c9c287a5a66254031581de05bf9c2b0e052b4ec788bb8bed265bbebec1"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Linked-chat setup, participant and retention boundaries, and user-specific Join a Teams call prerequisites explain the Teams collaboration configuration.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Linked chats, participant/retention boundaries and Join a Teams call prerequisites are explained; contact-selection setup is thinner.",
            "independent_repair_ids": []
          },
          {
            "wording": "Configure suggested contacts in Microsoft Teams, including by using AI and rules-based suggestions",
            "objective_wording_sha256": "c14b7981001aff25e394c6a9a2d385d677827eaf2c95b675b700a71d90e70943",
            "group": "Manage collaboration",
            "group_number": 3,
            "objective_number": 3,
            "objective_id": "1.3.3",
            "domain": "Manage cases in Customer Service (51–55%)",
            "version": "Skills measured as of March 11, 2026",
            "evidence_spans": [
              {
                "heading": "Configure Teams collaboration",
                "start_line": 100,
                "end_line": 106,
                "span_lf_sha256": "2c5540c9c287a5a66254031581de05bf9c2b0e052b4ec788bb8bed265bbebec1"
              },
              {
                "heading": "Work a suggested-contact rule",
                "start_line": 108,
                "end_line": 112,
                "span_lf_sha256": "89d36b567da2b3ae9a36e47d1f43625a653a14d62b65e4f41b160106fe53d482"
              }
            ],
            "initial_flag_disposition": "resolved",
            "reason": "A relational account-manager rule, ordering and custom-action alternative distinguish deterministic contacts from similar-case AI suggestions; null manager and denied-access cases remain explicit.",
            "initial_flag_reason": "AI and rules-based contacts are named but their different source/enablement and rule ordering are not taught.",
            "repair_id": [
              "exam-a-teams-contacts"
            ],
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "AI and rules-based contacts are named but their different source/enablement and rule ordering are not taught.",
            "independent_repair_ids": []
          },
          {
            "wording": "Configure Teams collaboration experience",
            "objective_wording_sha256": "1667f01fa3849ad5955d78fb657f4bee0416dee349d1e06e65276032bc6b1f5c",
            "group": "Manage collaboration",
            "group_number": 3,
            "objective_number": 4,
            "objective_id": "1.3.4",
            "domain": "Manage cases in Customer Service (51–55%)",
            "version": "Skills measured as of March 11, 2026",
            "evidence_spans": [
              {
                "heading": "Configure Teams collaboration",
                "start_line": 100,
                "end_line": 106,
                "span_lf_sha256": "2c5540c9c287a5a66254031581de05bf9c2b0e052b4ec788bb8bed265bbebec1"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Linked-chat setup, participant and retention boundaries, and user-specific Join a Teams call prerequisites explain the Teams collaboration configuration.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Linked chats, participant/retention boundaries and Join a Teams call prerequisites are explained; contact-selection setup is thinner.",
            "independent_repair_ids": []
          },
          {
            "wording": "Configure Ask a Question, including filtering content",
            "objective_wording_sha256": "d1338feaa3cb0603aa9b073053760724c5d4bce6d4a5790d935370c3848b91ef",
            "group": "Manage agents and Copilot in Service features",
            "group_number": 4,
            "objective_number": 1,
            "objective_id": "1.4.1",
            "domain": "Manage cases in Customer Service (51–55%)",
            "version": "Skills measured as of March 11, 2026",
            "evidence_spans": [
              {
                "heading": "Configure Copilot and service agents",
                "start_line": 114,
                "end_line": 134,
                "span_lf_sha256": "732e20958fad24a2b201451e0d18928b038d0703a4329dc547686c7a1951ab35"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Source/filter/action contracts and current resolution/closure modes explain approval, triggering, evaluation and cost boundaries.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Source/filter/action contracts and current resolution/closure modes explain approval, triggering, evaluation and cost boundaries.",
            "independent_repair_ids": []
          },
          {
            "wording": "Configure case, timeline, and conversation summaries",
            "objective_wording_sha256": "6f5914e3fe62acf3aedf0503464fa74887b46b13bfefe3e86a183cac683d747a",
            "group": "Manage agents and Copilot in Service features",
            "group_number": 4,
            "objective_number": 2,
            "objective_id": "1.4.2",
            "domain": "Manage cases in Customer Service (51–55%)",
            "version": "Skills measured as of March 11, 2026",
            "evidence_spans": [
              {
                "heading": "Configure Copilot and service agents",
                "start_line": 114,
                "end_line": 134,
                "span_lf_sha256": "732e20958fad24a2b201451e0d18928b038d0703a4329dc547686c7a1951ab35"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Source/filter/action contracts and current resolution/closure modes explain approval, triggering, evaluation and cost boundaries.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Source/filter/action contracts and current resolution/closure modes explain approval, triggering, evaluation and cost boundaries.",
            "independent_repair_ids": []
          },
          {
            "wording": "Configure Draft a Response",
            "objective_wording_sha256": "36eb5bdfae70eccec2b39c0c80223d009111240ddaa3df634d06e74ec345e959",
            "group": "Manage agents and Copilot in Service features",
            "group_number": 4,
            "objective_number": 3,
            "objective_id": "1.4.3",
            "domain": "Manage cases in Customer Service (51–55%)",
            "version": "Skills measured as of March 11, 2026",
            "evidence_spans": [
              {
                "heading": "Configure Copilot and service agents",
                "start_line": 114,
                "end_line": 134,
                "span_lf_sha256": "732e20958fad24a2b201451e0d18928b038d0703a4329dc547686c7a1951ab35"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Source/filter/action contracts and current resolution/closure modes explain approval, triggering, evaluation and cost boundaries.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Source/filter/action contracts and current resolution/closure modes explain approval, triggering, evaluation and cost boundaries.",
            "independent_repair_ids": []
          },
          {
            "wording": "Configure the Case Management Agent",
            "objective_wording_sha256": "c212e89de3f10a6353af499b7451a2d3bcad679faca5daf287fdfa33a94a48a0",
            "group": "Manage agents and Copilot in Service features",
            "group_number": 4,
            "objective_number": 4,
            "objective_id": "1.4.4",
            "domain": "Manage cases in Customer Service (51–55%)",
            "version": "Skills measured as of March 11, 2026",
            "evidence_spans": [
              {
                "heading": "Configure Copilot and service agents",
                "start_line": 114,
                "end_line": 134,
                "span_lf_sha256": "732e20958fad24a2b201451e0d18928b038d0703a4329dc547686c7a1951ab35"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Source/filter/action contracts and current resolution/closure modes explain approval, triggering, evaluation and cost boundaries.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Source/filter/action contracts and current resolution/closure modes explain approval, triggering, evaluation and cost boundaries.",
            "independent_repair_ids": []
          },
          {
            "wording": "Integrate agents with Customer Service, including plug-ins and knowledge sources",
            "objective_wording_sha256": "258e33a1e4875c111b255815ccf23a2219de9fdcd2b77dc6f4ed9d2deb5741c3",
            "group": "Manage agents and Copilot in Service features",
            "group_number": 4,
            "objective_number": 5,
            "objective_id": "1.4.5",
            "domain": "Manage cases in Customer Service (51–55%)",
            "version": "Skills measured as of March 11, 2026",
            "evidence_spans": [
              {
                "heading": "Configure Copilot and service agents",
                "start_line": 114,
                "end_line": 134,
                "span_lf_sha256": "732e20958fad24a2b201451e0d18928b038d0703a4329dc547686c7a1951ab35"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Source/filter/action contracts and current resolution/closure modes explain approval, triggering, evaluation and cost boundaries.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Source/filter/action contracts and current resolution/closure modes explain approval, triggering, evaluation and cost boundaries.",
            "independent_repair_ids": []
          },
          {
            "wording": "Configure SLA settings",
            "objective_wording_sha256": "ebd0efed8498209479d401c5e38f7591059cba4189904dec1e6f8e9ff6a6e5d7",
            "group": "Create and manage SLAs for cases",
            "group_number": 5,
            "objective_number": 1,
            "objective_id": "1.5.1",
            "domain": "Manage cases in Customer Service (51–55%)",
            "version": "Skills measured as of March 11, 2026",
            "evidence_spans": [
              {
                "heading": "Design enforceable SLAs",
                "start_line": 136,
                "end_line": 156,
                "span_lf_sha256": "ff3501f14fe3dde3163bfc7282e78c8b428ea6ebb298be79e03419cce626c408"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "KPI layers, calendars, applicability, pause precedence, action recovery and timer-to-instance mapping support an implementable SLA design.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "KPI layers, calendars, applicability, pause precedence, action recovery and timer-to-instance mapping support an implementable SLA design.",
            "independent_repair_ids": []
          },
          {
            "wording": "Implement actions by using Power Automate",
            "objective_wording_sha256": "6db803adb27b83fd5f52e852add62cebd1ed198f8575e21b87614cb1e568c750",
            "group": "Create and manage SLAs for cases",
            "group_number": 5,
            "objective_number": 2,
            "objective_id": "1.5.2",
            "domain": "Manage cases in Customer Service (51–55%)",
            "version": "Skills measured as of March 11, 2026",
            "evidence_spans": [
              {
                "heading": "Design enforceable SLAs",
                "start_line": 136,
                "end_line": 156,
                "span_lf_sha256": "ff3501f14fe3dde3163bfc7282e78c8b428ea6ebb298be79e03419cce626c408"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "KPI layers, calendars, applicability, pause precedence, action recovery and timer-to-instance mapping support an implementable SLA design.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "KPI layers, calendars, applicability, pause precedence, action recovery and timer-to-instance mapping support an implementable SLA design.",
            "independent_repair_ids": []
          },
          {
            "wording": "Apply SLAs",
            "objective_wording_sha256": "165096a86989ed864d99948e39e2836bab3f0543872d3944953c4d5e508fad71",
            "group": "Create and manage SLAs for cases",
            "group_number": 5,
            "objective_number": 3,
            "objective_id": "1.5.3",
            "domain": "Manage cases in Customer Service (51–55%)",
            "version": "Skills measured as of March 11, 2026",
            "evidence_spans": [
              {
                "heading": "Design enforceable SLAs",
                "start_line": 136,
                "end_line": 156,
                "span_lf_sha256": "ff3501f14fe3dde3163bfc7282e78c8b428ea6ebb298be79e03419cce626c408"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "KPI layers, calendars, applicability, pause precedence, action recovery and timer-to-instance mapping support an implementable SLA design.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "KPI layers, calendars, applicability, pause precedence, action recovery and timer-to-instance mapping support an implementable SLA design.",
            "independent_repair_ids": []
          },
          {
            "wording": "Create and manage SLA items including key performance indicators (KPIs), warning actions, success actions, and applicability",
            "objective_wording_sha256": "1a50cfad565ae88f533407801898770c44ce0022847a10f067fef937a7d33db0",
            "group": "Create and manage SLAs for cases",
            "group_number": 5,
            "objective_number": 4,
            "objective_id": "1.5.4",
            "domain": "Manage cases in Customer Service (51–55%)",
            "version": "Skills measured as of March 11, 2026",
            "evidence_spans": [
              {
                "heading": "Design enforceable SLAs",
                "start_line": 136,
                "end_line": 156,
                "span_lf_sha256": "ff3501f14fe3dde3163bfc7282e78c8b428ea6ebb298be79e03419cce626c408"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "KPI layers, calendars, applicability, pause precedence, action recovery and timer-to-instance mapping support an implementable SLA design.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "KPI layers, calendars, applicability, pause precedence, action recovery and timer-to-instance mapping support an implementable SLA design.",
            "independent_repair_ids": []
          },
          {
            "wording": "Configure a timer control on a form",
            "objective_wording_sha256": "e90dca97da00ccc847ab401747a93c06d4f4b498d618fa19f07f4f3033ee6231",
            "group": "Create and manage SLAs for cases",
            "group_number": 5,
            "objective_number": 5,
            "objective_id": "1.5.5",
            "domain": "Manage cases in Customer Service (51–55%)",
            "version": "Skills measured as of March 11, 2026",
            "evidence_spans": [
              {
                "heading": "Design enforceable SLAs",
                "start_line": 136,
                "end_line": 156,
                "span_lf_sha256": "ff3501f14fe3dde3163bfc7282e78c8b428ea6ebb298be79e03419cce626c408"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "KPI layers, calendars, applicability, pause precedence, action recovery and timer-to-instance mapping support an implementable SLA design.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "KPI layers, calendars, applicability, pause precedence, action recovery and timer-to-instance mapping support an implementable SLA design.",
            "independent_repair_ids": []
          },
          {
            "wording": "Create SLA KPIs",
            "objective_wording_sha256": "828769e93f078b20361628e9942e260f1d2b5ab7d52f75d6c162f31984e0e2db",
            "group": "Create and manage SLAs for cases",
            "group_number": 5,
            "objective_number": 6,
            "objective_id": "1.5.6",
            "domain": "Manage cases in Customer Service (51–55%)",
            "version": "Skills measured as of March 11, 2026",
            "evidence_spans": [
              {
                "heading": "Design enforceable SLAs",
                "start_line": 136,
                "end_line": 156,
                "span_lf_sha256": "ff3501f14fe3dde3163bfc7282e78c8b428ea6ebb298be79e03419cce626c408"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "KPI layers, calendars, applicability, pause precedence, action recovery and timer-to-instance mapping support an implementable SLA design.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "KPI layers, calendars, applicability, pause precedence, action recovery and timer-to-instance mapping support an implementable SLA design.",
            "independent_repair_ids": []
          },
          {
            "wording": "Configure workstreams",
            "objective_wording_sha256": "78ad41b0241c111564a2c68ba95c2aa2687fc664745b343bbe7980be109e3a27",
            "group": "Configure routing",
            "group_number": 6,
            "objective_number": 1,
            "objective_id": "2.1.1",
            "domain": "Configure representative experience and routing (25–30%)",
            "version": "Skills measured as of March 11, 2026",
            "evidence_spans": [
              {
                "heading": "Trace the unified-routing pipeline",
                "start_line": 160,
                "end_line": 180,
                "span_lf_sha256": "53639c5acf72399b99e403e9aa407d2e957a25581ef3f1045d9557f0e8db37b0"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Workstream, classification, queue and assignment responsibilities are taught with capacity, presence and fallback failure checks.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Workstream→classification→queue→assignment stages and capacity/fallback failures are explained; named skill-model setup remains thin.",
            "independent_repair_ids": []
          },
          {
            "wording": "Configure user settings",
            "objective_wording_sha256": "13e45a4810907dc3425dd6bcfc283680f17343b9c55d0bfe64bd29f592063889",
            "group": "Configure routing",
            "group_number": 6,
            "objective_number": 2,
            "objective_id": "2.1.2",
            "domain": "Configure representative experience and routing (25–30%)",
            "version": "Skills measured as of March 11, 2026",
            "evidence_spans": [
              {
                "heading": "Trace the unified-routing pipeline",
                "start_line": 160,
                "end_line": 180,
                "span_lf_sha256": "53639c5acf72399b99e403e9aa407d2e957a25581ef3f1045d9557f0e8db37b0"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Workstream, classification, queue and assignment responsibilities are taught with capacity, presence and fallback failure checks.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Workstream→classification→queue→assignment stages and capacity/fallback failures are explained; named skill-model setup remains thin.",
            "independent_repair_ids": []
          },
          {
            "wording": "Manage capacity profiles",
            "objective_wording_sha256": "2b41147c996298046f5de5238ea854ab87cee0d97aba0ffef906b558c978f12d",
            "group": "Configure routing",
            "group_number": 6,
            "objective_number": 3,
            "objective_id": "2.1.3",
            "domain": "Configure representative experience and routing (25–30%)",
            "version": "Skills measured as of March 11, 2026",
            "evidence_spans": [
              {
                "heading": "Trace the unified-routing pipeline",
                "start_line": 160,
                "end_line": 180,
                "span_lf_sha256": "53639c5acf72399b99e403e9aa407d2e957a25581ef3f1045d9557f0e8db37b0"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Workstream, classification, queue and assignment responsibilities are taught with capacity, presence and fallback failure checks.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Workstream→classification→queue→assignment stages and capacity/fallback failures are explained; named skill-model setup remains thin.",
            "independent_repair_ids": []
          },
          {
            "wording": "Configure work classification and assignments, including rules",
            "objective_wording_sha256": "1f1bb5632d2d28f1a896b24621542ab34db4d030e88f59280b20779673c73a42",
            "group": "Configure routing",
            "group_number": 6,
            "objective_number": 4,
            "objective_id": "2.1.4",
            "domain": "Configure representative experience and routing (25–30%)",
            "version": "Skills measured as of March 11, 2026",
            "evidence_spans": [
              {
                "heading": "Trace the unified-routing pipeline",
                "start_line": 160,
                "end_line": 180,
                "span_lf_sha256": "53639c5acf72399b99e403e9aa407d2e957a25581ef3f1045d9557f0e8db37b0"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Workstream, classification, queue and assignment responsibilities are taught with capacity, presence and fallback failure checks.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Workstream→classification→queue→assignment stages and capacity/fallback failures are explained; named skill-model setup remains thin.",
            "independent_repair_ids": []
          },
          {
            "wording": "Configure basic routing rulesets",
            "objective_wording_sha256": "e321d892240035e3323774b423ffdab1aeccffd39d02d69101535ca5e5598d53",
            "group": "Configure routing",
            "group_number": 6,
            "objective_number": 5,
            "objective_id": "2.1.5",
            "domain": "Configure representative experience and routing (25–30%)",
            "version": "Skills measured as of March 11, 2026",
            "evidence_spans": [
              {
                "heading": "Trace the unified-routing pipeline",
                "start_line": 160,
                "end_line": 180,
                "span_lf_sha256": "53639c5acf72399b99e403e9aa407d2e957a25581ef3f1045d9557f0e8db37b0"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Workstream, classification, queue and assignment responsibilities are taught with capacity, presence and fallback failure checks.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Workstream→classification→queue→assignment stages and capacity/fallback failures are explained; named skill-model setup remains thin.",
            "independent_repair_ids": []
          },
          {
            "wording": "Configure skills-based routing and skill finder models",
            "objective_wording_sha256": "7a34d7a31d12298d5a17b89059ab35aad63641acd1b2be83d194475940e93d07",
            "group": "Configure routing",
            "group_number": 6,
            "objective_number": 6,
            "objective_id": "2.1.6",
            "domain": "Configure representative experience and routing (25–30%)",
            "version": "Skills measured as of March 11, 2026",
            "evidence_spans": [
              {
                "heading": "Trace the unified-routing pipeline",
                "start_line": 160,
                "end_line": 180,
                "span_lf_sha256": "53639c5acf72399b99e403e9aa407d2e957a25581ef3f1045d9557f0e8db37b0"
              },
              {
                "heading": "Train a skill model before using its classification",
                "start_line": 182,
                "end_line": 186,
                "span_lf_sha256": "2932b2997bd94c5af5f90cbdfd35c87500b7c03c5eefc7971a7a0b4aa9ee269f"
              }
            ],
            "initial_flag_disposition": "resolved",
            "reason": "Attributes/labels/load/review/approve/train/publish/test→classification is taught, with minimum-data and environment-type constraints; ambiguous text and missing skills test the failure boundary.",
            "initial_flag_reason": "No skill-finder data/model/train/test/publish→classification workflow; only general model-validation advice.",
            "repair_id": [
              "exam-a-routing-inbox"
            ],
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "No skill-finder data/model/train/test/publish→classification workflow; only general model-validation advice.",
            "independent_repair_ids": []
          },
          {
            "wording": "Configure queues",
            "objective_wording_sha256": "6f0320fab3512a2839e488825a40046b6a69e6081e11e84e9a6890a444c2808c",
            "group": "Configure routing",
            "group_number": 6,
            "objective_number": 7,
            "objective_id": "2.1.7",
            "domain": "Configure representative experience and routing (25–30%)",
            "version": "Skills measured as of March 11, 2026",
            "evidence_spans": [
              {
                "heading": "Trace the unified-routing pipeline",
                "start_line": 160,
                "end_line": 180,
                "span_lf_sha256": "53639c5acf72399b99e403e9aa407d2e957a25581ef3f1045d9557f0e8db37b0"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Workstream, classification, queue and assignment responsibilities are taught with capacity, presence and fallback failure checks.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Workstream→classification→queue→assignment stages and capacity/fallback failures are explained; named skill-model setup remains thin.",
            "independent_repair_ids": []
          },
          {
            "wording": "Configure routing for records",
            "objective_wording_sha256": "e058572a8d13bb9f0f2cab53036e0ec67f7a24c31ab8af269c0bee8c8e35f208",
            "group": "Configure routing",
            "group_number": 6,
            "objective_number": 8,
            "objective_id": "2.1.8",
            "domain": "Configure representative experience and routing (25–30%)",
            "version": "Skills measured as of March 11, 2026",
            "evidence_spans": [
              {
                "heading": "Trace the unified-routing pipeline",
                "start_line": 160,
                "end_line": 180,
                "span_lf_sha256": "53639c5acf72399b99e403e9aa407d2e957a25581ef3f1045d9557f0e8db37b0"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Workstream, classification, queue and assignment responsibilities are taught with capacity, presence and fallback failure checks.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Workstream→classification→queue→assignment stages and capacity/fallback failures are explained; named skill-model setup remains thin.",
            "independent_repair_ids": []
          },
          {
            "wording": "Configure scripts, including slugs",
            "objective_wording_sha256": "8e2268232ed1fd303666d8968e867eec94c301ab625e6b1ec1f9c0fe8dbac216",
            "group": "Configure productivity tools",
            "group_number": 7,
            "objective_number": 1,
            "objective_id": "2.2.1",
            "domain": "Configure representative experience and routing (25–30%)",
            "version": "Skills measured as of March 11, 2026",
            "evidence_spans": [
              {
                "heading": "Configure scripts, slugs and macros",
                "start_line": 188,
                "end_line": 194,
                "span_lf_sha256": "b5678b7b7e970bb6bab97c7b457bf5e13536c2113b56401c321c7cae36771bbe"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Guidance versus repeatable actions, anchor/current-tab slugs and sequential partial failure explain safe macro design.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Guidance versus repeatable actions, anchor/current-tab slugs and sequential partial failure explain safe macro design.",
            "independent_repair_ids": []
          },
          {
            "wording": "Create macros",
            "objective_wording_sha256": "dbfb4c332e28ff59c08d3079b9d8da17d17b39596e13d6985c15adfa6dde19a2",
            "group": "Configure productivity tools",
            "group_number": 7,
            "objective_number": 2,
            "objective_id": "2.2.2",
            "domain": "Configure representative experience and routing (25–30%)",
            "version": "Skills measured as of March 11, 2026",
            "evidence_spans": [
              {
                "heading": "Configure scripts, slugs and macros",
                "start_line": 188,
                "end_line": 194,
                "span_lf_sha256": "b5678b7b7e970bb6bab97c7b457bf5e13536c2113b56401c321c7cae36771bbe"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Guidance versus repeatable actions, anchor/current-tab slugs and sequential partial failure explain safe macro design.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Guidance versus repeatable actions, anchor/current-tab slugs and sequential partial failure explain safe macro design.",
            "independent_repair_ids": []
          },
          {
            "wording": "Configure session templates",
            "objective_wording_sha256": "1bf450be35a39f401a7629cc7985177d0e38af71e59979b12962e7f771d46fd5",
            "group": "Configure the Copilot Service workspace",
            "group_number": 8,
            "objective_number": 1,
            "objective_id": "2.3.1",
            "domain": "Configure representative experience and routing (25–30%)",
            "version": "Skills measured as of March 11, 2026",
            "evidence_spans": [
              {
                "heading": "Shape Copilot Service workspace",
                "start_line": 196,
                "end_line": 206,
                "span_lf_sha256": "440b2e397ca7096a553324aeaf80f59bde8dc9ea021fb7c41a99bb97371436dd"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Experience-profile assignment, session and tab-template responsibilities, custom-template design and multi-session checks explain the application experience.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Profile/session/tab/Inbox responsibilities, custom templates and multi-session tests are distinguished; custom-view creation needs a small worked setup.",
            "independent_repair_ids": []
          },
          {
            "wording": "Create experience profiles",
            "objective_wording_sha256": "a233fb1aca6a431d64dfaac028473277e3c96ac4a8c2dc93ae234328b6648ac8",
            "group": "Configure the Copilot Service workspace",
            "group_number": 8,
            "objective_number": 2,
            "objective_id": "2.3.2",
            "domain": "Configure representative experience and routing (25–30%)",
            "version": "Skills measured as of March 11, 2026",
            "evidence_spans": [
              {
                "heading": "Shape Copilot Service workspace",
                "start_line": 196,
                "end_line": 206,
                "span_lf_sha256": "440b2e397ca7096a553324aeaf80f59bde8dc9ea021fb7c41a99bb97371436dd"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Experience-profile assignment, session and tab-template responsibilities, custom-template design and multi-session checks explain the application experience.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Profile/session/tab/Inbox responsibilities, custom templates and multi-session tests are distinguished; custom-view creation needs a small worked setup.",
            "independent_repair_ids": []
          },
          {
            "wording": "Configure the Inbox, including creating custom views",
            "objective_wording_sha256": "206b9e3c055796d21a8b448cdfdfb7b0f11a695b45f40c5bd5426a6fc28f70f4",
            "group": "Configure the Copilot Service workspace",
            "group_number": 8,
            "objective_number": 3,
            "objective_id": "2.3.3",
            "domain": "Configure representative experience and routing (25–30%)",
            "version": "Skills measured as of March 11, 2026",
            "evidence_spans": [
              {
                "heading": "Shape Copilot Service workspace",
                "start_line": 196,
                "end_line": 206,
                "span_lf_sha256": "440b2e397ca7096a553324aeaf80f59bde8dc9ea021fb7c41a99bb97371436dd"
              },
              {
                "heading": "Build one Inbox view for a persona",
                "start_line": 208,
                "end_line": 212,
                "span_lf_sha256": "766cd9972a97365e0e23a06fe0a78858a33acfdf9a9fa884a94480a4d6967996"
              }
            ],
            "initial_flag_disposition": "resolved",
            "reason": "The custom-profile Inbox example selects Case/Email record types, simple/advanced conditions, visibility/save and persona assignment; refresh and reassignment prevent false routing conclusions.",
            "initial_flag_reason": "The guide says to create meaningful Inbox views but lacks record type, filters, assignment and persona verification workflow.",
            "repair_id": [
              "exam-a-inbox-view"
            ],
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "The guide says to create meaningful Inbox views but lacks record type, filters, assignment and persona verification workflow.",
            "independent_repair_ids": []
          },
          {
            "wording": "Configure application tab templates",
            "objective_wording_sha256": "60dcf65a3ed714a925336a31b2bc7d62d0d140c746ae568cf64d8926a198960f",
            "group": "Configure the Copilot Service workspace",
            "group_number": 8,
            "objective_number": 4,
            "objective_id": "2.3.4",
            "domain": "Configure representative experience and routing (25–30%)",
            "version": "Skills measured as of March 11, 2026",
            "evidence_spans": [
              {
                "heading": "Shape Copilot Service workspace",
                "start_line": 196,
                "end_line": 206,
                "span_lf_sha256": "440b2e397ca7096a553324aeaf80f59bde8dc9ea021fb7c41a99bb97371436dd"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Experience-profile assignment, session and tab-template responsibilities, custom-template design and multi-session checks explain the application experience.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Profile/session/tab/Inbox responsibilities, custom templates and multi-session tests are distinguished; custom-view creation needs a small worked setup.",
            "independent_repair_ids": []
          },
          {
            "wording": "Create and configure forms",
            "objective_wording_sha256": "12b82f35d38ffb9d649f2024c25ab2ca98ac4267a8269a42b7011bfa65bf1c37",
            "group": "Configure the data model and UI components",
            "group_number": 9,
            "objective_number": 1,
            "objective_id": "3.1.1",
            "domain": "Extend Customer Service (15–20%)",
            "version": "Skills measured as of March 11, 2026",
            "evidence_spans": [
              {
                "heading": "Configure Dataverse data and UI components",
                "start_line": 216,
                "end_line": 224,
                "span_lf_sha256": "21ac57fa2557ad8838b5127c89bd155349cf76192f14f2153cb6a74f5ca54922"
              },
              {
                "heading": "Build an original repair-authorization extension",
                "start_line": 226,
                "end_line": 234,
                "span_lf_sha256": "ea74a2ea495af186c1793717d3bd45779d1a7756bb6c2022610262d27d8289a6"
              }
            ],
            "initial_flag_disposition": "resolved",
            "reason": "Repair authorization adds justified fields and a related-record subgrid to a form and saves/publishes it; two children and an unauthorized reader are concrete tests.",
            "initial_flag_reason": "No concrete form creation/publish sequence ties model changes to a representative scenario.",
            "repair_id": [
              "exam-a-maker-notification"
            ],
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "No concrete form creation/publish sequence ties model changes to a representative scenario.",
            "independent_repair_ids": []
          },
          {
            "wording": "Create and configure views",
            "objective_wording_sha256": "a3063fafc74ff607589ebb3dd50af01bc8c6b19bc402e1db5cc6fcfa7d403878",
            "group": "Configure the data model and UI components",
            "group_number": 9,
            "objective_number": 2,
            "objective_id": "3.1.2",
            "domain": "Extend Customer Service (15–20%)",
            "version": "Skills measured as of March 11, 2026",
            "evidence_spans": [
              {
                "heading": "Configure Dataverse data and UI components",
                "start_line": 216,
                "end_line": 224,
                "span_lf_sha256": "21ac57fa2557ad8838b5127c89bd155349cf76192f14f2153cb6a74f5ca54922"
              },
              {
                "heading": "Build an original repair-authorization extension",
                "start_line": 226,
                "end_line": 234,
                "span_lf_sha256": "ea74a2ea495af186c1793717d3bd45779d1a7756bb6c2022610262d27d8289a6"
              }
            ],
            "initial_flag_disposition": "resolved",
            "reason": "The Awaiting decision view has named decision/expiry filters and reference/case columns, with app inclusion and an out-of-condition negative check.",
            "initial_flag_reason": "Views are defined but a filter/columns/default selection worked example is absent.",
            "repair_id": [
              "exam-a-maker-notification"
            ],
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Views are defined but a filter/columns/default selection worked example is absent.",
            "independent_repair_ids": []
          },
          {
            "wording": "Configure model-driven app components",
            "objective_wording_sha256": "b155c00ecbedee9b6ccf3963d29f84394c744c7ba5b573780ce3e0933fc049d1",
            "group": "Configure the data model and UI components",
            "group_number": 9,
            "objective_number": 3,
            "objective_id": "3.1.3",
            "domain": "Extend Customer Service (15–20%)",
            "version": "Skills measured as of March 11, 2026",
            "evidence_spans": [
              {
                "heading": "Configure Dataverse data and UI components",
                "start_line": 216,
                "end_line": 224,
                "span_lf_sha256": "21ac57fa2557ad8838b5127c89bd155349cf76192f14f2153cb6a74f5ca54922"
              },
              {
                "heading": "Build an original repair-authorization extension",
                "start_line": 226,
                "end_line": 234,
                "span_lf_sha256": "ea74a2ea495af186c1793717d3bd45779d1a7756bb6c2022610262d27d8289a6"
              }
            ],
            "initial_flag_disposition": "resolved",
            "reason": "Required table pages/forms/views are added to the service app and the app is published; actual role access is verified separately from navigation.",
            "initial_flag_reason": "App components are named without a maker add/publish/share workflow.",
            "repair_id": [
              "exam-a-maker-notification"
            ],
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "App components are named without a maker add/publish/share workflow.",
            "independent_repair_ids": []
          },
          {
            "wording": "Create and configure columns",
            "objective_wording_sha256": "74266e773b2ddf6aa0f7c360dbca7a1c14a3295ae3815cbb7ad95ea531c7c5e4",
            "group": "Configure the data model and UI components",
            "group_number": 9,
            "objective_number": 4,
            "objective_id": "3.1.4",
            "domain": "Extend Customer Service (15–20%)",
            "version": "Skills measured as of March 11, 2026",
            "evidence_spans": [
              {
                "heading": "Configure Dataverse data and UI components",
                "start_line": 216,
                "end_line": 224,
                "span_lf_sha256": "21ac57fa2557ad8838b5127c89bd155349cf76192f14f2153cb6a74f5ca54922"
              },
              {
                "heading": "Build an original repair-authorization extension",
                "start_line": 226,
                "end_line": 234,
                "span_lf_sha256": "ea74a2ea495af186c1793717d3bd45779d1a7756bb6c2022610262d27d8289a6"
              }
            ],
            "initial_flag_disposition": "resolved",
            "reason": "Text reference, decision choice and expiry date provide concrete column-type choices in a solution-owned service extension, followed by publication and access tests.",
            "initial_flag_reason": "Column type/requiredness concepts are taught but not a concrete creation/deployment example.",
            "repair_id": [
              "exam-a-maker-notification"
            ],
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Column type/requiredness concepts are taught but not a concrete creation/deployment example.",
            "independent_repair_ids": []
          },
          {
            "wording": "Configure alerts and in-app notifications",
            "objective_wording_sha256": "79fc68a92199ae28a866506dfeefb4849e2c1af3f59616dd9573c2dff165ebf2",
            "group": "Configure the data model and UI components",
            "group_number": 9,
            "objective_number": 5,
            "objective_id": "3.1.5",
            "domain": "Extend Customer Service (15–20%)",
            "version": "Skills measured as of March 11, 2026",
            "evidence_spans": [
              {
                "heading": "Configure Dataverse data and UI components",
                "start_line": 216,
                "end_line": 224,
                "span_lf_sha256": "21ac57fa2557ad8838b5127c89bd155349cf76192f14f2153cb6a74f5ca54922"
              },
              {
                "heading": "Build an original repair-authorization extension",
                "start_line": 226,
                "end_line": 234,
                "span_lf_sha256": "ea74a2ea495af186c1793717d3bd45779d1a7756bb6c2022610262d27d8289a6"
              }
            ],
            "initial_flag_disposition": "resolved",
            "reason": "Enable/publish in-app notifications, SendAppNotification, individual approver, deep link/expiry and sender/recipient privileges are explicit; duplicate and denied-link tests distinguish mobile push.",
            "initial_flag_reason": "Notification design properties are listed without the sender/recipient/API/flow implementation path.",
            "repair_id": [
              "exam-a-maker-notification"
            ],
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Notification design properties are listed without the sender/recipient/API/flow implementation path.",
            "independent_repair_ids": []
          },
          {
            "wording": "Create or modify a table",
            "objective_wording_sha256": "eb634b42876f46075d973be2eb732298f64941e57d40a8d2af666b10ec26da41",
            "group": "Configure the data model and UI components",
            "group_number": 9,
            "objective_number": 6,
            "objective_id": "3.1.6",
            "domain": "Extend Customer Service (15–20%)",
            "version": "Skills measured as of March 11, 2026",
            "evidence_spans": [
              {
                "heading": "Configure Dataverse data and UI components",
                "start_line": 216,
                "end_line": 224,
                "span_lf_sha256": "21ac57fa2557ad8838b5127c89bd155349cf76192f14f2153cb6a74f5ca54922"
              },
              {
                "heading": "Build an original repair-authorization extension",
                "start_line": 226,
                "end_line": 234,
                "span_lf_sha256": "ea74a2ea495af186c1793717d3bd45779d1a7756bb6c2022610262d27d8289a6"
              }
            ],
            "initial_flag_disposition": "resolved",
            "reason": "The separate Repair Authorization table is justified, solution-owned and given ownership/cascade decisions and related records; it is not an unsupported duplication of the Case table.",
            "initial_flag_reason": "Tables are conceptually described without a create/ownership/solution example.",
            "repair_id": [
              "exam-a-maker-notification"
            ],
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Tables are conceptually described without a create/ownership/solution example.",
            "independent_repair_ids": []
          },
          {
            "wording": "Configure relationships",
            "objective_wording_sha256": "7a9db5c04572f0b01e099894c630ad8f285e520799015b5961bc4331713eab20",
            "group": "Configure the data model and UI components",
            "group_number": 9,
            "objective_number": 7,
            "objective_id": "3.1.7",
            "domain": "Extend Customer Service (15–20%)",
            "version": "Skills measured as of March 11, 2026",
            "evidence_spans": [
              {
                "heading": "Configure Dataverse data and UI components",
                "start_line": 216,
                "end_line": 224,
                "span_lf_sha256": "21ac57fa2557ad8838b5127c89bd155349cf76192f14f2153cb6a74f5ca54922"
              },
              {
                "heading": "Build an original repair-authorization extension",
                "start_line": 226,
                "end_line": 234,
                "span_lf_sha256": "ea74a2ea495af186c1793717d3bd45779d1a7756bb6c2022610262d27d8289a6"
              }
            ],
            "initial_flag_disposition": "resolved",
            "reason": "A many-to-one Case lookup creates several authorization children per case; ownership/cascades and denied access are deliberate test boundaries.",
            "initial_flag_reason": "Cardinality/cascading is described without a concrete relationship creation example.",
            "repair_id": [
              "exam-a-maker-notification"
            ],
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Cardinality/cascading is described without a concrete relationship creation example.",
            "independent_repair_ids": []
          },
          {
            "wording": "Configure Dataverse search",
            "objective_wording_sha256": "6fdea6ff158058b2b809e7eb324199f11bf6db0ac726182f6b6904d2411bc674",
            "group": "Configure the data model and UI components",
            "group_number": 9,
            "objective_number": 8,
            "objective_id": "3.1.8",
            "domain": "Extend Customer Service (15–20%)",
            "version": "Skills measured as of March 11, 2026",
            "evidence_spans": [
              {
                "heading": "Configure Dataverse data and UI components",
                "start_line": 216,
                "end_line": 224,
                "span_lf_sha256": "21ac57fa2557ad8838b5127c89bd155349cf76192f14f2153cb6a74f5ca54922"
              },
              {
                "heading": "Build an original repair-authorization extension",
                "start_line": 226,
                "end_line": 234,
                "span_lf_sha256": "ea74a2ea495af186c1793717d3bd45779d1a7756bb6c2022610262d27d8289a6"
              }
            ],
            "initial_flag_disposition": "resolved",
            "reason": "Supported searchable tables, app inclusion and Quick Find find/view/filter columns precede publish/indexing and unique-reference/denied-row tests; form placement is not indexing.",
            "initial_flag_reason": "Search is mentioned but table/Quick Find columns configuration is absent.",
            "repair_id": [
              "exam-a-maker-notification"
            ],
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Search is mentioned but table/Quick Find columns configuration is absent.",
            "independent_repair_ids": []
          },
          {
            "wording": "Create and manage email templates",
            "objective_wording_sha256": "68a16646a109037627b9029463d85ea8f7ea11f96e0848e170ee8b6ad2425534",
            "group": "Configure the data model and UI components",
            "group_number": 9,
            "objective_number": 9,
            "objective_id": "3.1.9",
            "domain": "Extend Customer Service (15–20%)",
            "version": "Skills measured as of March 11, 2026",
            "evidence_spans": [
              {
                "heading": "Configure Dataverse data and UI components",
                "start_line": 216,
                "end_line": 224,
                "span_lf_sha256": "21ac57fa2557ad8838b5127c89bd155349cf76192f14f2153cb6a74f5ca54922"
              },
              {
                "heading": "Build an original repair-authorization extension",
                "start_line": 226,
                "end_line": 234,
                "span_lf_sha256": "ea74a2ea495af186c1793717d3bd45779d1a7756bb6c2022610262d27d8289a6"
              }
            ],
            "initial_flag_disposition": "resolved",
            "reason": "Case-type versus global and organizational versus personal template scope, subject/body, dynamic fallback and inserting a case-related draft are explained; null customer values are tested.",
            "initial_flag_reason": "Template governance is described without creation/type/dynamic-fields workflow.",
            "repair_id": [
              "exam-a-maker-notification"
            ],
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Template governance is described without creation/type/dynamic-fields workflow.",
            "independent_repair_ids": []
          },
          {
            "wording": "Trigger distribution of a survey",
            "objective_wording_sha256": "990ff67420490ce4c61f585fb71d423a4833c980ba1d506a888e60260d2eac76",
            "group": "Capture customer feedback by using Customer Voice",
            "group_number": 10,
            "objective_number": 1,
            "objective_id": "3.2.1",
            "domain": "Extend Customer Service (15–20%)",
            "version": "Skills measured as of March 11, 2026",
            "evidence_spans": [
              {
                "heading": "Close the loop with Customer Voice",
                "start_line": 236,
                "end_line": 250,
                "span_lf_sha256": "a2c150c8bf555a38613f7f9bd3e14480a56b0a9aed291a43055f06aed358d401"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Trigger, personalization, Regarding/Contact correlation, anonymity and retry policies give substantive survey implementation guidance.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Trigger, personalization, Regarding/Contact correlation, anonymity and retry policies give substantive survey implementation guidance.",
            "independent_repair_ids": []
          },
          {
            "wording": "Personalize a survey",
            "objective_wording_sha256": "d3c9c59d645ba287dcfd53c6644e205b1f90ab6745a34ad70443a596a2c22654",
            "group": "Capture customer feedback by using Customer Voice",
            "group_number": 10,
            "objective_number": 2,
            "objective_id": "3.2.2",
            "domain": "Extend Customer Service (15–20%)",
            "version": "Skills measured as of March 11, 2026",
            "evidence_spans": [
              {
                "heading": "Close the loop with Customer Voice",
                "start_line": 236,
                "end_line": 250,
                "span_lf_sha256": "a2c150c8bf555a38613f7f9bd3e14480a56b0a9aed291a43055f06aed358d401"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Trigger, personalization, Regarding/Contact correlation, anonymity and retry policies give substantive survey implementation guidance.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Trigger, personalization, Regarding/Contact correlation, anonymity and retry policies give substantive survey implementation guidance.",
            "independent_repair_ids": []
          },
          {
            "wording": "Populate survey results against cases and conversations",
            "objective_wording_sha256": "7b927d6c874bff961fbc4e476e463eee08d796f59aed4186725e6e82865d8a1a",
            "group": "Capture customer feedback by using Customer Voice",
            "group_number": 10,
            "objective_number": 3,
            "objective_id": "3.2.3",
            "domain": "Extend Customer Service (15–20%)",
            "version": "Skills measured as of March 11, 2026",
            "evidence_spans": [
              {
                "heading": "Close the loop with Customer Voice",
                "start_line": 236,
                "end_line": 250,
                "span_lf_sha256": "a2c150c8bf555a38613f7f9bd3e14480a56b0a9aed291a43055f06aed358d401"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Trigger, personalization, Regarding/Contact correlation, anonymity and retry policies give substantive survey implementation guidance.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Trigger, personalization, Regarding/Contact correlation, anonymity and retry policies give substantive survey implementation guidance.",
            "independent_repair_ids": []
          }
        ],
        "independent_repairs": 0
      },
      {
        "exam_code": "MB-310",
        "guide_path": "guides/MB-310-microsoft-dynamics-365-finance-functional-consultant.md",
        "captured_final_guide_path": "C:\\src\\certification-study-library\\.maintenance\\2026-10-28-remaining-refresh\\group-04\\review-inputs\\MB-310-microsoft-dynamics-365-finance-functional-consultant.md",
        "guide_lf_sha256": "a6f7f12e80a6131d1b9a58df4f8e0d8ed553f96f5d316dd2a7593a05c02f9f3b",
        "objective_raw_sha256": "d5bbe85cad214566f2ba0cc7b266af0ff612664ba199a5c8ed948e28474d2284",
        "objective_count": 96,
        "group_count": 16,
        "line_count": 439,
        "diff_path": "C:\\src\\certification-study-library\\.maintenance\\2026-10-28-remaining-refresh\\group-04\\review-inputs\\MB-310.diff",
        "diff_raw_sha256": "58a81d834e569fe31ef53f908ca865ec4fc1159a388fe5096510469666e808cf",
        "initial_flags": 21,
        "remaining_material_named_workflow_gaps": [],
        "source_gate_state": "passed per coordinator; separate from this semantic review",
        "current_mapping": [
          {
            "wording": "Design and configure financial dimensions",
            "objective_wording_sha256": "c4ba15ff98ee282a6589ee233fe40ba20d0e428f34e797afbf5a9d3a84a16a84",
            "group": "Design and configure the chart of accounts and financial dimensions",
            "group_number": 1,
            "objective_number": 1,
            "objective_id": "1.1.1",
            "domain": "Implement financial management (35–40%)",
            "version": "Skills measured as of August 14, 2026",
            "evidence_spans": [
              {
                "heading": "Design the accounting foundation",
                "start_line": 56,
                "end_line": 68,
                "span_lf_sha256": "0af28d5ea3dac2b2a5910fcf5cf2ba6d568059d5b09c8e83c818dc951b23b053"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Dimensions, account structures, conditional advanced rules, defaults and current financial-tag behavior are distinguished, with rejection cases.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Dimensions, account structures, conditional advanced rules, defaults and current financial-tag behavior are distinguished, with rejection cases.",
            "independent_repair_ids": []
          },
          {
            "wording": "Design and configure the chart of accounts and main accounts",
            "objective_wording_sha256": "8a63701e6bfc26fb91b0e624ed3e481c31a8f80b1808ff1ac7f01e646ff36d2b",
            "group": "Design and configure the chart of accounts and financial dimensions",
            "group_number": 1,
            "objective_number": 2,
            "objective_id": "1.1.2",
            "domain": "Implement financial management (35–40%)",
            "version": "Skills measured as of August 14, 2026",
            "evidence_spans": [
              {
                "heading": "Design the accounting foundation",
                "start_line": 56,
                "end_line": 68,
                "span_lf_sha256": "0af28d5ea3dac2b2a5910fcf5cf2ba6d568059d5b09c8e83c818dc951b23b053"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Dimensions, account structures, conditional advanced rules, defaults and current financial-tag behavior are distinguished, with rejection cases.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Dimensions, account structures, conditional advanced rules, defaults and current financial-tag behavior are distinguished, with rejection cases.",
            "independent_repair_ids": []
          },
          {
            "wording": "Configure main account categories, ledger account aliases, and balance control accounts",
            "objective_wording_sha256": "35c206fd6df9b8f7049a3be77b4a8bb1e4e023e2111b1cc3262fc686923647d1",
            "group": "Design and configure the chart of accounts and financial dimensions",
            "group_number": 1,
            "objective_number": 3,
            "objective_id": "1.1.3",
            "domain": "Implement financial management (35–40%)",
            "version": "Skills measured as of August 14, 2026",
            "evidence_spans": [
              {
                "heading": "Design the accounting foundation",
                "start_line": 56,
                "end_line": 68,
                "span_lf_sha256": "0af28d5ea3dac2b2a5910fcf5cf2ba6d568059d5b09c8e83c818dc951b23b053"
              },
              {
                "heading": "Turn a shortcut into a controlled account combination",
                "start_line": 70,
                "end_line": 72,
                "span_lf_sha256": "af1adce896dffa07c2cb0a308b1e38cce8120dda7f517fdd2885cd5ff463e633"
              }
            ],
            "initial_flag_disposition": "resolved",
            "reason": "Categories/reporting and balance expectations remain distinct from an alias; the original alias sets account structure/company/segments/focus and tests validation rather than bypassing it.",
            "initial_flag_reason": "Categories/aliases/balance expectations are one-line definitions; alias account-structure/company/default/focus setup is missing.",
            "repair_id": [
              "exam-a-alias"
            ],
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Categories/aliases/balance expectations are one-line definitions; alias account-structure/company/default/focus setup is missing.",
            "independent_repair_ids": []
          },
          {
            "wording": "Configure legal entity overrides for financial dimensions and main accounts",
            "objective_wording_sha256": "c415f463d9fff505e43b8904b4b7f9e040113adb75196f29a4bf100fab707431",
            "group": "Design and configure the chart of accounts and financial dimensions",
            "group_number": 1,
            "objective_number": 4,
            "objective_id": "1.1.4",
            "domain": "Implement financial management (35–40%)",
            "version": "Skills measured as of August 14, 2026",
            "evidence_spans": [
              {
                "heading": "Design the accounting foundation",
                "start_line": 56,
                "end_line": 68,
                "span_lf_sha256": "0af28d5ea3dac2b2a5910fcf5cf2ba6d568059d5b09c8e83c818dc951b23b053"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Dimensions, account structures, conditional advanced rules, defaults and current financial-tag behavior are distinguished, with rejection cases.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Dimensions, account structures, conditional advanced rules, defaults and current financial-tag behavior are distinguished, with rejection cases.",
            "independent_repair_ids": []
          },
          {
            "wording": "Configure and manage account structures and advanced rules",
            "objective_wording_sha256": "c57873fbbfb077700a06aebb20d698c3696d931a802097d8100dacc1a3d53ba4",
            "group": "Design and configure the chart of accounts and financial dimensions",
            "group_number": 1,
            "objective_number": 5,
            "objective_id": "1.1.5",
            "domain": "Implement financial management (35–40%)",
            "version": "Skills measured as of August 14, 2026",
            "evidence_spans": [
              {
                "heading": "Design the accounting foundation",
                "start_line": 56,
                "end_line": 68,
                "span_lf_sha256": "0af28d5ea3dac2b2a5910fcf5cf2ba6d568059d5b09c8e83c818dc951b23b053"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Dimensions, account structures, conditional advanced rules, defaults and current financial-tag behavior are distinguished, with rejection cases.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Dimensions, account structures, conditional advanced rules, defaults and current financial-tag behavior are distinguished, with rejection cases.",
            "independent_repair_ids": []
          },
          {
            "wording": "Design and configure financial tags",
            "objective_wording_sha256": "e1e724785c5e137516f7be86129e28054570b8dbd7742fc6396a9efd3500aa6f",
            "group": "Design and configure the chart of accounts and financial dimensions",
            "group_number": 1,
            "objective_number": 6,
            "objective_id": "1.1.6",
            "domain": "Implement financial management (35–40%)",
            "version": "Skills measured as of August 14, 2026",
            "evidence_spans": [
              {
                "heading": "Design the accounting foundation",
                "start_line": 56,
                "end_line": 68,
                "span_lf_sha256": "0af28d5ea3dac2b2a5910fcf5cf2ba6d568059d5b09c8e83c818dc951b23b053"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Dimensions, account structures, conditional advanced rules, defaults and current financial-tag behavior are distinguished, with rejection cases.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Dimensions, account structures, conditional advanced rules, defaults and current financial-tag behavior are distinguished, with rejection cases.",
            "independent_repair_ids": []
          },
          {
            "wording": "Configure derived dimensions and financial dimension default templates",
            "objective_wording_sha256": "a6e2fe9c96b0b62821b3c42c35034668ee20b7674ed670abfee21ff7973680d3",
            "group": "Design and configure the chart of accounts and financial dimensions",
            "group_number": 1,
            "objective_number": 7,
            "objective_id": "1.1.7",
            "domain": "Implement financial management (35–40%)",
            "version": "Skills measured as of August 14, 2026",
            "evidence_spans": [
              {
                "heading": "Design the accounting foundation",
                "start_line": 56,
                "end_line": 68,
                "span_lf_sha256": "0af28d5ea3dac2b2a5910fcf5cf2ba6d568059d5b09c8e83c818dc951b23b053"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Dimensions, account structures, conditional advanced rules, defaults and current financial-tag behavior are distinguished, with rejection cases.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Dimensions, account structures, conditional advanced rules, defaults and current financial-tag behavior are distinguished, with rejection cases.",
            "independent_repair_ids": []
          },
          {
            "wording": "Configure currency exchange types and rates",
            "objective_wording_sha256": "2992282f7da88028b0f1501834c5ee22a81ad2ab582d7b52e231156877751d2b",
            "group": "Configure ledgers and currencies",
            "group_number": 2,
            "objective_number": 1,
            "objective_id": "1.2.1",
            "domain": "Implement financial management (35–40%)",
            "version": "Skills measured as of August 14, 2026",
            "evidence_spans": [
              {
                "heading": "Configure ledgers, fiscal time and currency",
                "start_line": 74,
                "end_line": 82,
                "span_lf_sha256": "54328d4939cbef3f4b3daddeb779c9c26ff6577eac0113110f3340a03b7060d9"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Ledger/calendar/currency/posting-layer boundaries, allocation inputs and module-specific revaluation are explained.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Ledger/calendar/currency/posting-layer boundaries, allocation inputs and module-specific revaluation are explained.",
            "independent_repair_ids": []
          },
          {
            "wording": "Configure a currency revaluation posting profile",
            "objective_wording_sha256": "fdb29ecde8fa3a60b36413082ba6490e579ca0a9a82dde35ca41f41d57b9be2b",
            "group": "Configure ledgers and currencies",
            "group_number": 2,
            "objective_number": 2,
            "objective_id": "1.2.2",
            "domain": "Implement financial management (35–40%)",
            "version": "Skills measured as of August 14, 2026",
            "evidence_spans": [
              {
                "heading": "Configure ledgers, fiscal time and currency",
                "start_line": 74,
                "end_line": 82,
                "span_lf_sha256": "54328d4939cbef3f4b3daddeb779c9c26ff6577eac0113110f3340a03b7060d9"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Ledger/calendar/currency/posting-layer boundaries, allocation inputs and module-specific revaluation are explained.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Ledger/calendar/currency/posting-layer boundaries, allocation inputs and module-specific revaluation are explained.",
            "independent_repair_ids": []
          },
          {
            "wording": "Configure accounting and reporting currencies",
            "objective_wording_sha256": "62a30b18b04f1d7d4bb0535555e945592f5b2dccb73ceaedb51c3b3b7914b82d",
            "group": "Configure ledgers and currencies",
            "group_number": 2,
            "objective_number": 3,
            "objective_id": "1.2.3",
            "domain": "Implement financial management (35–40%)",
            "version": "Skills measured as of August 14, 2026",
            "evidence_spans": [
              {
                "heading": "Configure ledgers, fiscal time and currency",
                "start_line": 74,
                "end_line": 82,
                "span_lf_sha256": "54328d4939cbef3f4b3daddeb779c9c26ff6577eac0113110f3340a03b7060d9"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Ledger/calendar/currency/posting-layer boundaries, allocation inputs and module-specific revaluation are explained.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Ledger/calendar/currency/posting-layer boundaries, allocation inputs and module-specific revaluation are explained.",
            "independent_repair_ids": []
          },
          {
            "wording": "Configure ledger calendar and fiscal calendar",
            "objective_wording_sha256": "7eacea5c8e7f4294ce7eb804005f44282136e31e62d544709bb6e98c2eaf5e6a",
            "group": "Configure ledgers and currencies",
            "group_number": 2,
            "objective_number": 4,
            "objective_id": "1.2.4",
            "domain": "Implement financial management (35–40%)",
            "version": "Skills measured as of August 14, 2026",
            "evidence_spans": [
              {
                "heading": "Configure ledgers, fiscal time and currency",
                "start_line": 74,
                "end_line": 82,
                "span_lf_sha256": "54328d4939cbef3f4b3daddeb779c9c26ff6577eac0113110f3340a03b7060d9"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Ledger/calendar/currency/posting-layer boundaries, allocation inputs and module-specific revaluation are explained.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Ledger/calendar/currency/posting-layer boundaries, allocation inputs and module-specific revaluation are explained.",
            "independent_repair_ids": []
          },
          {
            "wording": "Configure posting layers for ledger transactions",
            "objective_wording_sha256": "776221e4cb03434b95c3f843c78824403dc7f0c4d6c9e9883eaa0f8d6e8a7f23",
            "group": "Configure ledgers and currencies",
            "group_number": 2,
            "objective_number": 5,
            "objective_id": "1.2.5",
            "domain": "Implement financial management (35–40%)",
            "version": "Skills measured as of August 14, 2026",
            "evidence_spans": [
              {
                "heading": "Configure ledgers, fiscal time and currency",
                "start_line": 74,
                "end_line": 82,
                "span_lf_sha256": "54328d4939cbef3f4b3daddeb779c9c26ff6577eac0113110f3340a03b7060d9"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Ledger/calendar/currency/posting-layer boundaries, allocation inputs and module-specific revaluation are explained.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Ledger/calendar/currency/posting-layer boundaries, allocation inputs and module-specific revaluation are explained.",
            "independent_repair_ids": []
          },
          {
            "wording": "Configure and process ledger allocation rules",
            "objective_wording_sha256": "9743dc619307237ec0a8f7556487b498dde0243cb9fbbda62bf55a0dbeb1bd5c",
            "group": "Configure ledgers and currencies",
            "group_number": 2,
            "objective_number": 6,
            "objective_id": "1.2.6",
            "domain": "Implement financial management (35–40%)",
            "version": "Skills measured as of August 14, 2026",
            "evidence_spans": [
              {
                "heading": "Configure ledgers, fiscal time and currency",
                "start_line": 74,
                "end_line": 82,
                "span_lf_sha256": "54328d4939cbef3f4b3daddeb779c9c26ff6577eac0113110f3340a03b7060d9"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Ledger/calendar/currency/posting-layer boundaries, allocation inputs and module-specific revaluation are explained.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Ledger/calendar/currency/posting-layer boundaries, allocation inputs and module-specific revaluation are explained.",
            "independent_repair_ids": []
          },
          {
            "wording": "Configure journal names and vouchers",
            "objective_wording_sha256": "a7040586a88c2f136a43c71661d2fc9de991b7304b259872527071cdf695966c",
            "group": "Implement and manage journals",
            "group_number": 3,
            "objective_number": 1,
            "objective_id": "1.3.1",
            "domain": "Implement financial management (35–40%)",
            "version": "Skills measured as of August 14, 2026",
            "evidence_spans": [
              {
                "heading": "Implement controlled journals",
                "start_line": 84,
                "end_line": 88,
                "span_lf_sha256": "5e2cf9c9f64cbcbbb3f792f4baccf83894e249d8ecfe194067d6ba22c9c9c1c2"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Journal-name defaults, voucher numbering, posting controls and the draft/validation/approval/posting/reversal audit chain explain controlled journal processing.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Journal defaults/control, voucher audit trail, validation/approval/posting/reversal and batch evidence are explained; periodic and Excel-template construction are only named.",
            "independent_repair_ids": []
          },
          {
            "wording": "Configure journal controls and posting restriction rules",
            "objective_wording_sha256": "d3d34d60ab55d249d8fade4d5ca05dfbee470612876c4cd797695660ddd5ce3f",
            "group": "Implement and manage journals",
            "group_number": 3,
            "objective_number": 2,
            "objective_id": "1.3.2",
            "domain": "Implement financial management (35–40%)",
            "version": "Skills measured as of August 14, 2026",
            "evidence_spans": [
              {
                "heading": "Implement controlled journals",
                "start_line": 84,
                "end_line": 88,
                "span_lf_sha256": "5e2cf9c9f64cbcbbb3f792f4baccf83894e249d8ecfe194067d6ba22c9c9c1c2"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Journal-name defaults, voucher numbering, posting controls and the draft/validation/approval/posting/reversal audit chain explain controlled journal processing.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Journal defaults/control, voucher audit trail, validation/approval/posting/reversal and batch evidence are explained; periodic and Excel-template construction are only named.",
            "independent_repair_ids": []
          },
          {
            "wording": "Configure and process periodic journals",
            "objective_wording_sha256": "352e3e84d5038340861646499728c8a6dc15fc3b51135890d26bef4dd6d54d10",
            "group": "Implement and manage journals",
            "group_number": 3,
            "objective_number": 3,
            "objective_id": "1.3.3",
            "domain": "Implement financial management (35–40%)",
            "version": "Skills measured as of August 14, 2026",
            "evidence_spans": [
              {
                "heading": "Implement controlled journals",
                "start_line": 84,
                "end_line": 88,
                "span_lf_sha256": "5e2cf9c9f64cbcbbb3f792f4baccf83894e249d8ecfe194067d6ba22c9c9c1c2"
              },
              {
                "heading": "Retrieve a recurring entry, then validate the actual journal",
                "start_line": 90,
                "end_line": 94,
                "span_lf_sha256": "7d4001b6c90708e3f9e74c37e0070ea8881e57c8e7a4d96d4488aa88c7f6afaa"
              }
            ],
            "initial_flag_disposition": "resolved",
            "reason": "Periodic definition, next/last dates and one-month interval feed a cutoff-controlled general-journal retrieval; repeated occurrences and posted voucher evidence are distinct.",
            "initial_flag_reason": "Periodic journals are defined only as recurring patterns; retrieval/posting/date-update behavior is not taught.",
            "repair_id": [
              "exam-a-periodic-excel"
            ],
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Periodic journals are defined only as recurring patterns; retrieval/posting/date-update behavior is not taught.",
            "independent_repair_ids": []
          },
          {
            "wording": "Configure intercompany accounting",
            "objective_wording_sha256": "1a8310c98127e971b5a69615bf6f4b7b904dd34bf34bd153879ea8105c97b6ee",
            "group": "Implement and manage journals",
            "group_number": 3,
            "objective_number": 4,
            "objective_id": "1.3.4",
            "domain": "Implement financial management (35–40%)",
            "version": "Skills measured as of August 14, 2026",
            "evidence_spans": [
              {
                "heading": "Configure ledgers, fiscal time and currency",
                "start_line": 80,
                "end_line": 80,
                "span_lf_sha256": "82e921682f696d6fe28959a7f24fc7c0c457c33c40e1a51db1d910d60fdc98f4"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Intercompany accounting creates balanced due-to/due-from entries across legal entities; the design checks both companies, exchange rates, dimensions and period status.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Journal defaults/control, voucher audit trail, validation/approval/posting/reversal and batch evidence are explained; periodic and Excel-template construction are only named.",
            "independent_repair_ids": []
          },
          {
            "wording": "Create and modify templates to edit journals in Microsoft Excel",
            "objective_wording_sha256": "7bb91b632cdee06a30276207b3b786eff6efb1bdeab44bae73c37644f7b2bc18",
            "group": "Implement and manage journals",
            "group_number": 3,
            "objective_number": 5,
            "objective_id": "1.3.5",
            "domain": "Implement financial management (35–40%)",
            "version": "Skills measured as of August 14, 2026",
            "evidence_spans": [
              {
                "heading": "Implement controlled journals",
                "start_line": 84,
                "end_line": 88,
                "span_lf_sha256": "5e2cf9c9f64cbcbbb3f792f4baccf83894e249d8ecfe194067d6ba22c9c9c1c2"
              },
              {
                "heading": "Retrieve a recurring entry, then validate the actual journal",
                "start_line": 90,
                "end_line": 94,
                "span_lf_sha256": "7d4001b6c90708e3f9e74c37e0070ea8881e57c8e7a4d96d4488aa88c7f6afaa"
              }
            ],
            "initial_flag_disposition": "resolved",
            "reason": "Template account-type support, journal/company keys, mandatory/dimension bindings, publish/error review and custom menu registration are taught; publish is not posting.",
            "initial_flag_reason": "Excel template is a pipeline word; template field design/binding/publish-validation workflow absent.",
            "repair_id": [
              "exam-a-periodic-excel"
            ],
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Excel template is a pipeline word; template field design/binding/publish-validation workflow absent.",
            "independent_repair_ids": []
          },
          {
            "wording": "Reverse financial transaction entries",
            "objective_wording_sha256": "bc4e03a6cab7cb87c935b805c5b34117fb694804a3e508d20dc26fd9f32116cd",
            "group": "Implement and manage journals",
            "group_number": 3,
            "objective_number": 6,
            "objective_id": "1.3.6",
            "domain": "Implement financial management (35–40%)",
            "version": "Skills measured as of August 14, 2026",
            "evidence_spans": [
              {
                "heading": "Implement controlled journals",
                "start_line": 84,
                "end_line": 88,
                "span_lf_sha256": "5e2cf9c9f64cbcbbb3f792f4baccf83894e249d8ecfe194067d6ba22c9c9c1c2"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Journal-name defaults, voucher numbering, posting controls and the draft/validation/approval/posting/reversal audit chain explain controlled journal processing.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Journal defaults/control, voucher audit trail, validation/approval/posting/reversal and batch evidence are explained; periodic and Excel-template construction are only named.",
            "independent_repair_ids": []
          },
          {
            "wording": "Create, validate, and post journal entries manually and by using Microsoft Excel",
            "objective_wording_sha256": "334411547dfd12644cc5b0e268a5b59b772b15b5aa7dc84a4f896c96f6cfd613",
            "group": "Implement and manage journals",
            "group_number": 3,
            "objective_number": 7,
            "objective_id": "1.3.7",
            "domain": "Implement financial management (35–40%)",
            "version": "Skills measured as of August 14, 2026",
            "evidence_spans": [
              {
                "heading": "Implement controlled journals",
                "start_line": 84,
                "end_line": 88,
                "span_lf_sha256": "5e2cf9c9f64cbcbbb3f792f4baccf83894e249d8ecfe194067d6ba22c9c9c1c2"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Journal-name defaults, voucher numbering, posting controls and the draft/validation/approval/posting/reversal audit chain explain controlled journal processing.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Journal defaults/control, voucher audit trail, validation/approval/posting/reversal and batch evidence are explained; periodic and Excel-template construction are only named.",
            "independent_repair_ids": []
          },
          {
            "wording": "Configure batch processing of journals",
            "objective_wording_sha256": "68d9b048e1624a3320064ea19dd5783c340af3788bffd2d5761a6df6b08b0f3d",
            "group": "Implement and manage journals",
            "group_number": 3,
            "objective_number": 8,
            "objective_id": "1.3.8",
            "domain": "Implement financial management (35–40%)",
            "version": "Skills measured as of August 14, 2026",
            "evidence_spans": [
              {
                "heading": "Implement controlled journals",
                "start_line": 84,
                "end_line": 88,
                "span_lf_sha256": "5e2cf9c9f64cbcbbb3f792f4baccf83894e249d8ecfe194067d6ba22c9c9c1c2"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Journal-name defaults, voucher numbering, posting controls and the draft/validation/approval/posting/reversal audit chain explain controlled journal processing.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Journal defaults/control, voucher audit trail, validation/approval/posting/reversal and batch evidence are explained; periodic and Excel-template construction are only named.",
            "independent_repair_ids": []
          },
          {
            "wording": "Create and manage bank groups and bank accounts",
            "objective_wording_sha256": "637c9acc49d4ae3d7cb421b9394e5368fd67c0cdfb6ce5bda497a9996cc34bf8",
            "group": "Implement and manage cash and bank",
            "group_number": 4,
            "objective_number": 1,
            "objective_id": "1.4.1",
            "domain": "Implement financial management (35–40%)",
            "version": "Skills measured as of August 14, 2026",
            "evidence_spans": [
              {
                "heading": "Manage cash, banks and payments",
                "start_line": 96,
                "end_line": 108,
                "span_lf_sha256": "d8bf0068874a2fa400534126b7077a7d99baa9437d18409d162b8630a71af4b3"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Bank-account and payment-method settings, payment-format purpose, imported-statement matching, exceptions, revaluation and netting prerequisites explain bank/payment controls.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Reconciliation stages, ambiguous match handling and netting prerequisites are concrete; forecast automation, file format and centralized setup are generic.",
            "independent_repair_ids": []
          },
          {
            "wording": "Configure payment formats",
            "objective_wording_sha256": "b5f1686bfb730ad4be46fccd9d49f877df7ec75bce4e4575a551e5a9f3775597",
            "group": "Implement and manage cash and bank",
            "group_number": 4,
            "objective_number": 2,
            "objective_id": "1.4.2",
            "domain": "Implement financial management (35–40%)",
            "version": "Skills measured as of August 14, 2026",
            "evidence_spans": [
              {
                "heading": "Manage cash, banks and payments",
                "start_line": 96,
                "end_line": 108,
                "span_lf_sha256": "d8bf0068874a2fa400534126b7077a7d99baa9437d18409d162b8630a71af4b3"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Bank-account and payment-method settings, payment-format purpose, imported-statement matching, exceptions, revaluation and netting prerequisites explain bank/payment controls.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Reconciliation stages, ambiguous match handling and netting prerequisites are concrete; forecast automation, file format and centralized setup are generic.",
            "independent_repair_ids": []
          },
          {
            "wording": "Configure bank reconciliations, including advanced bank reconciliations",
            "objective_wording_sha256": "ced7afee4067b8859093782e0af67cfc61ab529cd4a05db8eba43fd3f5920811",
            "group": "Implement and manage cash and bank",
            "group_number": 4,
            "objective_number": 3,
            "objective_id": "1.4.3",
            "domain": "Implement financial management (35–40%)",
            "version": "Skills measured as of August 14, 2026",
            "evidence_spans": [
              {
                "heading": "Manage cash, banks and payments",
                "start_line": 96,
                "end_line": 108,
                "span_lf_sha256": "d8bf0068874a2fa400534126b7077a7d99baa9437d18409d162b8630a71af4b3"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Bank-account and payment-method settings, payment-format purpose, imported-statement matching, exceptions, revaluation and netting prerequisites explain bank/payment controls.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Reconciliation stages, ambiguous match handling and netting prerequisites are concrete; forecast automation, file format and centralized setup are generic.",
            "independent_repair_ids": []
          },
          {
            "wording": "Configure the cash flow forecast setup, including automation setup",
            "objective_wording_sha256": "f96a8cbfd8f5d653dadaa80daa5f588ee5120843002e3988e1baa24d7d637b41",
            "group": "Implement and manage cash and bank",
            "group_number": 4,
            "objective_number": 4,
            "objective_id": "1.4.4",
            "domain": "Implement financial management (35–40%)",
            "version": "Skills measured as of August 14, 2026",
            "evidence_spans": [
              {
                "heading": "Manage cash, banks and payments",
                "start_line": 96,
                "end_line": 108,
                "span_lf_sha256": "d8bf0068874a2fa400534126b7077a7d99baa9437d18409d162b8630a71af4b3"
              },
              {
                "heading": "Schedule forecast data and configure cross-company settlement",
                "start_line": 110,
                "end_line": 114,
                "span_lf_sha256": "c6093c7990512cc07c6dbd81e6ffdef6aa9cf10bac9b71492952ed3818170439"
              }
            ],
            "initial_flag_disposition": "resolved",
            "reason": "Liquidity-account/source/timing setup precedes calculation, per-company automation scheduling and measurement refresh; omitted accounts and stale report timestamps have checks.",
            "initial_flag_reason": "Forecast sources/automation are listed without refresh setup or liquidity-account mapping example.",
            "repair_id": [
              "exam-a-forecast-shared"
            ],
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Forecast sources/automation are listed without refresh setup or liquidity-account mapping example.",
            "independent_repair_ids": []
          },
          {
            "wording": "Perform bank foreign currency revaluation",
            "objective_wording_sha256": "5d7ebd8c6a89f5135e2a8c44c284c73d1522b419e1c17367b452806eb1de83ed",
            "group": "Implement and manage cash and bank",
            "group_number": 4,
            "objective_number": 5,
            "objective_id": "1.4.5",
            "domain": "Implement financial management (35–40%)",
            "version": "Skills measured as of August 14, 2026",
            "evidence_spans": [
              {
                "heading": "Manage cash, banks and payments",
                "start_line": 96,
                "end_line": 108,
                "span_lf_sha256": "d8bf0068874a2fa400534126b7077a7d99baa9437d18409d162b8630a71af4b3"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Bank-account and payment-method settings, payment-format purpose, imported-statement matching, exceptions, revaluation and netting prerequisites explain bank/payment controls.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Reconciliation stages, ambiguous match handling and netting prerequisites are concrete; forecast automation, file format and centralized setup are generic.",
            "independent_repair_ids": []
          },
          {
            "wording": "Process manual and advanced bank reconciliations",
            "objective_wording_sha256": "295649a9876846fa0e8fc63a96fb92c14809b5184f37cde0204139a94139d91d",
            "group": "Implement and manage cash and bank",
            "group_number": 4,
            "objective_number": 6,
            "objective_id": "1.4.6",
            "domain": "Implement financial management (35–40%)",
            "version": "Skills measured as of August 14, 2026",
            "evidence_spans": [
              {
                "heading": "Manage cash, banks and payments",
                "start_line": 96,
                "end_line": 108,
                "span_lf_sha256": "d8bf0068874a2fa400534126b7077a7d99baa9437d18409d162b8630a71af4b3"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Bank-account and payment-method settings, payment-format purpose, imported-statement matching, exceptions, revaluation and netting prerequisites explain bank/payment controls.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Reconciliation stages, ambiguous match handling and netting prerequisites are concrete; forecast automation, file format and centralized setup are generic.",
            "independent_repair_ids": []
          },
          {
            "wording": "Configure shared payment setup for customers and vendors",
            "objective_wording_sha256": "258433b0c7343ece7fd3b5746fb21ff5de227ab445df9669322f9046a8971242",
            "group": "Implement and manage cash and bank",
            "group_number": 4,
            "objective_number": 7,
            "objective_id": "1.4.7",
            "domain": "Implement financial management (35–40%)",
            "version": "Skills measured as of August 14, 2026",
            "evidence_spans": [
              {
                "heading": "Manage cash, banks and payments",
                "start_line": 96,
                "end_line": 108,
                "span_lf_sha256": "d8bf0068874a2fa400534126b7077a7d99baa9437d18409d162b8630a71af4b3"
              },
              {
                "heading": "Schedule forecast data and configure cross-company settlement",
                "start_line": 110,
                "end_line": 114,
                "span_lf_sha256": "c6093c7990512cc07c6dbd81e6ffdef6aa9cf10bac9b71492952ed3818170439"
              }
            ],
            "initial_flag_disposition": "resolved",
            "reason": "Centralized-payment hierarchy purpose, reciprocal accounts, party identity and matching method/profile IDs precede a two-company payment/reconciliation; missing mappings are negative cases.",
            "initial_flag_reason": "Cross-entity eligibility is mentioned without organizational hierarchy/centralized payment and intercompany setup.",
            "repair_id": [
              "exam-a-forecast-shared"
            ],
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Cross-entity eligibility is mentioned without organizational hierarchy/centralized payment and intercompany setup.",
            "independent_repair_ids": []
          },
          {
            "wording": "Configure and process customer and vendor netting",
            "objective_wording_sha256": "9760a8f5a7c91c7b19a3d94dafdeebb91a86fe15c5915b087120ff5b8a5d7f16",
            "group": "Implement and manage cash and bank",
            "group_number": 4,
            "objective_number": 8,
            "objective_id": "1.4.8",
            "domain": "Implement financial management (35–40%)",
            "version": "Skills measured as of August 14, 2026",
            "evidence_spans": [
              {
                "heading": "Manage cash, banks and payments",
                "start_line": 96,
                "end_line": 108,
                "span_lf_sha256": "d8bf0068874a2fa400534126b7077a7d99baa9437d18409d162b8630a71af4b3"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Bank-account and payment-method settings, payment-format purpose, imported-statement matching, exceptions, revaluation and netting prerequisites explain bank/payment controls.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Reconciliation stages, ambiguous match handling and netting prerequisites are concrete; forecast automation, file format and centralized setup are generic.",
            "independent_repair_ids": []
          },
          {
            "wording": "Design and configure periodic closing processes and end-of-year processes, including main accounts, reports, and templates",
            "objective_wording_sha256": "c6be509438465e2733312de9e5447799dfe9ceef1245551f1c8b81d000bf4e8c",
            "group": "Perform periodic processes",
            "group_number": 5,
            "objective_number": 1,
            "objective_id": "1.5.1",
            "domain": "Implement financial management (35–40%)",
            "version": "Skills measured as of August 14, 2026",
            "evidence_spans": [
              {
                "heading": "Perform close, consolidation and tax work",
                "start_line": 116,
                "end_line": 128,
                "span_lf_sha256": "c11ec4a2af48e78daf64fbc9b80b7e8fa8e0560724cfba89aef7bb4e16680e89"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Owned close dependencies, consolidation/elimination purpose, ledger settlement, revaluation and period controls explain closing responsibilities.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Owned close dependencies, consolidation/elimination purpose and settlement/revaluation boundaries are explained; consolidation-company setup is absent.",
            "independent_repair_ids": []
          },
          {
            "wording": "Perform financial consolidation and elimination processes",
            "objective_wording_sha256": "5c9d66d1747ea75b2f4af2be04b470365477f465fa71c02f90ee72018702820c",
            "group": "Perform periodic processes",
            "group_number": 5,
            "objective_number": 2,
            "objective_id": "1.5.2",
            "domain": "Implement financial management (35–40%)",
            "version": "Skills measured as of August 14, 2026",
            "evidence_spans": [
              {
                "heading": "Perform close, consolidation and tax work",
                "start_line": 116,
                "end_line": 128,
                "span_lf_sha256": "c11ec4a2af48e78daf64fbc9b80b7e8fa8e0560724cfba89aef7bb4e16680e89"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Owned close dependencies, consolidation/elimination purpose, ledger settlement, revaluation and period controls explain closing responsibilities.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Owned close dependencies, consolidation/elimination purpose and settlement/revaluation boundaries are explained; consolidation-company setup is absent.",
            "independent_repair_ids": []
          },
          {
            "wording": "Design and configure financial period workspaces and closing schedules",
            "objective_wording_sha256": "d43a41dda15578002f6bc7e8052a646e1f05f9321b32e103d6e0586b997cd6c5",
            "group": "Perform periodic processes",
            "group_number": 5,
            "objective_number": 3,
            "objective_id": "1.5.3",
            "domain": "Implement financial management (35–40%)",
            "version": "Skills measured as of August 14, 2026",
            "evidence_spans": [
              {
                "heading": "Perform close, consolidation and tax work",
                "start_line": 116,
                "end_line": 128,
                "span_lf_sha256": "c11ec4a2af48e78daf64fbc9b80b7e8fa8e0560724cfba89aef7bb4e16680e89"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Owned close dependencies, consolidation/elimination purpose, ledger settlement, revaluation and period controls explain closing responsibilities.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Owned close dependencies, consolidation/elimination purpose and settlement/revaluation boundaries are explained; consolidation-company setup is absent.",
            "independent_repair_ids": []
          },
          {
            "wording": "Design and configure legal entity for consolidation and elimination by using Consolidation online",
            "objective_wording_sha256": "180e7ff383803039fb86aea82a01afd017cea898e6e1a898d86958fb8b388e2a",
            "group": "Perform periodic processes",
            "group_number": 5,
            "objective_number": 4,
            "objective_id": "1.5.4",
            "domain": "Implement financial management (35–40%)",
            "version": "Skills measured as of August 14, 2026",
            "evidence_spans": [
              {
                "heading": "Perform close, consolidation and tax work",
                "start_line": 116,
                "end_line": 128,
                "span_lf_sha256": "c11ec4a2af48e78daf64fbc9b80b7e8fa8e0560724cfba89aef7bb4e16680e89"
              },
              {
                "heading": "Configure the consolidation company before running it",
                "start_line": 132,
                "end_line": 142,
                "span_lf_sha256": "55cf42c8b25b880188742b8a10886447da129e039137624ab5086a7e65a890f7"
              }
            ],
            "initial_flag_disposition": "resolved",
            "reason": "The consolidation entity designation, chart/calendar/currencies/rates, subsidiary mapping and elimination-company choice precede controlled consolidation/reconciliation and rerun.",
            "initial_flag_reason": "No create consolidation legal entity, select consolidation/elimination flag, configure ledger/rates and source mapping workflow.",
            "repair_id": [
              "exam-a-consolidation-tax"
            ],
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "No create consolidation legal entity, select consolidation/elimination flag, configure ledger/rates and source mapping workflow.",
            "independent_repair_ids": []
          },
          {
            "wording": "Configure and process ledger settlements",
            "objective_wording_sha256": "a3868eb3e93d287932119c657a224e58933e70b403eea361ad0d61f4fe64a59f",
            "group": "Perform periodic processes",
            "group_number": 5,
            "objective_number": 5,
            "objective_id": "1.5.5",
            "domain": "Implement financial management (35–40%)",
            "version": "Skills measured as of August 14, 2026",
            "evidence_spans": [
              {
                "heading": "Perform close, consolidation and tax work",
                "start_line": 116,
                "end_line": 128,
                "span_lf_sha256": "c11ec4a2af48e78daf64fbc9b80b7e8fa8e0560724cfba89aef7bb4e16680e89"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Owned close dependencies, consolidation/elimination purpose, ledger settlement, revaluation and period controls explain closing responsibilities.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Owned close dependencies, consolidation/elimination purpose and settlement/revaluation boundaries are explained; consolidation-company setup is absent.",
            "independent_repair_ids": []
          },
          {
            "wording": "Configure sales tax groups, item sales tax groups, tax codes, settlement periods, authorities, and tax exemptions",
            "objective_wording_sha256": "1781a57594cf7054abbe207fc22b41cbcdf27cf4d46db9867bf4f603c786124d",
            "group": "Configure, collect, and report taxes",
            "group_number": 6,
            "objective_number": 1,
            "objective_id": "1.6.1",
            "domain": "Implement financial management (35–40%)",
            "version": "Skills measured as of August 14, 2026",
            "evidence_spans": [
              {
                "heading": "Perform close, consolidation and tax work",
                "start_line": 116,
                "end_line": 128,
                "span_lf_sha256": "c11ec4a2af48e78daf64fbc9b80b7e8fa8e0560724cfba89aef7bb4e16680e89"
              },
              {
                "heading": "Configure the consolidation company before running it",
                "start_line": 132,
                "end_line": 142,
                "span_lf_sha256": "55cf42c8b25b880188742b8a10886447da129e039137624ab5086a7e65a890f7"
              }
            ],
            "initial_flag_disposition": "resolved",
            "reason": "Main accounts/posting group, authority/period/code and party/item groups form an explicit setup order; the 800-base intersection example and exemption review explain applicable codes.",
            "initial_flag_reason": "No worked code/group intersection with exemption, period and authority setup.",
            "repair_id": [
              "exam-a-consolidation-tax"
            ],
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "No worked code/group intersection with exemption, period and authority setup.",
            "independent_repair_ids": []
          },
          {
            "wording": "Configure tax ledger posting groups",
            "objective_wording_sha256": "c860fb51bcdf0f3b1acc601375844f8df7a30b13366ae169f53b0ba06ed5a3c5",
            "group": "Configure, collect, and report taxes",
            "group_number": 6,
            "objective_number": 2,
            "objective_id": "1.6.2",
            "domain": "Implement financial management (35–40%)",
            "version": "Skills measured as of August 14, 2026",
            "evidence_spans": [
              {
                "heading": "Perform close, consolidation and tax work",
                "start_line": 116,
                "end_line": 128,
                "span_lf_sha256": "c11ec4a2af48e78daf64fbc9b80b7e8fa8e0560724cfba89aef7bb4e16680e89"
              },
              {
                "heading": "Configure the consolidation company before running it",
                "start_line": 132,
                "end_line": 142,
                "span_lf_sha256": "55cf42c8b25b880188742b8a10886447da129e039137624ab5086a7e65a890f7"
              }
            ],
            "initial_flag_disposition": "resolved",
            "reason": "The new tax example links each code to period/posting group and reconciles its settlement/clearing accounts; configuration and cash payment remain separate.",
            "initial_flag_reason": "Tax ledger posting groups are named without account mapping or code association workflow.",
            "repair_id": [
              "exam-a-consolidation-tax"
            ],
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Tax ledger posting groups are named without account mapping or code association workflow.",
            "independent_repair_ids": []
          },
          {
            "wording": "Settle and post sales tax",
            "objective_wording_sha256": "17704e33aa8cd18c85a605069f1381076d06b78ce1711d274bc405c7ec5b8545",
            "group": "Configure, collect, and report taxes",
            "group_number": 6,
            "objective_number": 3,
            "objective_id": "1.6.3",
            "domain": "Implement financial management (35–40%)",
            "version": "Skills measured as of August 14, 2026",
            "evidence_spans": [
              {
                "heading": "Perform close, consolidation and tax work",
                "start_line": 116,
                "end_line": 128,
                "span_lf_sha256": "c11ec4a2af48e78daf64fbc9b80b7e8fa8e0560724cfba89aef7bb4e16680e89"
              },
              {
                "heading": "Configure the consolidation company before running it",
                "start_line": 132,
                "end_line": 142,
                "span_lf_sha256": "55cf42c8b25b880188742b8a10886447da129e039137624ab5086a7e65a890f7"
              }
            ],
            "initial_flag_disposition": "resolved",
            "reason": "Period/date/original-correction selection, liability review, Settle and post, clearing reconciliation and late-invoice correction form an actual settlement workflow.",
            "initial_flag_reason": "No calculation→review→settlement/posting→authority reconciliation workflow.",
            "repair_id": [
              "exam-a-consolidation-tax"
            ],
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "No calculation→review→settlement/posting→authority reconciliation workflow.",
            "independent_repair_ids": []
          },
          {
            "wording": "Configure withholding tax groups, tax codes, and authorities",
            "objective_wording_sha256": "123183bf112d765a20cef16cb191f4c7c0a02962b64bf6de17e57a338918c71e",
            "group": "Configure, collect, and report taxes",
            "group_number": 6,
            "objective_number": 4,
            "objective_id": "1.6.4",
            "domain": "Implement financial management (35–40%)",
            "version": "Skills measured as of August 14, 2026",
            "evidence_spans": [
              {
                "heading": "Perform close, consolidation and tax work",
                "start_line": 116,
                "end_line": 128,
                "span_lf_sha256": "c11ec4a2af48e78daf64fbc9b80b7e8fa8e0560724cfba89aef7bb4e16680e89"
              },
              {
                "heading": "Configure the consolidation company before running it",
                "start_line": 132,
                "end_line": 142,
                "span_lf_sha256": "55cf42c8b25b880188742b8a10886447da129e039137624ab5086a7e65a890f7"
              }
            ],
            "initial_flag_disposition": "resolved",
            "reason": "Global withholding authority/period/posting accounts/codes/party/item groups and threshold are taught, with explicit ordinary/localized-mechanism limits and a synthetic 20/980 result.",
            "initial_flag_reason": "Withholding groups/codes/authorities are only named; ordinary versus global/localized withholding setup not distinguished.",
            "repair_id": [
              "exam-a-consolidation-tax"
            ],
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Withholding groups/codes/authorities are only named; ordinary versus global/localized withholding setup not distinguished.",
            "independent_repair_ids": []
          },
          {
            "wording": "Calculate and adjust sales tax",
            "objective_wording_sha256": "cde96834c65002bc84b55fa1431ab26d6cee004fbf60c6dc404abfdc87829b06",
            "group": "Configure, collect, and report taxes",
            "group_number": 6,
            "objective_number": 5,
            "objective_id": "1.6.5",
            "domain": "Implement financial management (35–40%)",
            "version": "Skills measured as of August 14, 2026",
            "evidence_spans": [
              {
                "heading": "Perform close, consolidation and tax work",
                "start_line": 116,
                "end_line": 128,
                "span_lf_sha256": "c11ec4a2af48e78daf64fbc9b80b7e8fa8e0560724cfba89aef7bb4e16680e89"
              },
              {
                "heading": "Configure the consolidation company before running it",
                "start_line": 132,
                "end_line": 142,
                "span_lf_sha256": "55cf42c8b25b880188742b8a10886447da129e039137624ab5086a7e65a890f7"
              }
            ],
            "initial_flag_disposition": "resolved",
            "reason": "The 800×5%=40 intersection calculation, supported transaction-tax adjustment, exemption/rounding check and settlement correction path teach the calculation/control boundary.",
            "initial_flag_reason": "No original calculation/adjustment example or verification of posting impact.",
            "repair_id": [
              "exam-a-consolidation-tax"
            ],
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "No original calculation/adjustment example or verification of posting impact.",
            "independent_repair_ids": []
          },
          {
            "wording": "Configure customers and customer groups, including configuring shared customers",
            "objective_wording_sha256": "9e402d19324a9b0404d942553772ad59ddd339d763868302cea508f758d19b49",
            "group": "Implement and manage accounts receivable",
            "group_number": 7,
            "objective_number": 1,
            "objective_id": "2.1.1",
            "domain": "Implement accounts receivable, credit, collections, and subscription billing (15–20%)",
            "version": "Skills measured as of August 14, 2026",
            "evidence_spans": [
              {
                "heading": "Run order-to-cash with explainable posting",
                "start_line": 146,
                "end_line": 150,
                "span_lf_sha256": "8ec7caaa92544084c75d1f434511d0f90750a32e92acac6d95cc7f289efb5322"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Customer/group/shared-customer defaults and posting profiles connect invoice state, tax, dimensions, due date and voucher to open-item settlement and currency revaluation.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Master defaults, invoice-to-voucher/open-item chain and settlement controls are explained, but billing classification and specific recurring/prepayment configuration are thin.",
            "independent_repair_ids": []
          },
          {
            "wording": "Configure and process free text invoices, including recurring free text invoices",
            "objective_wording_sha256": "7da710460e590166ad6e93333897a45b9679bc823a7401fee06b20b62172ae2a",
            "group": "Implement and manage accounts receivable",
            "group_number": 7,
            "objective_number": 2,
            "objective_id": "2.1.2",
            "domain": "Implement accounts receivable, credit, collections, and subscription billing (15–20%)",
            "version": "Skills measured as of August 14, 2026",
            "evidence_spans": [
              {
                "heading": "Run order-to-cash with explainable posting",
                "start_line": 146,
                "end_line": 150,
                "span_lf_sha256": "8ec7caaa92544084c75d1f434511d0f90750a32e92acac6d95cc7f289efb5322"
              },
              {
                "heading": "Generate recurring invoices and process collection evidence",
                "start_line": 158,
                "end_line": 166,
                "span_lf_sha256": "8ed0ea0f00d101886af94b65dbba1d36167565df9f45af8cb5d901e5ee98b365"
              }
            ],
            "initial_flag_disposition": "resolved",
            "reason": "Template→customer schedule→generation/recurrence ID→workflow/validation/posting is taught, including two schedules and failed-member reconciliation.",
            "initial_flag_reason": "Invoice types are listed without recurring template→generation→posting workflow.",
            "repair_id": [
              "exam-a-receivable-collection"
            ],
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Invoice types are listed without recurring template→generation→posting workflow.",
            "independent_repair_ids": []
          },
          {
            "wording": "Process sales order invoices and credit memos, including prepayments",
            "objective_wording_sha256": "0896e4786487c66fd993c7b9dde7f4d41b7fd4462b00130f00bc3cea4b0d162b",
            "group": "Implement and manage accounts receivable",
            "group_number": 7,
            "objective_number": 3,
            "objective_id": "2.1.3",
            "domain": "Implement accounts receivable, credit, collections, and subscription billing (15–20%)",
            "version": "Skills measured as of August 14, 2026",
            "evidence_spans": [
              {
                "heading": "Run order-to-cash with explainable posting",
                "start_line": 146,
                "end_line": 150,
                "span_lf_sha256": "8ec7caaa92544084c75d1f434511d0f90750a32e92acac6d95cc7f289efb5322"
              },
              {
                "heading": "Generate recurring invoices and process collection evidence",
                "start_line": 158,
                "end_line": 166,
                "span_lf_sha256": "8ed0ea0f00d101886af94b65dbba1d36167565df9f45af8cb5d901e5ee98b365"
              }
            ],
            "initial_flag_disposition": "resolved",
            "reason": "Prepayment posting setup, proposal/invoice/payment settlement, application and synchronous/background final-invoice reconciliation produce the assumed4000 residual; reversal is tested.",
            "initial_flag_reason": "Prepayments are named without prepayment→invoice→application/credit workflow.",
            "repair_id": [
              "exam-a-receivable-collection"
            ],
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Prepayments are named without prepayment→invoice→application/credit workflow.",
            "independent_repair_ids": []
          },
          {
            "wording": "Configure customer payment methods",
            "objective_wording_sha256": "3d5d4f13b76283b9e670203c69ac1ec266c2093eccce8175facc6e52e4a34b98",
            "group": "Implement and manage accounts receivable",
            "group_number": 7,
            "objective_number": 4,
            "objective_id": "2.1.4",
            "domain": "Implement accounts receivable, credit, collections, and subscription billing (15–20%)",
            "version": "Skills measured as of August 14, 2026",
            "evidence_spans": [
              {
                "heading": "Run order-to-cash with explainable posting",
                "start_line": 146,
                "end_line": 150,
                "span_lf_sha256": "8ec7caaa92544084c75d1f434511d0f90750a32e92acac6d95cc7f289efb5322"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Customer/group/shared-customer defaults and posting profiles connect invoice state, tax, dimensions, due date and voucher to open-item settlement and currency revaluation.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Master defaults, invoice-to-voucher/open-item chain and settlement controls are explained, but billing classification and specific recurring/prepayment configuration are thin.",
            "independent_repair_ids": []
          },
          {
            "wording": "Configure accounts receivable charges and apply changes to an invoice",
            "objective_wording_sha256": "bfa993a392eaa8fbd933ea87dd643caa3e15c51032a2ce64f05883f5d45eb5a8",
            "group": "Implement and manage accounts receivable",
            "group_number": 7,
            "objective_number": 5,
            "objective_id": "2.1.5",
            "domain": "Implement accounts receivable, credit, collections, and subscription billing (15–20%)",
            "version": "Skills measured as of August 14, 2026",
            "evidence_spans": [
              {
                "heading": "Run order-to-cash with explainable posting",
                "start_line": 146,
                "end_line": 150,
                "span_lf_sha256": "8ec7caaa92544084c75d1f434511d0f90750a32e92acac6d95cc7f289efb5322"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Customer/group/shared-customer defaults and posting profiles connect invoice state, tax, dimensions, due date and voucher to open-item settlement and currency revaluation.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Master defaults, invoice-to-voucher/open-item chain and settlement controls are explained, but billing classification and specific recurring/prepayment configuration are thin.",
            "independent_repair_ids": []
          },
          {
            "wording": "Configure customer posting profiles",
            "objective_wording_sha256": "598da1e7a334e3776b8a71b5778eee60382b397f3edf2a1a5eec5633f01d8ada",
            "group": "Implement and manage accounts receivable",
            "group_number": 7,
            "objective_number": 6,
            "objective_id": "2.1.6",
            "domain": "Implement accounts receivable, credit, collections, and subscription billing (15–20%)",
            "version": "Skills measured as of August 14, 2026",
            "evidence_spans": [
              {
                "heading": "Run order-to-cash with explainable posting",
                "start_line": 146,
                "end_line": 150,
                "span_lf_sha256": "8ec7caaa92544084c75d1f434511d0f90750a32e92acac6d95cc7f289efb5322"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Customer/group/shared-customer defaults and posting profiles connect invoice state, tax, dimensions, due date and voucher to open-item settlement and currency revaluation.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Master defaults, invoice-to-voucher/open-item chain and settlement controls are explained, but billing classification and specific recurring/prepayment configuration are thin.",
            "independent_repair_ids": []
          },
          {
            "wording": "Process customer payments",
            "objective_wording_sha256": "72256d509eda86715bb01f3b5f8e9ce82f45e548aedb8b6c0ccc9a514dd4d5d9",
            "group": "Implement and manage accounts receivable",
            "group_number": 7,
            "objective_number": 7,
            "objective_id": "2.1.7",
            "domain": "Implement accounts receivable, credit, collections, and subscription billing (15–20%)",
            "version": "Skills measured as of August 14, 2026",
            "evidence_spans": [
              {
                "heading": "Run order-to-cash with explainable posting",
                "start_line": 146,
                "end_line": 150,
                "span_lf_sha256": "8ec7caaa92544084c75d1f434511d0f90750a32e92acac6d95cc7f289efb5322"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Customer/group/shared-customer defaults and posting profiles connect invoice state, tax, dimensions, due date and voucher to open-item settlement and currency revaluation.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Master defaults, invoice-to-voucher/open-item chain and settlement controls are explained, but billing classification and specific recurring/prepayment configuration are thin.",
            "independent_repair_ids": []
          },
          {
            "wording": "Perform accounts receivable foreign currency revaluation",
            "objective_wording_sha256": "809756ef26d8310e820865e15a9f2037b398d222eab46423c8a16e997eaa7108",
            "group": "Implement and manage accounts receivable",
            "group_number": 7,
            "objective_number": 8,
            "objective_id": "2.1.8",
            "domain": "Implement accounts receivable, credit, collections, and subscription billing (15–20%)",
            "version": "Skills measured as of August 14, 2026",
            "evidence_spans": [
              {
                "heading": "Run order-to-cash with explainable posting",
                "start_line": 146,
                "end_line": 150,
                "span_lf_sha256": "8ec7caaa92544084c75d1f434511d0f90750a32e92acac6d95cc7f289efb5322"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Customer/group/shared-customer defaults and posting profiles connect invoice state, tax, dimensions, due date and voucher to open-item settlement and currency revaluation.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Master defaults, invoice-to-voucher/open-item chain and settlement controls are explained, but billing classification and specific recurring/prepayment configuration are thin.",
            "independent_repair_ids": []
          },
          {
            "wording": "Configure billing classification",
            "objective_wording_sha256": "827d612eaa0583cdb8135b9ee31cb7524887c4dbbc5eda21d4532c3db72483cf",
            "group": "Implement and manage accounts receivable",
            "group_number": 7,
            "objective_number": 9,
            "objective_id": "2.1.9",
            "domain": "Implement accounts receivable, credit, collections, and subscription billing (15–20%)",
            "version": "Skills measured as of August 14, 2026",
            "evidence_spans": [
              {
                "heading": "Run order-to-cash with explainable posting",
                "start_line": 146,
                "end_line": 150,
                "span_lf_sha256": "8ec7caaa92544084c75d1f434511d0f90750a32e92acac6d95cc7f289efb5322"
              },
              {
                "heading": "Generate recurring invoices and process collection evidence",
                "start_line": 158,
                "end_line": 166,
                "span_lf_sha256": "8ed0ea0f00d101886af94b65dbba1d36167565df9f45af8cb5d901e5ee98b365"
              }
            ],
            "initial_flag_disposition": "resolved",
            "reason": "Public-sector billing classification sets terms and billing codes and deliberately chooses interest/letter behavior; it is bounded away from universal payment categorization.",
            "initial_flag_reason": "Billing classification is named but applicability and setup/selection workflow absent.",
            "repair_id": [
              "exam-a-receivable-collection"
            ],
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Billing classification is named but applicability and setup/selection workflow absent.",
            "independent_repair_ids": []
          },
          {
            "wording": "Configure bank accounts for customers",
            "objective_wording_sha256": "1fbb77cb94a9a665bb853d5f239778c8c0fb11b3df3b5df956353c1447b896b0",
            "group": "Implement and manage accounts receivable",
            "group_number": 7,
            "objective_number": 10,
            "objective_id": "2.1.10",
            "domain": "Implement accounts receivable, credit, collections, and subscription billing (15–20%)",
            "version": "Skills measured as of August 14, 2026",
            "evidence_spans": [
              {
                "heading": "Run order-to-cash with explainable posting",
                "start_line": 146,
                "end_line": 150,
                "span_lf_sha256": "8ec7caaa92544084c75d1f434511d0f90750a32e92acac6d95cc7f289efb5322"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Customer/group/shared-customer defaults and posting profiles connect invoice state, tax, dimensions, due date and voucher to open-item settlement and currency revaluation.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Master defaults, invoice-to-voucher/open-item chain and settlement controls are explained, but billing classification and specific recurring/prepayment configuration are thin.",
            "independent_repair_ids": []
          },
          {
            "wording": "Process intercompany invoices",
            "objective_wording_sha256": "5f3e5887fb48d3d053282793d6334f2a4b7550ded956b5ea8bdfd737297d7075",
            "group": "Implement and manage accounts receivable",
            "group_number": 7,
            "objective_number": 11,
            "objective_id": "2.1.11",
            "domain": "Implement accounts receivable, credit, collections, and subscription billing (15–20%)",
            "version": "Skills measured as of August 14, 2026",
            "evidence_spans": [
              {
                "heading": "Run order-to-cash with explainable posting",
                "start_line": 146,
                "end_line": 150,
                "span_lf_sha256": "8ec7caaa92544084c75d1f434511d0f90750a32e92acac6d95cc7f289efb5322"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Customer/group/shared-customer defaults and posting profiles connect invoice state, tax, dimensions, due date and voucher to open-item settlement and currency revaluation.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Master defaults, invoice-to-voucher/open-item chain and settlement controls are explained, but billing classification and specific recurring/prepayment configuration are thin.",
            "independent_repair_ids": []
          },
          {
            "wording": "Configure credit management processes",
            "objective_wording_sha256": "26b3bff5a9aee8c80ae45c3ac5489a17cf2bae2d9c0b7c66edb71ae61b748430",
            "group": "Manage credit and collections",
            "group_number": 8,
            "objective_number": 1,
            "objective_id": "2.2.1",
            "domain": "Implement accounts receivable, credit, collections, and subscription billing (15–20%)",
            "version": "Skills measured as of August 14, 2026",
            "evidence_spans": [
              {
                "heading": "Control credit and collections",
                "start_line": 152,
                "end_line": 156,
                "span_lf_sha256": "2e60bf6104b12d11ab5919965c3438892c4df75e13add726ce22b093faf58ecd"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Credit limits, risk rules, holds/release authority, aging definitions, pools and collection outcomes are explained with dispute, partial-payment and approved-write-off controls.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Risk/hold/release, aging and collection outcomes are distinguished; interest-note and collection-letter configuration is only named.",
            "independent_repair_ids": []
          },
          {
            "wording": "Configure collections management processes, including collection activities",
            "objective_wording_sha256": "98e682c9c8c394cd46426be2fbcd4ba9d1e1f3e55a0d138c571bfb54f0c82118",
            "group": "Manage credit and collections",
            "group_number": 8,
            "objective_number": 2,
            "objective_id": "2.2.2",
            "domain": "Implement accounts receivable, credit, collections, and subscription billing (15–20%)",
            "version": "Skills measured as of August 14, 2026",
            "evidence_spans": [
              {
                "heading": "Control credit and collections",
                "start_line": 152,
                "end_line": 156,
                "span_lf_sha256": "2e60bf6104b12d11ab5919965c3438892c4df75e13add726ce22b093faf58ecd"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Credit limits, risk rules, holds/release authority, aging definitions, pools and collection outcomes are explained with dispute, partial-payment and approved-write-off controls.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Risk/hold/release, aging and collection outcomes are distinguished; interest-note and collection-letter configuration is only named.",
            "independent_repair_ids": []
          },
          {
            "wording": "Manage delinquent customers",
            "objective_wording_sha256": "613ae8e08d31192c6da4d67b0cf955797c3ba8a06986ceacdb14c3c5b39c38bd",
            "group": "Manage credit and collections",
            "group_number": 8,
            "objective_number": 3,
            "objective_id": "2.2.3",
            "domain": "Implement accounts receivable, credit, collections, and subscription billing (15–20%)",
            "version": "Skills measured as of August 14, 2026",
            "evidence_spans": [
              {
                "heading": "Control credit and collections",
                "start_line": 152,
                "end_line": 156,
                "span_lf_sha256": "2e60bf6104b12d11ab5919965c3438892c4df75e13add726ce22b093faf58ecd"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Credit limits, risk rules, holds/release authority, aging definitions, pools and collection outcomes are explained with dispute, partial-payment and approved-write-off controls.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Risk/hold/release, aging and collection outcomes are distinguished; interest-note and collection-letter configuration is only named.",
            "independent_repair_ids": []
          },
          {
            "wording": "Configure and process collection letters",
            "objective_wording_sha256": "c99cb4ef5313bb815d56bb506a1c362e46c9a97e0c1a103dbbeaa831c2df5f42",
            "group": "Manage credit and collections",
            "group_number": 8,
            "objective_number": 4,
            "objective_id": "2.2.4",
            "domain": "Implement accounts receivable, credit, collections, and subscription billing (15–20%)",
            "version": "Skills measured as of August 14, 2026",
            "evidence_spans": [
              {
                "heading": "Control credit and collections",
                "start_line": 152,
                "end_line": 156,
                "span_lf_sha256": "2e60bf6104b12d11ab5919965c3438892c4df75e13add726ce22b093faf58ecd"
              },
              {
                "heading": "Generate recurring invoices and process collection evidence",
                "start_line": 158,
                "end_line": 166,
                "span_lf_sha256": "8ed0ea0f00d101886af94b65dbba1d36167565df9f45af8cb5d901e5ee98b365"
              }
            ],
            "initial_flag_disposition": "resolved",
            "reason": "Posting-profile sequence/permission, population/date generation, review/print/post and customer-versus-transaction grouping are taught, with a newly arrived payment/credit check.",
            "initial_flag_reason": "Collection letters are mentioned but sequence/code/create/review/post/print controls missing.",
            "repair_id": [
              "exam-a-receivable-collection"
            ],
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Collection letters are mentioned but sequence/code/create/review/post/print controls missing.",
            "independent_repair_ids": []
          },
          {
            "wording": "Configure aging definitions and process aged balances",
            "objective_wording_sha256": "5fec8289522ce175d394946f2ec4e5eb5016769cd82a93ad3408cf6b59035f41",
            "group": "Manage credit and collections",
            "group_number": 8,
            "objective_number": 5,
            "objective_id": "2.2.5",
            "domain": "Implement accounts receivable, credit, collections, and subscription billing (15–20%)",
            "version": "Skills measured as of August 14, 2026",
            "evidence_spans": [
              {
                "heading": "Control credit and collections",
                "start_line": 152,
                "end_line": 156,
                "span_lf_sha256": "2e60bf6104b12d11ab5919965c3438892c4df75e13add726ce22b093faf58ecd"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Credit limits, risk rules, holds/release authority, aging definitions, pools and collection outcomes are explained with dispute, partial-payment and approved-write-off controls.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Risk/hold/release, aging and collection outcomes are distinguished; interest-note and collection-letter configuration is only named.",
            "independent_repair_ids": []
          },
          {
            "wording": "Process and manage credit holds",
            "objective_wording_sha256": "53ec90c4b23f0b07402662ae85629cdc851530743a908799eb591073f479d30c",
            "group": "Manage credit and collections",
            "group_number": 8,
            "objective_number": 6,
            "objective_id": "2.2.6",
            "domain": "Implement accounts receivable, credit, collections, and subscription billing (15–20%)",
            "version": "Skills measured as of August 14, 2026",
            "evidence_spans": [
              {
                "heading": "Control credit and collections",
                "start_line": 152,
                "end_line": 156,
                "span_lf_sha256": "2e60bf6104b12d11ab5919965c3438892c4df75e13add726ce22b093faf58ecd"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Credit limits, risk rules, holds/release authority, aging definitions, pools and collection outcomes are explained with dispute, partial-payment and approved-write-off controls.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Risk/hold/release, aging and collection outcomes are distinguished; interest-note and collection-letter configuration is only named.",
            "independent_repair_ids": []
          },
          {
            "wording": "Configure and process customer write-offs",
            "objective_wording_sha256": "156227918ddbd0846b9592bcce8e036c1bffeec264b1cb203512e4f70f33d8ba",
            "group": "Manage credit and collections",
            "group_number": 8,
            "objective_number": 7,
            "objective_id": "2.2.7",
            "domain": "Implement accounts receivable, credit, collections, and subscription billing (15–20%)",
            "version": "Skills measured as of August 14, 2026",
            "evidence_spans": [
              {
                "heading": "Control credit and collections",
                "start_line": 152,
                "end_line": 156,
                "span_lf_sha256": "2e60bf6104b12d11ab5919965c3438892c4df75e13add726ce22b093faf58ecd"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Credit limits, risk rules, holds/release authority, aging definitions, pools and collection outcomes are explained with dispute, partial-payment and approved-write-off controls.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Risk/hold/release, aging and collection outcomes are distinguished; interest-note and collection-letter configuration is only named.",
            "independent_repair_ids": []
          },
          {
            "wording": "Configure and process interest notes",
            "objective_wording_sha256": "51b59c6a45fc16aa7bb3c490d362dc8e319097b6e0758cee5e829fa7ccec2da3",
            "group": "Manage credit and collections",
            "group_number": 8,
            "objective_number": 8,
            "objective_id": "2.2.8",
            "domain": "Implement accounts receivable, credit, collections, and subscription billing (15–20%)",
            "version": "Skills measured as of August 14, 2026",
            "evidence_spans": [
              {
                "heading": "Control credit and collections",
                "start_line": 152,
                "end_line": 156,
                "span_lf_sha256": "2e60bf6104b12d11ab5919965c3438892c4df75e13add726ce22b093faf58ecd"
              },
              {
                "heading": "Generate recurring invoices and process collection evidence",
                "start_line": 158,
                "end_line": 166,
                "span_lf_sha256": "8ed0ea0f00d101886af94b65dbba1d36167565df9f45af8cb5d901e5ee98b365"
              }
            ],
            "initial_flag_disposition": "resolved",
            "reason": "Posting-profile interest code, calculation population/date range, created-note review and per-transaction/grouped posting are explicit; stale open-item selection is checked.",
            "initial_flag_reason": "Interest notes are mentioned but interest-code/rate/period/create/post and correction workflow absent.",
            "repair_id": [
              "exam-a-receivable-collection"
            ],
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Interest notes are mentioned but interest-code/rate/period/create/post and correction workflow absent.",
            "independent_repair_ids": []
          },
          {
            "wording": "Generate sales documents by using billing schedules",
            "objective_wording_sha256": "6f108f6f8c15c1df0cc4c59e5612b467adcff387355e0704068f8d207c08a92b",
            "group": "Configure and manage subscription billing",
            "group_number": 9,
            "objective_number": 1,
            "objective_id": "2.3.1",
            "domain": "Implement accounts receivable, credit, collections, and subscription billing (15–20%)",
            "version": "Skills measured as of August 14, 2026",
            "evidence_spans": [
              {
                "heading": "Configure subscription billing and deferrals",
                "start_line": 168,
                "end_line": 178,
                "span_lf_sha256": "418ab4bffbac874a16e58a3739e1804a03e2b03e01ea4cd8e23ab2f7837e3d30"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Schedule/group/frequency/milestone controls and deferral allocation/cutoff/posting behavior support contract-to-recognition reasoning.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Schedule/group/frequency/milestone controls and deferral allocation/cutoff/posting behavior support contract-to-recognition reasoning.",
            "independent_repair_ids": []
          },
          {
            "wording": "Manage billing schedules, including price update and hold termination",
            "objective_wording_sha256": "1e6b8eb529c8dad29d1185774a83312b17b135aacba50bd28f7c1b0b423d8d96",
            "group": "Configure and manage subscription billing",
            "group_number": 9,
            "objective_number": 2,
            "objective_id": "2.3.2",
            "domain": "Implement accounts receivable, credit, collections, and subscription billing (15–20%)",
            "version": "Skills measured as of August 14, 2026",
            "evidence_spans": [
              {
                "heading": "Configure subscription billing and deferrals",
                "start_line": 168,
                "end_line": 178,
                "span_lf_sha256": "418ab4bffbac874a16e58a3739e1804a03e2b03e01ea4cd8e23ab2f7837e3d30"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Schedule/group/frequency/milestone controls and deferral allocation/cutoff/posting behavior support contract-to-recognition reasoning.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Schedule/group/frequency/milestone controls and deferral allocation/cutoff/posting behavior support contract-to-recognition reasoning.",
            "independent_repair_ids": []
          },
          {
            "wording": "Configure contract billing, including billing schedule group, item group, and milestone setup",
            "objective_wording_sha256": "9f94f9cfd384770801753fe2344dc6afb66801e1fd3df6ac84765614e9420c2a",
            "group": "Configure and manage subscription billing",
            "group_number": 9,
            "objective_number": 3,
            "objective_id": "2.3.3",
            "domain": "Implement accounts receivable, credit, collections, and subscription billing (15–20%)",
            "version": "Skills measured as of August 14, 2026",
            "evidence_spans": [
              {
                "heading": "Configure subscription billing and deferrals",
                "start_line": 168,
                "end_line": 178,
                "span_lf_sha256": "418ab4bffbac874a16e58a3739e1804a03e2b03e01ea4cd8e23ab2f7837e3d30"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Schedule/group/frequency/milestone controls and deferral allocation/cutoff/posting behavior support contract-to-recognition reasoning.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Schedule/group/frequency/milestone controls and deferral allocation/cutoff/posting behavior support contract-to-recognition reasoning.",
            "independent_repair_ids": []
          },
          {
            "wording": "Configure and process revenue deferrals and recognition, including charges",
            "objective_wording_sha256": "e74784599618519ffce360fc73f378f37b9de0dc3a250f68d14cc80598947b33",
            "group": "Configure and manage subscription billing",
            "group_number": 9,
            "objective_number": 4,
            "objective_id": "2.3.4",
            "domain": "Implement accounts receivable, credit, collections, and subscription billing (15–20%)",
            "version": "Skills measured as of August 14, 2026",
            "evidence_spans": [
              {
                "heading": "Configure subscription billing and deferrals",
                "start_line": 168,
                "end_line": 178,
                "span_lf_sha256": "418ab4bffbac874a16e58a3739e1804a03e2b03e01ea4cd8e23ab2f7837e3d30"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Schedule/group/frequency/milestone controls and deferral allocation/cutoff/posting behavior support contract-to-recognition reasoning.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Schedule/group/frequency/milestone controls and deferral allocation/cutoff/posting behavior support contract-to-recognition reasoning.",
            "independent_repair_ids": []
          },
          {
            "wording": "Configure and process expense deferrals and recognition",
            "objective_wording_sha256": "f9abaa184917d0c2b3eeec0c4e57c84ad62cfd9b2c953093fa4990fc7814e431",
            "group": "Configure and manage subscription billing",
            "group_number": 9,
            "objective_number": 5,
            "objective_id": "2.3.5",
            "domain": "Implement accounts receivable, credit, collections, and subscription billing (15–20%)",
            "version": "Skills measured as of August 14, 2026",
            "evidence_spans": [
              {
                "heading": "Configure subscription billing and deferrals",
                "start_line": 168,
                "end_line": 178,
                "span_lf_sha256": "418ab4bffbac874a16e58a3739e1804a03e2b03e01ea4cd8e23ab2f7837e3d30"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Schedule/group/frequency/milestone controls and deferral allocation/cutoff/posting behavior support contract-to-recognition reasoning.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Schedule/group/frequency/milestone controls and deferral allocation/cutoff/posting behavior support contract-to-recognition reasoning.",
            "independent_repair_ids": []
          },
          {
            "wording": "Process and manage revenue and expense recognition schedules",
            "objective_wording_sha256": "fe3c5e26064bf2a4689bcdfa4a786f39db92ac7defddf6f98ca59a3465f65b81",
            "group": "Configure and manage subscription billing",
            "group_number": 9,
            "objective_number": 6,
            "objective_id": "2.3.6",
            "domain": "Implement accounts receivable, credit, collections, and subscription billing (15–20%)",
            "version": "Skills measured as of August 14, 2026",
            "evidence_spans": [
              {
                "heading": "Configure subscription billing and deferrals",
                "start_line": 168,
                "end_line": 178,
                "span_lf_sha256": "418ab4bffbac874a16e58a3739e1804a03e2b03e01ea4cd8e23ab2f7837e3d30"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Schedule/group/frequency/milestone controls and deferral allocation/cutoff/posting behavior support contract-to-recognition reasoning.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Schedule/group/frequency/milestone controls and deferral allocation/cutoff/posting behavior support contract-to-recognition reasoning.",
            "independent_repair_ids": []
          },
          {
            "wording": "Configure deferral defaults and items deferred by default",
            "objective_wording_sha256": "c71ce2b7ea8f1212c64a016b0ebf73fffe9c9667ae3bc155952d992720ee1ec0",
            "group": "Configure and manage subscription billing",
            "group_number": 9,
            "objective_number": 7,
            "objective_id": "2.3.7",
            "domain": "Implement accounts receivable, credit, collections, and subscription billing (15–20%)",
            "version": "Skills measured as of August 14, 2026",
            "evidence_spans": [
              {
                "heading": "Configure subscription billing and deferrals",
                "start_line": 168,
                "end_line": 178,
                "span_lf_sha256": "418ab4bffbac874a16e58a3739e1804a03e2b03e01ea4cd8e23ab2f7837e3d30"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Schedule/group/frequency/milestone controls and deferral allocation/cutoff/posting behavior support contract-to-recognition reasoning.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Schedule/group/frequency/milestone controls and deferral allocation/cutoff/posting behavior support contract-to-recognition reasoning.",
            "independent_repair_ids": []
          },
          {
            "wording": "Configure invoice validation policies and invoice matching setup",
            "objective_wording_sha256": "d5816f85cfcb0d52c29fa2d13a5cef85a8e6901e7c24a3e400518bd5961bd56b",
            "group": "Implement and manage accounts payable",
            "group_number": 10,
            "objective_number": 1,
            "objective_id": "3.1.1",
            "domain": "Implement and manage accounts payable and expenses (10–15%)",
            "version": "Skills measured as of August 14, 2026",
            "evidence_spans": [
              {
                "heading": "Control procure-to-pay",
                "start_line": 186,
                "end_line": 194,
                "span_lf_sha256": "16cbbd6fb8d6aa09946156bb877d3ad686851a1a4b1af3b6fcb0d12c17b1fb77"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Vendor/group/shared-vendor defaults, posting profiles, PO/non-PO liability, matching, payment proposals and settlement explain the procure-to-pay control chain.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "PO/non-PO liability/payment control chain and exact matching distinctions are explained; recurring vendor and shared/centralized setup are thin.",
            "independent_repair_ids": []
          },
          {
            "wording": "Configure vendor groups, vendors, and vendor posting profiles, including configuring shared vendors",
            "objective_wording_sha256": "7afe586e8362eb30d6a3052214c0c1551ff9441bd8e0b3ae7fae6eab7f5967b1",
            "group": "Implement and manage accounts payable",
            "group_number": 10,
            "objective_number": 2,
            "objective_id": "3.1.2",
            "domain": "Implement and manage accounts payable and expenses (10–15%)",
            "version": "Skills measured as of August 14, 2026",
            "evidence_spans": [
              {
                "heading": "Control procure-to-pay",
                "start_line": 186,
                "end_line": 194,
                "span_lf_sha256": "16cbbd6fb8d6aa09946156bb877d3ad686851a1a4b1af3b6fcb0d12c17b1fb77"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Vendor/group/shared-vendor defaults, posting profiles, PO/non-PO liability, matching, payment proposals and settlement explain the procure-to-pay control chain.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "PO/non-PO liability/payment control chain and exact matching distinctions are explained; recurring vendor and shared/centralized setup are thin.",
            "independent_repair_ids": []
          },
          {
            "wording": "Process invoices and credit memos, with and without associated purchase orders, including prepayments",
            "objective_wording_sha256": "6bf1ccccd8d41d6ac8ef52d8398ff6c5b1c440ef3d21861657dc0db11bf2e93a",
            "group": "Implement and manage accounts payable",
            "group_number": 10,
            "objective_number": 3,
            "objective_id": "3.1.3",
            "domain": "Implement and manage accounts payable and expenses (10–15%)",
            "version": "Skills measured as of August 14, 2026",
            "evidence_spans": [
              {
                "heading": "Control procure-to-pay",
                "start_line": 186,
                "end_line": 194,
                "span_lf_sha256": "16cbbd6fb8d6aa09946156bb877d3ad686851a1a4b1af3b6fcb0d12c17b1fb77"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Vendor/group/shared-vendor defaults, posting profiles, PO/non-PO liability, matching, payment proposals and settlement explain the procure-to-pay control chain.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "PO/non-PO liability/payment control chain and exact matching distinctions are explained; recurring vendor and shared/centralized setup are thin.",
            "independent_repair_ids": []
          },
          {
            "wording": "Configure vendor payment methods",
            "objective_wording_sha256": "72d936bd33af30efbe042b6da3fda7ee3a669b644f5e90165ec3109ca8e30632",
            "group": "Implement and manage accounts payable",
            "group_number": 10,
            "objective_number": 4,
            "objective_id": "3.1.4",
            "domain": "Implement and manage accounts payable and expenses (10–15%)",
            "version": "Skills measured as of August 14, 2026",
            "evidence_spans": [
              {
                "heading": "Control procure-to-pay",
                "start_line": 186,
                "end_line": 194,
                "span_lf_sha256": "16cbbd6fb8d6aa09946156bb877d3ad686851a1a4b1af3b6fcb0d12c17b1fb77"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Vendor/group/shared-vendor defaults, posting profiles, PO/non-PO liability, matching, payment proposals and settlement explain the procure-to-pay control chain.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "PO/non-PO liability/payment control chain and exact matching distinctions are explained; recurring vendor and shared/centralized setup are thin.",
            "independent_repair_ids": []
          },
          {
            "wording": "Configure accounts payable charges, and apply changes to an invoice",
            "objective_wording_sha256": "ea053bf53c660f4b2f46ebc76102d6bab34297362380e490be791096abb73be1",
            "group": "Implement and manage accounts payable",
            "group_number": 10,
            "objective_number": 5,
            "objective_id": "3.1.5",
            "domain": "Implement and manage accounts payable and expenses (10–15%)",
            "version": "Skills measured as of August 14, 2026",
            "evidence_spans": [
              {
                "heading": "Control procure-to-pay",
                "start_line": 186,
                "end_line": 194,
                "span_lf_sha256": "16cbbd6fb8d6aa09946156bb877d3ad686851a1a4b1af3b6fcb0d12c17b1fb77"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Vendor/group/shared-vendor defaults, posting profiles, PO/non-PO liability, matching, payment proposals and settlement explain the procure-to-pay control chain.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "PO/non-PO liability/payment control chain and exact matching distinctions are explained; recurring vendor and shared/centralized setup are thin.",
            "independent_repair_ids": []
          },
          {
            "wording": "Configure vendor bank accounts",
            "objective_wording_sha256": "8a25df3459bb8c990caf57a8acf50e72e6792a3beac445759bcc67fdc2a4f426",
            "group": "Implement and manage accounts payable",
            "group_number": 10,
            "objective_number": 6,
            "objective_id": "3.1.6",
            "domain": "Implement and manage accounts payable and expenses (10–15%)",
            "version": "Skills measured as of August 14, 2026",
            "evidence_spans": [
              {
                "heading": "Control procure-to-pay",
                "start_line": 186,
                "end_line": 194,
                "span_lf_sha256": "16cbbd6fb8d6aa09946156bb877d3ad686851a1a4b1af3b6fcb0d12c17b1fb77"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Vendor/group/shared-vendor defaults, posting profiles, PO/non-PO liability, matching, payment proposals and settlement explain the procure-to-pay control chain.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "PO/non-PO liability/payment control chain and exact matching distinctions are explained; recurring vendor and shared/centralized setup are thin.",
            "independent_repair_ids": []
          },
          {
            "wording": "Perform accounts payable foreign currency revaluation",
            "objective_wording_sha256": "3fe74317012e6a64547c1b89d23dc82778e8b4e8967d7883b16fc326b514d5c8",
            "group": "Implement and manage accounts payable",
            "group_number": 10,
            "objective_number": 7,
            "objective_id": "3.1.7",
            "domain": "Implement and manage accounts payable and expenses (10–15%)",
            "version": "Skills measured as of August 14, 2026",
            "evidence_spans": [
              {
                "heading": "Control procure-to-pay",
                "start_line": 186,
                "end_line": 194,
                "span_lf_sha256": "16cbbd6fb8d6aa09946156bb877d3ad686851a1a4b1af3b6fcb0d12c17b1fb77"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Vendor/group/shared-vendor defaults, posting profiles, PO/non-PO liability, matching, payment proposals and settlement explain the procure-to-pay control chain.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "PO/non-PO liability/payment control chain and exact matching distinctions are explained; recurring vendor and shared/centralized setup are thin.",
            "independent_repair_ids": []
          },
          {
            "wording": "Process the vendor invoice journal",
            "objective_wording_sha256": "52cb9f0fb9559eb1b2640caa30085acbe3e84d6cc0d819f76a65c7ec18897d0a",
            "group": "Implement and manage accounts payable",
            "group_number": 10,
            "objective_number": 8,
            "objective_id": "3.1.8",
            "domain": "Implement and manage accounts payable and expenses (10–15%)",
            "version": "Skills measured as of August 14, 2026",
            "evidence_spans": [
              {
                "heading": "Control procure-to-pay",
                "start_line": 186,
                "end_line": 194,
                "span_lf_sha256": "16cbbd6fb8d6aa09946156bb877d3ad686851a1a4b1af3b6fcb0d12c17b1fb77"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Vendor/group/shared-vendor defaults, posting profiles, PO/non-PO liability, matching, payment proposals and settlement explain the procure-to-pay control chain.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "PO/non-PO liability/payment control chain and exact matching distinctions are explained; recurring vendor and shared/centralized setup are thin.",
            "independent_repair_ids": []
          },
          {
            "wording": "Configure and process recurring vendor invoices",
            "objective_wording_sha256": "5639fdb9c148df9ae4ec2ccf1ba271a152d8f85045efd3a5d998fa101d3608fe",
            "group": "Implement and manage accounts payable",
            "group_number": 10,
            "objective_number": 9,
            "objective_id": "3.1.9",
            "domain": "Implement and manage accounts payable and expenses (10–15%)",
            "version": "Skills measured as of August 14, 2026",
            "evidence_spans": [
              {
                "heading": "Control procure-to-pay",
                "start_line": 186,
                "end_line": 194,
                "span_lf_sha256": "16cbbd6fb8d6aa09946156bb877d3ad686851a1a4b1af3b6fcb0d12c17b1fb77"
              },
              {
                "heading": "Build recurring payables and an expense-control worksheet",
                "start_line": 206,
                "end_line": 214,
                "span_lf_sha256": "ad5fa75a1ff519efe88c796eb5e53040d50b6b1b3d804c589177164d1bd799a6"
              }
            ],
            "initial_flag_disposition": "resolved",
            "reason": "Pending invoice template, vendor recurrence dates/frequency/limit, generation/recurrence ID, workflow and posting are taught; a changed default and failed member require inspection.",
            "initial_flag_reason": "Recurring vendor invoice is listed without template assignment/generation/duplicate-control workflow.",
            "repair_id": [
              "exam-a-payables-expenses"
            ],
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Recurring vendor invoice is listed without template assignment/generation/duplicate-control workflow.",
            "independent_repair_ids": []
          },
          {
            "wording": "Process and generate vendor payments, centralized payments, and prepayments",
            "objective_wording_sha256": "25a9924f137e51b300ae64e4dde2a079393182c8f47d81d1d861ce091c48486e",
            "group": "Implement and manage accounts payable",
            "group_number": 10,
            "objective_number": 10,
            "objective_id": "3.1.10",
            "domain": "Implement and manage accounts payable and expenses (10–15%)",
            "version": "Skills measured as of August 14, 2026",
            "evidence_spans": [
              {
                "heading": "Control procure-to-pay",
                "start_line": 186,
                "end_line": 194,
                "span_lf_sha256": "16cbbd6fb8d6aa09946156bb877d3ad686851a1a4b1af3b6fcb0d12c17b1fb77"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Vendor/group/shared-vendor defaults, posting profiles, PO/non-PO liability, matching, payment proposals and settlement explain the procure-to-pay control chain.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "PO/non-PO liability/payment control chain and exact matching distinctions are explained; recurring vendor and shared/centralized setup are thin.",
            "independent_repair_ids": []
          },
          {
            "wording": "Process intercompany vendor invoices",
            "objective_wording_sha256": "dd9b12954bba7e3d944a13ff34f098d502386ada38e94eb212c9afb063457610",
            "group": "Implement and manage accounts payable",
            "group_number": 10,
            "objective_number": 11,
            "objective_id": "3.1.11",
            "domain": "Implement and manage accounts payable and expenses (10–15%)",
            "version": "Skills measured as of August 14, 2026",
            "evidence_spans": [
              {
                "heading": "Control procure-to-pay",
                "start_line": 186,
                "end_line": 194,
                "span_lf_sha256": "16cbbd6fb8d6aa09946156bb877d3ad686851a1a4b1af3b6fcb0d12c17b1fb77"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Vendor/group/shared-vendor defaults, posting profiles, PO/non-PO liability, matching, payment proposals and settlement explain the procure-to-pay control chain.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "PO/non-PO liability/payment control chain and exact matching distinctions are explained; recurring vendor and shared/centralized setup are thin.",
            "independent_repair_ids": []
          },
          {
            "wording": "Configure expense management including categories, per diem options, mileage expenses, intercompany expenses, and personal expenses",
            "objective_wording_sha256": "38d59eacaa8e42ae418a1e83983f09ea1e8e826dad3c00cf308b29ca39f1deb1",
            "group": "Configure expense management",
            "group_number": 11,
            "objective_number": 1,
            "objective_id": "3.2.1",
            "domain": "Implement and manage accounts payable and expenses (10–15%)",
            "version": "Skills measured as of August 14, 2026",
            "evidence_spans": [
              {
                "heading": "Govern employee expenses",
                "start_line": 196,
                "end_line": 202,
                "span_lf_sha256": "1f630d15f97dc11d13a7f4a1998d479e3361d7f287167868de3e4db153a66601"
              },
              {
                "heading": "Build recurring payables and an expense-control worksheet",
                "start_line": 206,
                "end_line": 214,
                "span_lf_sha256": "ad5fa75a1ff519efe88c796eb5e53040d50b6b1b3d804c589177164d1bd799a6"
              }
            ],
            "initial_flag_disposition": "resolved",
            "reason": "Shared category/type/accounts/payment/tax setup, mileage tiers, per-diem interface/location/meals, enabled intercompany lines and Paid by employee/company treatment are concrete.",
            "initial_flag_reason": "Per diem/mileage/intercompany/personal expenses are listed without original configuration and posting example.",
            "repair_id": [
              "exam-a-payables-expenses"
            ],
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Per diem/mileage/intercompany/personal expenses are listed without original configuration and posting example.",
            "independent_repair_ids": []
          },
          {
            "wording": "Create and manage expense reports, including expense report policies",
            "objective_wording_sha256": "3a61efc68ef97b49f8801616c9e092c8f0eb14bd4bfb5aea0558be79faf364c5",
            "group": "Configure expense management",
            "group_number": 11,
            "objective_number": 2,
            "objective_id": "3.2.2",
            "domain": "Implement and manage accounts payable and expenses (10–15%)",
            "version": "Skills measured as of August 14, 2026",
            "evidence_spans": [
              {
                "heading": "Govern employee expenses",
                "start_line": 196,
                "end_line": 202,
                "span_lf_sha256": "1f630d15f97dc11d13a7f4a1998d479e3361d7f287167868de3e4db153a66601"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Expense reports collect categorized lines, receipts, currencies, dimensions and attestation; warning/blocking policy and missing-receipt, delegate, rejection and cross-company tests define the report controls.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Expense category, receipt, currency, personal-spend and policy/failure concepts are substantive; per-diem/mileage/intercompany setup needs a worked flow.",
            "independent_repair_ids": []
          },
          {
            "wording": "Configure budgeting components, including budget models, codes, allocation terms, and transfer rules",
            "objective_wording_sha256": "2036edbf0a327fd6f89109f58153a4bd8f376ba1b67a3cebe006753d42e913a4",
            "group": "Implement basic budgeting",
            "group_number": 12,
            "objective_number": 1,
            "objective_id": "4.1.1",
            "domain": "Manage budgeting (10–15%)",
            "version": "Skills measured as of August 14, 2026",
            "evidence_spans": [
              {
                "heading": "Separate three budgeting capabilities",
                "start_line": 218,
                "end_line": 226,
                "span_lf_sha256": "50bac927da6142288a3a59c7a65e97f480e55400e86bd0dd45ef2abc266a204d"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Budget models, codes, register entries, allocation/transfer rules and budget-versus-actual reporting are distinguished as separate setup and control responsibilities.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Model/code/register/allocation/transfer/budget-versus-actual roles are distinguished, but register-entry lifecycle is not worked.",
            "independent_repair_ids": []
          },
          {
            "wording": "Create and manage budget register entries",
            "objective_wording_sha256": "dcc586978abb54e2a686bf5a3960f897a4b61978d21fd7bcd6b19de862339919",
            "group": "Implement basic budgeting",
            "group_number": 12,
            "objective_number": 2,
            "objective_id": "4.1.2",
            "domain": "Manage budgeting (10–15%)",
            "version": "Skills measured as of August 14, 2026",
            "evidence_spans": [
              {
                "heading": "Separate three budgeting capabilities",
                "start_line": 218,
                "end_line": 226,
                "span_lf_sha256": "50bac927da6142288a3a59c7a65e97f480e55400e86bd0dd45ef2abc266a204d"
              },
              {
                "heading": "A budget entry becomes usable through its lifecycle",
                "start_line": 236,
                "end_line": 240,
                "span_lf_sha256": "fdbeba5e251f1cf0545c593ea09b11053a63af186f9016cafeb1d522208602d7"
              }
            ],
            "initial_flag_disposition": "resolved",
            "reason": "Budgeting prerequisites and header/lines precede required workflow and Update budget balances; the balanced1200 transfer and allocation reversal/destination entries expose invalid draft/unauthorized-source cases.",
            "initial_flag_reason": "Register-entry role is defined but model/code/line→workflow→update balances lifecycle missing.",
            "repair_id": [
              "exam-a-budget-register"
            ],
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Register-entry role is defined but model/code/line→workflow→update balances lifecycle missing.",
            "independent_repair_ids": []
          },
          {
            "wording": "Compare budgeted values with actual values",
            "objective_wording_sha256": "6d49b8c07a35a7128355777f05978bac47543d6fd076ecc40e68e7ea1d73a77a",
            "group": "Implement basic budgeting",
            "group_number": 12,
            "objective_number": 3,
            "objective_id": "4.1.3",
            "domain": "Manage budgeting (10–15%)",
            "version": "Skills measured as of August 14, 2026",
            "evidence_spans": [
              {
                "heading": "Separate three budgeting capabilities",
                "start_line": 218,
                "end_line": 226,
                "span_lf_sha256": "50bac927da6142288a3a59c7a65e97f480e55400e86bd0dd45ef2abc266a204d"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Budget models, codes, register entries, allocation/transfer rules and budget-versus-actual reporting are distinguished as separate setup and control responsibilities.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Model/code/register/allocation/transfer/budget-versus-actual roles are distinguished, but register-entry lifecycle is not worked.",
            "independent_repair_ids": []
          },
          {
            "wording": "Configure budget controls including budget parameters, budget fund availability options, budget control rules and groups, and over-budget permissions",
            "objective_wording_sha256": "8fc3fe4ade58b39cd2234dbc3e2405665562547d2ed23ba7cc993b9a197148cc",
            "group": "Configure and manage budget controls",
            "group_number": 13,
            "objective_number": 1,
            "objective_id": "4.2.1",
            "domain": "Manage budgeting (10–15%)",
            "version": "Skills measured as of August 14, 2026",
            "evidence_spans": [
              {
                "heading": "Separate three budgeting capabilities",
                "start_line": 218,
                "end_line": 232,
                "span_lf_sha256": "ea24587fda2fa85ec724bdf0d38fb79a95de35476d4ba283c4e0888feccc8442"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Scope, available-funds formula, permissions, activation and on/off boundary plus reservation relief explain control behavior.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Scope, available-funds formula, permissions, activation and on/off boundary plus reservation relief explain control behavior.",
            "independent_repair_ids": []
          },
          {
            "wording": "Validate budget control on transactions",
            "objective_wording_sha256": "5c40f6f6b75186ab6200fb2bd41c8dd4b2efb35947dffca3bf47541e42ad9905",
            "group": "Configure and manage budget controls",
            "group_number": 13,
            "objective_number": 2,
            "objective_id": "4.2.2",
            "domain": "Manage budgeting (10–15%)",
            "version": "Skills measured as of August 14, 2026",
            "evidence_spans": [
              {
                "heading": "Separate three budgeting capabilities",
                "start_line": 218,
                "end_line": 232,
                "span_lf_sha256": "ea24587fda2fa85ec724bdf0d38fb79a95de35476d4ba283c4e0888feccc8442"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Scope, available-funds formula, permissions, activation and on/off boundary plus reservation relief explain control behavior.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Scope, available-funds formula, permissions, activation and on/off boundary plus reservation relief explain control behavior.",
            "independent_repair_ids": []
          },
          {
            "wording": "Create and manage budget plans, including scenarios and allocations",
            "objective_wording_sha256": "edbf84e575be6f6323bd6e2e7f0e36e2f92cba2debd42f8767949f8c72f228d2",
            "group": "Configure and manage budget planning",
            "group_number": 14,
            "objective_number": 1,
            "objective_id": "4.3.1",
            "domain": "Manage budgeting (10–15%)",
            "version": "Skills measured as of August 14, 2026",
            "evidence_spans": [
              {
                "heading": "Separate three budgeting capabilities",
                "start_line": 218,
                "end_line": 232,
                "span_lf_sha256": "ea24587fda2fa85ec724bdf0d38fb79a95de35476d4ba283c4e0888feccc8442"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Hierarchy/process/stage/scenario/layout/allocation distinctions and return/transfer tests explain planning design.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Hierarchy/process/stage/scenario/layout/allocation distinctions and return/transfer tests explain planning design.",
            "independent_repair_ids": []
          },
          {
            "wording": "Configure budget planning process, including organization hierarchy",
            "objective_wording_sha256": "8bbfd46dc452e5e2f2db3894363cd519f91565dbae9b88151137fd7dfe31ed2b",
            "group": "Configure and manage budget planning",
            "group_number": 14,
            "objective_number": 2,
            "objective_id": "4.3.2",
            "domain": "Manage budgeting (10–15%)",
            "version": "Skills measured as of August 14, 2026",
            "evidence_spans": [
              {
                "heading": "Separate three budgeting capabilities",
                "start_line": 218,
                "end_line": 232,
                "span_lf_sha256": "ea24587fda2fa85ec724bdf0d38fb79a95de35476d4ba283c4e0888feccc8442"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Hierarchy/process/stage/scenario/layout/allocation distinctions and return/transfer tests explain planning design.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Hierarchy/process/stage/scenario/layout/allocation distinctions and return/transfer tests explain planning design.",
            "independent_repair_ids": []
          },
          {
            "wording": "Create and manage fixed asset groups and other fixed asset attributes",
            "objective_wording_sha256": "e67727a7a03066057b2028cd974e05dff7d1476cbda597748dc90553d947de70",
            "group": "Implement and manage fixed assets",
            "group_number": 15,
            "objective_number": 1,
            "objective_id": "5.1.1",
            "domain": "Manage fixed assets (10–15%)",
            "version": "Skills measured as of August 14, 2026",
            "evidence_spans": [
              {
                "heading": "Configure books and depreciation",
                "start_line": 244,
                "end_line": 250,
                "span_lf_sha256": "dc77fa96b464dcf98d79f2aea7f62692fa6ddd9bd3a76123f3753491b2c8f088"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Groups, individual assets, books, posting profiles, methods and derived-copy versus independent-depreciation boundaries are explained.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Groups, individual assets, books, posting profiles, methods and derived-copy versus independent-depreciation boundaries are explained.",
            "independent_repair_ids": []
          },
          {
            "wording": "Configure fixed asset posting profiles",
            "objective_wording_sha256": "e49658948c7a107b44f521e278411985089cb39246a27359fea49dac4bf2741e",
            "group": "Implement and manage fixed assets",
            "group_number": 15,
            "objective_number": 2,
            "objective_id": "5.1.2",
            "domain": "Manage fixed assets (10–15%)",
            "version": "Skills measured as of August 14, 2026",
            "evidence_spans": [
              {
                "heading": "Configure books and depreciation",
                "start_line": 244,
                "end_line": 250,
                "span_lf_sha256": "dc77fa96b464dcf98d79f2aea7f62692fa6ddd9bd3a76123f3753491b2c8f088"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Groups, individual assets, books, posting profiles, methods and derived-copy versus independent-depreciation boundaries are explained.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Groups, individual assets, books, posting profiles, methods and derived-copy versus independent-depreciation boundaries are explained.",
            "independent_repair_ids": []
          },
          {
            "wording": "Configure fixed asset books, including derived books",
            "objective_wording_sha256": "c61de1a321969192291b03fecd5bd91ba4b57223baefd29ec97fc28257ed2eec",
            "group": "Implement and manage fixed assets",
            "group_number": 15,
            "objective_number": 3,
            "objective_id": "5.1.3",
            "domain": "Manage fixed assets (10–15%)",
            "version": "Skills measured as of August 14, 2026",
            "evidence_spans": [
              {
                "heading": "Configure books and depreciation",
                "start_line": 244,
                "end_line": 250,
                "span_lf_sha256": "dc77fa96b464dcf98d79f2aea7f62692fa6ddd9bd3a76123f3753491b2c8f088"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Groups, individual assets, books, posting profiles, methods and derived-copy versus independent-depreciation boundaries are explained.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Groups, individual assets, books, posting profiles, methods and derived-copy versus independent-depreciation boundaries are explained.",
            "independent_repair_ids": []
          },
          {
            "wording": "Configure depreciation profiles",
            "objective_wording_sha256": "481afc423db22b1da775cb222490702c2cd9c0d08e8eba1496d51fc3c43a4f1c",
            "group": "Implement and manage fixed assets",
            "group_number": 15,
            "objective_number": 4,
            "objective_id": "5.1.4",
            "domain": "Manage fixed assets (10–15%)",
            "version": "Skills measured as of August 14, 2026",
            "evidence_spans": [
              {
                "heading": "Configure books and depreciation",
                "start_line": 244,
                "end_line": 250,
                "span_lf_sha256": "dc77fa96b464dcf98d79f2aea7f62692fa6ddd9bd3a76123f3753491b2c8f088"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Groups, individual assets, books, posting profiles, methods and derived-copy versus independent-depreciation boundaries are explained.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Groups, individual assets, books, posting profiles, methods and derived-copy versus independent-depreciation boundaries are explained.",
            "independent_repair_ids": []
          },
          {
            "wording": "Create and manage fixed assets",
            "objective_wording_sha256": "bc1d4718fa9d9e3e95fb7e7ec5ace5b72044d1e949c8f5ec0e79888d546881b3",
            "group": "Implement and manage fixed assets",
            "group_number": 15,
            "objective_number": 5,
            "objective_id": "5.1.5",
            "domain": "Manage fixed assets (10–15%)",
            "version": "Skills measured as of August 14, 2026",
            "evidence_spans": [
              {
                "heading": "Configure books and depreciation",
                "start_line": 244,
                "end_line": 250,
                "span_lf_sha256": "dc77fa96b464dcf98d79f2aea7f62692fa6ddd9bd3a76123f3753491b2c8f088"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Groups, individual assets, books, posting profiles, methods and derived-copy versus independent-depreciation boundaries are explained.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Groups, individual assets, books, posting profiles, methods and derived-copy versus independent-depreciation boundaries are explained.",
            "independent_repair_ids": []
          },
          {
            "wording": "Configure mapping for fixed asset groups and books",
            "objective_wording_sha256": "c16cb7b852178d2132eed3cc44bdab049016bd71d0e4206b7049afcfabae54e4",
            "group": "Implement and manage fixed assets",
            "group_number": 15,
            "objective_number": 6,
            "objective_id": "5.1.6",
            "domain": "Manage fixed assets (10–15%)",
            "version": "Skills measured as of August 14, 2026",
            "evidence_spans": [
              {
                "heading": "Configure books and depreciation",
                "start_line": 244,
                "end_line": 250,
                "span_lf_sha256": "dc77fa96b464dcf98d79f2aea7f62692fa6ddd9bd3a76123f3753491b2c8f088"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Groups, individual assets, books, posting profiles, methods and derived-copy versus independent-depreciation boundaries are explained.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Groups, individual assets, books, posting profiles, methods and derived-copy versus independent-depreciation boundaries are explained.",
            "independent_repair_ids": []
          },
          {
            "wording": "Process fixed asset disposal (sales) by using free text invoices",
            "objective_wording_sha256": "91088acbb6590bb2aa7eb90670e1c8b27539f9ede4a1227a08c0fd2172b89ea2",
            "group": "Process fixed asset transactions",
            "group_number": 16,
            "objective_number": 1,
            "objective_id": "5.2.1",
            "domain": "Manage fixed assets (10–15%)",
            "version": "Skills measured as of August 14, 2026",
            "evidence_spans": [
              {
                "heading": "Process the asset lifecycle",
                "start_line": 252,
                "end_line": 258,
                "span_lf_sha256": "1368729509f6bcf14d4d77618fff4dfe90bfec3fb3fbb8078f4ba71c4028ea3f"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Fixed-asset transaction source routes, acquisition/depreciation/disposal accounting and asset/book reconciliation distinguish journal and invoice processing responsibilities.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Source routes and disposal accounting are explained; budget transfer, reclassification/split mechanics and multi-company proposal setup are only named.",
            "independent_repair_ids": []
          },
          {
            "wording": "Process fixed asset acquisitions by using purchase orders, journals, inventory journals, and projects",
            "objective_wording_sha256": "6e09a392b47b9a5bc3292d4293cb2976862c0716f3a2ee1168524500f361d960",
            "group": "Process fixed asset transactions",
            "group_number": 16,
            "objective_number": 2,
            "objective_id": "5.2.2",
            "domain": "Manage fixed assets (10–15%)",
            "version": "Skills measured as of August 14, 2026",
            "evidence_spans": [
              {
                "heading": "Process the asset lifecycle",
                "start_line": 252,
                "end_line": 258,
                "span_lf_sha256": "1368729509f6bcf14d4d77618fff4dfe90bfec3fb3fbb8078f4ba71c4028ea3f"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Fixed-asset transaction source routes, acquisition/depreciation/disposal accounting and asset/book reconciliation distinguish journal and invoice processing responsibilities.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Source routes and disposal accounting are explained; budget transfer, reclassification/split mechanics and multi-company proposal setup are only named.",
            "independent_repair_ids": []
          },
          {
            "wording": "Create fixed asset budgets and transfer the budgets to the budgeting module",
            "objective_wording_sha256": "c3cac9ef938d9b7f99b19e1fff880dd022cef228c2f28dc63a075d1cf4a35754",
            "group": "Process fixed asset transactions",
            "group_number": 16,
            "objective_number": 3,
            "objective_id": "5.2.3",
            "domain": "Manage fixed assets (10–15%)",
            "version": "Skills measured as of August 14, 2026",
            "evidence_spans": [
              {
                "heading": "Process the asset lifecycle",
                "start_line": 252,
                "end_line": 258,
                "span_lf_sha256": "1368729509f6bcf14d4d77618fff4dfe90bfec3fb3fbb8078f4ba71c4028ea3f"
              },
              {
                "heading": "Keep asset budgets and actual asset value separate",
                "start_line": 262,
                "end_line": 266,
                "span_lf_sha256": "fa8f7ff4b6aa035a01a3d0ff018037ab55506d0490dedca9db72f832b53ce8d2"
              }
            ],
            "initial_flag_disposition": "resolved",
            "reason": "Fixed asset budget journal/model/type/date/asset/book/amount transfers to asset-only or asset+ledger budget; replacement scope is checked and planned cost is not an actual liability.",
            "initial_flag_reason": "Fixed-asset budgets only said to feed budgeting; no budget model/journal→transfer workflow.",
            "repair_id": [
              "exam-a-asset-budget-split"
            ],
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Fixed-asset budgets only said to feed budgeting; no budget model/journal→transfer workflow.",
            "independent_repair_ids": []
          },
          {
            "wording": "Process fixed asset depreciation, including multi-company",
            "objective_wording_sha256": "722d3c00d5970e53238bf17cbb7e253cfbb38f2451d28cdc074b67e54b2f8cef",
            "group": "Process fixed asset transactions",
            "group_number": 16,
            "objective_number": 4,
            "objective_id": "5.2.4",
            "domain": "Manage fixed assets (10–15%)",
            "version": "Skills measured as of August 14, 2026",
            "evidence_spans": [
              {
                "heading": "Process the asset lifecycle",
                "start_line": 252,
                "end_line": 258,
                "span_lf_sha256": "1368729509f6bcf14d4d77618fff4dfe90bfec3fb3fbb8078f4ba71c4028ea3f"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Fixed-asset transaction source routes, acquisition/depreciation/disposal accounting and asset/book reconciliation distinguish journal and invoice processing responsibilities.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Source routes and disposal accounting are explained; budget transfer, reclassification/split mechanics and multi-company proposal setup are only named.",
            "independent_repair_ids": []
          },
          {
            "wording": "Process fixed asset split, reclassification, transfer, disposals and other transactions by using the fixed asset journal",
            "objective_wording_sha256": "2a55278b7c3759abd252d651f63197e4603a46bc76721191c1abe8e8008e9893",
            "group": "Process fixed asset transactions",
            "group_number": 16,
            "objective_number": 5,
            "objective_id": "5.2.5",
            "domain": "Manage fixed assets (10–15%)",
            "version": "Skills measured as of August 14, 2026",
            "evidence_spans": [
              {
                "heading": "Process the asset lifecycle",
                "start_line": 252,
                "end_line": 258,
                "span_lf_sha256": "1368729509f6bcf14d4d77618fff4dfe90bfec3fb3fbb8078f4ba71c4028ea3f"
              },
              {
                "heading": "Keep asset budgets and actual asset value separate",
                "start_line": 262,
                "end_line": 266,
                "span_lf_sha256": "fa8f7ff4b6aa035a01a3d0ff018037ab55506d0490dedca9db72f832b53ce8d2"
              }
            ],
            "initial_flag_disposition": "resolved",
            "reason": "Destination asset/book, source split function, percentage/date/journal and reviewed generated adjustment teach a25% value split; transfer/reclassification purpose and cross-company preview are separated.",
            "initial_flag_reason": "Split/reclassify/transfer purposes not distinguished by fields/history/value flow.",
            "repair_id": [
              "exam-a-asset-budget-split"
            ],
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Split/reclassify/transfer purposes not distinguished by fields/history/value flow.",
            "independent_repair_ids": []
          }
        ],
        "independent_repairs": 0
      },
      {
        "exam_code": "MB-500",
        "guide_path": "guides/MB-500-microsoft-dynamics-365-finance-operations-apps-developer.md",
        "captured_final_guide_path": "C:\\src\\certification-study-library\\.maintenance\\2026-10-28-remaining-refresh\\group-04\\review-inputs\\MB-500-microsoft-dynamics-365-finance-operations-apps-developer.md",
        "guide_lf_sha256": "e894c995a3376609e18a35286d6f962371f7eff79ff55e6f2c6f74ca72f1132f",
        "objective_raw_sha256": "30b2b8913d63724b60099adcd9090a67bf818e3b0b42e7e57382a5ab240134cd",
        "objective_count": 89,
        "group_count": 21,
        "line_count": 514,
        "diff_path": "C:\\src\\certification-study-library\\.maintenance\\2026-10-28-remaining-refresh\\group-04\\review-inputs\\MB-500.diff",
        "diff_raw_sha256": "42fbf36f5a89cc47bf8d9618ad10abf7b49804123ddef17c093580a1119002e2",
        "initial_flags": 17,
        "remaining_material_named_workflow_gaps": [],
        "source_gate_state": "passed per coordinator; separate from this semantic review",
        "current_mapping": [
          {
            "wording": "Differentiate between the cloud and on-premises versions of finance and operations apps",
            "objective_wording_sha256": "27126278c9144a589b7919c17b9129ca155b3aa346c7931108733c2b19627a6c",
            "group": "Plan for the major components of finance and operations apps",
            "group_number": 1,
            "objective_number": 1,
            "objective_id": "1.1.1",
            "domain": "Plan the architecture and solution design (5–10%)",
            "version": "Skills measured as of January 30, 2026",
            "evidence_spans": [
              {
                "heading": "1. Plan architecture and solution design",
                "start_line": 56,
                "end_line": 66,
                "span_lf_sha256": "37446d14a2b34a88b7da0d2225b5b2981fcce91114072bc51a7100a1eeaf4a57"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Cloud/on-premises responsibilities and ecosystem ownership choices are explained with identity/data/runtime boundaries.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Cloud/on-premises responsibilities and ecosystem ownership choices are explained with identity/data/runtime boundaries.",
            "independent_repair_ids": []
          },
          {
            "wording": "Extend the functionality of finance and operations apps into the Microsoft ecosystem",
            "objective_wording_sha256": "68f565dbbde27722db264d05dee45a98077bd1bcc3e3004c120978265039ad53",
            "group": "Plan for the major components of finance and operations apps",
            "group_number": 1,
            "objective_number": 2,
            "objective_id": "1.1.2",
            "domain": "Plan the architecture and solution design (5–10%)",
            "version": "Skills measured as of January 30, 2026",
            "evidence_spans": [
              {
                "heading": "1. Plan architecture and solution design",
                "start_line": 56,
                "end_line": 66,
                "span_lf_sha256": "37446d14a2b34a88b7da0d2225b5b2981fcce91114072bc51a7100a1eeaf4a57"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Cloud/on-premises responsibilities and ecosystem ownership choices are explained with identity/data/runtime boundaries.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Cloud/on-premises responsibilities and ecosystem ownership choices are explained with identity/data/runtime boundaries.",
            "independent_repair_ids": []
          },
          {
            "wording": "Manage environments by using Lifecycle Services tools and components",
            "objective_wording_sha256": "14a9a752f8895362a234d125192d7b4e4f6e2a20c27f3faec2a6843875195501",
            "group": "Implement application lifecycle management (ALM)",
            "group_number": 2,
            "objective_number": 1,
            "objective_id": "1.2.1",
            "domain": "Plan the architecture and solution design (5–10%)",
            "version": "Skills measured as of January 30, 2026",
            "evidence_spans": [
              {
                "heading": "1. Plan architecture and solution design",
                "start_line": 56,
                "end_line": 78,
                "span_lf_sha256": "95e691f741c669debaa49801281f06f7513ed0a9a073282e346a42c48778a320"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "ALM artifact flow and current portal/migration boundaries are explained; Issue Search is named but not used in a worked diagnostic.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "ALM artifact flow and current portal/migration boundaries are explained; Issue Search is named but not used in a worked diagnostic.",
            "independent_repair_ids": []
          },
          {
            "wording": "Research and resolve issues by using Issue Search",
            "objective_wording_sha256": "a11a2a686888de8ca57d190f780db0d6ceb0489acefe91587d64f969e0c014db",
            "group": "Implement application lifecycle management (ALM)",
            "group_number": 2,
            "objective_number": 2,
            "objective_id": "1.2.2",
            "domain": "Plan the architecture and solution design (5–10%)",
            "version": "Skills measured as of January 30, 2026",
            "evidence_spans": [
              {
                "heading": "1. Plan architecture and solution design",
                "start_line": 56,
                "end_line": 78,
                "span_lf_sha256": "95e691f741c669debaa49801281f06f7513ed0a9a073282e346a42c48778a320"
              },
              {
                "heading": "Search an issue with a reproducible context",
                "start_line": 82,
                "end_line": 84,
                "span_lf_sha256": "65c7c7b60740042b4078f646b7c75afacf1804e97eef6edc8874008e4d795197"
              }
            ],
            "initial_flag_disposition": "resolved",
            "reason": "Version/symptom/reproduction→Issue Search affected version/status/KB→failed-step logs→sandbox validation/package rebuild is an actionable diagnostic path, not keyword matching.",
            "initial_flag_reason": "Issue Search is merely named; no symptom/version/fix/reproduction→sandbox validation workflow.",
            "repair_id": [
              "exam-a-issue-search"
            ],
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Issue Search is merely named; no symptom/version/fix/reproduction→sandbox validation workflow.",
            "independent_repair_ids": []
          },
          {
            "wording": "Perform activities that require asset libraries",
            "objective_wording_sha256": "f80828862f01d7eddc7da8e25770d317bdc1eb84448c456890ca2bf368fc862d",
            "group": "Implement application lifecycle management (ALM)",
            "group_number": 2,
            "objective_number": 3,
            "objective_id": "1.2.3",
            "domain": "Plan the architecture and solution design (5–10%)",
            "version": "Skills measured as of January 30, 2026",
            "evidence_spans": [
              {
                "heading": "1. Plan architecture and solution design",
                "start_line": 56,
                "end_line": 78,
                "span_lf_sha256": "95e691f741c669debaa49801281f06f7513ed0a9a073282e346a42c48778a320"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "ALM artifact flow and current portal/migration boundaries are explained; Issue Search is named but not used in a worked diagnostic.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "ALM artifact flow and current portal/migration boundaries are explained; Issue Search is named but not used in a worked diagnostic.",
            "independent_repair_ids": []
          },
          {
            "wording": "Manage package deployments between environments",
            "objective_wording_sha256": "74cbc4133fb594d776f6150393af339a0fec16cb382e5843fe65edabe2b6bd1d",
            "group": "Implement application lifecycle management (ALM)",
            "group_number": 2,
            "objective_number": 4,
            "objective_id": "1.2.4",
            "domain": "Plan the architecture and solution design (5–10%)",
            "version": "Skills measured as of January 30, 2026",
            "evidence_spans": [
              {
                "heading": "1. Plan architecture and solution design",
                "start_line": 56,
                "end_line": 78,
                "span_lf_sha256": "95e691f741c669debaa49801281f06f7513ed0a9a073282e346a42c48778a320"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "ALM artifact flow and current portal/migration boundaries are explained; Issue Search is named but not used in a worked diagnostic.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "ALM artifact flow and current portal/migration boundaries are explained; Issue Search is named but not used in a worked diagnostic.",
            "independent_repair_ids": []
          },
          {
            "wording": "Manage Unified Developer Experience (UDE) developer environments in Power Platform admin center",
            "objective_wording_sha256": "09b8749ef0febe90050d97a139dd5dc072f6b8e6c53d4ae7557556e21db0f7d2",
            "group": "Implement application lifecycle management (ALM)",
            "group_number": 2,
            "objective_number": 5,
            "objective_id": "1.2.5",
            "domain": "Plan the architecture and solution design (5–10%)",
            "version": "Skills measured as of January 30, 2026",
            "evidence_spans": [
              {
                "heading": "1. Plan architecture and solution design",
                "start_line": 56,
                "end_line": 78,
                "span_lf_sha256": "95e691f741c669debaa49801281f06f7513ed0a9a073282e346a42c48778a320"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "ALM artifact flow and current portal/migration boundaries are explained; Issue Search is named but not used in a worked diagnostic.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "ALM artifact flow and current portal/migration boundaries are explained; Issue Search is named but not used in a worked diagnostic.",
            "independent_repair_ids": []
          },
          {
            "wording": "Manage environments by using the Implementation portal",
            "objective_wording_sha256": "0e2a9a968b669e791182874af11ee782dace3a135c044cc2e159a5d66be19e02",
            "group": "Implement application lifecycle management (ALM)",
            "group_number": 2,
            "objective_number": 6,
            "objective_id": "1.2.6",
            "domain": "Plan the architecture and solution design (5–10%)",
            "version": "Skills measured as of January 30, 2026",
            "evidence_spans": [
              {
                "heading": "1. Plan architecture and solution design",
                "start_line": 56,
                "end_line": 78,
                "span_lf_sha256": "95e691f741c669debaa49801281f06f7513ed0a9a073282e346a42c48778a320"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "ALM artifact flow and current portal/migration boundaries are explained; Issue Search is named but not used in a worked diagnostic.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "ALM artifact flow and current portal/migration boundaries are explained; Issue Search is named but not used in a worked diagnostic.",
            "independent_repair_ids": []
          },
          {
            "wording": "Create and manage extension models",
            "objective_wording_sha256": "7b6679a325a84f0990adcad1d54e488a4a56d5895e1953e2d2975bcf7af01ad1",
            "group": "Customize finance and operations apps by using Visual Studio",
            "group_number": 3,
            "objective_number": 1,
            "objective_id": "2.1.1",
            "domain": "Apply developer tools (5–10%)",
            "version": "Skills measured as of January 30, 2026",
            "evidence_spans": [
              {
                "heading": "2. Apply developer tools",
                "start_line": 86,
                "end_line": 98,
                "span_lf_sha256": "670dce11f2aa1b91478fc80e1d006f99500271d3e5444de5ee3b10309a08ef4c"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Model/package dependencies, metadata designers, build-versus-sync and debug evidence are taught with current UDE tooling constraints.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Model/package dependencies, metadata designers, build-versus-sync and debug evidence are taught with current UDE tooling constraints.",
            "independent_repair_ids": []
          },
          {
            "wording": "Manage metadata by using Application Explorer",
            "objective_wording_sha256": "659d48b260d74a5ab7dbe2fca49800e579646485d02f68b5751912ec0bf0555e",
            "group": "Customize finance and operations apps by using Visual Studio",
            "group_number": 3,
            "objective_number": 2,
            "objective_id": "2.1.2",
            "domain": "Apply developer tools (5–10%)",
            "version": "Skills measured as of January 30, 2026",
            "evidence_spans": [
              {
                "heading": "2. Apply developer tools",
                "start_line": 86,
                "end_line": 98,
                "span_lf_sha256": "670dce11f2aa1b91478fc80e1d006f99500271d3e5444de5ee3b10309a08ef4c"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Model/package dependencies, metadata designers, build-versus-sync and debug evidence are taught with current UDE tooling constraints.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Model/package dependencies, metadata designers, build-versus-sync and debug evidence are taught with current UDE tooling constraints.",
            "independent_repair_ids": []
          },
          {
            "wording": "Synchronize data dictionary changes with the application database",
            "objective_wording_sha256": "6116884dfe811e49c4cf60df068bb7fc727f6f542523e7e2f702565d00c4e172",
            "group": "Customize finance and operations apps by using Visual Studio",
            "group_number": 3,
            "objective_number": 3,
            "objective_id": "2.1.3",
            "domain": "Apply developer tools (5–10%)",
            "version": "Skills measured as of January 30, 2026",
            "evidence_spans": [
              {
                "heading": "2. Apply developer tools",
                "start_line": 86,
                "end_line": 98,
                "span_lf_sha256": "670dce11f2aa1b91478fc80e1d006f99500271d3e5444de5ee3b10309a08ef4c"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Model/package dependencies, metadata designers, build-versus-sync and debug evidence are taught with current UDE tooling constraints.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Model/package dependencies, metadata designers, build-versus-sync and debug evidence are taught with current UDE tooling constraints.",
            "independent_repair_ids": []
          },
          {
            "wording": "Create elements by using element designers",
            "objective_wording_sha256": "a8f53e53c89352d90faca52da878f3cdd11f8eb07721dd8b9ca92b36c4917b62",
            "group": "Customize finance and operations apps by using Visual Studio",
            "group_number": 3,
            "objective_number": 4,
            "objective_id": "2.1.4",
            "domain": "Apply developer tools (5–10%)",
            "version": "Skills measured as of January 30, 2026",
            "evidence_spans": [
              {
                "heading": "2. Apply developer tools",
                "start_line": 86,
                "end_line": 98,
                "span_lf_sha256": "670dce11f2aa1b91478fc80e1d006f99500271d3e5444de5ee3b10309a08ef4c"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Model/package dependencies, metadata designers, build-versus-sync and debug evidence are taught with current UDE tooling constraints.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Model/package dependencies, metadata designers, build-versus-sync and debug evidence are taught with current UDE tooling constraints.",
            "independent_repair_ids": []
          },
          {
            "wording": "Perform debugging activities",
            "objective_wording_sha256": "f4f22e3487e9168e28b3cfc112d1f858df620c074924794c1e0153b587aba87b",
            "group": "Customize finance and operations apps by using Visual Studio",
            "group_number": 3,
            "objective_number": 5,
            "objective_id": "2.1.5",
            "domain": "Apply developer tools (5–10%)",
            "version": "Skills measured as of January 30, 2026",
            "evidence_spans": [
              {
                "heading": "2. Apply developer tools",
                "start_line": 86,
                "end_line": 98,
                "span_lf_sha256": "670dce11f2aa1b91478fc80e1d006f99500271d3e5444de5ee3b10309a08ef4c"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Model/package dependencies, metadata designers, build-versus-sync and debug evidence are taught with current UDE tooling constraints.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Model/package dependencies, metadata designers, build-versus-sync and debug evidence are taught with current UDE tooling constraints.",
            "independent_repair_ids": []
          },
          {
            "wording": "Create, check out, review, and check in code",
            "objective_wording_sha256": "40dd55c4433f0c65cbcb6e0ac09ba6e6bf1c90c7b49faea049d1be58bd81bad3",
            "group": "Manage source code and artifacts by using Microsoft Azure DevOps version control",
            "group_number": 4,
            "objective_number": 1,
            "objective_id": "2.2.1",
            "domain": "Apply developer tools (5–10%)",
            "version": "Skills measured as of January 30, 2026",
            "evidence_spans": [
              {
                "heading": "2. Apply developer tools",
                "start_line": 86,
                "end_line": 98,
                "span_lf_sha256": "670dce11f2aa1b91478fc80e1d006f99500271d3e5444de5ee3b10309a08ef4c"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Versioned artifacts, branches, semantic merge review, immutable build/package promotion and Git/TFVC choices explain source-control and ALM responsibilities.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Artifacts, branches, semantic merge conflicts, build/package immutability and promotion evidence are taught; Git/TFVC tradeoff is generic.",
            "independent_repair_ids": []
          },
          {
            "wording": "Maintain project artifacts",
            "objective_wording_sha256": "4dfeb6fd0d4276de429586aa067e6fefccd1c8554d8482aaaf941ed14d093590",
            "group": "Manage source code and artifacts by using Microsoft Azure DevOps version control",
            "group_number": 4,
            "objective_number": 2,
            "objective_id": "2.2.2",
            "domain": "Apply developer tools (5–10%)",
            "version": "Skills measured as of January 30, 2026",
            "evidence_spans": [
              {
                "heading": "2. Apply developer tools",
                "start_line": 86,
                "end_line": 98,
                "span_lf_sha256": "670dce11f2aa1b91478fc80e1d006f99500271d3e5444de5ee3b10309a08ef4c"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Versioned artifacts, branches, semantic merge review, immutable build/package promotion and Git/TFVC choices explain source-control and ALM responsibilities.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Artifacts, branches, semantic merge conflicts, build/package immutability and promotion evidence are taught; Git/TFVC tradeoff is generic.",
            "independent_repair_ids": []
          },
          {
            "wording": "Branch and merge code",
            "objective_wording_sha256": "a832c14155329f5fb8f212470842bda08b185b2c3c8bc12df7db0da97513a5c8",
            "group": "Manage source code and artifacts by using Microsoft Azure DevOps version control",
            "group_number": 4,
            "objective_number": 3,
            "objective_id": "2.2.3",
            "domain": "Apply developer tools (5–10%)",
            "version": "Skills measured as of January 30, 2026",
            "evidence_spans": [
              {
                "heading": "2. Apply developer tools",
                "start_line": 86,
                "end_line": 98,
                "span_lf_sha256": "670dce11f2aa1b91478fc80e1d006f99500271d3e5444de5ee3b10309a08ef4c"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Versioned artifacts, branches, semantic merge review, immutable build/package promotion and Git/TFVC choices explain source-control and ALM responsibilities.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Artifacts, branches, semantic merge conflicts, build/package immutability and promotion evidence are taught; Git/TFVC tradeoff is generic.",
            "independent_repair_ids": []
          },
          {
            "wording": "Compare code and resolve version conflicts",
            "objective_wording_sha256": "4696873a97d3ffb0e287a7e4581cd7fa6d432b3652ddc15223f11163653a4553",
            "group": "Manage source code and artifacts by using Microsoft Azure DevOps version control",
            "group_number": 4,
            "objective_number": 4,
            "objective_id": "2.2.4",
            "domain": "Apply developer tools (5–10%)",
            "version": "Skills measured as of January 30, 2026",
            "evidence_spans": [
              {
                "heading": "2. Apply developer tools",
                "start_line": 86,
                "end_line": 98,
                "span_lf_sha256": "670dce11f2aa1b91478fc80e1d006f99500271d3e5444de5ee3b10309a08ef4c"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Versioned artifacts, branches, semantic merge review, immutable build/package promotion and Git/TFVC choices explain source-control and ALM responsibilities.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Artifacts, branches, semantic merge conflicts, build/package immutability and promotion evidence are taught; Git/TFVC tradeoff is generic.",
            "independent_repair_ids": []
          },
          {
            "wording": "Choose a version control system",
            "objective_wording_sha256": "66f28e3d0c0322218f710157eff2c70a8f573ff7cf742861edec1cc8126df142",
            "group": "Manage source code and artifacts by using Microsoft Azure DevOps version control",
            "group_number": 4,
            "objective_number": 5,
            "objective_id": "2.2.5",
            "domain": "Apply developer tools (5–10%)",
            "version": "Skills measured as of January 30, 2026",
            "evidence_spans": [
              {
                "heading": "2. Apply developer tools",
                "start_line": 86,
                "end_line": 98,
                "span_lf_sha256": "670dce11f2aa1b91478fc80e1d006f99500271d3e5444de5ee3b10309a08ef4c"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Versioned artifacts, branches, semantic merge review, immutable build/package promotion and Git/TFVC choices explain source-control and ALM responsibilities.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Artifacts, branches, semantic merge conflicts, build/package immutability and promotion evidence are taught; Git/TFVC tradeoff is generic.",
            "independent_repair_ids": []
          },
          {
            "wording": "Implement continuous integration and continuous delivery (CI/CD)",
            "objective_wording_sha256": "c029fdb4d8f9fe3cdbad5f78c5511dddf8c44419480620c6c9c2f800637f4502",
            "group": "Manage source code and artifacts by using Microsoft Azure DevOps version control",
            "group_number": 4,
            "objective_number": 6,
            "objective_id": "2.2.6",
            "domain": "Apply developer tools (5–10%)",
            "version": "Skills measured as of January 30, 2026",
            "evidence_spans": [
              {
                "heading": "2. Apply developer tools",
                "start_line": 86,
                "end_line": 98,
                "span_lf_sha256": "670dce11f2aa1b91478fc80e1d006f99500271d3e5444de5ee3b10309a08ef4c"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Versioned artifacts, branches, semantic merge review, immutable build/package promotion and Git/TFVC choices explain source-control and ALM responsibilities.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Artifacts, branches, semantic merge conflicts, build/package immutability and promotion evidence are taught; Git/TFVC tradeoff is generic.",
            "independent_repair_ids": []
          },
          {
            "wording": "Create and extend forms",
            "objective_wording_sha256": "c6244620967a084b4fcdfb34a635dd426a8d1ead3c910cdbb608054eff00c3ba",
            "group": "Create and extend UI elements",
            "group_number": 5,
            "objective_number": 1,
            "objective_id": "3.1.1",
            "domain": "Design and develop AOT elements (15–20%)",
            "version": "Skills measured as of January 30, 2026",
            "evidence_spans": [
              {
                "heading": "UI and navigation",
                "start_line": 104,
                "end_line": 108,
                "span_lf_sha256": "4e0b76f6669f9b83a4e4874e8a4a4d84aff01db2d6347f5119911fcef94f6c50"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Form patterns, supported extensions, menu-item invocation and labels explain UI artifact design; personalization, joins, refresh, concurrency and security are explicit checks.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Form patterns/extensions, menu-item invocation, labels and UI failure/security checks teach design; no concrete creation example.",
            "independent_repair_ids": []
          },
          {
            "wording": "Create and extend menus and menu items",
            "objective_wording_sha256": "6719b132c0e2410b412f6bc250b084f6b0edb4be0bc008b8db098008929f72a6",
            "group": "Create and extend UI elements",
            "group_number": 5,
            "objective_number": 2,
            "objective_id": "3.1.2",
            "domain": "Design and develop AOT elements (15–20%)",
            "version": "Skills measured as of January 30, 2026",
            "evidence_spans": [
              {
                "heading": "UI and navigation",
                "start_line": 104,
                "end_line": 108,
                "span_lf_sha256": "4e0b76f6669f9b83a4e4874e8a4a4d84aff01db2d6347f5119911fcef94f6c50"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Form patterns, supported extensions, menu-item invocation and labels explain UI artifact design; personalization, joins, refresh, concurrency and security are explicit checks.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Form patterns/extensions, menu-item invocation, labels and UI failure/security checks teach design; no concrete creation example.",
            "independent_repair_ids": []
          },
          {
            "wording": "Create and use label files",
            "objective_wording_sha256": "d66462e20cbb44858608deae86dab344f936249412b10e762395394c61115285",
            "group": "Create and extend UI elements",
            "group_number": 5,
            "objective_number": 3,
            "objective_id": "3.1.3",
            "domain": "Design and develop AOT elements (15–20%)",
            "version": "Skills measured as of January 30, 2026",
            "evidence_spans": [
              {
                "heading": "UI and navigation",
                "start_line": 104,
                "end_line": 108,
                "span_lf_sha256": "4e0b76f6669f9b83a4e4874e8a4a4d84aff01db2d6347f5119911fcef94f6c50"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Form patterns, supported extensions, menu-item invocation and labels explain UI artifact design; personalization, joins, refresh, concurrency and security are explicit checks.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Form patterns/extensions, menu-item invocation, labels and UI failure/security checks teach design; no concrete creation example.",
            "independent_repair_ids": []
          },
          {
            "wording": "Create and extend tables",
            "objective_wording_sha256": "64a3f3f5a7d30d25c150e87383d1c06cb40f35493d25ab7c242762e3f22b8721",
            "group": "Create and extend the data model",
            "group_number": 6,
            "objective_number": 1,
            "objective_id": "3.2.1",
            "domain": "Design and develop AOT elements (15–20%)",
            "version": "Skills measured as of January 30, 2026",
            "evidence_spans": [
              {
                "heading": "Data model",
                "start_line": 110,
                "end_line": 114,
                "span_lf_sha256": "bb8c0e17628842e7525159c602326a78baa7d9904a2b83fc390b84a75d17199b"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Tables, views, queries, maps and data entities have distinct persistence/read/integration contracts; keys, indexes, relations, company scope and mandatory-field migration are design checks.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Tables/views/queries/maps/entities, keys/indexes/migration and integration contracts are substantively distinguished; map/entity construction is thin.",
            "independent_repair_ids": []
          },
          {
            "wording": "Create and extend views, queries, and maps",
            "objective_wording_sha256": "126866b20b0b3fa915d96b5a53fdf47c6fc419c68ef20d5c40d04ae7f82ec08f",
            "group": "Create and extend the data model",
            "group_number": 6,
            "objective_number": 2,
            "objective_id": "3.2.2",
            "domain": "Design and develop AOT elements (15–20%)",
            "version": "Skills measured as of January 30, 2026",
            "evidence_spans": [
              {
                "heading": "Data model",
                "start_line": 110,
                "end_line": 114,
                "span_lf_sha256": "bb8c0e17628842e7525159c602326a78baa7d9904a2b83fc390b84a75d17199b"
              },
              {
                "heading": "Model one common field without merging table identities",
                "start_line": 116,
                "end_line": 118,
                "span_lf_sha256": "40127ccb099616820a966cfd9c9ebc272c09f8ca835515df75be21a40efe4b69"
              }
            ],
            "initial_flag_disposition": "resolved",
            "reason": "Map.ExternalReference is explicitly bound to InboundOrder.ExternalOrderRef and InboundReturn.SourceRef; compatible types/semantics and absent-reference tests distinguish maps from queries/views.",
            "initial_flag_reason": "Maps are defined but no mapping of compatible table fields is illustrated.",
            "repair_id": [
              "exam-a-map-model"
            ],
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Maps are defined but no mapping of compatible table fields is illustrated.",
            "independent_repair_ids": []
          },
          {
            "wording": "Create and extend data entities",
            "objective_wording_sha256": "947bd6a6c52295aaebd59bf503af38057f45813ae22b40197c654c1c94e1cb70",
            "group": "Create and extend the data model",
            "group_number": 6,
            "objective_number": 3,
            "objective_id": "3.2.3",
            "domain": "Design and develop AOT elements (15–20%)",
            "version": "Skills measured as of January 30, 2026",
            "evidence_spans": [
              {
                "heading": "Data model",
                "start_line": 110,
                "end_line": 114,
                "span_lf_sha256": "bb8c0e17628842e7525159c602326a78baa7d9904a2b83fc390b84a75d17199b"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Tables, views, queries, maps and data entities have distinct persistence/read/integration contracts; keys, indexes, relations, company scope and mandatory-field migration are design checks.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Tables/views/queries/maps/entities, keys/indexes/migration and integration contracts are substantively distinguished; map/entity construction is thin.",
            "independent_repair_ids": []
          },
          {
            "wording": "Create and extend classes",
            "objective_wording_sha256": "37c1d435b583095befb5147945eaec30684943d89f33be0f196c7ddd00f318a5",
            "group": "Create classes and extend AOT elements",
            "group_number": 7,
            "objective_number": 1,
            "objective_id": "3.3.1",
            "domain": "Design and develop AOT elements (15–20%)",
            "version": "Skills measured as of January 30, 2026",
            "evidence_spans": [
              {
                "heading": "Classes and extensibility",
                "start_line": 120,
                "end_line": 130,
                "span_lf_sha256": "7607de3431f31f97a415404a82e5242b733e9df866181b281794c9fa977913f7"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Class responsibilities, metadata/modifiers and exact CoC/handler/delegate extensibility limits are explained.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Class responsibilities, metadata/modifiers and exact CoC/handler/delegate extensibility limits are explained.",
            "independent_repair_ids": []
          },
          {
            "wording": "Add event handler methods to a class",
            "objective_wording_sha256": "490f30ec2925bba7dc3bb43c211d3a51e9550662e659fac3ebf647516c18b882",
            "group": "Create classes and extend AOT elements",
            "group_number": 7,
            "objective_number": 2,
            "objective_id": "3.3.2",
            "domain": "Design and develop AOT elements (15–20%)",
            "version": "Skills measured as of January 30, 2026",
            "evidence_spans": [
              {
                "heading": "Classes and extensibility",
                "start_line": 120,
                "end_line": 130,
                "span_lf_sha256": "7607de3431f31f97a415404a82e5242b733e9df866181b281794c9fa977913f7"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Class responsibilities, metadata/modifiers and exact CoC/handler/delegate extensibility limits are explained.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Class responsibilities, metadata/modifiers and exact CoC/handler/delegate extensibility limits are explained.",
            "independent_repair_ids": []
          },
          {
            "wording": "Add attributes or modifiers to a class",
            "objective_wording_sha256": "497fc0ef710425e1863efe902bb77a52e7e7b63ad0c08baffaf01675a7d2b574",
            "group": "Create classes and extend AOT elements",
            "group_number": 7,
            "objective_number": 3,
            "objective_id": "3.3.3",
            "domain": "Design and develop AOT elements (15–20%)",
            "version": "Skills measured as of January 30, 2026",
            "evidence_spans": [
              {
                "heading": "Classes and extensibility",
                "start_line": 120,
                "end_line": 130,
                "span_lf_sha256": "7607de3431f31f97a415404a82e5242b733e9df866181b281794c9fa977913f7"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Class responsibilities, metadata/modifiers and exact CoC/handler/delegate extensibility limits are explained.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Class responsibilities, metadata/modifiers and exact CoC/handler/delegate extensibility limits are explained.",
            "independent_repair_ids": []
          },
          {
            "wording": "Implement common structured programming constructs of X++",
            "objective_wording_sha256": "db2aee7afb6e85f98895c1bbcef98a16f91f0a238f0d4df9b1ccc864161b30ab",
            "group": "Develop X++ code",
            "group_number": 8,
            "objective_number": 1,
            "objective_id": "4.1.1",
            "domain": "Develop and test code (20–25%)",
            "version": "Skills measured as of January 30, 2026",
            "evidence_spans": [
              {
                "heading": "4. Develop and test code",
                "start_line": 134,
                "end_line": 187,
                "span_lf_sha256": "daf80b2f3e34700fc5c38b7e93d11758ff583de3427c10eff295b8ff20d39ef3"
              },
              {
                "heading": "Build three small X++ contracts",
                "start_line": 152,
                "end_line": 177,
                "span_lf_sha256": "8d5371d45cb0fea066ce349e9eca98a9bdfb5a1edd1dd012a729ea2b4e942975"
              }
            ],
            "initial_flag_disposition": "resolved",
            "reason": "The original nonnegativeTotal method shows container iteration, typed variables, conditional rejection, accumulation and return, with empty/zero/negative cases and an explicit uncompiled limit.",
            "initial_flag_reason": "X++ constructs are listed without an X++ example showing control flow.",
            "repair_id": [
              "exam-a-xpp-workflow"
            ],
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "X++ constructs are listed without an X++ example showing control flow.",
            "independent_repair_ids": []
          },
          {
            "wording": "Create, read, update, and delete (CRUD) data",
            "objective_wording_sha256": "f5805423dae5bac84521995ea16b3d1ba8fbbe31f6bd99109c1cc2d1c5fe6492",
            "group": "Develop X++ code",
            "group_number": 8,
            "objective_number": 2,
            "objective_id": "4.1.2",
            "domain": "Develop and test code (20–25%)",
            "version": "Skills measured as of January 30, 2026",
            "evidence_spans": [
              {
                "heading": "4. Develop and test code",
                "start_line": 134,
                "end_line": 187,
                "span_lf_sha256": "daf80b2f3e34700fc5c38b7e93d11758ff583de3427c10eff295b8ff20d39ef3"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "X++ CRUD statements are tied to company, locking and transaction scope; selection-for-update, nested commit, exception and bounded-retry failures are explained.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "CRUD/transaction/scope/exception/retry and test failures are explained; structured constructs and global functions lack X++ examples.",
            "independent_repair_ids": []
          },
          {
            "wording": "Implement global functions in X++",
            "objective_wording_sha256": "2ebada45087e8e053508a7d7a2331609cbf2d3a4fa4b98caa98323b894593cb7",
            "group": "Develop X++ code",
            "group_number": 8,
            "objective_number": 3,
            "objective_id": "4.1.3",
            "domain": "Develop and test code (20–25%)",
            "version": "Skills measured as of January 30, 2026",
            "evidence_spans": [
              {
                "heading": "4. Develop and test code",
                "start_line": 134,
                "end_line": 187,
                "span_lf_sha256": "daf80b2f3e34700fc5c38b7e93d11758ff583de3427c10eff295b8ff20d39ef3"
              },
              {
                "heading": "Build three small X++ contracts",
                "start_line": 152,
                "end_line": 177,
                "span_lf_sha256": "8d5371d45cb0fea066ce349e9eca98a9bdfb5a1edd1dd012a729ea2b4e942975"
              }
            ],
            "initial_flag_disposition": "resolved",
            "reason": "The helper example plus public static Global extension behavior explains unprefixed global-function implementation and why domain-specific logic should remain a scoped class method.",
            "initial_flag_reason": "Global functions are mentioned without purpose/example and discoverability boundary.",
            "repair_id": [
              "exam-a-xpp-workflow"
            ],
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Global functions are mentioned without purpose/example and discoverability boundary.",
            "independent_repair_ids": []
          },
          {
            "wording": "Resolve best practice warnings",
            "objective_wording_sha256": "af983e9f2acb4c5ddb307eeba3027f93932fa1611953a3752b000d409dd5a55b",
            "group": "Develop X++ code",
            "group_number": 8,
            "objective_number": 4,
            "objective_id": "4.1.4",
            "domain": "Develop and test code (20–25%)",
            "version": "Skills measured as of January 30, 2026",
            "evidence_spans": [
              {
                "heading": "4. Develop and test code",
                "start_line": 134,
                "end_line": 187,
                "span_lf_sha256": "daf80b2f3e34700fc5c38b7e93d11758ff583de3427c10eff295b8ff20d39ef3"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "X++ CRUD statements are tied to company, locking and transaction scope; selection-for-update, nested commit, exception and bounded-retry failures are explained.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "CRUD/transaction/scope/exception/retry and test failures are explained; structured constructs and global functions lack X++ examples.",
            "independent_repair_ids": []
          },
          {
            "wording": "Implement variable scoping",
            "objective_wording_sha256": "a780e8e7ab4d0f1f0088150d7d022400de2830dc5351e46f8de5c29a5331b1ea",
            "group": "Develop object-oriented code",
            "group_number": 9,
            "objective_number": 1,
            "objective_id": "4.2.1",
            "domain": "Develop and test code (20–25%)",
            "version": "Skills measured as of January 30, 2026",
            "evidence_spans": [
              {
                "heading": "4. Develop and test code",
                "start_line": 134,
                "end_line": 187,
                "span_lf_sha256": "daf80b2f3e34700fc5c38b7e93d11758ff583de3427c10eff295b8ff20d39ef3"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Narrow variable scope, dynamic-query shape and supported class/extension contracts are explained with transaction and failure boundaries.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Variable scopes, dynamic query boundaries, OOP and extension mechanisms are explained; attribute and QueryBuild construction are thin.",
            "independent_repair_ids": []
          },
          {
            "wording": "Implement inheritance and abstraction concept",
            "objective_wording_sha256": "fcf226b85be831d6f0bacf1d726f828ebdd06e06aec29a3c86787f8cb2aff8fe",
            "group": "Develop object-oriented code",
            "group_number": 9,
            "objective_number": 2,
            "objective_id": "4.2.2",
            "domain": "Develop and test code (20–25%)",
            "version": "Skills measured as of January 30, 2026",
            "evidence_spans": [
              {
                "heading": "4. Develop and test code",
                "start_line": 140,
                "end_line": 142,
                "span_lf_sha256": "bf77993e96e48f7b9422f554226819ebeba2a7767c16571d2c89aed746182d9c"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "A single-superclass extends contract, abstract-method implementation, base-typed dispatch and fixed-5 versus 10-percent policies teach inheritance/abstraction; invalid base instantiation and omitted implementations are proposed compile-failure checks.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Variable scopes, dynamic query boundaries, OOP and extension mechanisms are explained; attribute and QueryBuild construction are thin.",
            "independent_repair_ids": [
              "g04-a-01"
            ]
          },
          {
            "wording": "Implement query objects and the QueryBuilder class",
            "objective_wording_sha256": "d2368d9dba95ea7c01719b9c55e502d117dca72a170b0518c06f56e55f6005bb",
            "group": "Develop object-oriented code",
            "group_number": 9,
            "objective_number": 3,
            "objective_id": "4.2.3",
            "domain": "Develop and test code (20–25%)",
            "version": "Skills measured as of January 30, 2026",
            "evidence_spans": [
              {
                "heading": "4. Develop and test code",
                "start_line": 134,
                "end_line": 187,
                "span_lf_sha256": "daf80b2f3e34700fc5c38b7e93d11758ff583de3427c10eff295b8ff20d39ef3"
              },
              {
                "heading": "Build three small X++ contracts",
                "start_line": 152,
                "end_line": 177,
                "span_lf_sha256": "8d5371d45cb0fea066ce349e9eca98a9bdfb5a1edd1dd012a729ea2b4e942975"
              }
            ],
            "initial_flag_disposition": "resolved",
            "reason": "Query→customer data source→typed range/field selection→QueryRun iteration is explicit; child joins versus peer sources, empty results and cross-company scope are checked.",
            "initial_flag_reason": "QueryBuild objects are described without concrete data-source/range/execute workflow.",
            "repair_id": [
              "exam-a-xpp-workflow"
            ],
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "QueryBuild objects are described without concrete data-source/range/execute workflow.",
            "independent_repair_ids": []
          },
          {
            "wording": "Implement attribute classes",
            "objective_wording_sha256": "2d6f29c743e19fa2fe37738d210ac317a111b23821961e71ba27baa315377d85",
            "group": "Develop object-oriented code",
            "group_number": 9,
            "objective_number": 4,
            "objective_id": "4.2.4",
            "domain": "Develop and test code (20–25%)",
            "version": "Skills measured as of January 30, 2026",
            "evidence_spans": [
              {
                "heading": "4. Develop and test code",
                "start_line": 134,
                "end_line": 187,
                "span_lf_sha256": "daf80b2f3e34700fc5c38b7e93d11758ff583de3427c10eff295b8ff20d39ef3"
              },
              {
                "heading": "Build three small X++ contracts",
                "start_line": 152,
                "end_line": 177,
                "span_lf_sha256": "8d5371d45cb0fea066ce349e9eca98a9bdfb5a1edd1dd012a729ea2b4e942975"
              }
            ],
            "initial_flag_disposition": "resolved",
            "reason": "A nonabstract SysAttribute subclass stores a literal identifier, decorates a target and is read by DictClass/DictMethod; compile-time metadata and runtime construction are distinguished.",
            "initial_flag_reason": "Attribute discovery is mentioned without definition/application/reflection example.",
            "repair_id": [
              "exam-a-xpp-workflow"
            ],
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Attribute discovery is mentioned without definition/application/reflection example.",
            "independent_repair_ids": []
          },
          {
            "wording": "Implement Chain of Command (CoC)",
            "objective_wording_sha256": "71d13b247bbb7c56b68745da908cf207c2a1bafd41fb8540efa09f89f535b967",
            "group": "Develop object-oriented code",
            "group_number": 9,
            "objective_number": 5,
            "objective_id": "4.2.5",
            "domain": "Develop and test code (20–25%)",
            "version": "Skills measured as of January 30, 2026",
            "evidence_spans": [
              {
                "heading": "Classes and extensibility",
                "start_line": 120,
                "end_line": 130,
                "span_lf_sha256": "7607de3431f31f97a415404a82e5242b733e9df866181b281794c9fa977913f7"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "CoC wraps supported extensible methods; ordinary wrappers call next unconditionally, wrapper order is unspecified, and Replaceable/Wrappable/Hookable rules constrain the extension point.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Variable scopes, dynamic query boundaries, OOP and extension mechanisms are explained; attribute and QueryBuild construction are thin.",
            "independent_repair_ids": []
          },
          {
            "wording": "Assess the extensibility of code and avoid breaking changes",
            "objective_wording_sha256": "b93ec20df3ace6a3283bfad8b356503f006b1f38889effcba197df1826d9b840",
            "group": "Develop object-oriented code",
            "group_number": 9,
            "objective_number": 6,
            "objective_id": "4.2.6",
            "domain": "Develop and test code (20–25%)",
            "version": "Skills measured as of January 30, 2026",
            "evidence_spans": [
              {
                "heading": "4. Develop and test code",
                "start_line": 134,
                "end_line": 187,
                "span_lf_sha256": "daf80b2f3e34700fc5c38b7e93d11758ff583de3427c10eff295b8ff20d39ef3"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Narrow variable scope, dynamic-query shape and supported class/extension contracts are explained with transaction and failure boundaries.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Variable scopes, dynamic query boundaries, OOP and extension mechanisms are explained; attribute and QueryBuild construction are thin.",
            "independent_repair_ids": []
          },
          {
            "wording": "Implement event handler classes and delegates",
            "objective_wording_sha256": "1c8c4c53bd8c6eaff82a31971f9b99ee62d357f2202b2d7a65b10660db103a19",
            "group": "Develop object-oriented code",
            "group_number": 9,
            "objective_number": 7,
            "objective_id": "4.2.7",
            "domain": "Develop and test code (20–25%)",
            "version": "Skills measured as of January 30, 2026",
            "evidence_spans": [
              {
                "heading": "4. Develop and test code",
                "start_line": 134,
                "end_line": 187,
                "span_lf_sha256": "daf80b2f3e34700fc5c38b7e93d11758ff583de3427c10eff295b8ff20d39ef3"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Narrow variable scope, dynamic-query shape and supported class/extension contracts are explained with transaction and failure boundaries.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Variable scopes, dynamic query boundaries, OOP and extension mechanisms are explained; attribute and QueryBuild construction are thin.",
            "independent_repair_ids": []
          },
          {
            "wording": "Implement the SysOperation framework",
            "objective_wording_sha256": "749cb5edde93d9859811786822318a796ea19b2f3ae21a046da21338369890b5",
            "group": "Implement finance and operations app framework functionality",
            "group_number": 10,
            "objective_number": 1,
            "objective_id": "4.3.1",
            "domain": "Develop and test code (20–25%)",
            "version": "Skills measured as of January 30, 2026",
            "evidence_spans": [
              {
                "heading": "4. Develop and test code",
                "start_line": 134,
                "end_line": 187,
                "span_lf_sha256": "daf80b2f3e34700fc5c38b7e93d11758ff583de3427c10eff295b8ff20d39ef3"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "SysOperation separates the data contract, service and controller; serialization, validation, retry, batch grouping and idempotency are explicit implementation decisions.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "SysOperation contract/service/controller and workflow state design are introduced; SysExtensionSerializer is mischaracterized as generic serialization without linked-table mapping.",
            "independent_repair_ids": []
          },
          {
            "wording": "Implement the workflow framework",
            "objective_wording_sha256": "d574dc24536bafeb4d134fa0fba34954b72437dfc5b0a420ae3902030c366dbb",
            "group": "Implement finance and operations app framework functionality",
            "group_number": 10,
            "objective_number": 2,
            "objective_id": "4.3.2",
            "domain": "Develop and test code (20–25%)",
            "version": "Skills measured as of January 30, 2026",
            "evidence_spans": [
              {
                "heading": "4. Develop and test code",
                "start_line": 134,
                "end_line": 187,
                "span_lf_sha256": "daf80b2f3e34700fc5c38b7e93d11758ff583de3427c10eff295b8ff20d39ef3"
              },
              {
                "heading": "Implement a workflow and a linked-table extension deliberately",
                "start_line": 191,
                "end_line": 195,
                "span_lf_sha256": "838b8f0ec5f2f7048809a40e18d6f543edac0976a5534cfe6438988291f70a8b"
              }
            ],
            "initial_flag_disposition": "resolved",
            "reason": "Document/query/status, submit/cancel entries, category/type/elements and lifecycle handlers precede activation; rejection/cancellation/resubmission and direct-state bypass are tested.",
            "initial_flag_reason": "Workflow states are listed without document/query/category/type/approval/event→activate implementation sequence.",
            "repair_id": [
              "exam-a-frameworks"
            ],
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Workflow states are listed without document/query/category/type/approval/event→activate implementation sequence.",
            "independent_repair_ids": []
          },
          {
            "wording": "Implement the SysExtensionSerializer framework",
            "objective_wording_sha256": "d15231f6a629d629f3137f3caae075afe423caa40409325fd98a2f7ae1a214f1",
            "group": "Implement finance and operations app framework functionality",
            "group_number": 10,
            "objective_number": 3,
            "objective_id": "4.3.3",
            "domain": "Develop and test code (20–25%)",
            "version": "Skills measured as of January 30, 2026",
            "evidence_spans": [
              {
                "heading": "4. Develop and test code",
                "start_line": 134,
                "end_line": 187,
                "span_lf_sha256": "daf80b2f3e34700fc5c38b7e93d11758ff583de3427c10eff295b8ff20d39ef3"
              },
              {
                "heading": "Implement a workflow and a linked-table extension deliberately",
                "start_line": 191,
                "end_line": 195,
                "span_lf_sha256": "838b8f0ec5f2f7048809a40e18d6f543edac0976a5534cfe6438988291f70a8b"
              }
            ],
            "initial_flag_disposition": "resolved",
            "reason": "The exact supported linked-table/base-reference/ExtensionMap mechanism and form/entity/staging round trip replace generic serializer-only coverage; missing child/deletion cases and UDE limits remain explicit.",
            "initial_flag_reason": "SysExtensionSerializer is described generically; linked extension table/map/form/entity/staging boundary is missing.",
            "repair_id": [
              "exam-a-frameworks"
            ],
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "SysExtensionSerializer is described generically; linked extension table/map/form/entity/staging boundary is missing.",
            "independent_repair_ids": []
          },
          {
            "wording": "Create unit tests by using the SysTest framework and Task recorder",
            "objective_wording_sha256": "d115e204ce56aa5535982ca96e7a298840a29df676db980a18226ceced1403eb",
            "group": "Perform testing",
            "group_number": 11,
            "objective_number": 1,
            "objective_id": "4.4.1",
            "domain": "Develop and test code (20–25%)",
            "version": "Skills measured as of January 30, 2026",
            "evidence_spans": [
              {
                "heading": "4. Develop and test code",
                "start_line": 134,
                "end_line": 187,
                "span_lf_sha256": "daf80b2f3e34700fc5c38b7e93d11758ff583de3427c10eff295b8ff20d39ef3"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Deterministic SysTest fixtures, Task recorder scope, Test Explorer and CI checks are distinguished without claiming tests were compiled.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Deterministic SysTest fixtures, Task recorder scope, Test Explorer and CI checks are distinguished without claiming tests were compiled.",
            "independent_repair_ids": []
          },
          {
            "wording": "Run unit tests in Test Explorer",
            "objective_wording_sha256": "6889aa1a5378215ccbd8b74aa2e28a5657af981720b84988fc5badb9160a813e",
            "group": "Perform testing",
            "group_number": 11,
            "objective_number": 2,
            "objective_id": "4.4.2",
            "domain": "Develop and test code (20–25%)",
            "version": "Skills measured as of January 30, 2026",
            "evidence_spans": [
              {
                "heading": "4. Develop and test code",
                "start_line": 134,
                "end_line": 187,
                "span_lf_sha256": "daf80b2f3e34700fc5c38b7e93d11758ff583de3427c10eff295b8ff20d39ef3"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Deterministic SysTest fixtures, Task recorder scope, Test Explorer and CI checks are distinguished without claiming tests were compiled.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Deterministic SysTest fixtures, Task recorder scope, Test Explorer and CI checks are distinguished without claiming tests were compiled.",
            "independent_repair_ids": []
          },
          {
            "wording": "Create and modify report data sources and supporting classes",
            "objective_wording_sha256": "aac8eb7e034836b8d4b3182300880526cd0e5af0f97b86a55d22d18240990d4c",
            "group": "Select reporting tools in finance and operations apps",
            "group_number": 12,
            "objective_number": 1,
            "objective_id": "5.1.1",
            "domain": "Implement reporting (10–15%)",
            "version": "Skills measured as of January 30, 2026",
            "evidence_spans": [
              {
                "heading": "5. Implement reporting",
                "start_line": 197,
                "end_line": 211,
                "span_lf_sha256": "edfc923823a807e85128f51cd754acc8c1f9a6c9aee6b62c1e78fc5bc837ea65"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Reporting tools, provider/contract/controller classes, security and dataset freshness are explained as separate report implementation responsibilities.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Tool, data-provider/contract/controller, entry/data security and datastore freshness responsibilities are explained; datastore alternatives are unnamed.",
            "independent_repair_ids": []
          },
          {
            "wording": "Implement reporting security requirements",
            "objective_wording_sha256": "17c436c104ef048dcefa0c71cc5e438a23a2fb47e005393b1159e39ce2c9bbcf",
            "group": "Select reporting tools in finance and operations apps",
            "group_number": 12,
            "objective_number": 2,
            "objective_id": "5.1.2",
            "domain": "Implement reporting (10–15%)",
            "version": "Skills measured as of January 30, 2026",
            "evidence_spans": [
              {
                "heading": "5. Implement reporting",
                "start_line": 197,
                "end_line": 211,
                "span_lf_sha256": "edfc923823a807e85128f51cd754acc8c1f9a6c9aee6b62c1e78fc5bc837ea65"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Reporting tools, provider/contract/controller classes, security and dataset freshness are explained as separate report implementation responsibilities.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Tool, data-provider/contract/controller, entry/data security and datastore freshness responsibilities are explained; datastore alternatives are unnamed.",
            "independent_repair_ids": []
          },
          {
            "wording": "Differentiate among reporting datastores",
            "objective_wording_sha256": "a4fb9c36b3c98963898fe718af4d979c0832e538577812aff2ad46052e879669",
            "group": "Select reporting tools in finance and operations apps",
            "group_number": 12,
            "objective_number": 3,
            "objective_id": "5.1.3",
            "domain": "Implement reporting (10–15%)",
            "version": "Skills measured as of January 30, 2026",
            "evidence_spans": [
              {
                "heading": "5. Implement reporting",
                "start_line": 197,
                "end_line": 211,
                "span_lf_sha256": "edfc923823a807e85128f51cd754acc8c1f9a6c9aee6b62c1e78fc5bc837ea65"
              },
              {
                "heading": "Trace a report from source to deployed output",
                "start_line": 215,
                "end_line": 221,
                "span_lf_sha256": "1ef9786b039bd1181e98b0bd46055863318653fea164b393efb30b9f01b37a46"
              }
            ],
            "initial_flag_disposition": "resolved",
            "reason": "Operational database, reporting-optimized staged Entity store and exported analytics copy are distinguished by refresh/security boundary; DirectQuery does not bypass measurement staleness.",
            "initial_flag_reason": "Datastore selection is urged but operational database/Entity store/analytics-copy distinctions are not taught.",
            "repair_id": [
              "exam-a-reporting-implementation"
            ],
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Datastore selection is urged but operational database/Entity store/analytics-copy distinctions are not taught.",
            "independent_repair_ids": []
          },
          {
            "wording": "Determine when to use a specific reporting tool or platform",
            "objective_wording_sha256": "100d304b03c7b6c27f3f00189c4cd1c93648cc73e7d14eae619fe7c437eb3822",
            "group": "Design, create, and revise Dynamics 365 reports",
            "group_number": 13,
            "objective_number": 1,
            "objective_id": "5.2.1",
            "domain": "Implement reporting (10–15%)",
            "version": "Skills measured as of January 30, 2026",
            "evidence_spans": [
              {
                "heading": "5. Implement reporting",
                "start_line": 197,
                "end_line": 211,
                "span_lf_sha256": "edfc923823a807e85128f51cd754acc8c1f9a6c9aee6b62c1e78fc5bc837ea65"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Output/tool decisions are substantive; actual SSRS/PowerBI/Excel/ER creation and deployment paths are concise design summaries.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Output/tool decisions are substantive; actual SSRS/PowerBI/Excel/ER creation and deployment paths are concise design summaries.",
            "independent_repair_ids": []
          },
          {
            "wording": "Create, modify, and deploy reports in finance and operations apps by using SSRS",
            "objective_wording_sha256": "8afdc6d4c354ae68c0938d4bacc5c05cafef98b6d2ee9fca6180a05d1b9511c2",
            "group": "Design, create, and revise Dynamics 365 reports",
            "group_number": 13,
            "objective_number": 2,
            "objective_id": "5.2.2",
            "domain": "Implement reporting (10–15%)",
            "version": "Skills measured as of January 30, 2026",
            "evidence_spans": [
              {
                "heading": "5. Implement reporting",
                "start_line": 197,
                "end_line": 211,
                "span_lf_sha256": "edfc923823a807e85128f51cd754acc8c1f9a6c9aee6b62c1e78fc5bc837ea65"
              },
              {
                "heading": "Trace a report from source to deployed output",
                "start_line": 215,
                "end_line": 221,
                "span_lf_sha256": "1ef9786b039bd1181e98b0bd46055863318653fea164b393efb30b9f01b37a46"
              }
            ],
            "initial_flag_disposition": "resolved",
            "reason": "Query/RDP, parameters/contract/temp dataset, design, deployment and menu/controller routing form the report path; refresh metadata, actual design, denied user and large range are checks.",
            "initial_flag_reason": "SSRS parts are enumerated without source/provider→dataset/design→deploy/menu/security workflow.",
            "repair_id": [
              "exam-a-reporting-implementation"
            ],
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "SSRS parts are enumerated without source/provider→dataset/design→deploy/menu/security workflow.",
            "independent_repair_ids": []
          },
          {
            "wording": "Create and modify finance and operations apps reports by using Power BI",
            "objective_wording_sha256": "f56ee4ef94d234dd058b0b57d7d36cb5aa74d399ef675a599644b2e2765477c5",
            "group": "Design, create, and revise Dynamics 365 reports",
            "group_number": 13,
            "objective_number": 3,
            "objective_id": "5.2.3",
            "domain": "Implement reporting (10–15%)",
            "version": "Skills measured as of January 30, 2026",
            "evidence_spans": [
              {
                "heading": "5. Implement reporting",
                "start_line": 197,
                "end_line": 211,
                "span_lf_sha256": "edfc923823a807e85128f51cd754acc8c1f9a6c9aee6b62c1e78fc5bc837ea65"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Output/tool decisions are substantive; actual SSRS/PowerBI/Excel/ER creation and deployment paths are concise design summaries.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Output/tool decisions are substantive; actual SSRS/PowerBI/Excel/ER creation and deployment paths are concise design summaries.",
            "independent_repair_ids": []
          },
          {
            "wording": "Create and modify finance and operations apps reports by using Microsoft Excel",
            "objective_wording_sha256": "c526675a7da468e562643d6a142f1f60e07846e2804354c21516fc8097ff3af3",
            "group": "Design, create, and revise Dynamics 365 reports",
            "group_number": 13,
            "objective_number": 4,
            "objective_id": "5.2.4",
            "domain": "Implement reporting (10–15%)",
            "version": "Skills measured as of January 30, 2026",
            "evidence_spans": [
              {
                "heading": "5. Implement reporting",
                "start_line": 197,
                "end_line": 211,
                "span_lf_sha256": "edfc923823a807e85128f51cd754acc8c1f9a6c9aee6b62c1e78fc5bc837ea65"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Output/tool decisions are substantive; actual SSRS/PowerBI/Excel/ER creation and deployment paths are concise design summaries.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Output/tool decisions are substantive; actual SSRS/PowerBI/Excel/ER creation and deployment paths are concise design summaries.",
            "independent_repair_ids": []
          },
          {
            "wording": "Create and modify finance and operations apps reports by using Electronic reporting",
            "objective_wording_sha256": "1c017c77e4f8c0ae30b5129d5d41a2de9c5c7f0db8da3e2ac83f285e8b7b39dd",
            "group": "Design, create, and revise Dynamics 365 reports",
            "group_number": 13,
            "objective_number": 5,
            "objective_id": "5.2.5",
            "domain": "Implement reporting (10–15%)",
            "version": "Skills measured as of January 30, 2026",
            "evidence_spans": [
              {
                "heading": "5. Implement reporting",
                "start_line": 197,
                "end_line": 211,
                "span_lf_sha256": "edfc923823a807e85128f51cd754acc8c1f9a6c9aee6b62c1e78fc5bc837ea65"
              },
              {
                "heading": "Trace a report from source to deployed output",
                "start_line": 215,
                "end_line": 221,
                "span_lf_sha256": "1ef9786b039bd1181e98b0bd46055863318653fea164b393efb30b9f01b37a46"
              }
            ],
            "initial_flag_disposition": "resolved",
            "reason": "ER business model→application mapping→format bindings→validation/destination→payment-method enablement is concrete; missing bank data and configuration dependencies are tested.",
            "initial_flag_reason": "ER model/mapping/format are named without draft/version/test/destination/export workflow.",
            "repair_id": [
              "exam-a-reporting-implementation"
            ],
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "ER model/mapping/format are named without draft/version/test/destination/export workflow.",
            "independent_repair_ids": []
          },
          {
            "wording": "Design and implement key performance indicators (KPIs)",
            "objective_wording_sha256": "9bd3ae8213e2e5be45e9f20614d4e0c7408c1fe4b853dbe2e598ade05e136cf1",
            "group": "Design, create, and revise Dynamics 365 workspaces",
            "group_number": 14,
            "objective_number": 1,
            "objective_id": "5.3.1",
            "domain": "Implement reporting (10–15%)",
            "version": "Skills measured as of January 30, 2026",
            "evidence_spans": [
              {
                "heading": "5. Implement reporting",
                "start_line": 197,
                "end_line": 211,
                "span_lf_sha256": "edfc923823a807e85128f51cd754acc8c1f9a6c9aee6b62c1e78fc5bc837ea65"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Role-based workspace tiles and KPIs require defined grain, filters, drill-through and authorization checks before their displayed values support a decision.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Role-based tiles/KPI grain/filter/drill-through checks are explained; no concrete workspace implementation example.",
            "independent_repair_ids": []
          },
          {
            "wording": "Create drill-through workspace elements",
            "objective_wording_sha256": "356b716a59d29ae3ebee124cce2d490b554b2ca1dd5fced198f79f9b0ce949cd",
            "group": "Design, create, and revise Dynamics 365 workspaces",
            "group_number": 14,
            "objective_number": 2,
            "objective_id": "5.3.2",
            "domain": "Implement reporting (10–15%)",
            "version": "Skills measured as of January 30, 2026",
            "evidence_spans": [
              {
                "heading": "5. Implement reporting",
                "start_line": 197,
                "end_line": 211,
                "span_lf_sha256": "edfc923823a807e85128f51cd754acc8c1f9a6c9aee6b62c1e78fc5bc837ea65"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Role-based workspace tiles and KPIs require defined grain, filters, drill-through and authorization checks before their displayed values support a decision.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Role-based tiles/KPI grain/filter/drill-through checks are explained; no concrete workspace implementation example.",
            "independent_repair_ids": []
          },
          {
            "wording": "Implement Power BI visualizations",
            "objective_wording_sha256": "f8eba2161f5c1a7c8429aec0588a763f244bdb76ebaa7f699b5fc81b815db6b7",
            "group": "Design, create, and revise Dynamics 365 workspaces",
            "group_number": 14,
            "objective_number": 3,
            "objective_id": "5.3.3",
            "domain": "Implement reporting (10–15%)",
            "version": "Skills measured as of January 30, 2026",
            "evidence_spans": [
              {
                "heading": "5. Implement reporting",
                "start_line": 197,
                "end_line": 211,
                "span_lf_sha256": "edfc923823a807e85128f51cd754acc8c1f9a6c9aee6b62c1e78fc5bc837ea65"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Role-based workspace tiles and KPIs require defined grain, filters, drill-through and authorization checks before their displayed values support a decision.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Role-based tiles/KPI grain/filter/drill-through checks are explained; no concrete workspace implementation example.",
            "independent_repair_ids": []
          },
          {
            "wording": "Contrast data integration patterns",
            "objective_wording_sha256": "4575ceeeeba125a0108d3f3081e72f76ea334d656cdff25f8685293a072bdad5",
            "group": "Evaluate data integration patterns and scenarios",
            "group_number": 15,
            "objective_number": 1,
            "objective_id": "6.1.1",
            "domain": "Integrate and manage data solutions (15–20%)",
            "version": "Skills measured as of January 30, 2026",
            "evidence_spans": [
              {
                "heading": "Select the pattern",
                "start_line": 225,
                "end_line": 233,
                "span_lf_sha256": "5727ae0e71e202d8636a97ff4266dad3edeaa3c5a9be1394dbdf626dc4023902"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "API/pattern tradeoffs, synchronous/asynchronous coupling and changeset/event boundaries are substantive.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "API/pattern tradeoffs, synchronous/asynchronous coupling and changeset/event boundaries are substantive.",
            "independent_repair_ids": []
          },
          {
            "wording": "Select an appropriate data integration API",
            "objective_wording_sha256": "8ae2484a50bb2c834a45e8b29dcd07e5274a57f2b6d5f3b291edba38ba75f022",
            "group": "Evaluate data integration patterns and scenarios",
            "group_number": 15,
            "objective_number": 2,
            "objective_id": "6.1.2",
            "domain": "Integrate and manage data solutions (15–20%)",
            "version": "Skills measured as of January 30, 2026",
            "evidence_spans": [
              {
                "heading": "Select the pattern",
                "start_line": 225,
                "end_line": 233,
                "span_lf_sha256": "5727ae0e71e202d8636a97ff4266dad3edeaa3c5a9be1394dbdf626dc4023902"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "API/pattern tradeoffs, synchronous/asynchronous coupling and changeset/event boundaries are substantive.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "API/pattern tradeoffs, synchronous/asynchronous coupling and changeset/event boundaries are substantive.",
            "independent_repair_ids": []
          },
          {
            "wording": "Differentiate between synchronous and asynchronous patterns",
            "objective_wording_sha256": "6b3fee57bd29a3abb3a9d91205b215a46d07a1e44f37a418977c1dc8498b5242",
            "group": "Evaluate data integration patterns and scenarios",
            "group_number": 15,
            "objective_number": 3,
            "objective_id": "6.1.3",
            "domain": "Integrate and manage data solutions (15–20%)",
            "version": "Skills measured as of January 30, 2026",
            "evidence_spans": [
              {
                "heading": "Select the pattern",
                "start_line": 225,
                "end_line": 233,
                "span_lf_sha256": "5727ae0e71e202d8636a97ff4266dad3edeaa3c5a9be1394dbdf626dc4023902"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "API/pattern tradeoffs, synchronous/asynchronous coupling and changeset/event boundaries are substantive.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "API/pattern tradeoffs, synchronous/asynchronous coupling and changeset/event boundaries are substantive.",
            "independent_repair_ids": []
          },
          {
            "wording": "Consume external web services by using RESTful APIs and Simple Object Access Protocol (SOAP)",
            "objective_wording_sha256": "38d697a34dabdb7d61d66d4b40b6d2069903b8f3ac293d8f07f0a8f6c6049b6f",
            "group": "Implement data integration concepts and solutions",
            "group_number": 16,
            "objective_number": 1,
            "objective_id": "6.2.1",
            "domain": "Integrate and manage data solutions (15–20%)",
            "version": "Skills measured as of January 30, 2026",
            "evidence_spans": [
              {
                "heading": "Select the pattern",
                "start_line": 225,
                "end_line": 243,
                "span_lf_sha256": "cdc00ecda7e1883a149a2c09cf74ce7a6ee522352acabfbb44b2dd220765e014"
              },
              {
                "heading": "Work outbound calls and entity shapes separately",
                "start_line": 245,
                "end_line": 251,
                "span_lf_sha256": "8d08eb4f444c0eb8cfed57f7b556dc1bb4938d0db746e278c696442d54d0c4d5"
              }
            ],
            "initial_flag_disposition": "resolved",
            "reason": "A shipping-rate REST/SOAP client contract, referenced library/proxy, authentication, serialization, faults/status and correlation are explained with fictional-URL and timeout/denied-response boundaries.",
            "initial_flag_reason": "Outbound REST/SOAP are named in pattern comparison but no consume/auth/serialize/fault workflow.",
            "repair_id": [
              "exam-a-integration-deltas"
            ],
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Outbound REST/SOAP are named in pattern comparison but no consume/auth/serialize/fault workflow.",
            "independent_repair_ids": []
          },
          {
            "wording": "Implement Electronic reporting integrations",
            "objective_wording_sha256": "1d0b46736057abc341af8eda5ddf8d0255393356550f75b722e2d71ea754cbec",
            "group": "Implement data integration concepts and solutions",
            "group_number": 16,
            "objective_number": 2,
            "objective_id": "6.2.2",
            "domain": "Integrate and manage data solutions (15–20%)",
            "version": "Skills measured as of January 30, 2026",
            "evidence_spans": [
              {
                "heading": "Select the pattern",
                "start_line": 225,
                "end_line": 243,
                "span_lf_sha256": "cdc00ecda7e1883a149a2c09cf74ce7a6ee522352acabfbb44b2dd220765e014"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Custom integration contracts, OData changeset atomicity, Batch OData queue behavior and asynchronous package-API outcomes are distinguished with partial-failure and idempotency controls.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Custom contracts, OData batch versus Batch OData requeue and asynchronous package API outcomes are concretely distinguished; outbound REST/SOAP and ER integrations only named.",
            "independent_repair_ids": []
          },
          {
            "wording": "Implement custom services",
            "objective_wording_sha256": "7e4ceec3f2894e4c925a82f8ec26ffdc3e3a7673e9791220ecba52d3a1d6bfd4",
            "group": "Implement data integration concepts and solutions",
            "group_number": 16,
            "objective_number": 3,
            "objective_id": "6.2.3",
            "domain": "Integrate and manage data solutions (15–20%)",
            "version": "Skills measured as of January 30, 2026",
            "evidence_spans": [
              {
                "heading": "Select the pattern",
                "start_line": 225,
                "end_line": 243,
                "span_lf_sha256": "cdc00ecda7e1883a149a2c09cf74ce7a6ee522352acabfbb44b2dd220765e014"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Custom integration contracts, OData changeset atomicity, Batch OData queue behavior and asynchronous package-API outcomes are distinguished with partial-failure and idempotency controls.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Custom contracts, OData batch versus Batch OData requeue and asynchronous package API outcomes are concretely distinguished; outbound REST/SOAP and ER integrations only named.",
            "independent_repair_ids": []
          },
          {
            "wording": "Implement Batch OData API",
            "objective_wording_sha256": "c938940da82070e8c850e52e236b4889cc9fbcb750c6527f11e7126c6be63984",
            "group": "Implement data integration concepts and solutions",
            "group_number": 16,
            "objective_number": 4,
            "objective_id": "6.2.4",
            "domain": "Integrate and manage data solutions (15–20%)",
            "version": "Skills measured as of January 30, 2026",
            "evidence_spans": [
              {
                "heading": "Select the pattern",
                "start_line": 225,
                "end_line": 243,
                "span_lf_sha256": "cdc00ecda7e1883a149a2c09cf74ce7a6ee522352acabfbb44b2dd220765e014"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Custom integration contracts, OData changeset atomicity, Batch OData queue behavior and asynchronous package-API outcomes are distinguished with partial-failure and idempotency controls.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Custom contracts, OData batch versus Batch OData requeue and asynchronous package API outcomes are concretely distinguished; outbound REST/SOAP and ER integrations only named.",
            "independent_repair_ids": []
          },
          {
            "wording": "Import and export data using entities between finance and operations apps and other systems",
            "objective_wording_sha256": "f45089e42ea222e6c8908107ceef8295a2e8c2a20cc891ae9321639ed1920bbb",
            "group": "Implement data management",
            "group_number": 17,
            "objective_number": 1,
            "objective_id": "6.3.1",
            "domain": "Integrate and manage data solutions (15–20%)",
            "version": "Skills measured as of January 30, 2026",
            "evidence_spans": [
              {
                "heading": "Manage data through entities",
                "start_line": 235,
                "end_line": 243,
                "span_lf_sha256": "70890594a82ce1e36df8921d8f068c3c4ee4c8edcbaa109a94e4ddd12ce676ba"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Entity source, staging, target, sequencing and partial-success reconciliation explain the import/export path and its independent validation responsibilities.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Entity/source/staging/target/sequence and partial-success reconciliation are explained; composite/aggregate and change-tracking setup are thin.",
            "independent_repair_ids": []
          },
          {
            "wording": "Import and export data using composite and aggregate data entities",
            "objective_wording_sha256": "06c05b72997ce56c20bc3126feb9be8d0396fe5709f56fbe6da0c88c81e1fa90",
            "group": "Implement data management",
            "group_number": 17,
            "objective_number": 2,
            "objective_id": "6.3.2",
            "domain": "Integrate and manage data solutions (15–20%)",
            "version": "Skills measured as of January 30, 2026",
            "evidence_spans": [
              {
                "heading": "Manage data through entities",
                "start_line": 235,
                "end_line": 243,
                "span_lf_sha256": "70890594a82ce1e36df8921d8f068c3c4ee4c8edcbaa109a94e4ddd12ce676ba"
              },
              {
                "heading": "Work outbound calls and entity shapes separately",
                "start_line": 245,
                "end_line": 251,
                "span_lf_sha256": "8d08eb4f444c0eb8cfed57f7b556dc1bb4938d0db746e278c696442d54d0c4d5"
              }
            ],
            "initial_flag_disposition": "resolved",
            "reason": "Composite header/line XML Data management build/relations/root/mapping differs from a grouped customer/month aggregate; missing parent and grain/control-total checks are explicit.",
            "initial_flag_reason": "Composite versus aggregate entities defined in one sentence without distinct payload/grouping examples.",
            "repair_id": [
              "exam-a-integration-deltas"
            ],
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Composite versus aggregate entities defined in one sentence without distinct payload/grouping examples.",
            "independent_repair_ids": []
          },
          {
            "wording": "Monitor the status and availability of entities",
            "objective_wording_sha256": "0d7f8d032c584dec5d763d3a60414f8b2f511942511316319464f3df987bdf75",
            "group": "Implement data management",
            "group_number": 17,
            "objective_number": 3,
            "objective_id": "6.3.3",
            "domain": "Integrate and manage data solutions (15–20%)",
            "version": "Skills measured as of January 30, 2026",
            "evidence_spans": [
              {
                "heading": "Manage data through entities",
                "start_line": 235,
                "end_line": 243,
                "span_lf_sha256": "70890594a82ce1e36df8921d8f068c3c4ee4c8edcbaa109a94e4ddd12ce676ba"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Entity source, staging, target, sequencing and partial-success reconciliation explain the import/export path and its independent validation responsibilities.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Entity/source/staging/target/sequence and partial-success reconciliation are explained; composite/aggregate and change-tracking setup are thin.",
            "independent_repair_ids": []
          },
          {
            "wording": "Enable change tracking for entities",
            "objective_wording_sha256": "d3936c3571a15e0d32904c338ee640811f32cfd5a566adfa39fa05232fef6a90",
            "group": "Implement data management",
            "group_number": 17,
            "objective_number": 4,
            "objective_id": "6.3.4",
            "domain": "Integrate and manage data solutions (15–20%)",
            "version": "Skills measured as of January 30, 2026",
            "evidence_spans": [
              {
                "heading": "Manage data through entities",
                "start_line": 235,
                "end_line": 243,
                "span_lf_sha256": "70890594a82ce1e36df8921d8f068c3c4ee4c8edcbaa109a94e4ddd12ce676ba"
              },
              {
                "heading": "Work outbound calls and entity shapes separately",
                "start_line": 245,
                "end_line": 251,
                "span_lf_sha256": "8d08eb4f444c0eb8cfed57f7b556dc1bb4938d0db746e278c696442d54d0c4d5"
              }
            ],
            "initial_flag_disposition": "resolved",
            "reason": "Data management SQL tracking choices and deletion limitations are distinguished from row-version metadata/eligibility; initial load, parent/related edits and deletion test completeness.",
            "initial_flag_reason": "Delta/watermark concept is described but metadata choice/build/sync/refresh/full-load/delta workflow missing.",
            "repair_id": [
              "exam-a-integration-deltas"
            ],
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Delta/watermark concept is described but metadata choice/build/sync/refresh/full-load/delta workflow missing.",
            "independent_repair_ids": []
          },
          {
            "wording": "Set up a data project, including entity sequencing and recurring data jobs",
            "objective_wording_sha256": "00f60c1442fd549e8612316869860e4ed452e448e6209583024d170fa2e43c5d",
            "group": "Implement data management",
            "group_number": 17,
            "objective_number": 5,
            "objective_id": "6.3.5",
            "domain": "Integrate and manage data solutions (15–20%)",
            "version": "Skills measured as of January 30, 2026",
            "evidence_spans": [
              {
                "heading": "Manage data through entities",
                "start_line": 235,
                "end_line": 243,
                "span_lf_sha256": "70890594a82ce1e36df8921d8f068c3c4ee4c8edcbaa109a94e4ddd12ce676ba"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Entity source, staging, target, sequencing and partial-success reconciliation explain the import/export path and its independent validation responsibilities.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Entity/source/staging/target/sequence and partial-success reconciliation are explained; composite/aggregate and change-tracking setup are thin.",
            "independent_repair_ids": []
          },
          {
            "wording": "Generate and modify field mapping between source, staging, and target",
            "objective_wording_sha256": "ae6ec7e4a59c90918b05675695c9083a6129700d101a7aaa6d9d26c5ae4bff07",
            "group": "Implement data management",
            "group_number": 17,
            "objective_number": 6,
            "objective_id": "6.3.6",
            "domain": "Integrate and manage data solutions (15–20%)",
            "version": "Skills measured as of January 30, 2026",
            "evidence_spans": [
              {
                "heading": "Manage data through entities",
                "start_line": 235,
                "end_line": 243,
                "span_lf_sha256": "70890594a82ce1e36df8921d8f068c3c4ee4c8edcbaa109a94e4ddd12ce676ba"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Entity source, staging, target, sequencing and partial-success reconciliation explain the import/export path and its independent validation responsibilities.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Entity/source/staging/target/sequence and partial-success reconciliation are explained; composite/aggregate and change-tracking setup are thin.",
            "independent_repair_ids": []
          },
          {
            "wording": "Integrate Microsoft Dataverse with finance and operations apps by using dual-write",
            "objective_wording_sha256": "4f06055d435aadbbd5896608994a17ea5e406d73c3ef2ab93ec09ff9f3d5c577",
            "group": "Integrate with Microsoft Power Platform, Microsoft 365, and Azure",
            "group_number": 18,
            "objective_number": 1,
            "objective_id": "6.4.1",
            "domain": "Integrate and manage data solutions (15–20%)",
            "version": "Skills measured as of January 30, 2026",
            "evidence_spans": [
              {
                "heading": "Connect the ecosystem",
                "start_line": 253,
                "end_line": 263,
                "span_lf_sha256": "810c5e55066e8d83f4c226977c492320e883bf0e7ef481af61a7894c507f36fa"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Dual-write copying, virtual live data, actual caller authorization, OData entity access and business-event deduplication have distinct integration boundaries.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Copy-versus-live data and real caller authorization, OData entity integration and business-event dedupe are explained; KeyVault implementation is only named.",
            "independent_repair_ids": []
          },
          {
            "wording": "Integrate Microsoft Dataverse with finance and operations apps by using virtual entities",
            "objective_wording_sha256": "d088c1c3078b6ca64538b83216058be70e68d59af254120fb1b3f545c75cdfae",
            "group": "Integrate with Microsoft Power Platform, Microsoft 365, and Azure",
            "group_number": 18,
            "objective_number": 2,
            "objective_id": "6.4.2",
            "domain": "Integrate and manage data solutions (15–20%)",
            "version": "Skills measured as of January 30, 2026",
            "evidence_spans": [
              {
                "heading": "Connect the ecosystem",
                "start_line": 253,
                "end_line": 263,
                "span_lf_sha256": "810c5e55066e8d83f4c226977c492320e883bf0e7ef481af61a7894c507f36fa"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Dual-write copying, virtual live data, actual caller authorization, OData entity access and business-event deduplication have distinct integration boundaries.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Copy-versus-live data and real caller authorization, OData entity integration and business-event dedupe are explained; KeyVault implementation is only named.",
            "independent_repair_ids": []
          },
          {
            "wording": "Integrate Power Platform with finance and operations apps",
            "objective_wording_sha256": "92462cb3cdb0b2aec8dd78403ed852598b7638e229222c0f11fb2c2b06a3a363",
            "group": "Integrate with Microsoft Power Platform, Microsoft 365, and Azure",
            "group_number": 18,
            "objective_number": 3,
            "objective_id": "6.4.3",
            "domain": "Integrate and manage data solutions (15–20%)",
            "version": "Skills measured as of January 30, 2026",
            "evidence_spans": [
              {
                "heading": "Connect the ecosystem",
                "start_line": 253,
                "end_line": 263,
                "span_lf_sha256": "810c5e55066e8d83f4c226977c492320e883bf0e7ef481af61a7894c507f36fa"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Dual-write copying, virtual live data, actual caller authorization, OData entity access and business-event deduplication have distinct integration boundaries.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Copy-versus-live data and real caller authorization, OData entity integration and business-event dedupe are explained; KeyVault implementation is only named.",
            "independent_repair_ids": []
          },
          {
            "wording": "Integrate finance and operations apps with Microsoft Excel by using OData",
            "objective_wording_sha256": "c0c5f89ebeea1e9b23f2f1fc700cb15f00342b82ff323b2d5f359ef7da4e21b8",
            "group": "Integrate with Microsoft Power Platform, Microsoft 365, and Azure",
            "group_number": 18,
            "objective_number": 4,
            "objective_id": "6.4.4",
            "domain": "Integrate and manage data solutions (15–20%)",
            "version": "Skills measured as of January 30, 2026",
            "evidence_spans": [
              {
                "heading": "Connect the ecosystem",
                "start_line": 253,
                "end_line": 263,
                "span_lf_sha256": "810c5e55066e8d83f4c226977c492320e883bf0e7ef481af61a7894c507f36fa"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Dual-write copying, virtual live data, actual caller authorization, OData entity access and business-event deduplication have distinct integration boundaries.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Copy-versus-live data and real caller authorization, OData entity integration and business-event dedupe are explained; KeyVault implementation is only named.",
            "independent_repair_ids": []
          },
          {
            "wording": "Implement business events",
            "objective_wording_sha256": "b88d29858a1d59e7f039ebc63d156d4f5f35ac3994b8df462d49375b5806f96d",
            "group": "Integrate with Microsoft Power Platform, Microsoft 365, and Azure",
            "group_number": 18,
            "objective_number": 5,
            "objective_id": "6.4.5",
            "domain": "Integrate and manage data solutions (15–20%)",
            "version": "Skills measured as of January 30, 2026",
            "evidence_spans": [
              {
                "heading": "Connect the ecosystem",
                "start_line": 253,
                "end_line": 263,
                "span_lf_sha256": "810c5e55066e8d83f4c226977c492320e883bf0e7ef481af61a7894c507f36fa"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Dual-write copying, virtual live data, actual caller authorization, OData entity access and business-event deduplication have distinct integration boundaries.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Copy-versus-live data and real caller authorization, OData entity integration and business-event dedupe are explained; KeyVault implementation is only named.",
            "independent_repair_ids": []
          },
          {
            "wording": "Implement Azure Key Vault",
            "objective_wording_sha256": "08ae491bfe681571d64ca1386f7273478524398c434b4be9ed0ff5ccabf256e8",
            "group": "Integrate with Microsoft Power Platform, Microsoft 365, and Azure",
            "group_number": 18,
            "objective_number": 6,
            "objective_id": "6.4.6",
            "domain": "Integrate and manage data solutions (15–20%)",
            "version": "Skills measured as of January 30, 2026",
            "evidence_spans": [
              {
                "heading": "Connect the ecosystem",
                "start_line": 253,
                "end_line": 263,
                "span_lf_sha256": "810c5e55066e8d83f4c226977c492320e883bf0e7ef481af61a7894c507f36fa"
              },
              {
                "heading": "Configure a vault reference and test failure",
                "start_line": 267,
                "end_line": 271,
                "span_lf_sha256": "b18ec23ef831a9a2cc5d53e65c961829aa13b15ed0547bb3e19055488552c3b8"
              }
            ],
            "initial_flag_disposition": "resolved",
            "reason": "Vault item/identity→Finance parameters→versioned certificate reference→Validate and rotation/caching checks teach a bounded supported client, without generalizing all connector identities.",
            "initial_flag_reason": "Key Vault only named as secret store; vault/reference/application authorization and rotation setup absent.",
            "repair_id": [
              "exam-a-keyvault"
            ],
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Key Vault only named as secret store; vault/reference/application authorization and rotation setup absent.",
            "independent_repair_ids": []
          },
          {
            "wording": "Create and extend duties and roles",
            "objective_wording_sha256": "f1a2067e2dd597a487b7e8867d1abad15ce9aff3ba6cd5361cca0077865ecbfc",
            "group": "Implement security policies and requirements",
            "group_number": 19,
            "objective_number": 1,
            "objective_id": "7.1.1",
            "domain": "Implement security and optimize performance (10–15%)",
            "version": "Skills measured as of January 30, 2026",
            "evidence_spans": [
              {
                "heading": "7. Implement security and optimize performance",
                "start_line": 273,
                "end_line": 293,
                "span_lf_sha256": "f84b45f97696fbad7b8ddd955830345c35e3d94d0e3ee02b67fc9f55f798e7db"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Role/duty/privilege entry points, XDS intersections and separate data-service/data-management authorization are substantive.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Role/duty/privilege entry points, XDS intersections and separate data-service/data-management authorization are substantive.",
            "independent_repair_ids": []
          },
          {
            "wording": "Create privileges and add permissions",
            "objective_wording_sha256": "700671141dd5104a777f96fdfc4d84765b00f4aab79d150e15ccf5454f20fd71",
            "group": "Implement security policies and requirements",
            "group_number": 19,
            "objective_number": 2,
            "objective_id": "7.1.2",
            "domain": "Implement security and optimize performance (10–15%)",
            "version": "Skills measured as of January 30, 2026",
            "evidence_spans": [
              {
                "heading": "7. Implement security and optimize performance",
                "start_line": 273,
                "end_line": 293,
                "span_lf_sha256": "f84b45f97696fbad7b8ddd955830345c35e3d94d0e3ee02b67fc9f55f798e7db"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Role/duty/privilege entry points, XDS intersections and separate data-service/data-management authorization are substantive.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Role/duty/privilege entry points, XDS intersections and separate data-service/data-management authorization are substantive.",
            "independent_repair_ids": []
          },
          {
            "wording": "Enforce security policies",
            "objective_wording_sha256": "3cc1354d190728266e7cbb4c3c32b125a0c23d0152a17f14dd58078b9dd9f7f2",
            "group": "Implement security policies and requirements",
            "group_number": 19,
            "objective_number": 3,
            "objective_id": "7.1.3",
            "domain": "Implement security and optimize performance (10–15%)",
            "version": "Skills measured as of January 30, 2026",
            "evidence_spans": [
              {
                "heading": "7. Implement security and optimize performance",
                "start_line": 273,
                "end_line": 293,
                "span_lf_sha256": "f84b45f97696fbad7b8ddd955830345c35e3d94d0e3ee02b67fc9f55f798e7db"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Role/duty/privilege entry points, XDS intersections and separate data-service/data-management authorization are substantive.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Role/duty/privilege entry points, XDS intersections and separate data-service/data-management authorization are substantive.",
            "independent_repair_ids": []
          },
          {
            "wording": "Implement Extensible Data Security (XDS) policies",
            "objective_wording_sha256": "90076d52db6c04ccbab18944334b28ca6047f6285ccfb3eb219a741c9f76411c",
            "group": "Implement security policies and requirements",
            "group_number": 19,
            "objective_number": 4,
            "objective_id": "7.1.4",
            "domain": "Implement security and optimize performance (10–15%)",
            "version": "Skills measured as of January 30, 2026",
            "evidence_spans": [
              {
                "heading": "7. Implement security and optimize performance",
                "start_line": 273,
                "end_line": 293,
                "span_lf_sha256": "f84b45f97696fbad7b8ddd955830345c35e3d94d0e3ee02b67fc9f55f798e7db"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Role/duty/privilege entry points, XDS intersections and separate data-service/data-management authorization are substantive.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Role/duty/privilege entry points, XDS intersections and separate data-service/data-management authorization are substantive.",
            "independent_repair_ids": []
          },
          {
            "wording": "Apply caching mechanisms for tables and forms",
            "objective_wording_sha256": "c1d1eeab6389b1947e89269a0b1cb9e474267ce1968c69ea9bdfb523d55a6d7f",
            "group": "Apply fundamental performance optimization techniques",
            "group_number": 20,
            "objective_number": 1,
            "objective_id": "7.2.1",
            "domain": "Implement security and optimize performance (10–15%)",
            "version": "Skills measured as of January 30, 2026",
            "evidence_spans": [
              {
                "heading": "7. Implement security and optimize performance",
                "start_line": 273,
                "end_line": 293,
                "span_lf_sha256": "f84b45f97696fbad7b8ddd955830345c35e3d94d0e3ee02b67fc9f55f798e7db"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Cache lifetime, invalidation and company isolation are separated from temporary storage, set-based semantics and concurrency correctness; optimization requires comparable measurements.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Cache/invalidation/company isolation, temporary-table types and set-based/concurrency correctness are taught; global-cache singleton construction is only named.",
            "independent_repair_ids": []
          },
          {
            "wording": "Implement global cache and singleton",
            "objective_wording_sha256": "d9afd31d02e13ae2c3b7fb52294cc6c6dd6341b9094186a1be0b1afbc24b4e97",
            "group": "Apply fundamental performance optimization techniques",
            "group_number": 20,
            "objective_number": 2,
            "objective_id": "7.2.2",
            "domain": "Implement security and optimize performance (10–15%)",
            "version": "Skills measured as of January 30, 2026",
            "evidence_spans": [
              {
                "heading": "7. Implement security and optimize performance",
                "start_line": 273,
                "end_line": 293,
                "span_lf_sha256": "f84b45f97696fbad7b8ddd955830345c35e3d94d0e3ee02b67fc9f55f798e7db"
              },
              {
                "heading": "Distinguish cache lifetime from asynchronous execution",
                "start_line": 297,
                "end_line": 303,
                "span_lf_sha256": "fd5b1305f2951cf2398fe79a155238853e829172576e14d7ef65792e8f2fef86"
              }
            ],
            "initial_flag_disposition": "resolved",
            "reason": "Controlled singleton accessor/lifetime and namespace/company/currency/date cache find/miss/insert/remove/clear sequence include stale-value, other-company and access checks.",
            "initial_flag_reason": "Cache isolation and invalidation cautions present, but global-cache and singleton implementations absent.",
            "repair_id": [
              "exam-a-cache-sandbox"
            ],
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Cache isolation and invalidation cautions present, but global-cache and singleton implementations absent.",
            "independent_repair_ids": []
          },
          {
            "wording": "Create and modify temporary tables for optimization purposes",
            "objective_wording_sha256": "a0df0b9581b14fa837d417a774cd572d3068142088dd846e6bf75f78d2044aaa",
            "group": "Apply fundamental performance optimization techniques",
            "group_number": 20,
            "objective_number": 3,
            "objective_id": "7.2.3",
            "domain": "Implement security and optimize performance (10–15%)",
            "version": "Skills measured as of January 30, 2026",
            "evidence_spans": [
              {
                "heading": "7. Implement security and optimize performance",
                "start_line": 277,
                "end_line": 279,
                "span_lf_sha256": "5fcaf9274df0c5653d00ae8bbd7f5e10fb373a0589b5f41da880c76896c5312e"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "The reconciliation-preview design creates an AOT temporary table, chooses TableType and index, compares InMemory/TempDB joins and transaction behavior, and checks setTmpData versus linkPhysicalTableInstance, isolation and measured cost.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Cache/invalidation/company isolation, temporary-table types and set-based/concurrency correctness are taught; global-cache singleton construction is only named.",
            "independent_repair_ids": [
              "g04-a-02"
            ]
          },
          {
            "wording": "Assess when to use set-based queries or row-based queries",
            "objective_wording_sha256": "2d3db870e89b190bf550f6f35a0881fda4e77ff942c1a107493eecf3817d2945",
            "group": "Apply fundamental performance optimization techniques",
            "group_number": 20,
            "objective_number": 4,
            "objective_id": "7.2.4",
            "domain": "Implement security and optimize performance (10–15%)",
            "version": "Skills measured as of January 30, 2026",
            "evidence_spans": [
              {
                "heading": "7. Implement security and optimize performance",
                "start_line": 273,
                "end_line": 293,
                "span_lf_sha256": "f84b45f97696fbad7b8ddd955830345c35e3d94d0e3ee02b67fc9f55f798e7db"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Cache lifetime, invalidation and company isolation are separated from temporary storage, set-based semantics and concurrency correctness; optimization requires comparable measurements.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Cache/invalidation/company isolation, temporary-table types and set-based/concurrency correctness are taught; global-cache singleton construction is only named.",
            "independent_repair_ids": []
          },
          {
            "wording": "Modify queries to optimize performance",
            "objective_wording_sha256": "463cc5f4e4634310afb8ced4e2f5a726bbc3f43ac9a983db9073c19d14f638b7",
            "group": "Apply fundamental performance optimization techniques",
            "group_number": 20,
            "objective_number": 5,
            "objective_id": "7.2.5",
            "domain": "Implement security and optimize performance (10–15%)",
            "version": "Skills measured as of January 30, 2026",
            "evidence_spans": [
              {
                "heading": "7. Implement security and optimize performance",
                "start_line": 273,
                "end_line": 293,
                "span_lf_sha256": "f84b45f97696fbad7b8ddd955830345c35e3d94d0e3ee02b67fc9f55f798e7db"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Cache lifetime, invalidation and company isolation are separated from temporary storage, set-based semantics and concurrency correctness; optimization requires comparable measurements.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Cache/invalidation/company isolation, temporary-table types and set-based/concurrency correctness are taught; global-cache singleton construction is only named.",
            "independent_repair_ids": []
          },
          {
            "wording": "Modify variable scope to optimize performance",
            "objective_wording_sha256": "18bd28a65c38753ee91aaa1bb908c1833f188bc585cfdf93a630235586bb3a22",
            "group": "Apply fundamental performance optimization techniques",
            "group_number": 20,
            "objective_number": 6,
            "objective_id": "7.2.6",
            "domain": "Implement security and optimize performance (10–15%)",
            "version": "Skills measured as of January 30, 2026",
            "evidence_spans": [
              {
                "heading": "7. Implement security and optimize performance",
                "start_line": 273,
                "end_line": 293,
                "span_lf_sha256": "f84b45f97696fbad7b8ddd955830345c35e3d94d0e3ee02b67fc9f55f798e7db"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Cache lifetime, invalidation and company isolation are separated from temporary storage, set-based semantics and concurrency correctness; optimization requires comparable measurements.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Cache/invalidation/company isolation, temporary-table types and set-based/concurrency correctness are taught; global-cache singleton construction is only named.",
            "independent_repair_ids": []
          },
          {
            "wording": "Analyze and optimize concurrency",
            "objective_wording_sha256": "bde5da735be4a6046027b298f91e13a4118a9034dc0fbe3aba2c6df9f5dbc7c2",
            "group": "Apply fundamental performance optimization techniques",
            "group_number": 20,
            "objective_number": 7,
            "objective_id": "7.2.7",
            "domain": "Implement security and optimize performance (10–15%)",
            "version": "Skills measured as of January 30, 2026",
            "evidence_spans": [
              {
                "heading": "7. Implement security and optimize performance",
                "start_line": 273,
                "end_line": 293,
                "span_lf_sha256": "f84b45f97696fbad7b8ddd955830345c35e3d94d0e3ee02b67fc9f55f798e7db"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Cache lifetime, invalidation and company isolation are separated from temporary storage, set-based semantics and concurrency correctness; optimization requires comparable measurements.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Cache/invalidation/company isolation, temporary-table types and set-based/concurrency correctness are taught; global-cache singleton construction is only named.",
            "independent_repair_ids": []
          },
          {
            "wording": "Capture traces, and analyze traces by using Trace Parser",
            "objective_wording_sha256": "4fdf8563c4c72cd803f888f7f45f538933030ac5bf41dd979372c2db6cf020b0",
            "group": "Optimize performance",
            "group_number": 21,
            "objective_number": 1,
            "objective_id": "7.3.1",
            "domain": "Implement security and optimize performance (10–15%)",
            "version": "Skills measured as of January 30, 2026",
            "evidence_spans": [
              {
                "heading": "7. Implement security and optimize performance",
                "start_line": 273,
                "end_line": 293,
                "span_lf_sha256": "f84b45f97696fbad7b8ddd955830345c35e3d94d0e3ee02b67fc9f55f798e7db"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "A baseline/hypothesis/trace/query/index/measurement loop explains performance analysis, including representative volume and regression checks.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Baseline/trace/query/index loop is substantive; Async/Sandbox framework semantics are not taught.",
            "independent_repair_ids": []
          },
          {
            "wording": "Optimize performance for data entities, data source queries, batch processes, and reports",
            "objective_wording_sha256": "61767e7748057ba74a72bd29ab9d65e451497c5a9050e6912ee831e04b01eccb",
            "group": "Optimize performance",
            "group_number": 21,
            "objective_number": 2,
            "objective_id": "7.3.2",
            "domain": "Implement security and optimize performance (10–15%)",
            "version": "Skills measured as of January 30, 2026",
            "evidence_spans": [
              {
                "heading": "7. Implement security and optimize performance",
                "start_line": 273,
                "end_line": 293,
                "span_lf_sha256": "f84b45f97696fbad7b8ddd955830345c35e3d94d0e3ee02b67fc9f55f798e7db"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "A baseline/hypothesis/trace/query/index/measurement loop explains performance analysis, including representative volume and regression checks.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Baseline/trace/query/index loop is substantive; Async/Sandbox framework semantics are not taught.",
            "independent_repair_ids": []
          },
          {
            "wording": "Implement Async and Sandbox frameworks",
            "objective_wording_sha256": "59511b1ace681dcf674a1bf099cbb73f12ae0641ccbe3cd976bce55eb1582eeb",
            "group": "Optimize performance",
            "group_number": 21,
            "objective_number": 3,
            "objective_id": "7.3.3",
            "domain": "Implement security and optimize performance (10–15%)",
            "version": "Skills measured as of January 30, 2026",
            "evidence_spans": [
              {
                "heading": "7. Implement security and optimize performance",
                "start_line": 273,
                "end_line": 293,
                "span_lf_sha256": "f84b45f97696fbad7b8ddd955830345c35e3d94d0e3ee02b67fc9f55f798e7db"
              },
              {
                "heading": "Distinguish cache lifetime from asynchronous execution",
                "start_line": 297,
                "end_line": 303,
                "span_lf_sha256": "fd5b1305f2951cf2398fe79a155238853e829172576e14d7ef65792e8f2fef86"
              }
            ],
            "initial_flag_disposition": "resolved",
            "reason": "Separate async worker/UI-waiting sessions, static entry/state transfer and pack/unpack are distinguished from scheduled batch and environment sandboxes; cancellation/closed-form/API migration are explicit.",
            "initial_flag_reason": "Async/Sandbox names occur without explaining separate-session/UI/static-entry/state-transfer behavior.",
            "repair_id": [
              "exam-a-cache-sandbox"
            ],
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Async/Sandbox names occur without explaining separate-session/UI/static-entry/state-transfer behavior.",
            "independent_repair_ids": []
          },
          {
            "wording": "Create and modify indexes for tables and views",
            "objective_wording_sha256": "38f5a448e7bec17b0ed0a31eefd5ab13f5ce282c92446ef183b36c80a5c9c99f",
            "group": "Optimize performance",
            "group_number": 21,
            "objective_number": 4,
            "objective_id": "7.3.4",
            "domain": "Implement security and optimize performance (10–15%)",
            "version": "Skills measured as of January 30, 2026",
            "evidence_spans": [
              {
                "heading": "7. Implement security and optimize performance",
                "start_line": 273,
                "end_line": 293,
                "span_lf_sha256": "f84b45f97696fbad7b8ddd955830345c35e3d94d0e3ee02b67fc9f55f798e7db"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "A baseline/hypothesis/trace/query/index/measurement loop explains performance analysis, including representative volume and regression checks.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Baseline/trace/query/index loop is substantive; Async/Sandbox framework semantics are not taught.",
            "independent_repair_ids": []
          }
        ],
        "independent_repairs": 2
      },
      {
        "exam_code": "MB-800",
        "guide_path": "guides/MB-800-microsoft-dynamics-365-business-central-functional-consultant.md",
        "captured_final_guide_path": "C:\\src\\certification-study-library\\.maintenance\\2026-10-28-remaining-refresh\\group-04\\review-inputs\\MB-800-microsoft-dynamics-365-business-central-functional-consultant.md",
        "guide_lf_sha256": "9a328507ddf796c5a0c5bbd6665ef4957a7a9bc307e9f93dafc3c276cc907a5a",
        "objective_raw_sha256": "36a7035403d51e3f1558e097e03f5cd4da0949d205420aeb46a8bd2b4ff30a9d",
        "objective_count": 123,
        "group_count": 22,
        "line_count": 494,
        "diff_path": "C:\\src\\certification-study-library\\.maintenance\\2026-10-28-remaining-refresh\\group-04\\review-inputs\\MB-800.diff",
        "diff_raw_sha256": "5237ea005a1a013242f26cb160e4d3bc471236f1d0a5bf485f2f3126a374161a",
        "initial_flags": 16,
        "remaining_material_named_workflow_gaps": [],
        "source_gate_state": "passed per coordinator; separate from this semantic review",
        "current_mapping": [
          {
            "wording": "Create a company by using Assisted Setup",
            "objective_wording_sha256": "937ca9e1af338e1e0c9d4f5df7b3bde0b55417299fcfd45c61ca12825d02157e",
            "group": "Create and configure a company",
            "group_number": 1,
            "objective_number": 1,
            "objective_id": "1.1.1",
            "domain": "Set up Business Central (20–25%)",
            "version": "Skills measured as of June 30, 2026",
            "evidence_spans": [
              {
                "heading": "Create a company and move data",
                "start_line": 55,
                "end_line": 63,
                "span_lf_sha256": "b34b07204b09dd9a325303054538560259a00dba52a03ae6bac894873d4e1c0c"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Purpose, localization, dependency sequencing, journal openings and reconciliation/failure controls explain cutover design.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Purpose, localization, dependency sequencing, journal openings and reconciliation/failure controls explain cutover design.",
            "independent_repair_ids": []
          },
          {
            "wording": "Create a configuration worksheet",
            "objective_wording_sha256": "a6e91448bcb129fa544bf0a1410f56b66c79b4f0efeff6d58bcbc1fd2f763fd8",
            "group": "Create and configure a company",
            "group_number": 1,
            "objective_number": 2,
            "objective_id": "1.1.2",
            "domain": "Set up Business Central (20–25%)",
            "version": "Skills measured as of June 30, 2026",
            "evidence_spans": [
              {
                "heading": "Create a company and move data",
                "start_line": 55,
                "end_line": 63,
                "span_lf_sha256": "b34b07204b09dd9a325303054538560259a00dba52a03ae6bac894873d4e1c0c"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Purpose, localization, dependency sequencing, journal openings and reconciliation/failure controls explain cutover design.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Purpose, localization, dependency sequencing, journal openings and reconciliation/failure controls explain cutover design.",
            "independent_repair_ids": []
          },
          {
            "wording": "Create and use a configuration package",
            "objective_wording_sha256": "34be71f3554fcf424dd981da079759042338f3ddb9e802c5dbe89d7cc716c96f",
            "group": "Create and configure a company",
            "group_number": 1,
            "objective_number": 3,
            "objective_id": "1.1.3",
            "domain": "Set up Business Central (20–25%)",
            "version": "Skills measured as of June 30, 2026",
            "evidence_spans": [
              {
                "heading": "Create a company and move data",
                "start_line": 55,
                "end_line": 63,
                "span_lf_sha256": "b34b07204b09dd9a325303054538560259a00dba52a03ae6bac894873d4e1c0c"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Purpose, localization, dependency sequencing, journal openings and reconciliation/failure controls explain cutover design.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Purpose, localization, dependency sequencing, journal openings and reconciliation/failure controls explain cutover design.",
            "independent_repair_ids": []
          },
          {
            "wording": "Create journal opening balances",
            "objective_wording_sha256": "9c4835d1a65951ba9a3b1dde78ab806a7f91a440e5c8b213063c00f7eeca4c90",
            "group": "Create and configure a company",
            "group_number": 1,
            "objective_number": 4,
            "objective_id": "1.1.4",
            "domain": "Set up Business Central (20–25%)",
            "version": "Skills measured as of June 30, 2026",
            "evidence_spans": [
              {
                "heading": "Create a company and move data",
                "start_line": 55,
                "end_line": 63,
                "span_lf_sha256": "b34b07204b09dd9a325303054538560259a00dba52a03ae6bac894873d4e1c0c"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Purpose, localization, dependency sequencing, journal openings and reconciliation/failure controls explain cutover design.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Purpose, localization, dependency sequencing, journal openings and reconciliation/failure controls explain cutover design.",
            "independent_repair_ids": []
          },
          {
            "wording": "Migrate data to and within Business Central",
            "objective_wording_sha256": "172632c1f2d81a2763458c0102ce319c15a3af813dd2257d1349d1b1605c2c53",
            "group": "Create and configure a company",
            "group_number": 1,
            "objective_number": 5,
            "objective_id": "1.1.5",
            "domain": "Set up Business Central (20–25%)",
            "version": "Skills measured as of June 30, 2026",
            "evidence_spans": [
              {
                "heading": "Create a company and move data",
                "start_line": 55,
                "end_line": 63,
                "span_lf_sha256": "b34b07204b09dd9a325303054538560259a00dba52a03ae6bac894873d4e1c0c"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Purpose, localization, dependency sequencing, journal openings and reconciliation/failure controls explain cutover design.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Purpose, localization, dependency sequencing, journal openings and reconciliation/failure controls explain cutover design.",
            "independent_repair_ids": []
          },
          {
            "wording": "Create and assign user profiles",
            "objective_wording_sha256": "31ca4bf656043e08efff664e39bc8d88b6ae279734c0508b181befdf5743c1a7",
            "group": "Manage security",
            "group_number": 2,
            "objective_number": 1,
            "objective_id": "1.2.1",
            "domain": "Set up Business Central (20–25%)",
            "version": "Skills measured as of June 30, 2026",
            "evidence_spans": [
              {
                "heading": "Manage users and security",
                "start_line": 65,
                "end_line": 79,
                "span_lf_sha256": "dae775b23bc463de43f725c937b8467aa8de6ef3f66985c34600fa0101f40f7a"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Profiles, permission sets, groups and security filters have distinct responsibilities; combined-grant and denied-access tests explain effective security.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Profile/permissions/group/filter distinctions and combined-grant negative tests teach security; audit setup is only named.",
            "independent_repair_ids": []
          },
          {
            "wording": "Set up a new user",
            "objective_wording_sha256": "fd8f7786bc26cdbde33445d82953ef3e0fb65d64810a8d8abfcf3799ed0aecaf",
            "group": "Manage security",
            "group_number": 2,
            "objective_number": 2,
            "objective_id": "1.2.2",
            "domain": "Set up Business Central (20–25%)",
            "version": "Skills measured as of June 30, 2026",
            "evidence_spans": [
              {
                "heading": "Manage users and security",
                "start_line": 65,
                "end_line": 79,
                "span_lf_sha256": "dae775b23bc463de43f725c937b8467aa8de6ef3f66985c34600fa0101f40f7a"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Profiles, permission sets, groups and security filters have distinct responsibilities; combined-grant and denied-access tests explain effective security.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Profile/permissions/group/filter distinctions and combined-grant negative tests teach security; audit setup is only named.",
            "independent_repair_ids": []
          },
          {
            "wording": "Create permissions and permission sets",
            "objective_wording_sha256": "20fb07fd4f80e8c947fe90860d0923ab5f697b65234cf72e405aa64c8931d591",
            "group": "Manage security",
            "group_number": 2,
            "objective_number": 3,
            "objective_id": "1.2.3",
            "domain": "Set up Business Central (20–25%)",
            "version": "Skills measured as of June 30, 2026",
            "evidence_spans": [
              {
                "heading": "Manage users and security",
                "start_line": 65,
                "end_line": 79,
                "span_lf_sha256": "dae775b23bc463de43f725c937b8467aa8de6ef3f66985c34600fa0101f40f7a"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Profiles, permission sets, groups and security filters have distinct responsibilities; combined-grant and denied-access tests explain effective security.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Profile/permissions/group/filter distinctions and combined-grant negative tests teach security; audit setup is only named.",
            "independent_repair_ids": []
          },
          {
            "wording": "Apply security filters",
            "objective_wording_sha256": "a65a158d826560089bdec3664cb11faacb6d5077b961b4038d3246a4ddbd4937",
            "group": "Manage security",
            "group_number": 2,
            "objective_number": 4,
            "objective_id": "1.2.4",
            "domain": "Set up Business Central (20–25%)",
            "version": "Skills measured as of June 30, 2026",
            "evidence_spans": [
              {
                "heading": "Manage users and security",
                "start_line": 65,
                "end_line": 79,
                "span_lf_sha256": "dae775b23bc463de43f725c937b8467aa8de6ef3f66985c34600fa0101f40f7a"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Profiles, permission sets, groups and security filters have distinct responsibilities; combined-grant and denied-access tests explain effective security.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Profile/permissions/group/filter distinctions and combined-grant negative tests teach security; audit setup is only named.",
            "independent_repair_ids": []
          },
          {
            "wording": "Assign user permissions by using security groups and permission sets",
            "objective_wording_sha256": "6c8ff8713a1c80d5459679980dd137ff56d1f20d124ddf61b85fb093c5798257",
            "group": "Manage security",
            "group_number": 2,
            "objective_number": 5,
            "objective_id": "1.2.5",
            "domain": "Set up Business Central (20–25%)",
            "version": "Skills measured as of June 30, 2026",
            "evidence_spans": [
              {
                "heading": "Manage users and security",
                "start_line": 65,
                "end_line": 79,
                "span_lf_sha256": "dae775b23bc463de43f725c937b8467aa8de6ef3f66985c34600fa0101f40f7a"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Profiles, permission sets, groups and security filters have distinct responsibilities; combined-grant and denied-access tests explain effective security.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Profile/permissions/group/filter distinctions and combined-grant negative tests teach security; audit setup is only named.",
            "independent_repair_ids": []
          },
          {
            "wording": "Configure and use security auditing in Business Central",
            "objective_wording_sha256": "d506ff3dc04746e639b8509d505abb3a09db799aa697cd870d7111055d6025bb",
            "group": "Manage security",
            "group_number": 2,
            "objective_number": 6,
            "objective_id": "1.2.6",
            "domain": "Set up Business Central (20–25%)",
            "version": "Skills measured as of June 30, 2026",
            "evidence_spans": [
              {
                "heading": "Manage users and security",
                "start_line": 65,
                "end_line": 79,
                "span_lf_sha256": "dae775b23bc463de43f725c937b8467aa8de6ef3f66985c34600fa0101f40f7a"
              },
              {
                "heading": "Configure evidence before testing a permission change",
                "start_line": 81,
                "end_line": 85,
                "span_lf_sha256": "98343e64addc617eb6cd007de2c8fb9b254fa1848e6bebb8c53878e061c2c4ea"
              }
            ],
            "initial_flag_disposition": "resolved",
            "reason": "Change Log table/field/event selection and activation precede an authorized setup change and filtered entries; refresh, field-monitor overlap, denial and retention are distinct checks.",
            "initial_flag_reason": "Audit retention is discussed without enabling Change Log/selecting fields/starting logging and inspecting evidence.",
            "repair_id": [
              "exam-a-audit"
            ],
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Audit retention is discussed without enabling Change Log/selecting fields/starting logging and inspecting evidence.",
            "independent_repair_ids": []
          },
          {
            "wording": "Set up reports and configure report layouts",
            "objective_wording_sha256": "083a82538eae4ee861c4cb4892d4aa9efa9447f773b5e3889e6a6d4d10934f40",
            "group": "Set up core functionality",
            "group_number": 3,
            "objective_number": 1,
            "objective_id": "1.3.1",
            "domain": "Set up Business Central (20–25%)",
            "version": "Skills measured as of June 30, 2026",
            "evidence_spans": [
              {
                "heading": "Configure core functionality",
                "start_line": 87,
                "end_line": 105,
                "span_lf_sha256": "87e9025ae80329cceba6ec051bf1e5198d9925efb3e1fd412b2dcea9430fa1e2"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Numbering/layouts/job state and AI billing/review controls are substantively distinguished.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Numbering/layouts/job state and AI billing/review controls are substantively distinguished.",
            "independent_repair_ids": []
          },
          {
            "wording": "Set up and use job queues",
            "objective_wording_sha256": "6da9d4c1f41ebcc9701732e85bc3511e09895c919300f7bf1a5b41fadd2da509",
            "group": "Set up core functionality",
            "group_number": 3,
            "objective_number": 2,
            "objective_id": "1.3.2",
            "domain": "Set up Business Central (20–25%)",
            "version": "Skills measured as of June 30, 2026",
            "evidence_spans": [
              {
                "heading": "Configure core functionality",
                "start_line": 87,
                "end_line": 105,
                "span_lf_sha256": "87e9025ae80329cceba6ec051bf1e5198d9925efb3e1fd412b2dcea9430fa1e2"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Numbering/layouts/job state and AI billing/review controls are substantively distinguished.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Numbering/layouts/job state and AI billing/review controls are substantively distinguished.",
            "independent_repair_ids": []
          },
          {
            "wording": "Set up number series",
            "objective_wording_sha256": "01f8392e25a6916a2c5c7e1bc727323ec0237713bb1c6b7ecc4596a563a4c509",
            "group": "Set up core functionality",
            "group_number": 3,
            "objective_number": 3,
            "objective_id": "1.3.3",
            "domain": "Set up Business Central (20–25%)",
            "version": "Skills measured as of June 30, 2026",
            "evidence_spans": [
              {
                "heading": "Configure core functionality",
                "start_line": 87,
                "end_line": 105,
                "span_lf_sha256": "87e9025ae80329cceba6ec051bf1e5198d9925efb3e1fd412b2dcea9430fa1e2"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Numbering/layouts/job state and AI billing/review controls are substantively distinguished.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Numbering/layouts/job state and AI billing/review controls are substantively distinguished.",
            "independent_repair_ids": []
          },
          {
            "wording": "Enable Copilot and agent capabilities",
            "objective_wording_sha256": "ed0e58450e24bb364c72b723373f33f22d2036197b7b40c2cb785a44e2871ed5",
            "group": "Set up core functionality",
            "group_number": 3,
            "objective_number": 4,
            "objective_id": "1.3.4",
            "domain": "Set up Business Central (20–25%)",
            "version": "Skills measured as of June 30, 2026",
            "evidence_spans": [
              {
                "heading": "Configure core functionality",
                "start_line": 87,
                "end_line": 105,
                "span_lf_sha256": "87e9025ae80329cceba6ec051bf1e5198d9925efb3e1fd412b2dcea9430fa1e2"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Numbering/layouts/job state and AI billing/review controls are substantively distinguished.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Numbering/layouts/job state and AI billing/review controls are substantively distinguished.",
            "independent_repair_ids": []
          },
          {
            "wording": "Set up dimensions and dimension values",
            "objective_wording_sha256": "b0452ebd76b1e2435cc66a0e76b973ca0ab8b1dc6ca4264a4ce08a871c61eb64",
            "group": "Set up dimensions",
            "group_number": 4,
            "objective_number": 1,
            "objective_id": "1.4.1",
            "domain": "Set up Business Central (20–25%)",
            "version": "Skills measured as of June 30, 2026",
            "evidence_spans": [
              {
                "heading": "Set up dimensions",
                "start_line": 107,
                "end_line": 117,
                "span_lf_sha256": "ccb15a84d6f439003098e6e1fb2e423c7f64cd95d0b8d45ac8eada447c93d2be"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Dimension/value ownership, global versus shortcut dimensions, master defaults, blocked combinations and source priorities explain preventive dimension controls; posted correction has G/L-only scope.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Dimension values/defaults/priorities/blocking and posted G/L-only correction scope are explained; exact account-type default setup is not illustrated.",
            "independent_repair_ids": []
          },
          {
            "wording": "Set up global dimensions and shortcut dimensions",
            "objective_wording_sha256": "2eb77ceb6df286c04a7f8faf946d180c40fdec6f600898aa4a80dcda2f5bcd9c",
            "group": "Set up dimensions",
            "group_number": 4,
            "objective_number": 2,
            "objective_id": "1.4.2",
            "domain": "Set up Business Central (20–25%)",
            "version": "Skills measured as of June 30, 2026",
            "evidence_spans": [
              {
                "heading": "Set up dimensions",
                "start_line": 107,
                "end_line": 117,
                "span_lf_sha256": "ccb15a84d6f439003098e6e1fb2e423c7f64cd95d0b8d45ac8eada447c93d2be"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Dimension/value ownership, global versus shortcut dimensions, master defaults, blocked combinations and source priorities explain preventive dimension controls; posted correction has G/L-only scope.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Dimension values/defaults/priorities/blocking and posted G/L-only correction scope are explained; exact account-type default setup is not illustrated.",
            "independent_repair_ids": []
          },
          {
            "wording": "Set up default dimensions for master data",
            "objective_wording_sha256": "2c7ccdd4420c73da59c93063c698287c3ffd3ec1e9e98c4fb95e82f9cc76a66a",
            "group": "Set up dimensions",
            "group_number": 4,
            "objective_number": 3,
            "objective_id": "1.4.3",
            "domain": "Set up Business Central (20–25%)",
            "version": "Skills measured as of June 30, 2026",
            "evidence_spans": [
              {
                "heading": "Set up dimensions",
                "start_line": 107,
                "end_line": 117,
                "span_lf_sha256": "ccb15a84d6f439003098e6e1fb2e423c7f64cd95d0b8d45ac8eada447c93d2be"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Dimension/value ownership, global versus shortcut dimensions, master defaults, blocked combinations and source priorities explain preventive dimension controls; posted correction has G/L-only scope.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Dimension values/defaults/priorities/blocking and posted G/L-only correction scope are explained; exact account-type default setup is not illustrated.",
            "independent_repair_ids": []
          },
          {
            "wording": "Set up blocking combinations of dimensions and dimension values",
            "objective_wording_sha256": "af4b18a35824875459862f1811d4ceaf22fe032d8869972ed5f587efe28dc59b",
            "group": "Set up dimensions",
            "group_number": 4,
            "objective_number": 4,
            "objective_id": "1.4.4",
            "domain": "Set up Business Central (20–25%)",
            "version": "Skills measured as of June 30, 2026",
            "evidence_spans": [
              {
                "heading": "Set up dimensions",
                "start_line": 107,
                "end_line": 117,
                "span_lf_sha256": "ccb15a84d6f439003098e6e1fb2e423c7f64cd95d0b8d45ac8eada447c93d2be"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Dimension/value ownership, global versus shortcut dimensions, master defaults, blocked combinations and source priorities explain preventive dimension controls; posted correction has G/L-only scope.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Dimension values/defaults/priorities/blocking and posted G/L-only correction scope are explained; exact account-type default setup is not illustrated.",
            "independent_repair_ids": []
          },
          {
            "wording": "Set up default dimensions for account types",
            "objective_wording_sha256": "d76a1c651faf80df28bd1965ea1f2fa7fec0fd94c2f1a1541b98bb5c4e7c7b2f",
            "group": "Set up dimensions",
            "group_number": 4,
            "objective_number": 5,
            "objective_id": "1.4.5",
            "domain": "Set up Business Central (20–25%)",
            "version": "Skills measured as of June 30, 2026",
            "evidence_spans": [
              {
                "heading": "Set up dimensions",
                "start_line": 111,
                "end_line": 113,
                "span_lf_sha256": "536b7d3afdd1eb31f14640e4f171929189b79a6bbec9b25ed68e663b76fc98c9"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Account Type Default Dim. sets a type/value/Value Posting rule; SERVICE versus account-specific REPAIRS illustrates override, Code Mandatory permits required entry without a default, and source-code priorities remain a separate control.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Dimension values/defaults/priorities/blocking and posted G/L-only correction scope are explained; exact account-type default setup is not illustrated.",
            "independent_repair_ids": [
              "g04-a-03"
            ]
          },
          {
            "wording": "Set up default dimension priorities",
            "objective_wording_sha256": "045f8b346c1e092ef9f4d78c218c2ae5ab3c07c956031d818ddc43b43ba3c25f",
            "group": "Set up dimensions",
            "group_number": 4,
            "objective_number": 6,
            "objective_id": "1.4.6",
            "domain": "Set up Business Central (20–25%)",
            "version": "Skills measured as of June 30, 2026",
            "evidence_spans": [
              {
                "heading": "Set up dimensions",
                "start_line": 107,
                "end_line": 117,
                "span_lf_sha256": "ccb15a84d6f439003098e6e1fb2e423c7f64cd95d0b8d45ac8eada447c93d2be"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Dimension/value ownership, global versus shortcut dimensions, master defaults, blocked combinations and source priorities explain preventive dimension controls; posted correction has G/L-only scope.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Dimension values/defaults/priorities/blocking and posted G/L-only correction scope are explained; exact account-type default setup is not illustrated.",
            "independent_repair_ids": []
          },
          {
            "wording": "Set up native workflows",
            "objective_wording_sha256": "b0c3bd94dee673e214bd0d71ccf4062bb9fe4ee9b46c5e37ccb3af0e588cc1a6",
            "group": "Manage approvals by using workflows",
            "group_number": 5,
            "objective_number": 1,
            "objective_id": "1.5.1",
            "domain": "Set up Business Central (20–25%)",
            "version": "Skills measured as of June 30, 2026",
            "evidence_spans": [
              {
                "heading": "Manage approvals with workflows",
                "start_line": 119,
                "end_line": 125,
                "span_lf_sha256": "7a17f4cff9758e5b482995f4ee716624fd921477f9fac4e899df011c52ca6aa2"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Event/condition/response, user/group/limit/substitute, notifications and submit/reject/retry paths explain workflow design.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Event/condition/response, user/group/limit/substitute, notifications and submit/reject/retry paths explain workflow design.",
            "independent_repair_ids": []
          },
          {
            "wording": "Set up a notification system",
            "objective_wording_sha256": "61ef191ebd2928bd685f0cd704de654b24d527215ccc5e75714514bde3c29c81",
            "group": "Manage approvals by using workflows",
            "group_number": 5,
            "objective_number": 2,
            "objective_id": "1.5.2",
            "domain": "Set up Business Central (20–25%)",
            "version": "Skills measured as of June 30, 2026",
            "evidence_spans": [
              {
                "heading": "Manage approvals with workflows",
                "start_line": 119,
                "end_line": 125,
                "span_lf_sha256": "7a17f4cff9758e5b482995f4ee716624fd921477f9fac4e899df011c52ca6aa2"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Event/condition/response, user/group/limit/substitute, notifications and submit/reject/retry paths explain workflow design.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Event/condition/response, user/group/limit/substitute, notifications and submit/reject/retry paths explain workflow design.",
            "independent_repair_ids": []
          },
          {
            "wording": "Set up users for approval and workflow user groups",
            "objective_wording_sha256": "a79712ce1b27e9bce6c0fd4af86c561dc4d10d83c7afb1c79f56a1643ed7e5bb",
            "group": "Manage approvals by using workflows",
            "group_number": 5,
            "objective_number": 3,
            "objective_id": "1.5.3",
            "domain": "Set up Business Central (20–25%)",
            "version": "Skills measured as of June 30, 2026",
            "evidence_spans": [
              {
                "heading": "Manage approvals with workflows",
                "start_line": 119,
                "end_line": 125,
                "span_lf_sha256": "7a17f4cff9758e5b482995f4ee716624fd921477f9fac4e899df011c52ca6aa2"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Event/condition/response, user/group/limit/substitute, notifications and submit/reject/retry paths explain workflow design.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Event/condition/response, user/group/limit/substitute, notifications and submit/reject/retry paths explain workflow design.",
            "independent_repair_ids": []
          },
          {
            "wording": "Configure general ledger setup",
            "objective_wording_sha256": "8979162976531ea017546a64bee6ec47397648b9ad435c4a0a83b3b028ed8cb3",
            "group": "Set up financial management",
            "group_number": 6,
            "objective_number": 1,
            "objective_id": "2.1.1",
            "domain": "Configure financials (30–35%)",
            "version": "Skills measured as of June 30, 2026",
            "evidence_spans": [
              {
                "heading": "Financial policy and chart of accounts",
                "start_line": 131,
                "end_line": 137,
                "span_lf_sha256": "5f160ec8fe63f1d084b29930ff1ce1680e47fdb62a4a99b6e3abd600fdcb2369"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Company/user posting dates, terms/methods, deferral and currency controls explain financial setup at design level.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Company/user posting dates, terms/methods, deferral and currency controls explain financial setup at design level.",
            "independent_repair_ids": []
          },
          {
            "wording": "Configure accounting periods",
            "objective_wording_sha256": "194d434b44fd478a004e09d540baa9e80b3713f259f371f93a5f601daf9ec525",
            "group": "Set up financial management",
            "group_number": 6,
            "objective_number": 2,
            "objective_id": "2.1.2",
            "domain": "Configure financials (30–35%)",
            "version": "Skills measured as of June 30, 2026",
            "evidence_spans": [
              {
                "heading": "Financial policy and chart of accounts",
                "start_line": 131,
                "end_line": 137,
                "span_lf_sha256": "5f160ec8fe63f1d084b29930ff1ce1680e47fdb62a4a99b6e3abd600fdcb2369"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Company/user posting dates, terms/methods, deferral and currency controls explain financial setup at design level.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Company/user posting dates, terms/methods, deferral and currency controls explain financial setup at design level.",
            "independent_repair_ids": []
          },
          {
            "wording": "Set up payment terms",
            "objective_wording_sha256": "790ef7b31e3ab7dd82acbc85fe08d5bb6bf0df52908bd17f28d35261c6df8ef4",
            "group": "Set up financial management",
            "group_number": 6,
            "objective_number": 3,
            "objective_id": "2.1.3",
            "domain": "Configure financials (30–35%)",
            "version": "Skills measured as of June 30, 2026",
            "evidence_spans": [
              {
                "heading": "Financial policy and chart of accounts",
                "start_line": 131,
                "end_line": 137,
                "span_lf_sha256": "5f160ec8fe63f1d084b29930ff1ce1680e47fdb62a4a99b6e3abd600fdcb2369"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Company/user posting dates, terms/methods, deferral and currency controls explain financial setup at design level.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Company/user posting dates, terms/methods, deferral and currency controls explain financial setup at design level.",
            "independent_repair_ids": []
          },
          {
            "wording": "Set up deferrals",
            "objective_wording_sha256": "1aa75edc70917145c4b4de2b818eb09153bbb51113e0f19230eb999b30e18633",
            "group": "Set up financial management",
            "group_number": 6,
            "objective_number": 4,
            "objective_id": "2.1.4",
            "domain": "Configure financials (30–35%)",
            "version": "Skills measured as of June 30, 2026",
            "evidence_spans": [
              {
                "heading": "Financial policy and chart of accounts",
                "start_line": 131,
                "end_line": 137,
                "span_lf_sha256": "5f160ec8fe63f1d084b29930ff1ce1680e47fdb62a4a99b6e3abd600fdcb2369"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Company/user posting dates, terms/methods, deferral and currency controls explain financial setup at design level.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Company/user posting dates, terms/methods, deferral and currency controls explain financial setup at design level.",
            "independent_repair_ids": []
          },
          {
            "wording": "Configure currencies including exchange rates",
            "objective_wording_sha256": "29e89f472f6c4ee61196737caa75797f110c50176feda744e0f05695ceb715c0",
            "group": "Set up financial management",
            "group_number": 6,
            "objective_number": 5,
            "objective_id": "2.1.5",
            "domain": "Configure financials (30–35%)",
            "version": "Skills measured as of June 30, 2026",
            "evidence_spans": [
              {
                "heading": "Financial policy and chart of accounts",
                "start_line": 131,
                "end_line": 137,
                "span_lf_sha256": "5f160ec8fe63f1d084b29930ff1ce1680e47fdb62a4a99b6e3abd600fdcb2369"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Company/user posting dates, terms/methods, deferral and currency controls explain financial setup at design level.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Company/user posting dates, terms/methods, deferral and currency controls explain financial setup at design level.",
            "independent_repair_ids": []
          },
          {
            "wording": "Set up payment methods",
            "objective_wording_sha256": "419b8feb8b8aac899272be956c072b40cc698102c1836634854ff435afc68dae",
            "group": "Set up financial management",
            "group_number": 6,
            "objective_number": 6,
            "objective_id": "2.1.6",
            "domain": "Configure financials (30–35%)",
            "version": "Skills measured as of June 30, 2026",
            "evidence_spans": [
              {
                "heading": "Financial policy and chart of accounts",
                "start_line": 131,
                "end_line": 137,
                "span_lf_sha256": "5f160ec8fe63f1d084b29930ff1ce1680e47fdb62a4a99b6e3abd600fdcb2369"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Company/user posting dates, terms/methods, deferral and currency controls explain financial setup at design level.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Company/user posting dates, terms/methods, deferral and currency controls explain financial setup at design level.",
            "independent_repair_ids": []
          },
          {
            "wording": "Set up general ledger accounts",
            "objective_wording_sha256": "494d52e541c18c1b581fdb56c0d5e6107871c46270aa3113c40fc2cc4480375d",
            "group": "Manage the chart of accounts",
            "group_number": 7,
            "objective_number": 1,
            "objective_id": "2.2.1",
            "domain": "Configure financials (30–35%)",
            "version": "Skills measured as of June 30, 2026",
            "evidence_spans": [
              {
                "heading": "Financial policy and chart of accounts",
                "start_line": 131,
                "end_line": 137,
                "span_lf_sha256": "5f160ec8fe63f1d084b29930ff1ce1680e47fdb62a4a99b6e3abd600fdcb2369"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Account types/categories/dimensions and report rows/columns/grain are distinguished; allocation control is expanded in example5.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Account types/categories/dimensions and report rows/columns/grain are distinguished; allocation control is expanded in example5.",
            "independent_repair_ids": []
          },
          {
            "wording": "Create account categories and subcategories",
            "objective_wording_sha256": "a372f1c2284fc991e7caeef912b306e85b3fe39dd4b4b27dcbb811d5d7c928c5",
            "group": "Manage the chart of accounts",
            "group_number": 7,
            "objective_number": 2,
            "objective_id": "2.2.2",
            "domain": "Configure financials (30–35%)",
            "version": "Skills measured as of June 30, 2026",
            "evidence_spans": [
              {
                "heading": "Financial policy and chart of accounts",
                "start_line": 131,
                "end_line": 137,
                "span_lf_sha256": "5f160ec8fe63f1d084b29930ff1ce1680e47fdb62a4a99b6e3abd600fdcb2369"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Account types/categories/dimensions and report rows/columns/grain are distinguished; allocation control is expanded in example5.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Account types/categories/dimensions and report rows/columns/grain are distinguished; allocation control is expanded in example5.",
            "independent_repair_ids": []
          },
          {
            "wording": "Prepare financial reporting with financial data and account categories",
            "objective_wording_sha256": "53541778c241fc68d3224c720ddfc9f689146e8773da82c52a1fd9e685de2729",
            "group": "Manage the chart of accounts",
            "group_number": 7,
            "objective_number": 3,
            "objective_id": "2.2.3",
            "domain": "Configure financials (30–35%)",
            "version": "Skills measured as of June 30, 2026",
            "evidence_spans": [
              {
                "heading": "Financial policy and chart of accounts",
                "start_line": 131,
                "end_line": 137,
                "span_lf_sha256": "5f160ec8fe63f1d084b29930ff1ce1680e47fdb62a4a99b6e3abd600fdcb2369"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Account types/categories/dimensions and report rows/columns/grain are distinguished; allocation control is expanded in example5.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Account types/categories/dimensions and report rows/columns/grain are distinguished; allocation control is expanded in example5.",
            "independent_repair_ids": []
          },
          {
            "wording": "Set up general ledger allocations",
            "objective_wording_sha256": "4e7ee61ae40b014a00aeb57dfd4a9aa86fa962f158a49db1b459faeba0040f7c",
            "group": "Manage the chart of accounts",
            "group_number": 7,
            "objective_number": 4,
            "objective_id": "2.2.4",
            "domain": "Configure financials (30–35%)",
            "version": "Skills measured as of June 30, 2026",
            "evidence_spans": [
              {
                "heading": "Financial policy and chart of accounts",
                "start_line": 131,
                "end_line": 137,
                "span_lf_sha256": "5f160ec8fe63f1d084b29930ff1ce1680e47fdb62a4a99b6e3abd600fdcb2369"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Account types/categories/dimensions and report rows/columns/grain are distinguished; allocation control is expanded in example5.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Account types/categories/dimensions and report rows/columns/grain are distinguished; allocation control is expanded in example5.",
            "independent_repair_ids": []
          },
          {
            "wording": "Create specific posting groups",
            "objective_wording_sha256": "016eafdfcccf4ba9e40b4ef9f1407f4bca592a027681bd89b076d3deb34bc6dc",
            "group": "Set up posting groups",
            "group_number": 8,
            "objective_number": 1,
            "objective_id": "2.3.1",
            "domain": "Configure financials (30–35%)",
            "version": "Skills measured as of June 30, 2026",
            "evidence_spans": [
              {
                "heading": "Posting groups: predict the ledger before posting",
                "start_line": 139,
                "end_line": 147,
                "span_lf_sha256": "6afda71cb1bcc4d3d7aa6fcb981e790e71550fe99e1eb99a2e67c57add14f8b5"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Specific/general/inventory matrices and interim-account placement are concrete, with account prediction before posting.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Specific/general/inventory matrices and interim-account placement are concrete, with account prediction before posting.",
            "independent_repair_ids": []
          },
          {
            "wording": "Create general posting groups",
            "objective_wording_sha256": "295b3f739dc0b0465e3082cfbca54d308c7f5c9ea9bf268ddb7f2702292ad356",
            "group": "Set up posting groups",
            "group_number": 8,
            "objective_number": 2,
            "objective_id": "2.3.2",
            "domain": "Configure financials (30–35%)",
            "version": "Skills measured as of June 30, 2026",
            "evidence_spans": [
              {
                "heading": "Posting groups: predict the ledger before posting",
                "start_line": 139,
                "end_line": 147,
                "span_lf_sha256": "6afda71cb1bcc4d3d7aa6fcb981e790e71550fe99e1eb99a2e67c57add14f8b5"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Specific/general/inventory matrices and interim-account placement are concrete, with account prediction before posting.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Specific/general/inventory matrices and interim-account placement are concrete, with account prediction before posting.",
            "independent_repair_ids": []
          },
          {
            "wording": "Configure the general posting setup",
            "objective_wording_sha256": "201c3ca449e6369943e8709b7a35a9854c07c11c404435929a52b6f1cb769ea4",
            "group": "Set up posting groups",
            "group_number": 8,
            "objective_number": 3,
            "objective_id": "2.3.3",
            "domain": "Configure financials (30–35%)",
            "version": "Skills measured as of June 30, 2026",
            "evidence_spans": [
              {
                "heading": "Posting groups: predict the ledger before posting",
                "start_line": 139,
                "end_line": 147,
                "span_lf_sha256": "6afda71cb1bcc4d3d7aa6fcb981e790e71550fe99e1eb99a2e67c57add14f8b5"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Specific/general/inventory matrices and interim-account placement are concrete, with account prediction before posting.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Specific/general/inventory matrices and interim-account placement are concrete, with account prediction before posting.",
            "independent_repair_ids": []
          },
          {
            "wording": "Configure inventory posting setup",
            "objective_wording_sha256": "8455e93eb6f4addacebaff7f374fd659abf71460e71ec91637a6582c40d5207c",
            "group": "Set up posting groups",
            "group_number": 8,
            "objective_number": 4,
            "objective_id": "2.3.4",
            "domain": "Configure financials (30–35%)",
            "version": "Skills measured as of June 30, 2026",
            "evidence_spans": [
              {
                "heading": "Posting groups: predict the ledger before posting",
                "start_line": 139,
                "end_line": 147,
                "span_lf_sha256": "6afda71cb1bcc4d3d7aa6fcb981e790e71550fe99e1eb99a2e67c57add14f8b5"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Specific/general/inventory matrices and interim-account placement are concrete, with account prediction before posting.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Specific/general/inventory matrices and interim-account placement are concrete, with account prediction before posting.",
            "independent_repair_ids": []
          },
          {
            "wording": "Allow multiple posting groups",
            "objective_wording_sha256": "d10adfc267b8db4e159dc5f457a27c0f9172fcf928c314b5900f0a2aad73f247",
            "group": "Set up posting groups",
            "group_number": 8,
            "objective_number": 5,
            "objective_id": "2.3.5",
            "domain": "Configure financials (30–35%)",
            "version": "Skills measured as of June 30, 2026",
            "evidence_spans": [
              {
                "heading": "Posting groups: predict the ledger before posting",
                "start_line": 139,
                "end_line": 147,
                "span_lf_sha256": "6afda71cb1bcc4d3d7aa6fcb981e790e71550fe99e1eb99a2e67c57add14f8b5"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Specific/general/inventory matrices and interim-account placement are concrete, with account prediction before posting.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Specific/general/inventory matrices and interim-account placement are concrete, with account prediction before posting.",
            "independent_repair_ids": []
          },
          {
            "wording": "Set up bank accounts",
            "objective_wording_sha256": "e19fd2a6de804783d130a22aa23dfd92888aa84df6711fda13aacad9ad2652d8",
            "group": "Set up journals and bank accounts",
            "group_number": 9,
            "objective_number": 1,
            "objective_id": "2.4.1",
            "domain": "Configure financials (30–35%)",
            "version": "Skills measured as of June 30, 2026",
            "evidence_spans": [
              {
                "heading": "Journals and bank accounts",
                "start_line": 149,
                "end_line": 153,
                "span_lf_sha256": "3f923f212b6cfa734c0a94193eb565d1cac393508546eedf794a00b01cb334b9"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Template/batch/line and bank posting/currency/identifier/reversal controls distinguish configuration responsibilities.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Template/batch/line and bank posting/currency/identifier/reversal controls distinguish configuration responsibilities.",
            "independent_repair_ids": []
          },
          {
            "wording": "Create journal templates, including number series",
            "objective_wording_sha256": "15d77488e194a3fdb2e0e899c89cf7bee7e3392debb2af526f0da1b3735aa634",
            "group": "Set up journals and bank accounts",
            "group_number": 9,
            "objective_number": 2,
            "objective_id": "2.4.2",
            "domain": "Configure financials (30–35%)",
            "version": "Skills measured as of June 30, 2026",
            "evidence_spans": [
              {
                "heading": "Journals and bank accounts",
                "start_line": 149,
                "end_line": 153,
                "span_lf_sha256": "3f923f212b6cfa734c0a94193eb565d1cac393508546eedf794a00b01cb334b9"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Template/batch/line and bank posting/currency/identifier/reversal controls distinguish configuration responsibilities.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Template/batch/line and bank posting/currency/identifier/reversal controls distinguish configuration responsibilities.",
            "independent_repair_ids": []
          },
          {
            "wording": "Create batches",
            "objective_wording_sha256": "c6c2478444e13f51330dc61b23a42c64996ab599ac598ffbbd8a04656c198f09",
            "group": "Set up journals and bank accounts",
            "group_number": 9,
            "objective_number": 3,
            "objective_id": "2.4.3",
            "domain": "Configure financials (30–35%)",
            "version": "Skills measured as of June 30, 2026",
            "evidence_spans": [
              {
                "heading": "Journals and bank accounts",
                "start_line": 149,
                "end_line": 153,
                "span_lf_sha256": "3f923f212b6cfa734c0a94193eb565d1cac393508546eedf794a00b01cb334b9"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Template/batch/line and bank posting/currency/identifier/reversal controls distinguish configuration responsibilities.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Template/batch/line and bank posting/currency/identifier/reversal controls distinguish configuration responsibilities.",
            "independent_repair_ids": []
          },
          {
            "wording": "Create templates for recurring journals",
            "objective_wording_sha256": "8225d18766c4c9e1c4f239604e8a38a6f68a8ebd3035075efe354d4b43dfe743",
            "group": "Set up journals and bank accounts",
            "group_number": 9,
            "objective_number": 4,
            "objective_id": "2.4.4",
            "domain": "Configure financials (30–35%)",
            "version": "Skills measured as of June 30, 2026",
            "evidence_spans": [
              {
                "heading": "Journals and bank accounts",
                "start_line": 149,
                "end_line": 153,
                "span_lf_sha256": "3f923f212b6cfa734c0a94193eb565d1cac393508546eedf794a00b01cb334b9"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Template/batch/line and bank posting/currency/identifier/reversal controls distinguish configuration responsibilities.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Template/batch/line and bank posting/currency/identifier/reversal controls distinguish configuration responsibilities.",
            "independent_repair_ids": []
          },
          {
            "wording": "Create vendor accounts, including payment terms, vendor bank accounts, and related records",
            "objective_wording_sha256": "178a1ebbde1cd0eeca5ab07fc2af05f00b6f91e6fa1ae672231a5041afb1e039",
            "group": "Set up accounts payables",
            "group_number": 10,
            "objective_number": 1,
            "objective_id": "2.5.1",
            "domain": "Configure financials (30–35%)",
            "version": "Skills measured as of June 30, 2026",
            "evidence_spans": [
              {
                "heading": "Payables and receivables",
                "start_line": 155,
                "end_line": 161,
                "span_lf_sha256": "0133110fa10508bbde88853b74cc5280bdf52d93887b97036c2aaa68f0b1a416"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Vendor masters/setup/journal and detailed-ledger application/discount/currency chain is explained.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Vendor masters/setup/journal and detailed-ledger application/discount/currency chain is explained.",
            "independent_repair_ids": []
          },
          {
            "wording": "Configure Purchases & Payables Setup",
            "objective_wording_sha256": "ee2a3387cc45a58b940823acc3054d5df298538c40ebb81c2152594608fd312b",
            "group": "Set up accounts payables",
            "group_number": 10,
            "objective_number": 2,
            "objective_id": "2.5.2",
            "domain": "Configure financials (30–35%)",
            "version": "Skills measured as of June 30, 2026",
            "evidence_spans": [
              {
                "heading": "Payables and receivables",
                "start_line": 155,
                "end_line": 161,
                "span_lf_sha256": "0133110fa10508bbde88853b74cc5280bdf52d93887b97036c2aaa68f0b1a416"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Vendor masters/setup/journal and detailed-ledger application/discount/currency chain is explained.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Vendor masters/setup/journal and detailed-ledger application/discount/currency chain is explained.",
            "independent_repair_ids": []
          },
          {
            "wording": "Set up payment journals",
            "objective_wording_sha256": "cc27792806166062d5272fc463a07de6547a9afefe9b2adc21bb74ebc12d0937",
            "group": "Set up accounts payables",
            "group_number": 10,
            "objective_number": 3,
            "objective_id": "2.5.3",
            "domain": "Configure financials (30–35%)",
            "version": "Skills measured as of June 30, 2026",
            "evidence_spans": [
              {
                "heading": "Payables and receivables",
                "start_line": 155,
                "end_line": 161,
                "span_lf_sha256": "0133110fa10508bbde88853b74cc5280bdf52d93887b97036c2aaa68f0b1a416"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Vendor masters/setup/journal and detailed-ledger application/discount/currency chain is explained.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Vendor masters/setup/journal and detailed-ledger application/discount/currency chain is explained.",
            "independent_repair_ids": []
          },
          {
            "wording": "Assess the relationship between vendors, vendor ledger entries, detailed vendor ledger entries, and general ledger entries",
            "objective_wording_sha256": "81f5f4bbe0576a9664aa1e650c45cde37537aba24805b6a7853aeef7abb9d132",
            "group": "Set up accounts payables",
            "group_number": 10,
            "objective_number": 4,
            "objective_id": "2.5.4",
            "domain": "Configure financials (30–35%)",
            "version": "Skills measured as of June 30, 2026",
            "evidence_spans": [
              {
                "heading": "Payables and receivables",
                "start_line": 155,
                "end_line": 161,
                "span_lf_sha256": "0133110fa10508bbde88853b74cc5280bdf52d93887b97036c2aaa68f0b1a416"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Vendor masters/setup/journal and detailed-ledger application/discount/currency chain is explained.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Vendor masters/setup/journal and detailed-ledger application/discount/currency chain is explained.",
            "independent_repair_ids": []
          },
          {
            "wording": "Create customer accounts, including payment terms, payment methods, customer bank accounts, and related records",
            "objective_wording_sha256": "06e74698c44e878063144720e9339ff4e49cdef0641e5d73af3238b38b27484a",
            "group": "Set up accounts receivables",
            "group_number": 11,
            "objective_number": 1,
            "objective_id": "2.6.1",
            "domain": "Configure financials (30–35%)",
            "version": "Skills measured as of June 30, 2026",
            "evidence_spans": [
              {
                "heading": "Payables and receivables",
                "start_line": 155,
                "end_line": 161,
                "span_lf_sha256": "0133110fa10508bbde88853b74cc5280bdf52d93887b97036c2aaa68f0b1a416"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Customer masters/setup, cash receipt versus registration and detailed-ledger remaining amount chain is explained.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Customer masters/setup, cash receipt versus registration and detailed-ledger remaining amount chain is explained.",
            "independent_repair_ids": []
          },
          {
            "wording": "Configure Sales & Receivables Setup",
            "objective_wording_sha256": "a20e60784b28de0f64a0b22c0cee6b1ba41a1ec68520c2976f0892376b5791f6",
            "group": "Set up accounts receivables",
            "group_number": 11,
            "objective_number": 2,
            "objective_id": "2.6.2",
            "domain": "Configure financials (30–35%)",
            "version": "Skills measured as of June 30, 2026",
            "evidence_spans": [
              {
                "heading": "Payables and receivables",
                "start_line": 155,
                "end_line": 161,
                "span_lf_sha256": "0133110fa10508bbde88853b74cc5280bdf52d93887b97036c2aaa68f0b1a416"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Customer masters/setup, cash receipt versus registration and detailed-ledger remaining amount chain is explained.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Customer masters/setup, cash receipt versus registration and detailed-ledger remaining amount chain is explained.",
            "independent_repair_ids": []
          },
          {
            "wording": "Set up cash receipt journals",
            "objective_wording_sha256": "545f6891fbb54b900dc57bb20e71b870091389b89c80230052777373cd913f2e",
            "group": "Set up accounts receivables",
            "group_number": 11,
            "objective_number": 3,
            "objective_id": "2.6.3",
            "domain": "Configure financials (30–35%)",
            "version": "Skills measured as of June 30, 2026",
            "evidence_spans": [
              {
                "heading": "Payables and receivables",
                "start_line": 155,
                "end_line": 161,
                "span_lf_sha256": "0133110fa10508bbde88853b74cc5280bdf52d93887b97036c2aaa68f0b1a416"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Customer masters/setup, cash receipt versus registration and detailed-ledger remaining amount chain is explained.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Customer masters/setup, cash receipt versus registration and detailed-ledger remaining amount chain is explained.",
            "independent_repair_ids": []
          },
          {
            "wording": "Set up payment registration",
            "objective_wording_sha256": "4a1583f0432781c4b6ef73fc435526308933190bf1e8db3532cad7f070301ff9",
            "group": "Set up accounts receivables",
            "group_number": 11,
            "objective_number": 4,
            "objective_id": "2.6.4",
            "domain": "Configure financials (30–35%)",
            "version": "Skills measured as of June 30, 2026",
            "evidence_spans": [
              {
                "heading": "Payables and receivables",
                "start_line": 155,
                "end_line": 161,
                "span_lf_sha256": "0133110fa10508bbde88853b74cc5280bdf52d93887b97036c2aaa68f0b1a416"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Customer masters/setup, cash receipt versus registration and detailed-ledger remaining amount chain is explained.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Customer masters/setup, cash receipt versus registration and detailed-ledger remaining amount chain is explained.",
            "independent_repair_ids": []
          },
          {
            "wording": "Assess the relationship between customers, customer ledger entries, detailed customer ledger entries, and general ledger entries",
            "objective_wording_sha256": "e3254b592cce318c21c42f66f3bcf92673c71c2ca5e9dd8955a947174c8bac45",
            "group": "Set up accounts receivables",
            "group_number": 11,
            "objective_number": 5,
            "objective_id": "2.6.5",
            "domain": "Configure financials (30–35%)",
            "version": "Skills measured as of June 30, 2026",
            "evidence_spans": [
              {
                "heading": "Payables and receivables",
                "start_line": 155,
                "end_line": 161,
                "span_lf_sha256": "0133110fa10508bbde88853b74cc5280bdf52d93887b97036c2aaa68f0b1a416"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Customer masters/setup, cash receipt versus registration and detailed-ledger remaining amount chain is explained.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Customer masters/setup, cash receipt versus registration and detailed-ledger remaining amount chain is explained.",
            "independent_repair_ids": []
          },
          {
            "wording": "Configure fixed asset settings, including depreciation books and fixed asset classes and subclasses",
            "objective_wording_sha256": "8008c32a3e4d36c1fe01d79002c6bffa2bcea07bccfde688843d6f1e68a77a55",
            "group": "Configure fixed assets",
            "group_number": 12,
            "objective_number": 1,
            "objective_id": "2.7.1",
            "domain": "Configure financials (30–35%)",
            "version": "Skills measured as of June 30, 2026",
            "evidence_spans": [
              {
                "heading": "Fixed assets",
                "start_line": 163,
                "end_line": 169,
                "span_lf_sha256": "79c015d1f59979f68638648318ec2d9c31a6f77c428f676208034da38dacb6e1"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Fixed Asset Setup, classes/subclasses, locations, posting groups and depreciation books have distinct structure, valuation and G/L-routing responsibilities.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Asset/book/posting-group roles are explained; methods are merely listed and main-asset/component setup is not illustrated.",
            "independent_repair_ids": []
          },
          {
            "wording": "Create and modify fixed assets, main assets, and components",
            "objective_wording_sha256": "84e0d660e68441f16918b1ab5555f20f283c2a7a389156904688b73eeb2f8eff",
            "group": "Configure fixed assets",
            "group_number": 12,
            "objective_number": 2,
            "objective_id": "2.7.2",
            "domain": "Configure financials (30–35%)",
            "version": "Skills measured as of June 30, 2026",
            "evidence_spans": [
              {
                "heading": "Fixed assets",
                "start_line": 165,
                "end_line": 167,
                "span_lf_sha256": "9f4c60f89bbee0934844a60e9edc4ed16aac0a59aa302b8734e4d6737ad67730"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Separate line/motor asset cards receive books, Main Asset Components links the motor FA No., Allow Posting to Main Assets is deliberately chosen, and changes are checked against each asset ledger without assuming grouping transfers value.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Asset/book/posting-group roles are explained; methods are merely listed and main-asset/component setup is not illustrated.",
            "independent_repair_ids": [
              "g04-a-04"
            ]
          },
          {
            "wording": "Differentiate between different depreciation methods",
            "objective_wording_sha256": "c7d9326a8c2c1bfa78dcc04d54219bd5d23e090d06813b6462792c3462bfc196",
            "group": "Configure fixed assets",
            "group_number": 12,
            "objective_number": 3,
            "objective_id": "2.7.3",
            "domain": "Configure financials (30–35%)",
            "version": "Skills measured as of June 30, 2026",
            "evidence_spans": [
              {
                "heading": "Fixed assets",
                "start_line": 163,
                "end_line": 169,
                "span_lf_sha256": "79c015d1f59979f68638648318ec2d9c31a6f77c428f676208034da38dacb6e1"
              },
              {
                "heading": "Prove depreciation and inventory changes through entries",
                "start_line": 267,
                "end_line": 275,
                "span_lf_sha256": "c3f7a34b910a77c196d7c1cc5c92922a80678e8191ba35210d34dac7756ab47b"
              }
            ],
            "initial_flag_disposition": "resolved",
            "reason": "Straight-line, declining, combined, manual and user-defined methods are compared with6000 versus5400/3780 paper amounts and explicit book/day-convention limits.",
            "initial_flag_reason": "Straight-line/declining-balance are named but never contrasted by calculation.",
            "repair_id": [
              "exam-a-asset-inventory-workflows"
            ],
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Straight-line/declining-balance are named but never contrasted by calculation.",
            "independent_repair_ids": []
          },
          {
            "wording": "Configure inventory setup",
            "objective_wording_sha256": "d7a77578559312bc6edd8e4fb965c41317fa37467296543699de9a244ff71d38",
            "group": "Set up inventory",
            "group_number": 13,
            "objective_number": 1,
            "objective_id": "3.1.1",
            "domain": "Configure sales and purchasing (10–15%)",
            "version": "Skills measured as of June 30, 2026",
            "evidence_spans": [
              {
                "heading": "Inventory and item structure",
                "start_line": 175,
                "end_line": 181,
                "span_lf_sha256": "9aee18ac6e36c8201adb242df7f39cc271b7fdb027ad33b945cee4a525d971c7"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Item categories, attributes, units, variants, locations and SKU overrides are explained alongside the item/value/G/L entry chain and separate cost-adjustment/posting controls.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Items/UOM/variant/location/SKU and quantity/value/G/L chain plus adjustment-versus-cost-posting are substantive; costing methods are not compared.",
            "independent_repair_ids": []
          },
          {
            "wording": "Configure core item settings, including item categories, item attributes, units of measure, and item variants",
            "objective_wording_sha256": "afe48e819f44b2853887c041379882919463e10a6bf26b2b401668d5fc2b4df8",
            "group": "Set up inventory",
            "group_number": 13,
            "objective_number": 2,
            "objective_id": "3.1.2",
            "domain": "Configure sales and purchasing (10–15%)",
            "version": "Skills measured as of June 30, 2026",
            "evidence_spans": [
              {
                "heading": "Inventory and item structure",
                "start_line": 175,
                "end_line": 181,
                "span_lf_sha256": "9aee18ac6e36c8201adb242df7f39cc271b7fdb027ad33b945cee4a525d971c7"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Item categories, attributes, units, variants, locations and SKU overrides are explained alongside the item/value/G/L entry chain and separate cost-adjustment/posting controls.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Items/UOM/variant/location/SKU and quantity/value/G/L chain plus adjustment-versus-cost-posting are substantive; costing methods are not compared.",
            "independent_repair_ids": []
          },
          {
            "wording": "Create locations",
            "objective_wording_sha256": "5d9acd09432e68046fb0fec0f5ba87290df95821f5522538ce404e2a3710fbbd",
            "group": "Set up inventory",
            "group_number": 13,
            "objective_number": 3,
            "objective_id": "3.1.3",
            "domain": "Configure sales and purchasing (10–15%)",
            "version": "Skills measured as of June 30, 2026",
            "evidence_spans": [
              {
                "heading": "Inventory and item structure",
                "start_line": 175,
                "end_line": 181,
                "span_lf_sha256": "9aee18ac6e36c8201adb242df7f39cc271b7fdb027ad33b945cee4a525d971c7"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Item categories, attributes, units, variants, locations and SKU overrides are explained alongside the item/value/G/L entry chain and separate cost-adjustment/posting controls.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Items/UOM/variant/location/SKU and quantity/value/G/L chain plus adjustment-versus-cost-posting are substantive; costing methods are not compared.",
            "independent_repair_ids": []
          },
          {
            "wording": "Assess the relationship between items, item ledger entries, value entries, and general ledger entries",
            "objective_wording_sha256": "dde1f26817f7be5bf4e3408cac81fff4bde92c443dd3b6ce7a57445c02580dee",
            "group": "Set up inventory",
            "group_number": 13,
            "objective_number": 4,
            "objective_id": "3.1.4",
            "domain": "Configure sales and purchasing (10–15%)",
            "version": "Skills measured as of June 30, 2026",
            "evidence_spans": [
              {
                "heading": "Inventory and item structure",
                "start_line": 175,
                "end_line": 181,
                "span_lf_sha256": "9aee18ac6e36c8201adb242df7f39cc271b7fdb027ad33b945cee4a525d971c7"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Item categories, attributes, units, variants, locations and SKU overrides are explained alongside the item/value/G/L entry chain and separate cost-adjustment/posting controls.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Items/UOM/variant/location/SKU and quantity/value/G/L chain plus adjustment-versus-cost-posting are substantive; costing methods are not compared.",
            "independent_repair_ids": []
          },
          {
            "wording": "Differentiate between costing methods",
            "objective_wording_sha256": "8975bfd9b345512774e40a130dcdb91b0795872f26b261da48126eb1438db26a",
            "group": "Set up inventory",
            "group_number": 13,
            "objective_number": 5,
            "objective_id": "3.1.5",
            "domain": "Configure sales and purchasing (10–15%)",
            "version": "Skills measured as of June 30, 2026",
            "evidence_spans": [
              {
                "heading": "Inventory and item structure",
                "start_line": 175,
                "end_line": 181,
                "span_lf_sha256": "9aee18ac6e36c8201adb242df7f39cc271b7fdb027ad33b945cee4a525d971c7"
              },
              {
                "heading": "Compare the cost assumption before choosing the item method",
                "start_line": 183,
                "end_line": 195,
                "span_lf_sha256": "39e2070a8b47640e7aad1238a44b2756c883d13cbfec7fc0bca5051194acdc2f"
              }
            ],
            "initial_flag_disposition": "resolved",
            "reason": "FIFO/Average/Specific/Standard/LIFO are distinguished by assignment basis and40/50/identified/45 example; tracking, period, variance and later adjustment conditions remain visible.",
            "initial_flag_reason": "FIFO/Average/Specific/Standard are named but not compared; only a FIFO adjustment example exists.",
            "repair_id": [
              "exam-a-costing"
            ],
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "FIFO/Average/Specific/Standard are named but not compared; only a FIFO adjustment example exists.",
            "independent_repair_ids": []
          },
          {
            "wording": "Configure stockkeeping units",
            "objective_wording_sha256": "f28f77259bedf859631df177c174e3b9b2c6f6093909d49cc3ab7452272ecec2",
            "group": "Set up inventory",
            "group_number": 13,
            "objective_number": 6,
            "objective_id": "3.1.6",
            "domain": "Configure sales and purchasing (10–15%)",
            "version": "Skills measured as of June 30, 2026",
            "evidence_spans": [
              {
                "heading": "Inventory and item structure",
                "start_line": 175,
                "end_line": 181,
                "span_lf_sha256": "9aee18ac6e36c8201adb242df7f39cc271b7fdb027ad33b945cee4a525d971c7"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Item categories, attributes, units, variants, locations and SKU overrides are explained alongside the item/value/G/L entry chain and separate cost-adjustment/posting controls.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Items/UOM/variant/location/SKU and quantity/value/G/L chain plus adjustment-versus-cost-posting are substantive; costing methods are not compared.",
            "independent_repair_ids": []
          },
          {
            "wording": "Configure core customer settings including shipping agents, locations, and shipping addresses",
            "objective_wording_sha256": "6da3f016372b3e972606887aaf28abceded4eac7a326f87c036de41ef1bf9b2c",
            "group": "Configure master data for sales and purchasing",
            "group_number": 14,
            "objective_number": 1,
            "objective_id": "3.2.1",
            "domain": "Configure sales and purchasing (10–15%)",
            "version": "Skills measured as of June 30, 2026",
            "evidence_spans": [
              {
                "heading": "Customer and vendor master data",
                "start_line": 197,
                "end_line": 199,
                "span_lf_sha256": "65774e3d9c7492855ace019e32fbd74b9c77d88946dfe0f0c3c03912f4998789"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Legal/payment identity versus shipping/order defaults and controlled templates explain master-data decisions.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Legal/payment identity versus shipping/order defaults and controlled templates explain master-data decisions.",
            "independent_repair_ids": []
          },
          {
            "wording": "Configure core vendor settings including order address, lead time, and locations",
            "objective_wording_sha256": "657d323699349bfc57a98898cdec8f4229e3dbed45fcf8d066cfb75f1406477b",
            "group": "Configure master data for sales and purchasing",
            "group_number": 14,
            "objective_number": 2,
            "objective_id": "3.2.2",
            "domain": "Configure sales and purchasing (10–15%)",
            "version": "Skills measured as of June 30, 2026",
            "evidence_spans": [
              {
                "heading": "Customer and vendor master data",
                "start_line": 197,
                "end_line": 199,
                "span_lf_sha256": "65774e3d9c7492855ace019e32fbd74b9c77d88946dfe0f0c3c03912f4998789"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Legal/payment identity versus shipping/order defaults and controlled templates explain master-data decisions.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Legal/payment identity versus shipping/order defaults and controlled templates explain master-data decisions.",
            "independent_repair_ids": []
          },
          {
            "wording": "Manage vendor purchase prices",
            "objective_wording_sha256": "78daf578eb6357ae19776a3f042a3b31f2d5beede1da7af62d265698caa2ab34",
            "group": "Manage pricing and discounts",
            "group_number": 15,
            "objective_number": 1,
            "objective_id": "3.3.1",
            "domain": "Configure sales and purchasing (10–15%)",
            "version": "Skills measured as of June 30, 2026",
            "evidence_spans": [
              {
                "heading": "Prices and discounts",
                "start_line": 201,
                "end_line": 209,
                "span_lf_sha256": "e68533d05d812758889540db05929bf2b7f1c89a53ca8ef926d282f11f1d83d9"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Eligibility/date/currency/UOM/quantity/active-list and sequential discounts are substantive and exercised numerically.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Eligibility/date/currency/UOM/quantity/active-list and sequential discounts are substantive and exercised numerically.",
            "independent_repair_ids": []
          },
          {
            "wording": "Manage purchase line and invoice discounts",
            "objective_wording_sha256": "ec7946dd2720a921ed3616eefdfcd4d8cc4d8ce0f7c1139048fc178ca900c6df",
            "group": "Manage pricing and discounts",
            "group_number": 15,
            "objective_number": 2,
            "objective_id": "3.3.2",
            "domain": "Configure sales and purchasing (10–15%)",
            "version": "Skills measured as of June 30, 2026",
            "evidence_spans": [
              {
                "heading": "Prices and discounts",
                "start_line": 201,
                "end_line": 209,
                "span_lf_sha256": "e68533d05d812758889540db05929bf2b7f1c89a53ca8ef926d282f11f1d83d9"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Eligibility/date/currency/UOM/quantity/active-list and sequential discounts are substantive and exercised numerically.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Eligibility/date/currency/UOM/quantity/active-list and sequential discounts are substantive and exercised numerically.",
            "independent_repair_ids": []
          },
          {
            "wording": "Manage customer sales prices",
            "objective_wording_sha256": "435da218961737f8922e4e48c6582ea0c4e46e7b4a639b8b6d88292119c52ee8",
            "group": "Manage pricing and discounts",
            "group_number": 15,
            "objective_number": 3,
            "objective_id": "3.3.3",
            "domain": "Configure sales and purchasing (10–15%)",
            "version": "Skills measured as of June 30, 2026",
            "evidence_spans": [
              {
                "heading": "Prices and discounts",
                "start_line": 201,
                "end_line": 209,
                "span_lf_sha256": "e68533d05d812758889540db05929bf2b7f1c89a53ca8ef926d282f11f1d83d9"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Eligibility/date/currency/UOM/quantity/active-list and sequential discounts are substantive and exercised numerically.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Eligibility/date/currency/UOM/quantity/active-list and sequential discounts are substantive and exercised numerically.",
            "independent_repair_ids": []
          },
          {
            "wording": "Manage sales line and invoice discounts",
            "objective_wording_sha256": "f68b48ea659c4e09036a8e4ad602bece676ccf41ae4223d5a6bd6c7af0a9eb96",
            "group": "Manage pricing and discounts",
            "group_number": 15,
            "objective_number": 4,
            "objective_id": "3.3.4",
            "domain": "Configure sales and purchasing (10–15%)",
            "version": "Skills measured as of June 30, 2026",
            "evidence_spans": [
              {
                "heading": "Prices and discounts",
                "start_line": 201,
                "end_line": 209,
                "span_lf_sha256": "e68533d05d812758889540db05929bf2b7f1c89a53ca8ef926d282f11f1d83d9"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Eligibility/date/currency/UOM/quantity/active-list and sequential discounts are substantive and exercised numerically.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Eligibility/date/currency/UOM/quantity/active-list and sequential discounts are substantive and exercised numerically.",
            "independent_repair_ids": []
          },
          {
            "wording": "Differentiate between designing, customizing, and personalizing pages",
            "objective_wording_sha256": "47236ed170776468c5a87e88362677d0a1107bd03f33d26e674c4640f9d17876",
            "group": "Perform basic tasks in Business Central",
            "group_number": 16,
            "objective_number": 1,
            "objective_id": "4.1.1",
            "domain": "Perform Business Central operations (30–35%)",
            "version": "Skills measured as of June 30, 2026",
            "evidence_spans": [
              {
                "heading": "Navigate, personalize and analyze",
                "start_line": 215,
                "end_line": 219,
                "span_lf_sha256": "573b08c0a84571d7b99f0e3289a709e79c16c52587f16eb88f9c9419dbde859b"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Development, profile customization and user personalization have separate ownership; saved filters, page inspection, Edit in Excel publication and analysis-mode grouping/pivots have defined scope and permission checks.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Design/customize/personalize roles, filters/inspection and Excel publish versus export are explained, but no maker/analysis example.",
            "independent_repair_ids": []
          },
          {
            "wording": "Customize pages",
            "objective_wording_sha256": "fede8e5f769468458a68e25bd5c70d2b1a326fe567bae62e3de66fe1fb503b0f",
            "group": "Perform basic tasks in Business Central",
            "group_number": 16,
            "objective_number": 2,
            "objective_id": "4.1.2",
            "domain": "Perform Business Central operations (30–35%)",
            "version": "Skills measured as of June 30, 2026",
            "evidence_spans": [
              {
                "heading": "Navigate, personalize and analyze",
                "start_line": 215,
                "end_line": 219,
                "span_lf_sha256": "573b08c0a84571d7b99f0e3289a709e79c16c52587f16eb88f9c9419dbde859b"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Development, profile customization and user personalization have separate ownership; saved filters, page inspection, Edit in Excel publication and analysis-mode grouping/pivots have defined scope and permission checks.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Design/customize/personalize roles, filters/inspection and Excel publish versus export are explained, but no maker/analysis example.",
            "independent_repair_ids": []
          },
          {
            "wording": "Apply and save filters",
            "objective_wording_sha256": "516f885b0bed638b6788cfd3d9140fd18f70532f33ec524f53ab65a03d4c76c1",
            "group": "Perform basic tasks in Business Central",
            "group_number": 16,
            "objective_number": 3,
            "objective_id": "4.1.3",
            "domain": "Perform Business Central operations (30–35%)",
            "version": "Skills measured as of June 30, 2026",
            "evidence_spans": [
              {
                "heading": "Navigate, personalize and analyze",
                "start_line": 215,
                "end_line": 219,
                "span_lf_sha256": "573b08c0a84571d7b99f0e3289a709e79c16c52587f16eb88f9c9419dbde859b"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Development, profile customization and user personalization have separate ownership; saved filters, page inspection, Edit in Excel publication and analysis-mode grouping/pivots have defined scope and permission checks.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Design/customize/personalize roles, filters/inspection and Excel publish versus export are explained, but no maker/analysis example.",
            "independent_repair_ids": []
          },
          {
            "wording": "Find documents and related entries",
            "objective_wording_sha256": "aed90bbc40bf9abe0649e315822f84dfbec4e78e2c59bd44449fceeae8c2422d",
            "group": "Perform basic tasks in Business Central",
            "group_number": 16,
            "objective_number": 4,
            "objective_id": "4.1.4",
            "domain": "Perform Business Central operations (30–35%)",
            "version": "Skills measured as of June 30, 2026",
            "evidence_spans": [
              {
                "heading": "Navigate, personalize and analyze",
                "start_line": 215,
                "end_line": 219,
                "span_lf_sha256": "573b08c0a84571d7b99f0e3289a709e79c16c52587f16eb88f9c9419dbde859b"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Development, profile customization and user personalization have separate ownership; saved filters, page inspection, Edit in Excel publication and analysis-mode grouping/pivots have defined scope and permission checks.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Design/customize/personalize roles, filters/inspection and Excel publish versus export are explained, but no maker/analysis example.",
            "independent_repair_ids": []
          },
          {
            "wording": "Inspect pages",
            "objective_wording_sha256": "ff04eef5b6a94ab0d2e96d599e731d62199baaea3abbd77480e07ae90ceea845",
            "group": "Perform basic tasks in Business Central",
            "group_number": 16,
            "objective_number": 5,
            "objective_id": "4.1.5",
            "domain": "Perform Business Central operations (30–35%)",
            "version": "Skills measured as of June 30, 2026",
            "evidence_spans": [
              {
                "heading": "Navigate, personalize and analyze",
                "start_line": 215,
                "end_line": 219,
                "span_lf_sha256": "573b08c0a84571d7b99f0e3289a709e79c16c52587f16eb88f9c9419dbde859b"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Development, profile customization and user personalization have separate ownership; saved filters, page inspection, Edit in Excel publication and analysis-mode grouping/pivots have defined scope and permission checks.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Design/customize/personalize roles, filters/inspection and Excel publish versus export are explained, but no maker/analysis example.",
            "independent_repair_ids": []
          },
          {
            "wording": "Perform data updates by using the Edit in Excel feature",
            "objective_wording_sha256": "8aee51d75cf9b3600e2dabdf57808bf212cf05a37998afd2d926722c2a9e7177",
            "group": "Perform basic tasks in Business Central",
            "group_number": 16,
            "objective_number": 6,
            "objective_id": "4.1.6",
            "domain": "Perform Business Central operations (30–35%)",
            "version": "Skills measured as of June 30, 2026",
            "evidence_spans": [
              {
                "heading": "Navigate, personalize and analyze",
                "start_line": 215,
                "end_line": 219,
                "span_lf_sha256": "573b08c0a84571d7b99f0e3289a709e79c16c52587f16eb88f9c9419dbde859b"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Development, profile customization and user personalization have separate ownership; saved filters, page inspection, Edit in Excel publication and analysis-mode grouping/pivots have defined scope and permission checks.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Design/customize/personalize roles, filters/inspection and Excel publish versus export are explained, but no maker/analysis example.",
            "independent_repair_ids": []
          },
          {
            "wording": "Configure and use data analysis mode",
            "objective_wording_sha256": "4a0903b7840ad8b7854c43a0e1f2e8690f6aa282c8200cfae719a74b8d968b31",
            "group": "Perform basic tasks in Business Central",
            "group_number": 16,
            "objective_number": 7,
            "objective_id": "4.1.7",
            "domain": "Perform Business Central operations (30–35%)",
            "version": "Skills measured as of June 30, 2026",
            "evidence_spans": [
              {
                "heading": "Navigate, personalize and analyze",
                "start_line": 215,
                "end_line": 219,
                "span_lf_sha256": "573b08c0a84571d7b99f0e3289a709e79c16c52587f16eb88f9c9419dbde859b"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Development, profile customization and user personalization have separate ownership; saved filters, page inspection, Edit in Excel publication and analysis-mode grouping/pivots have defined scope and permission checks.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Design/customize/personalize roles, filters/inspection and Excel publish versus export are explained, but no maker/analysis example.",
            "independent_repair_ids": []
          },
          {
            "wording": "Personalize pages",
            "objective_wording_sha256": "f0c6a786ea9279011dc6add43134d0057958c6fa74849d07cba566ae0e62dd0a",
            "group": "Perform basic tasks in Business Central",
            "group_number": 16,
            "objective_number": 8,
            "objective_id": "4.1.8",
            "domain": "Perform Business Central operations (30–35%)",
            "version": "Skills measured as of June 30, 2026",
            "evidence_spans": [
              {
                "heading": "Navigate, personalize and analyze",
                "start_line": 215,
                "end_line": 219,
                "span_lf_sha256": "573b08c0a84571d7b99f0e3289a709e79c16c52587f16eb88f9c9419dbde859b"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Development, profile customization and user personalization have separate ownership; saved filters, page inspection, Edit in Excel publication and analysis-mode grouping/pivots have defined scope and permission checks.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Design/customize/personalize roles, filters/inspection and Excel publish versus export are explained, but no maker/analysis example.",
            "independent_repair_ids": []
          },
          {
            "wording": "Manage quotes",
            "objective_wording_sha256": "fddc933a3102369d2b60d2f1dd39d0b84842d8f7a011724d1796f0dbc686890c",
            "group": "Process purchases",
            "group_number": 17,
            "objective_number": 1,
            "objective_id": "4.2.1",
            "domain": "Perform Business Central operations (30–35%)",
            "version": "Skills measured as of June 30, 2026",
            "evidence_spans": [
              {
                "heading": "Purchase and sales documents",
                "start_line": 221,
                "end_line": 231,
                "span_lf_sha256": "38ad772720f32726a6392af39b5d15228dd622a201bade6ad464723378343c2b"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Purchase quote/order, receipt and invoice states are distinguished with over-receipt tolerance/approval and supported receipt correction; deferrals separate recognition timing.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Physical-versus-financial quantities, tolerance and correction boundaries are taught; recurring/blanket/deferral creation is only named.",
            "independent_repair_ids": []
          },
          {
            "wording": "Create a purchase order",
            "objective_wording_sha256": "b7ffddfb39d60220f92312b3086f9da017121a72a7517be278db206c85b65174",
            "group": "Process purchases",
            "group_number": 17,
            "objective_number": 2,
            "objective_id": "4.2.2",
            "domain": "Perform Business Central operations (30–35%)",
            "version": "Skills measured as of June 30, 2026",
            "evidence_spans": [
              {
                "heading": "Purchase and sales documents",
                "start_line": 221,
                "end_line": 231,
                "span_lf_sha256": "38ad772720f32726a6392af39b5d15228dd622a201bade6ad464723378343c2b"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Purchase quote/order, receipt and invoice states are distinguished with over-receipt tolerance/approval and supported receipt correction; deferrals separate recognition timing.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Physical-versus-financial quantities, tolerance and correction boundaries are taught; recurring/blanket/deferral creation is only named.",
            "independent_repair_ids": []
          },
          {
            "wording": "Receive items for a purchase order",
            "objective_wording_sha256": "6d68dc547ff6fd9c4a1db3a9f7d8965863a63181a1c150eeaeb7d5703e2b3f32",
            "group": "Process purchases",
            "group_number": 17,
            "objective_number": 3,
            "objective_id": "4.2.3",
            "domain": "Perform Business Central operations (30–35%)",
            "version": "Skills measured as of June 30, 2026",
            "evidence_spans": [
              {
                "heading": "Purchase and sales documents",
                "start_line": 221,
                "end_line": 231,
                "span_lf_sha256": "38ad772720f32726a6392af39b5d15228dd622a201bade6ad464723378343c2b"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Purchase quote/order, receipt and invoice states are distinguished with over-receipt tolerance/approval and supported receipt correction; deferrals separate recognition timing.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Physical-versus-financial quantities, tolerance and correction boundaries are taught; recurring/blanket/deferral creation is only named.",
            "independent_repair_ids": []
          },
          {
            "wording": "Receive more items than ordered",
            "objective_wording_sha256": "08c60f0aa02d3537293562b17304149b623cd7edd3d29424b81cac9eec923a01",
            "group": "Process purchases",
            "group_number": 17,
            "objective_number": 4,
            "objective_id": "4.2.4",
            "domain": "Perform Business Central operations (30–35%)",
            "version": "Skills measured as of June 30, 2026",
            "evidence_spans": [
              {
                "heading": "Purchase and sales documents",
                "start_line": 221,
                "end_line": 231,
                "span_lf_sha256": "38ad772720f32726a6392af39b5d15228dd622a201bade6ad464723378343c2b"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Purchase quote/order, receipt and invoice states are distinguished with over-receipt tolerance/approval and supported receipt correction; deferrals separate recognition timing.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Physical-versus-financial quantities, tolerance and correction boundaries are taught; recurring/blanket/deferral creation is only named.",
            "independent_repair_ids": []
          },
          {
            "wording": "Reverse a receipt",
            "objective_wording_sha256": "42426dde42d4575d08c1ff314c9911210be91b7d156ef4b55864889ffbea1b32",
            "group": "Process purchases",
            "group_number": 17,
            "objective_number": 5,
            "objective_id": "4.2.5",
            "domain": "Perform Business Central operations (30–35%)",
            "version": "Skills measured as of June 30, 2026",
            "evidence_spans": [
              {
                "heading": "Purchase and sales documents",
                "start_line": 221,
                "end_line": 231,
                "span_lf_sha256": "38ad772720f32726a6392af39b5d15228dd622a201bade6ad464723378343c2b"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Purchase quote/order, receipt and invoice states are distinguished with over-receipt tolerance/approval and supported receipt correction; deferrals separate recognition timing.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Physical-versus-financial quantities, tolerance and correction boundaries are taught; recurring/blanket/deferral creation is only named.",
            "independent_repair_ids": []
          },
          {
            "wording": "Create a posted invoice from a purchase order",
            "objective_wording_sha256": "800f5646899d48ca04bdab8e1cd90c46e780f58c327b6d7a8668446b326bfc3b",
            "group": "Process purchases",
            "group_number": 17,
            "objective_number": 6,
            "objective_id": "4.2.6",
            "domain": "Perform Business Central operations (30–35%)",
            "version": "Skills measured as of June 30, 2026",
            "evidence_spans": [
              {
                "heading": "Purchase and sales documents",
                "start_line": 221,
                "end_line": 231,
                "span_lf_sha256": "38ad772720f32726a6392af39b5d15228dd622a201bade6ad464723378343c2b"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Purchase quote/order, receipt and invoice states are distinguished with over-receipt tolerance/approval and supported receipt correction; deferrals separate recognition timing.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Physical-versus-financial quantities, tolerance and correction boundaries are taught; recurring/blanket/deferral creation is only named.",
            "independent_repair_ids": []
          },
          {
            "wording": "Configure recurring purchase lines",
            "objective_wording_sha256": "d651acfd567a7d90b64f4d32ec4f943e30d8a42fd699da7b509332e6c212e99a",
            "group": "Process purchases",
            "group_number": 17,
            "objective_number": 7,
            "objective_id": "4.2.7",
            "domain": "Perform Business Central operations (30–35%)",
            "version": "Skills measured as of June 30, 2026",
            "evidence_spans": [
              {
                "heading": "Purchase and sales documents",
                "start_line": 221,
                "end_line": 231,
                "span_lf_sha256": "38ad772720f32726a6392af39b5d15228dd622a201bade6ad464723378343c2b"
              },
              {
                "heading": "Reuse lines or release a blanket quantity",
                "start_line": 233,
                "end_line": 237,
                "span_lf_sha256": "cc5540190859b9e0864f0745c05caf3aa7612678d884cb9deb5de859ad86d0cf"
              }
            ],
            "initial_flag_disposition": "resolved",
            "reason": "Purchase recurring code→vendor assignment/insertion behavior→Get Recurring Purchase Lines→document repricing is explicit; two codes and changed price are negative cases.",
            "initial_flag_reason": "Recurring purchase lines are defined but set/assign/get-lines/repricing workflow absent.",
            "repair_id": [
              "exam-a-recurring-blanket"
            ],
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Recurring purchase lines are defined but set/assign/get-lines/repricing workflow absent.",
            "independent_repair_ids": []
          },
          {
            "wording": "Manage blanket purchase orders",
            "objective_wording_sha256": "bb3928d4310d6bde9b7ecbefd0ff49b1ef028c617150dd207eecc4ccadadcf5b",
            "group": "Process purchases",
            "group_number": 17,
            "objective_number": 8,
            "objective_id": "4.2.8",
            "domain": "Perform Business Central operations (30–35%)",
            "version": "Skills measured as of June 30, 2026",
            "evidence_spans": [
              {
                "heading": "Purchase and sales documents",
                "start_line": 221,
                "end_line": 231,
                "span_lf_sha256": "38ad772720f32726a6392af39b5d15228dd622a201bade6ad464723378343c2b"
              },
              {
                "heading": "Reuse lines or release a blanket quantity",
                "start_line": 233,
                "end_line": 237,
                "span_lf_sha256": "cc5540190859b9e0864f0745c05caf3aa7612678d884cb9deb5de859ad86d0cf"
              }
            ],
            "initial_flag_disposition": "resolved",
            "reason": "Dated blanket quantities→release quantity→Make Order→child receipt/invoice evidence is taught with120→30+40 and over-quantity/availability boundaries.",
            "initial_flag_reason": "Blanket agreement purpose given but line quantities→Make Order→receipt/invoice tracking absent.",
            "repair_id": [
              "exam-a-recurring-blanket"
            ],
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Blanket agreement purpose given but line quantities→Make Order→receipt/invoice tracking absent.",
            "independent_repair_ids": []
          },
          {
            "wording": "Use deferrals with purchasing documents",
            "objective_wording_sha256": "f5632f7aa590f9a5973aeab062cd286cfd4cc6fdc7148ee3c4f1288eb4bdc60c",
            "group": "Process purchases",
            "group_number": 17,
            "objective_number": 9,
            "objective_id": "4.2.9",
            "domain": "Perform Business Central operations (30–35%)",
            "version": "Skills measured as of June 30, 2026",
            "evidence_spans": [
              {
                "heading": "Purchase and sales documents",
                "start_line": 221,
                "end_line": 231,
                "span_lf_sha256": "38ad772720f32726a6392af39b5d15228dd622a201bade6ad464723378343c2b"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Purchase quote/order, receipt and invoice states are distinguished with over-receipt tolerance/approval and supported receipt correction; deferrals separate recognition timing.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Physical-versus-financial quantities, tolerance and correction boundaries are taught; recurring/blanket/deferral creation is only named.",
            "independent_repair_ids": []
          },
          {
            "wording": "Manage quotes",
            "objective_wording_sha256": "fddc933a3102369d2b60d2f1dd39d0b84842d8f7a011724d1796f0dbc686890c",
            "group": "Process sales",
            "group_number": 18,
            "objective_number": 1,
            "objective_id": "4.3.1",
            "domain": "Perform Business Central operations (30–35%)",
            "version": "Skills measured as of June 30, 2026",
            "evidence_spans": [
              {
                "heading": "Purchase and sales documents",
                "start_line": 221,
                "end_line": 231,
                "span_lf_sha256": "38ad772720f32726a6392af39b5d15228dd622a201bade6ad464723378343c2b"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Sales quote conversion, availability/date checks, shipment and invoicing states are distinguished with supported shipment reversal and recognition-timing boundaries.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Quote/order/shipment/invoice and undo-before-invoicing are distinguished; recurring/blanket/availability/deferral setup is thin.",
            "independent_repair_ids": []
          },
          {
            "wording": "Convert a sales quote into a sales order or sales invoice",
            "objective_wording_sha256": "32cc61cab562e7975d980d33bc057d3f002f23f22be8ad1dcfd13f2ff2adeb92",
            "group": "Process sales",
            "group_number": 18,
            "objective_number": 2,
            "objective_id": "4.3.2",
            "domain": "Perform Business Central operations (30–35%)",
            "version": "Skills measured as of June 30, 2026",
            "evidence_spans": [
              {
                "heading": "Purchase and sales documents",
                "start_line": 221,
                "end_line": 231,
                "span_lf_sha256": "38ad772720f32726a6392af39b5d15228dd622a201bade6ad464723378343c2b"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Sales quote conversion, availability/date checks, shipment and invoicing states are distinguished with supported shipment reversal and recognition-timing boundaries.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Quote/order/shipment/invoice and undo-before-invoicing are distinguished; recurring/blanket/availability/deferral setup is thin.",
            "independent_repair_ids": []
          },
          {
            "wording": "Analyze item availability",
            "objective_wording_sha256": "14611d253a8c044bbfa735ba8a730760706cd8ad06597208d007670433b19ec2",
            "group": "Process sales",
            "group_number": 18,
            "objective_number": 3,
            "objective_id": "4.3.3",
            "domain": "Perform Business Central operations (30–35%)",
            "version": "Skills measured as of June 30, 2026",
            "evidence_spans": [
              {
                "heading": "Purchase and sales documents",
                "start_line": 221,
                "end_line": 231,
                "span_lf_sha256": "38ad772720f32726a6392af39b5d15228dd622a201bade6ad464723378343c2b"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Sales quote conversion, availability/date checks, shipment and invoicing states are distinguished with supported shipment reversal and recognition-timing boundaries.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Quote/order/shipment/invoice and undo-before-invoicing are distinguished; recurring/blanket/availability/deferral setup is thin.",
            "independent_repair_ids": []
          },
          {
            "wording": "Ship items for a sales order",
            "objective_wording_sha256": "ffed57cb46de2fdf7744f3bde12c4e7282a0fa10ef4fa17d37779941c81d79dc",
            "group": "Process sales",
            "group_number": 18,
            "objective_number": 4,
            "objective_id": "4.3.4",
            "domain": "Perform Business Central operations (30–35%)",
            "version": "Skills measured as of June 30, 2026",
            "evidence_spans": [
              {
                "heading": "Purchase and sales documents",
                "start_line": 221,
                "end_line": 231,
                "span_lf_sha256": "38ad772720f32726a6392af39b5d15228dd622a201bade6ad464723378343c2b"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Sales quote conversion, availability/date checks, shipment and invoicing states are distinguished with supported shipment reversal and recognition-timing boundaries.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Quote/order/shipment/invoice and undo-before-invoicing are distinguished; recurring/blanket/availability/deferral setup is thin.",
            "independent_repair_ids": []
          },
          {
            "wording": "Reverse a shipment",
            "objective_wording_sha256": "fb72d6f73d2f0031f53abfa0943ef70e16356cf9716716dfc6f7a7cab570e55f",
            "group": "Process sales",
            "group_number": 18,
            "objective_number": 5,
            "objective_id": "4.3.5",
            "domain": "Perform Business Central operations (30–35%)",
            "version": "Skills measured as of June 30, 2026",
            "evidence_spans": [
              {
                "heading": "Purchase and sales documents",
                "start_line": 221,
                "end_line": 231,
                "span_lf_sha256": "38ad772720f32726a6392af39b5d15228dd622a201bade6ad464723378343c2b"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Sales quote conversion, availability/date checks, shipment and invoicing states are distinguished with supported shipment reversal and recognition-timing boundaries.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Quote/order/shipment/invoice and undo-before-invoicing are distinguished; recurring/blanket/availability/deferral setup is thin.",
            "independent_repair_ids": []
          },
          {
            "wording": "Create a sales invoice from a sales order",
            "objective_wording_sha256": "304cfb42557d8d611a98cc221ca9425d1adca607b0cb6e1459ad255f8a415453",
            "group": "Process sales",
            "group_number": 18,
            "objective_number": 6,
            "objective_id": "4.3.6",
            "domain": "Perform Business Central operations (30–35%)",
            "version": "Skills measured as of June 30, 2026",
            "evidence_spans": [
              {
                "heading": "Purchase and sales documents",
                "start_line": 221,
                "end_line": 231,
                "span_lf_sha256": "38ad772720f32726a6392af39b5d15228dd622a201bade6ad464723378343c2b"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Sales quote conversion, availability/date checks, shipment and invoicing states are distinguished with supported shipment reversal and recognition-timing boundaries.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Quote/order/shipment/invoice and undo-before-invoicing are distinguished; recurring/blanket/availability/deferral setup is thin.",
            "independent_repair_ids": []
          },
          {
            "wording": "Configure recurring sales lines",
            "objective_wording_sha256": "aa08b00588ee5910facbc8885848004429b5b781f3aa5f93035047b9d887fd1f",
            "group": "Process sales",
            "group_number": 18,
            "objective_number": 7,
            "objective_id": "4.3.7",
            "domain": "Perform Business Central operations (30–35%)",
            "version": "Skills measured as of June 30, 2026",
            "evidence_spans": [
              {
                "heading": "Purchase and sales documents",
                "start_line": 221,
                "end_line": 231,
                "span_lf_sha256": "38ad772720f32726a6392af39b5d15228dd622a201bade6ad464723378343c2b"
              },
              {
                "heading": "Reuse lines or release a blanket quantity",
                "start_line": 233,
                "end_line": 237,
                "span_lf_sha256": "cc5540190859b9e0864f0745c05caf3aa7612678d884cb9deb5de859ad86d0cf"
              }
            ],
            "initial_flag_disposition": "resolved",
            "reason": "Sales recurring lines are customer-assigned with valid dates and generated through Create Recurring Sales Invoices for review/posting; templates do not lock prices or post automatically.",
            "initial_flag_reason": "Recurring sales lines are named but creation/customer assignment/generation workflow absent.",
            "repair_id": [
              "exam-a-recurring-blanket"
            ],
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Recurring sales lines are named but creation/customer assignment/generation workflow absent.",
            "independent_repair_ids": []
          },
          {
            "wording": "Manage blanket sales orders",
            "objective_wording_sha256": "6d626bd095c23ff0fefafafbec103ea1a85fa302e333bbdf9a4d019c3992281c",
            "group": "Process sales",
            "group_number": 18,
            "objective_number": 8,
            "objective_id": "4.3.8",
            "domain": "Perform Business Central operations (30–35%)",
            "version": "Skills measured as of June 30, 2026",
            "evidence_spans": [
              {
                "heading": "Purchase and sales documents",
                "start_line": 221,
                "end_line": 231,
                "span_lf_sha256": "38ad772720f32726a6392af39b5d15228dd622a201bade6ad464723378343c2b"
              },
              {
                "heading": "Reuse lines or release a blanket quantity",
                "start_line": 233,
                "end_line": 237,
                "span_lf_sha256": "cc5540190859b9e0864f0745c05caf3aa7612678d884cb9deb5de859ad86d0cf"
              }
            ],
            "initial_flag_disposition": "resolved",
            "reason": "The shared sales/purchase blanket example retains source references and tracks released versus shipped/invoiced quantities; an order number is not fulfillment.",
            "initial_flag_reason": "Blanket sales order named without release-quantity/order creation and remaining quantity workflow.",
            "repair_id": [
              "exam-a-recurring-blanket"
            ],
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Blanket sales order named without release-quantity/order creation and remaining quantity workflow.",
            "independent_repair_ids": []
          },
          {
            "wording": "Use deferrals with sales documents",
            "objective_wording_sha256": "96a1e70ceb2a20995529207fde539117dccb814a97fa24bbfbd575de459149cb",
            "group": "Process sales",
            "group_number": 18,
            "objective_number": 9,
            "objective_id": "4.3.9",
            "domain": "Perform Business Central operations (30–35%)",
            "version": "Skills measured as of June 30, 2026",
            "evidence_spans": [
              {
                "heading": "Purchase and sales documents",
                "start_line": 221,
                "end_line": 231,
                "span_lf_sha256": "38ad772720f32726a6392af39b5d15228dd622a201bade6ad464723378343c2b"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Sales quote conversion, availability/date checks, shipment and invoicing states are distinguished with supported shipment reversal and recognition-timing boundaries.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Quote/order/shipment/invoice and undo-before-invoicing are distinguished; recurring/blanket/availability/deferral setup is thin.",
            "independent_repair_ids": []
          },
          {
            "wording": "Process purchase invoices",
            "objective_wording_sha256": "2ad4b2074ef368150261b2110531f3a54304aa621d1743eae8be74ee38fefa57",
            "group": "Process financial documents",
            "group_number": 19,
            "objective_number": 1,
            "objective_id": "4.4.1",
            "domain": "Perform Business Central operations (30–35%)",
            "version": "Skills measured as of June 30, 2026",
            "evidence_spans": [
              {
                "heading": "Purchase and sales documents",
                "start_line": 221,
                "end_line": 249,
                "span_lf_sha256": "13aa03cc74603337d912511e9b3c1cfed072ca1898033180cbac31073ce118a0"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Invoice and credit-memo processing preserves the source/application audit chain; unpaid versus paid/combined documents have distinct Cancel/Correct or credit/return eligibility.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Paid/unpaid/combined-document correction and audit history are concrete; combined invoicing and prepayment execution only named.",
            "independent_repair_ids": []
          },
          {
            "wording": "Process purchase credit memos",
            "objective_wording_sha256": "b6402e0a9ec200ddf5c0c223039350f66c3cdd1d6f5c2d77b98ea6d531e833d6",
            "group": "Process financial documents",
            "group_number": 19,
            "objective_number": 2,
            "objective_id": "4.4.2",
            "domain": "Perform Business Central operations (30–35%)",
            "version": "Skills measured as of June 30, 2026",
            "evidence_spans": [
              {
                "heading": "Purchase and sales documents",
                "start_line": 221,
                "end_line": 249,
                "span_lf_sha256": "13aa03cc74603337d912511e9b3c1cfed072ca1898033180cbac31073ce118a0"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Invoice and credit-memo processing preserves the source/application audit chain; unpaid versus paid/combined documents have distinct Cancel/Correct or credit/return eligibility.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Paid/unpaid/combined-document correction and audit history are concrete; combined invoicing and prepayment execution only named.",
            "independent_repair_ids": []
          },
          {
            "wording": "Process sales invoices",
            "objective_wording_sha256": "da24e284d9e9148c2051820b9559d8c90c44a5730c72450ada71f68a8159fff2",
            "group": "Process financial documents",
            "group_number": 19,
            "objective_number": 3,
            "objective_id": "4.4.3",
            "domain": "Perform Business Central operations (30–35%)",
            "version": "Skills measured as of June 30, 2026",
            "evidence_spans": [
              {
                "heading": "Purchase and sales documents",
                "start_line": 221,
                "end_line": 249,
                "span_lf_sha256": "13aa03cc74603337d912511e9b3c1cfed072ca1898033180cbac31073ce118a0"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Invoice and credit-memo processing preserves the source/application audit chain; unpaid versus paid/combined documents have distinct Cancel/Correct or credit/return eligibility.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Paid/unpaid/combined-document correction and audit history are concrete; combined invoicing and prepayment execution only named.",
            "independent_repair_ids": []
          },
          {
            "wording": "Process sales credit memos",
            "objective_wording_sha256": "cac9d86c873c63e7d9cafc8891bc2cf3bedd7fd48b9186cc6078f351d64d82a7",
            "group": "Process financial documents",
            "group_number": 19,
            "objective_number": 4,
            "objective_id": "4.4.4",
            "domain": "Perform Business Central operations (30–35%)",
            "version": "Skills measured as of June 30, 2026",
            "evidence_spans": [
              {
                "heading": "Purchase and sales documents",
                "start_line": 221,
                "end_line": 249,
                "span_lf_sha256": "13aa03cc74603337d912511e9b3c1cfed072ca1898033180cbac31073ce118a0"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Invoice and credit-memo processing preserves the source/application audit chain; unpaid versus paid/combined documents have distinct Cancel/Correct or credit/return eligibility.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Paid/unpaid/combined-document correction and audit history are concrete; combined invoicing and prepayment execution only named.",
            "independent_repair_ids": []
          },
          {
            "wording": "Combine sales shipments into a single sales invoice",
            "objective_wording_sha256": "28b0e67bd04e179ae5ace7f983b67716d757aa63f1e657c9890a8ab1e2302e3d",
            "group": "Process financial documents",
            "group_number": 19,
            "objective_number": 5,
            "objective_id": "4.4.5",
            "domain": "Perform Business Central operations (30–35%)",
            "version": "Skills measured as of June 30, 2026",
            "evidence_spans": [
              {
                "heading": "Purchase and sales documents",
                "start_line": 221,
                "end_line": 249,
                "span_lf_sha256": "13aa03cc74603337d912511e9b3c1cfed072ca1898033180cbac31073ce118a0"
              },
              {
                "heading": "Combine fulfilled lines and account for deposits",
                "start_line": 251,
                "end_line": 255,
                "span_lf_sha256": "d07e99690ebad950efa3cbfe86c1e84bc5f2e422ebe27f7549c7a6031ea761a4"
              }
            ],
            "initial_flag_disposition": "resolved",
            "reason": "Posted/uninvoiced compatible customer/currency shipments feed Get Shipment Lines and reviewed/postable invoice quantities, with original-order updates and bad-selection checks.",
            "initial_flag_reason": "Combined shipments mentioned without posted shipment selection/customer/currency/invoice compatibility checks.",
            "repair_id": [
              "exam-a-combine-prepayment"
            ],
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Combined shipments mentioned without posted shipment selection/customer/currency/invoice compatibility checks.",
            "independent_repair_ids": []
          },
          {
            "wording": "Combine purchase receipts into a single purchase invoice",
            "objective_wording_sha256": "55b348a60222fef7474013c1509fd09957e46278573c3a6499d535152d20c19e",
            "group": "Process financial documents",
            "group_number": 19,
            "objective_number": 6,
            "objective_id": "4.4.6",
            "domain": "Perform Business Central operations (30–35%)",
            "version": "Skills measured as of June 30, 2026",
            "evidence_spans": [
              {
                "heading": "Purchase and sales documents",
                "start_line": 221,
                "end_line": 249,
                "span_lf_sha256": "13aa03cc74603337d912511e9b3c1cfed072ca1898033180cbac31073ce118a0"
              },
              {
                "heading": "Combine fulfilled lines and account for deposits",
                "start_line": 251,
                "end_line": 255,
                "span_lf_sha256": "d07e99690ebad950efa3cbfe86c1e84bc5f2e422ebe27f7549c7a6031ea761a4"
              }
            ],
            "initial_flag_disposition": "resolved",
            "reason": "Same-vendor/currency posted uninvoiced receipts feed Get Receipt Lines with source references and remaining quantities; already-invoiced lines are not billable twice.",
            "initial_flag_reason": "Combined receipts mentioned without posted receipt selection/vendor/currency and quantity-invoicing flow.",
            "repair_id": [
              "exam-a-combine-prepayment"
            ],
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Combined receipts mentioned without posted receipt selection/vendor/currency and quantity-invoicing flow.",
            "independent_repair_ids": []
          },
          {
            "wording": "Correct a posted purchase invoice",
            "objective_wording_sha256": "34d6954e9295330158289e8c6431f45c38f2c64fd6344903880b9b71a3520f9d",
            "group": "Process financial documents",
            "group_number": 19,
            "objective_number": 7,
            "objective_id": "4.4.7",
            "domain": "Perform Business Central operations (30–35%)",
            "version": "Skills measured as of June 30, 2026",
            "evidence_spans": [
              {
                "heading": "Purchase and sales documents",
                "start_line": 221,
                "end_line": 249,
                "span_lf_sha256": "13aa03cc74603337d912511e9b3c1cfed072ca1898033180cbac31073ce118a0"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Invoice and credit-memo processing preserves the source/application audit chain; unpaid versus paid/combined documents have distinct Cancel/Correct or credit/return eligibility.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Paid/unpaid/combined-document correction and audit history are concrete; combined invoicing and prepayment execution only named.",
            "independent_repair_ids": []
          },
          {
            "wording": "Correct a posted sales invoice",
            "objective_wording_sha256": "2d4aa6801b089ea06489d0104840d8aefbe48e6e289ad483553a19f75cb036f7",
            "group": "Process financial documents",
            "group_number": 19,
            "objective_number": 8,
            "objective_id": "4.4.8",
            "domain": "Perform Business Central operations (30–35%)",
            "version": "Skills measured as of June 30, 2026",
            "evidence_spans": [
              {
                "heading": "Purchase and sales documents",
                "start_line": 221,
                "end_line": 249,
                "span_lf_sha256": "13aa03cc74603337d912511e9b3c1cfed072ca1898033180cbac31073ce118a0"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Invoice and credit-memo processing preserves the source/application audit chain; unpaid versus paid/combined documents have distinct Cancel/Correct or credit/return eligibility.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Paid/unpaid/combined-document correction and audit history are concrete; combined invoicing and prepayment execution only named.",
            "independent_repair_ids": []
          },
          {
            "wording": "Release and reopen documents",
            "objective_wording_sha256": "d83f786ec793f985358755b33fd5fb7338f0816106aa50db7d79fff159a060b8",
            "group": "Process financial documents",
            "group_number": 19,
            "objective_number": 9,
            "objective_id": "4.4.9",
            "domain": "Perform Business Central operations (30–35%)",
            "version": "Skills measured as of June 30, 2026",
            "evidence_spans": [
              {
                "heading": "Purchase and sales documents",
                "start_line": 221,
                "end_line": 249,
                "span_lf_sha256": "13aa03cc74603337d912511e9b3c1cfed072ca1898033180cbac31073ce118a0"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Invoice and credit-memo processing preserves the source/application audit chain; unpaid versus paid/combined documents have distinct Cancel/Correct or credit/return eligibility.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Paid/unpaid/combined-document correction and audit history are concrete; combined invoicing and prepayment execution only named.",
            "independent_repair_ids": []
          },
          {
            "wording": "Process prepayment invoices for purchases and sales",
            "objective_wording_sha256": "f2e067dd9018848c94abd5978be3d6f8a482b3ddca7f537d11fb8f2252155c78",
            "group": "Process financial documents",
            "group_number": 19,
            "objective_number": 10,
            "objective_id": "4.4.10",
            "domain": "Perform Business Central operations (30–35%)",
            "version": "Skills measured as of June 30, 2026",
            "evidence_spans": [
              {
                "heading": "Purchase and sales documents",
                "start_line": 221,
                "end_line": 249,
                "span_lf_sha256": "13aa03cc74603337d912511e9b3c1cfed072ca1898033180cbac31073ce118a0"
              },
              {
                "heading": "Combine fulfilled lines and account for deposits",
                "start_line": 251,
                "end_line": 255,
                "span_lf_sha256": "d07e99690ebad950efa3cbfe86c1e84bc5f2e422ebe27f7549c7a6031ea761a4"
              }
            ],
            "initial_flag_disposition": "resolved",
            "reason": "Posting accounts/series/defaults→order deposit→prepayment invoice→payment/application→final deduction is taught with500/1500 and credit-before-delete correction.",
            "initial_flag_reason": "Prepayment described without posting-setup/percent→prepayment-invoice→cash/application→final-invoice workflow.",
            "repair_id": [
              "exam-a-combine-prepayment"
            ],
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Prepayment described without posting-setup/percent→prepayment-invoice→cash/application→final-invoice workflow.",
            "independent_repair_ids": []
          },
          {
            "wording": "Process payments by using payment journals",
            "objective_wording_sha256": "862de27c3112be35879b8816c5c1f61adee98c291e9446e4081e79076bdfa8e2",
            "group": "Process journals and payments",
            "group_number": 20,
            "objective_number": 1,
            "objective_id": "4.5.1",
            "domain": "Perform Business Central operations (30–35%)",
            "version": "Skills measured as of June 30, 2026",
            "evidence_spans": [
              {
                "heading": "Financial documents, journals and payments",
                "start_line": 239,
                "end_line": 249,
                "span_lf_sha256": "6b31a547e8c2b411a6aed00415e433df41595c41004e7ccb79460f7b51fae446"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Application/unapplication, journal reversal, bank timing/posting differences, revaluation and G/L-only dimension correction are substantive.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Application/unapplication, journal reversal, bank timing/posting differences, revaluation and G/L-only dimension correction are substantive.",
            "independent_repair_ids": []
          },
          {
            "wording": "Process receipts by using the cash receipt journal",
            "objective_wording_sha256": "4b3f6e16f2943213b3c99801d3f325a0c1f1f28b3a411c51b618a3ebbb49a725",
            "group": "Process journals and payments",
            "group_number": 20,
            "objective_number": 2,
            "objective_id": "4.5.2",
            "domain": "Perform Business Central operations (30–35%)",
            "version": "Skills measured as of June 30, 2026",
            "evidence_spans": [
              {
                "heading": "Financial documents, journals and payments",
                "start_line": 239,
                "end_line": 249,
                "span_lf_sha256": "6b31a547e8c2b411a6aed00415e433df41595c41004e7ccb79460f7b51fae446"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Application/unapplication, journal reversal, bank timing/posting differences, revaluation and G/L-only dimension correction are substantive.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Application/unapplication, journal reversal, bank timing/posting differences, revaluation and G/L-only dimension correction are substantive.",
            "independent_repair_ids": []
          },
          {
            "wording": "Process payment registrations",
            "objective_wording_sha256": "3e95af286f68c54ae3827178cd0f8611646e9d50eefedfaf8a67d8daef52e09c",
            "group": "Process journals and payments",
            "group_number": 20,
            "objective_number": 3,
            "objective_id": "4.5.3",
            "domain": "Perform Business Central operations (30–35%)",
            "version": "Skills measured as of June 30, 2026",
            "evidence_spans": [
              {
                "heading": "Financial documents, journals and payments",
                "start_line": 239,
                "end_line": 249,
                "span_lf_sha256": "6b31a547e8c2b411a6aed00415e433df41595c41004e7ccb79460f7b51fae446"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Application/unapplication, journal reversal, bank timing/posting differences, revaluation and G/L-only dimension correction are substantive.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Application/unapplication, journal reversal, bank timing/posting differences, revaluation and G/L-only dimension correction are substantive.",
            "independent_repair_ids": []
          },
          {
            "wording": "Apply ledger entries and undo applied entries",
            "objective_wording_sha256": "ee305ba2b2322287ee2009250961c5cc077c0dde15a2dd01b1d703b8185dbd68",
            "group": "Process journals and payments",
            "group_number": 20,
            "objective_number": 4,
            "objective_id": "4.5.4",
            "domain": "Perform Business Central operations (30–35%)",
            "version": "Skills measured as of June 30, 2026",
            "evidence_spans": [
              {
                "heading": "Financial documents, journals and payments",
                "start_line": 239,
                "end_line": 249,
                "span_lf_sha256": "6b31a547e8c2b411a6aed00415e433df41595c41004e7ccb79460f7b51fae446"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Application/unapplication, journal reversal, bank timing/posting differences, revaluation and G/L-only dimension correction are substantive.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Application/unapplication, journal reversal, bank timing/posting differences, revaluation and G/L-only dimension correction are substantive.",
            "independent_repair_ids": []
          },
          {
            "wording": "Reverse posted journals",
            "objective_wording_sha256": "1e3b28dded31cfd45e228e8b8041abe453c8979c177b3cdb2e3c2e8e25ff2001",
            "group": "Process journals and payments",
            "group_number": 20,
            "objective_number": 5,
            "objective_id": "4.5.5",
            "domain": "Perform Business Central operations (30–35%)",
            "version": "Skills measured as of June 30, 2026",
            "evidence_spans": [
              {
                "heading": "Financial documents, journals and payments",
                "start_line": 239,
                "end_line": 249,
                "span_lf_sha256": "6b31a547e8c2b411a6aed00415e433df41595c41004e7ccb79460f7b51fae446"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Application/unapplication, journal reversal, bank timing/posting differences, revaluation and G/L-only dimension correction are substantive.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Application/unapplication, journal reversal, bank timing/posting differences, revaluation and G/L-only dimension correction are substantive.",
            "independent_repair_ids": []
          },
          {
            "wording": "Perform bank account reconciliation",
            "objective_wording_sha256": "95819a8362d9d6aa39ee4482a0b2587da94b3e86f34294c546d68c8f821c3440",
            "group": "Process journals and payments",
            "group_number": 20,
            "objective_number": 6,
            "objective_id": "4.5.6",
            "domain": "Perform Business Central operations (30–35%)",
            "version": "Skills measured as of June 30, 2026",
            "evidence_spans": [
              {
                "heading": "Financial documents, journals and payments",
                "start_line": 239,
                "end_line": 249,
                "span_lf_sha256": "6b31a547e8c2b411a6aed00415e433df41595c41004e7ccb79460f7b51fae446"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Application/unapplication, journal reversal, bank timing/posting differences, revaluation and G/L-only dimension correction are substantive.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Application/unapplication, journal reversal, bank timing/posting differences, revaluation and G/L-only dimension correction are substantive.",
            "independent_repair_ids": []
          },
          {
            "wording": "Process recurring transactions by using the recurring journals",
            "objective_wording_sha256": "c998523b2feb47dfa83bf8266fd7f8a06f0652b8b1f8e67649d52666be7579d1",
            "group": "Process journals and payments",
            "group_number": 20,
            "objective_number": 7,
            "objective_id": "4.5.7",
            "domain": "Perform Business Central operations (30–35%)",
            "version": "Skills measured as of June 30, 2026",
            "evidence_spans": [
              {
                "heading": "Financial documents, journals and payments",
                "start_line": 239,
                "end_line": 249,
                "span_lf_sha256": "6b31a547e8c2b411a6aed00415e433df41595c41004e7ccb79460f7b51fae446"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Application/unapplication, journal reversal, bank timing/posting differences, revaluation and G/L-only dimension correction are substantive.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Application/unapplication, journal reversal, bank timing/posting differences, revaluation and G/L-only dimension correction are substantive.",
            "independent_repair_ids": []
          },
          {
            "wording": "Use general ledger allocations",
            "objective_wording_sha256": "5e0074b67348caf26916776adb69900f75148a8048645c253c8361be0160add7",
            "group": "Process journals and payments",
            "group_number": 20,
            "objective_number": 8,
            "objective_id": "4.5.8",
            "domain": "Perform Business Central operations (30–35%)",
            "version": "Skills measured as of June 30, 2026",
            "evidence_spans": [
              {
                "heading": "Financial documents, journals and payments",
                "start_line": 239,
                "end_line": 249,
                "span_lf_sha256": "6b31a547e8c2b411a6aed00415e433df41595c41004e7ccb79460f7b51fae446"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Application/unapplication, journal reversal, bank timing/posting differences, revaluation and G/L-only dimension correction are substantive.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Application/unapplication, journal reversal, bank timing/posting differences, revaluation and G/L-only dimension correction are substantive.",
            "independent_repair_ids": []
          },
          {
            "wording": "Adjust currency exchange rates",
            "objective_wording_sha256": "0b1d04435aaf8b867d746e3851d27d975ad41ff330c4c7f5403c9e0495fde9ba",
            "group": "Process journals and payments",
            "group_number": 20,
            "objective_number": 9,
            "objective_id": "4.5.9",
            "domain": "Perform Business Central operations (30–35%)",
            "version": "Skills measured as of June 30, 2026",
            "evidence_spans": [
              {
                "heading": "Financial documents, journals and payments",
                "start_line": 239,
                "end_line": 249,
                "span_lf_sha256": "6b31a547e8c2b411a6aed00415e433df41595c41004e7ccb79460f7b51fae446"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Application/unapplication, journal reversal, bank timing/posting differences, revaluation and G/L-only dimension correction are substantive.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Application/unapplication, journal reversal, bank timing/posting differences, revaluation and G/L-only dimension correction are substantive.",
            "independent_repair_ids": []
          },
          {
            "wording": "Correct posted dimensions using the Dimension Correction Tool",
            "objective_wording_sha256": "cd63ad1fb7991b7988a2cfd8f8155dc97e83e687d84375c49e19be34f9e7710b",
            "group": "Process journals and payments",
            "group_number": 20,
            "objective_number": 10,
            "objective_id": "4.5.10",
            "domain": "Perform Business Central operations (30–35%)",
            "version": "Skills measured as of June 30, 2026",
            "evidence_spans": [
              {
                "heading": "Financial documents, journals and payments",
                "start_line": 239,
                "end_line": 249,
                "span_lf_sha256": "6b31a547e8c2b411a6aed00415e433df41595c41004e7ccb79460f7b51fae446"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Application/unapplication, journal reversal, bank timing/posting differences, revaluation and G/L-only dimension correction are substantive.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Application/unapplication, journal reversal, bank timing/posting differences, revaluation and G/L-only dimension correction are substantive.",
            "independent_repair_ids": []
          },
          {
            "wording": "Revalue general ledger account balances",
            "objective_wording_sha256": "bd917b44f65f048cbe660100be684981800c35b498ed582dbdb4c724cb6a6a8c",
            "group": "Process journals and payments",
            "group_number": 20,
            "objective_number": 11,
            "objective_id": "4.5.11",
            "domain": "Perform Business Central operations (30–35%)",
            "version": "Skills measured as of June 30, 2026",
            "evidence_spans": [
              {
                "heading": "Financial documents, journals and payments",
                "start_line": 239,
                "end_line": 249,
                "span_lf_sha256": "6b31a547e8c2b411a6aed00415e433df41595c41004e7ccb79460f7b51fae446"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Application/unapplication, journal reversal, bank timing/posting differences, revaluation and G/L-only dimension correction are substantive.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Application/unapplication, journal reversal, bank timing/posting differences, revaluation and G/L-only dimension correction are substantive.",
            "independent_repair_ids": []
          },
          {
            "wording": "Process fixed asset acquisitions",
            "objective_wording_sha256": "d3ad1210fac4264996e1f2580ed2064a9f0d345e3361fc73d2a2ec45043a21d1",
            "group": "Process fixed asset transactions",
            "group_number": 21,
            "objective_number": 1,
            "objective_id": "4.6.1",
            "domain": "Perform Business Central operations (30–35%)",
            "version": "Skills measured as of June 30, 2026",
            "evidence_spans": [
              {
                "heading": "Fixed-asset and inventory operations",
                "start_line": 257,
                "end_line": 263,
                "span_lf_sha256": "9fd4f3b6d00d02c904f724372863afa4036970ceb2ba9a0128f9bf98b5ed82df"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Fixed-asset acquisition and disposal use the intended book, date and integration, with FA-to-G/L reconciliation and disposal gain/loss checks.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Asset acquisition/depreciation/disposal are named with book/ledger reconciliation, but no depreciation proposal/posting workflow.",
            "independent_repair_ids": []
          },
          {
            "wording": "Process fixed asset depreciations",
            "objective_wording_sha256": "2f5632d70144994fba0d44ee989d807294eaf30dcb469846e791554f8b9c39cf",
            "group": "Process fixed asset transactions",
            "group_number": 21,
            "objective_number": 2,
            "objective_id": "4.6.2",
            "domain": "Perform Business Central operations (30–35%)",
            "version": "Skills measured as of June 30, 2026",
            "evidence_spans": [
              {
                "heading": "Fixed-asset and inventory operations",
                "start_line": 257,
                "end_line": 263,
                "span_lf_sha256": "9fd4f3b6d00d02c904f724372863afa4036970ceb2ba9a0128f9bf98b5ed82df"
              },
              {
                "heading": "Prove depreciation and inventory changes through entries",
                "start_line": 267,
                "end_line": 275,
                "span_lf_sha256": "c3f7a34b910a77c196d7c1cc5c92922a80678e8191ba35210d34dac7756ab47b"
              }
            ],
            "initial_flag_disposition": "resolved",
            "reason": "Book/acquisition/date/method/integration checks precede Calculate Depreciation→journal review/post→FA/G/L reconciliation; Manual/prior-period cases detect unsupported assumptions.",
            "initial_flag_reason": "Depreciation named but Calculate Depreciation→journal review→post/ledger reconciliation workflow absent.",
            "repair_id": [
              "exam-a-asset-inventory-workflows"
            ],
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Depreciation named but Calculate Depreciation→journal review→post/ledger reconciliation workflow absent.",
            "independent_repair_ids": []
          },
          {
            "wording": "Process fixed asset disposals",
            "objective_wording_sha256": "b01e381a144b65f6194e6302cfac200410ee3ec613f6c947bf509b6a147e9fed",
            "group": "Process fixed asset transactions",
            "group_number": 21,
            "objective_number": 3,
            "objective_id": "4.6.3",
            "domain": "Perform Business Central operations (30–35%)",
            "version": "Skills measured as of June 30, 2026",
            "evidence_spans": [
              {
                "heading": "Fixed-asset and inventory operations",
                "start_line": 257,
                "end_line": 263,
                "span_lf_sha256": "9fd4f3b6d00d02c904f724372863afa4036970ceb2ba9a0128f9bf98b5ed82df"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Fixed-asset acquisition and disposal use the intended book, date and integration, with FA-to-G/L reconciliation and disposal gain/loss checks.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Asset acquisition/depreciation/disposal are named with book/ledger reconciliation, but no depreciation proposal/posting workflow.",
            "independent_repair_ids": []
          },
          {
            "wording": "Process inventory receipts",
            "objective_wording_sha256": "48b46f961b73c68be3abfbe5d9d19bfa9d05249ba18a2e4d98b4ddb6ea5d98c2",
            "group": "Process inventory transactions",
            "group_number": 22,
            "objective_number": 1,
            "objective_id": "4.7.1",
            "domain": "Perform Business Central operations (30–35%)",
            "version": "Skills measured as of June 30, 2026",
            "evidence_spans": [
              {
                "heading": "Fixed-asset and inventory operations",
                "start_line": 257,
                "end_line": 263,
                "span_lf_sha256": "9fd4f3b6d00d02c904f724372863afa4036970ceb2ba9a0128f9bf98b5ed82df"
              },
              {
                "heading": "Prove depreciation and inventory changes through entries",
                "start_line": 267,
                "end_line": 275,
                "span_lf_sha256": "c3f7a34b910a77c196d7c1cc5c92922a80678e8191ba35210d34dac7756ab47b"
              }
            ],
            "initial_flag_disposition": "resolved",
            "reason": "A justified nonpurchase receipt uses a positive Item Journal adjustment with item/date/location/quantity/tracking/cost and item/value/G/L evidence under simple-location limits.",
            "initial_flag_reason": "Inventory receipt purpose given without Item Journal positive-adjustment and entry evidence.",
            "repair_id": [
              "exam-a-asset-inventory-workflows"
            ],
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Inventory receipt purpose given without Item Journal positive-adjustment and entry evidence.",
            "independent_repair_ids": []
          },
          {
            "wording": "Process inventory shipments",
            "objective_wording_sha256": "d70e1abf10a8f01c644ed7acdc18ede469efc4126b0279bca6981e78f8750735",
            "group": "Process inventory transactions",
            "group_number": 22,
            "objective_number": 2,
            "objective_id": "4.7.2",
            "domain": "Perform Business Central operations (30–35%)",
            "version": "Skills measured as of June 30, 2026",
            "evidence_spans": [
              {
                "heading": "Fixed-asset and inventory operations",
                "start_line": 257,
                "end_line": 263,
                "span_lf_sha256": "9fd4f3b6d00d02c904f724372863afa4036970ceb2ba9a0128f9bf98b5ed82df"
              },
              {
                "heading": "Prove depreciation and inventory changes through entries",
                "start_line": 267,
                "end_line": 275,
                "span_lf_sha256": "c3f7a34b910a77c196d7c1cc5c92922a80678e8191ba35210d34dac7756ab47b"
              }
            ],
            "initial_flag_disposition": "resolved",
            "reason": "A justified nonsales issue uses a negative Item Journal adjustment and reconciled entry evidence; it is distinguished from sales shipment and advanced warehouse registration.",
            "initial_flag_reason": "Inventory shipment purpose given without negative-adjustment and cost/availability evidence.",
            "repair_id": [
              "exam-a-asset-inventory-workflows"
            ],
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Inventory shipment purpose given without negative-adjustment and cost/availability evidence.",
            "independent_repair_ids": []
          },
          {
            "wording": "Transfer items between locations",
            "objective_wording_sha256": "79ec09ddfa4fd460de43637447913c8de4e991e6b14908b4879a03d5018a80b8",
            "group": "Process inventory transactions",
            "group_number": 22,
            "objective_number": 3,
            "objective_id": "4.7.3",
            "domain": "Perform Business Central operations (30–35%)",
            "version": "Skills measured as of June 30, 2026",
            "evidence_spans": [
              {
                "heading": "Fixed-asset and inventory operations",
                "start_line": 257,
                "end_line": 263,
                "span_lf_sha256": "9fd4f3b6d00d02c904f724372863afa4036970ceb2ba9a0128f9bf98b5ed82df"
              },
              {
                "heading": "Prove depreciation and inventory changes through entries",
                "start_line": 267,
                "end_line": 275,
                "span_lf_sha256": "c3f7a34b910a77c196d7c1cc5c92922a80678e8191ba35210d34dac7756ab47b"
              }
            ],
            "initial_flag_disposition": "resolved",
            "reason": "Locations/routes and direct/in-transit choice precede shipment/receipt; destination stock, paired entries and company/location/in-transit totals are reconciled.",
            "initial_flag_reason": "Transfer locations named without direct/in-transit shipment/receipt states.",
            "repair_id": [
              "exam-a-asset-inventory-workflows"
            ],
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Transfer locations named without direct/in-transit shipment/receipt states.",
            "independent_repair_ids": []
          },
          {
            "wording": "Adjust item cost",
            "objective_wording_sha256": "41404d8b8772a66f01ad4b5200eff7c16ffa58043f6c7ef33494effd62f0a8a6",
            "group": "Process inventory transactions",
            "group_number": 22,
            "objective_number": 4,
            "objective_id": "4.7.4",
            "domain": "Perform Business Central operations (30–35%)",
            "version": "Skills measured as of June 30, 2026",
            "evidence_spans": [
              {
                "heading": "Inventory and item structure",
                "start_line": 177,
                "end_line": 181,
                "span_lf_sha256": "7fd9c801a73a7e05b4f0f93b2bffb5ae791d0323fd2f859dddf28c6df4d1edf8"
              }
            ],
            "initial_flag_disposition": "not-flagged; substantive retained",
            "reason": "Cost adjustment changes value assignment separately from quantity; later value/G/L entries, adjustment scheduling and the inventory-cost posting report explain the cost-to-ledger path.",
            "initial_flag_reason": null,
            "repair_id": null,
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Quantity/value and receipt/shipment/transfer/count/reclassification purposes are introduced; the named journals and negative entries are missing.",
            "independent_repair_ids": []
          },
          {
            "wording": "Count inventory",
            "objective_wording_sha256": "0ae033fcedd611b1873534ef85ecb686bc909c671745e95f5bff98916dd68eec",
            "group": "Process inventory transactions",
            "group_number": 22,
            "objective_number": 5,
            "objective_id": "4.7.5",
            "domain": "Perform Business Central operations (30–35%)",
            "version": "Skills measured as of June 30, 2026",
            "evidence_spans": [
              {
                "heading": "Fixed-asset and inventory operations",
                "start_line": 257,
                "end_line": 263,
                "span_lf_sha256": "9fd4f3b6d00d02c904f724372863afa4036970ceb2ba9a0128f9bf98b5ed82df"
              },
              {
                "heading": "Prove depreciation and inventory changes through entries",
                "start_line": 267,
                "end_line": 275,
                "span_lf_sha256": "c3f7a34b910a77c196d7c1cc5c92922a80678e8191ba35210d34dac7756ab47b"
              }
            ],
            "initial_flag_disposition": "resolved",
            "reason": "Calculate expected quantity→control movement/count→enter observed→review/post difference is taught with25→23=-2 and separate advanced-warehouse synchronization.",
            "initial_flag_reason": "Count described without calculate/freeze expected quantity→physical count→difference→post workflow.",
            "repair_id": [
              "exam-a-asset-inventory-workflows"
            ],
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Count described without calculate/freeze expected quantity→physical count→difference→post workflow.",
            "independent_repair_ids": []
          },
          {
            "wording": "Reclassify inventory",
            "objective_wording_sha256": "ffbd5af337fb985c2f3576c3b4b84bdd1bba30912690591cc6ccc1abe2c01a5a",
            "group": "Process inventory transactions",
            "group_number": 22,
            "objective_number": 6,
            "objective_id": "4.7.6",
            "domain": "Perform Business Central operations (30–35%)",
            "version": "Skills measured as of June 30, 2026",
            "evidence_spans": [
              {
                "heading": "Fixed-asset and inventory operations",
                "start_line": 257,
                "end_line": 263,
                "span_lf_sha256": "9fd4f3b6d00d02c904f724372863afa4036970ceb2ba9a0128f9bf98b5ed82df"
              },
              {
                "heading": "Prove depreciation and inventory changes through entries",
                "start_line": 267,
                "end_line": 275,
                "span_lf_sha256": "c3f7a34b910a77c196d7c1cc5c92922a80678e8191ba35210d34dac7756ab47b"
              }
            ],
            "initial_flag_disposition": "resolved",
            "reason": "The Item Reclassification Journal uses old/new location/bin/tracking fields, paired entries and unchanged-company-total checks; it does not create sale/purchase.",
            "initial_flag_reason": "Reclassification described without item reclassification journal and paired-entry evidence.",
            "repair_id": [
              "exam-a-asset-inventory-workflows"
            ],
            "depth": "substantive conceptual/configuration-design teaching with bounded examples, failure checks and proposed learner verification",
            "execution": "not-executed; no tenant, X++ compile, cloud/API or lab completion claimed",
            "initial_reason": "Reclassification described without item reclassification journal and paired-entry evidence.",
            "independent_repair_ids": []
          }
        ],
        "independent_repairs": 2
      },
      {
        "exam_code": "MB-820",
        "guide_path": "guides/MB-820-microsoft-dynamics-365-business-central-developer.md",
        "guide_lf_sha256": "0be7abf3d006029e0009c97001c77e79025bc8a507b47333c403abb5ff0c4d55",
        "objective_raw_sha256": "1e1a344d7da21661343df954d830f847f10aa2e3742893e8fab5381666dca108",
        "objective_count": 75,
        "current_mapping": [
          {
            "wording": "Describe the components and capabilities of Business Central",
            "objective_wording_sha256": "21b52a72afaa015320d56a5147d21b5a04acaa35fe175452670ff027829f568f",
            "group": "Describe the Business Central architecture",
            "group_number": 1,
            "objective_number": 1,
            "evidence_spans": [
              {
                "heading": "Architecture and extension model",
                "start_line": 60,
                "end_line": 66,
                "span_lf_sha256": "52cdd4e881b223fc030fc7bd5e524585886e25103fa7b5651711e02f04d54a5f"
              }
            ],
            "initial_flag_disposition": "not-flagged-initially",
            "reason": "For “Describe the components and capabilities of Business Central”, the selected current teaching explains client/runtime/application/database and System/Base/extension ownership, lifecycle compatibility and online/onpremises boundaries. Its purpose, operation/design boundary and checks support this objective; this is editorial teaching coverage, not observed product execution.",
            "initial_depth_result": "substantive",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "arch"
            ]
          },
          {
            "wording": "Describe the core solution and extensions approach for Business Central",
            "objective_wording_sha256": "a1dad5ae3facec0787510caf22f4453fabdb3c25533e453aac549f133916dee0",
            "group": "Describe the Business Central architecture",
            "group_number": 1,
            "objective_number": 2,
            "evidence_spans": [
              {
                "heading": "Architecture and extension model",
                "start_line": 60,
                "end_line": 66,
                "span_lf_sha256": "52cdd4e881b223fc030fc7bd5e524585886e25103fa7b5651711e02f04d54a5f"
              }
            ],
            "initial_flag_disposition": "not-flagged-initially",
            "reason": "For “Describe the core solution and extensions approach for Business Central”, the selected current teaching explains client/runtime/application/database and System/Base/extension ownership, lifecycle compatibility and online/onpremises boundaries. Its purpose, operation/design boundary and checks support this objective; this is editorial teaching coverage, not observed product execution.",
            "initial_depth_result": "substantive",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "arch"
            ]
          },
          {
            "wording": "Describe the update lifecycle for customizations of Business Central",
            "objective_wording_sha256": "8416745e29e25f222bbe422c9a60a0cb7b4fc82e226ec474b0b95f1387f7b682",
            "group": "Describe the Business Central architecture",
            "group_number": 1,
            "objective_number": 3,
            "evidence_spans": [
              {
                "heading": "Architecture and extension model",
                "start_line": 60,
                "end_line": 66,
                "span_lf_sha256": "52cdd4e881b223fc030fc7bd5e524585886e25103fa7b5651711e02f04d54a5f"
              }
            ],
            "initial_flag_disposition": "not-flagged-initially",
            "reason": "For “Describe the update lifecycle for customizations of Business Central”, the selected current teaching explains client/runtime/application/database and System/Base/extension ownership, lifecycle compatibility and online/onpremises boundaries. Its purpose, operation/design boundary and checks support this objective; this is editorial teaching coverage, not observed product execution.",
            "initial_depth_result": "substantive",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "arch"
            ]
          },
          {
            "wording": "Differentiate Business Central online and Business Central on-premises features",
            "objective_wording_sha256": "599a7f329026d4484328827a46b3ff62dd1ac913f6bf046bf000f652d9e38e2d",
            "group": "Describe the Business Central architecture",
            "group_number": 1,
            "objective_number": 4,
            "evidence_spans": [
              {
                "heading": "Architecture and extension model",
                "start_line": 60,
                "end_line": 66,
                "span_lf_sha256": "52cdd4e881b223fc030fc7bd5e524585886e25103fa7b5651711e02f04d54a5f"
              }
            ],
            "initial_flag_disposition": "not-flagged-initially",
            "reason": "For “Differentiate Business Central online and Business Central on-premises features”, the selected current teaching explains client/runtime/application/database and System/Base/extension ownership, lifecycle compatibility and online/onpremises boundaries. Its purpose, operation/design boundary and checks support this objective; this is editorial teaching coverage, not observed product execution.",
            "initial_depth_result": "substantive",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "arch"
            ]
          },
          {
            "wording": "Differentiate between the base app and the system app",
            "objective_wording_sha256": "455c8eb539ce7c1e1e85e955d0a25eeddce38acf14df79224c2a614550517ab0",
            "group": "Describe Business Central apps",
            "group_number": 2,
            "objective_number": 1,
            "evidence_spans": [
              {
                "heading": "Architecture and extension model",
                "start_line": 60,
                "end_line": 66,
                "span_lf_sha256": "52cdd4e881b223fc030fc7bd5e524585886e25103fa7b5651711e02f04d54a5f"
              }
            ],
            "initial_flag_disposition": "not-flagged-initially",
            "reason": "For “Differentiate between the base app and the system app”, the selected current teaching explains client/runtime/application/database and System/Base/extension ownership, lifecycle compatibility and online/onpremises boundaries. Its purpose, operation/design boundary and checks support this objective; this is editorial teaching coverage, not observed product execution.",
            "initial_depth_result": "substantive",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "arch"
            ]
          },
          {
            "wording": "Describe the functionality of apps",
            "objective_wording_sha256": "e37addf9955fd11ec96fd6403c76cccdb80e88fdfaaa263747801b8393d8ad6a",
            "group": "Describe Business Central apps",
            "group_number": 2,
            "objective_number": 2,
            "evidence_spans": [
              {
                "heading": "Apps and AppSource",
                "start_line": 70,
                "end_line": 76,
                "span_lf_sha256": "f4f376128801d86be27d5c04b58db440ce2b06d4c5dba4b6e6cc7aea1b5a7b0f"
              },
              {
                "heading": "Architecture and extension model",
                "start_line": 60,
                "end_line": 66,
                "span_lf_sha256": "52cdd4e881b223fc030fc7bd5e524585886e25103fa7b5651711e02f04d54a5f"
              }
            ],
            "initial_flag_disposition": "not-flagged-initially",
            "reason": "For “Describe the functionality of apps”, the selected current teaching explains app purpose, dependency/version/upgrade and AppSource versus PTE publishing/validation; client/runtime/application/database and System/Base/extension ownership, lifecycle compatibility and online/onpremises boundaries. Its purpose, operation/design boundary and checks support this objective; this is editorial teaching coverage, not observed product execution.",
            "initial_depth_result": "substantive",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "apps",
              "arch"
            ]
          },
          {
            "wording": "Describe the process of bringing an app to AppSource",
            "objective_wording_sha256": "70fd2247022b76975abc98c74a58c3d64f4c7da4a8b93ccef45c0a35db5fc218",
            "group": "Describe Business Central apps",
            "group_number": 2,
            "objective_number": 3,
            "evidence_spans": [
              {
                "heading": "Apps and AppSource",
                "start_line": 70,
                "end_line": 76,
                "span_lf_sha256": "f4f376128801d86be27d5c04b58db440ce2b06d4c5dba4b6e6cc7aea1b5a7b0f"
              }
            ],
            "initial_flag_disposition": "not-flagged-initially",
            "reason": "For “Describe the process of bringing an app to AppSource”, the selected current teaching explains app purpose, dependency/version/upgrade and AppSource versus PTE publishing/validation. Its purpose, operation/design boundary and checks support this objective; this is editorial teaching coverage, not observed product execution.",
            "initial_depth_result": "substantive",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "apps"
            ]
          },
          {
            "wording": "Describe the development environment for Business Central",
            "objective_wording_sha256": "23b3e0cd3638bb566f6da6d5ed059acdbaaec507e1b3cee80720b4202942c2bf",
            "group": "Install and configure a Business Central development environment",
            "group_number": 3,
            "objective_number": 1,
            "evidence_spans": [
              {
                "heading": "Configure the development environment",
                "start_line": 97,
                "end_line": 99,
                "span_lf_sha256": "2716db56bbdac181e127c7f917965f799e549256d68f7e44cb3addbc09e543a3"
              }
            ],
            "initial_flag_disposition": "not-flagged-initially",
            "reason": "For “Describe the development environment for Business Central”, the selected current teaching explains VSCode/AL, launch versus app.json/workspace configuration, dependency symbols and multiproject scope. Its purpose, operation/design boundary and checks support this objective; this is editorial teaching coverage, not observed product execution.",
            "initial_depth_result": "substantive",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "env"
            ]
          },
          {
            "wording": "Install and configure the development environment",
            "objective_wording_sha256": "cb9b4e0085652b0a8c7bc82045de56a18c566a23a17185e742025ba713bca989",
            "group": "Install and configure a Business Central development environment",
            "group_number": 3,
            "objective_number": 2,
            "evidence_spans": [
              {
                "heading": "Configure the development environment",
                "start_line": 97,
                "end_line": 99,
                "span_lf_sha256": "2716db56bbdac181e127c7f917965f799e549256d68f7e44cb3addbc09e543a3"
              },
              {
                "heading": "Create, debug and deploy extensions",
                "start_line": 103,
                "end_line": 115,
                "span_lf_sha256": "2a07742e6c1e1895931b056c6b45c136bfdd11fc87f178209265089cca483726"
              },
              {
                "heading": "Current deployment and endpoint transitions",
                "start_line": 80,
                "end_line": 91,
                "span_lf_sha256": "d9b287bef066c560df88fa373f62f7e4ed23fb1c628d57ac3e301caf1dfb7bc1"
              }
            ],
            "initial_flag_disposition": "existing-adequate-for-verb",
            "reason": "For “Install and configure the development environment”, the current selected text teaches VSCode/AL, launch versus app.json/workspace configuration, dependency symbols and multiproject scope; create/debug/package/publish/install/upgrade/translation/deprecation sequence and compatibility tests; current onpremises PowerShell7 module/version and future OData/runtime endpoint boundaries. VS Code/AL extension, approved target, launch/app.json separation and symbol download form an actionable environment dependency sequence. The PS7 note corrects tool versioning; a second installer click list would not add material teaching.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [
              "mb820-powershell-version"
            ],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "env",
              "develop",
              "transition"
            ]
          },
          {
            "wording": "Manage configuration files for an AL extension",
            "objective_wording_sha256": "902c4b3f8ff2baa0ba2c05c8b0daafe79f29a5db6460c16a1b34ff5ec2588478",
            "group": "Install and configure a Business Central development environment",
            "group_number": 3,
            "objective_number": 3,
            "evidence_spans": [
              {
                "heading": "Configure the development environment",
                "start_line": 97,
                "end_line": 99,
                "span_lf_sha256": "2716db56bbdac181e127c7f917965f799e549256d68f7e44cb3addbc09e543a3"
              }
            ],
            "initial_flag_disposition": "not-flagged-initially",
            "reason": "For “Manage configuration files for an AL extension”, the selected current teaching explains VSCode/AL, launch versus app.json/workspace configuration, dependency symbols and multiproject scope. Its purpose, operation/design boundary and checks support this objective; this is editorial teaching coverage, not observed product execution.",
            "initial_depth_result": "substantive",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "env"
            ]
          },
          {
            "wording": "Manage multiple AL extensions in one workspace",
            "objective_wording_sha256": "3a3087cdf5a410742e6bf00a6b111930bdbc2283ad34fb610bdc0662a0b93136",
            "group": "Install and configure a Business Central development environment",
            "group_number": 3,
            "objective_number": 4,
            "evidence_spans": [
              {
                "heading": "Configure the development environment",
                "start_line": 97,
                "end_line": 99,
                "span_lf_sha256": "2716db56bbdac181e127c7f917965f799e549256d68f7e44cb3addbc09e543a3"
              }
            ],
            "initial_flag_disposition": "not-flagged-initially",
            "reason": "For “Manage multiple AL extensions in one workspace”, the selected current teaching explains VSCode/AL, launch versus app.json/workspace configuration, dependency symbols and multiproject scope. Its purpose, operation/design boundary and checks support this objective; this is editorial teaching coverage, not observed product execution.",
            "initial_depth_result": "substantive",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "env"
            ]
          },
          {
            "wording": "Debug an extension with Visual Studio Code",
            "objective_wording_sha256": "f52e9ac287785073887a7f3d4122c66b80b02976c772accb5c888af9a61c20c7",
            "group": "Create, debug, and deploy an extension in Business Central",
            "group_number": 4,
            "objective_number": 1,
            "evidence_spans": [
              {
                "heading": "Create, debug and deploy extensions",
                "start_line": 103,
                "end_line": 115,
                "span_lf_sha256": "2a07742e6c1e1895931b056c6b45c136bfdd11fc87f178209265089cca483726"
              }
            ],
            "initial_flag_disposition": "not-flagged-initially",
            "reason": "For “Debug an extension with Visual Studio Code”, the selected current teaching explains create/debug/package/publish/install/upgrade/translation/deprecation sequence and compatibility tests. Its purpose, operation/design boundary and checks support this objective; this is editorial teaching coverage, not observed product execution.",
            "initial_depth_result": "substantive",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "develop"
            ]
          },
          {
            "wording": "Deploy an extension",
            "objective_wording_sha256": "e6221b39a9b5156d89d61bb9de7d0e74f9c6b966ce0718d35304a7f424daf7ce",
            "group": "Create, debug, and deploy an extension in Business Central",
            "group_number": 4,
            "objective_number": 2,
            "evidence_spans": [
              {
                "heading": "Create, debug and deploy extensions",
                "start_line": 103,
                "end_line": 115,
                "span_lf_sha256": "2a07742e6c1e1895931b056c6b45c136bfdd11fc87f178209265089cca483726"
              }
            ],
            "initial_flag_disposition": "not-flagged-initially",
            "reason": "For “Deploy an extension”, the selected current teaching explains create/debug/package/publish/install/upgrade/translation/deprecation sequence and compatibility tests. Its purpose, operation/design boundary and checks support this objective; this is editorial teaching coverage, not observed product execution.",
            "initial_depth_result": "substantive",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [
              "mb820-powershell-version"
            ],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "develop"
            ]
          },
          {
            "wording": "Create or modify a Business Central extension in Visual Studio Code",
            "objective_wording_sha256": "5ee8212a2347d2bdeb232efe5bbe2dbad87df77a7cf5e6390caeb47348532866",
            "group": "Create, debug, and deploy an extension in Business Central",
            "group_number": 4,
            "objective_number": 3,
            "evidence_spans": [
              {
                "heading": "Create, debug and deploy extensions",
                "start_line": 103,
                "end_line": 115,
                "span_lf_sha256": "2a07742e6c1e1895931b056c6b45c136bfdd11fc87f178209265089cca483726"
              }
            ],
            "initial_flag_disposition": "not-flagged-initially",
            "reason": "For “Create or modify a Business Central extension in Visual Studio Code”, the selected current teaching explains create/debug/package/publish/install/upgrade/translation/deprecation sequence and compatibility tests. Its purpose, operation/design boundary and checks support this objective; this is editorial teaching coverage, not observed product execution.",
            "initial_depth_result": "substantive",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "develop"
            ]
          },
          {
            "wording": "Manage multilanguage development",
            "objective_wording_sha256": "2dfe45f316aebd20b443321f8f679db3f69488093661f7a8b18654b68f34606b",
            "group": "Create, debug, and deploy an extension in Business Central",
            "group_number": 4,
            "objective_number": 4,
            "evidence_spans": [
              {
                "heading": "Create, debug and deploy extensions",
                "start_line": 103,
                "end_line": 115,
                "span_lf_sha256": "2a07742e6c1e1895931b056c6b45c136bfdd11fc87f178209265089cca483726"
              }
            ],
            "initial_flag_disposition": "not-flagged-initially",
            "reason": "For “Manage multilanguage development”, the selected current teaching explains create/debug/package/publish/install/upgrade/translation/deprecation sequence and compatibility tests. Its purpose, operation/design boundary and checks support this objective; this is editorial teaching coverage, not observed product execution.",
            "initial_depth_result": "substantive",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "develop"
            ]
          },
          {
            "wording": "Maintain extensions",
            "objective_wording_sha256": "33ac06b70aaa0edc9050f2f5a53563ba1ddfd96e858174a4eb6bda6348f9ac6b",
            "group": "Create, debug, and deploy an extension in Business Central",
            "group_number": 4,
            "objective_number": 5,
            "evidence_spans": [
              {
                "heading": "Create, debug and deploy extensions",
                "start_line": 103,
                "end_line": 115,
                "span_lf_sha256": "2a07742e6c1e1895931b056c6b45c136bfdd11fc87f178209265089cca483726"
              }
            ],
            "initial_flag_disposition": "not-flagged-initially",
            "reason": "For “Maintain extensions”, the selected current teaching explains create/debug/package/publish/install/upgrade/translation/deprecation sequence and compatibility tests. Its purpose, operation/design boundary and checks support this objective; this is editorial teaching coverage, not observed product execution.",
            "initial_depth_result": "substantive",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [
              "mb820-powershell-version"
            ],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "develop"
            ]
          },
          {
            "wording": "Develop Role Center pages",
            "objective_wording_sha256": "66ed5fc0fb43af25dbfdaba7c2c04d5747e5340865458a3e7b66b8b43dc49dc3",
            "group": "Build and extend tables and pages in Business Central",
            "group_number": 5,
            "objective_number": 1,
            "evidence_spans": [
              {
                "heading": "Tables, enums and pages",
                "start_line": 121,
                "end_line": 131,
                "span_lf_sha256": "bf6e74185e84d51e7e9fff01926d1a0a2af18a2cb6d73cc75166eb72b2f0161d"
              }
            ],
            "initial_flag_disposition": "existing-adequate-for-verb",
            "reason": "For “Develop Role Center pages”, the current selected text teaches table fields/keys/validation, extensible enums and page/extension/RoleCenter composition with data/UI/security boundaries. RoleCenter composition identifies navigation, cues, lists and parts, with explicit filter/company scope, drill-through and page-open performance checks. It teaches the role-specific page design rather than merely naming RoleCenter.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "objects"
            ]
          },
          {
            "wording": "Identify different page types",
            "objective_wording_sha256": "6aec82c2c67203f8b774f9ffccbdf66412c386bbb15fcd9542971c5287c9c0af",
            "group": "Build and extend tables and pages in Business Central",
            "group_number": 5,
            "objective_number": 2,
            "evidence_spans": [
              {
                "heading": "Tables, enums and pages",
                "start_line": 121,
                "end_line": 131,
                "span_lf_sha256": "bf6e74185e84d51e7e9fff01926d1a0a2af18a2cb6d73cc75166eb72b2f0161d"
              }
            ],
            "initial_flag_disposition": "not-flagged-initially",
            "reason": "For “Identify different page types”, the selected current teaching explains table fields/keys/validation, extensible enums and page/extension/RoleCenter composition with data/UI/security boundaries. Its purpose, operation/design boundary and checks support this objective; this is editorial teaching coverage, not observed product execution.",
            "initial_depth_result": "substantive",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "objects"
            ]
          },
          {
            "wording": "Build and extend page objects",
            "objective_wording_sha256": "2a3556b1412a3ca4f36fee49bf91e1d443ab7c0432c1e905dc67dafc11153fae",
            "group": "Build and extend tables and pages in Business Central",
            "group_number": 5,
            "objective_number": 3,
            "evidence_spans": [
              {
                "heading": "Tables, enums and pages",
                "start_line": 121,
                "end_line": 131,
                "span_lf_sha256": "bf6e74185e84d51e7e9fff01926d1a0a2af18a2cb6d73cc75166eb72b2f0161d"
              }
            ],
            "initial_flag_disposition": "existing-adequate-for-verb",
            "reason": "For “Build and extend page objects”, the current selected text teaches table fields/keys/validation, extensible enums and page/extension/RoleCenter composition with data/UI/security boundaries. Page-extension fields/actions/parts and supported modification properties are paired with ApplicationArea, caption/tooltips and the visibility-versus-authorization failure.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "objects"
            ]
          },
          {
            "wording": "Build and extend tables",
            "objective_wording_sha256": "c1420d8e0e71aa1c0a551c9823d2e15a779e322b9fc3730f3e6fbdbdd134130e",
            "group": "Build and extend tables and pages in Business Central",
            "group_number": 5,
            "objective_number": 4,
            "evidence_spans": [
              {
                "heading": "Tables, enums and pages",
                "start_line": 121,
                "end_line": 131,
                "span_lf_sha256": "bf6e74185e84d51e7e9fff01926d1a0a2af18a2cb6d73cc75166eb72b2f0161d"
              }
            ],
            "initial_flag_disposition": "existing-adequate-for-verb",
            "reason": "For “Build and extend tables”, the current selected text teaches table fields/keys/validation, extensible enums and page/extension/RoleCenter composition with data/UI/security boundaries. Table/extension fields, keys, relations and validation ownership are explained with direct assignment versus Validate and read/write-index tradeoffs.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "objects"
            ]
          },
          {
            "wording": "Build and extend enums",
            "objective_wording_sha256": "923ab0ddf50cf4838831fb0bde1e5449d25a97184b5c94d50eaadb873703e1fe",
            "group": "Build and extend tables and pages in Business Central",
            "group_number": 5,
            "objective_number": 5,
            "evidence_spans": [
              {
                "heading": "Tables, enums and pages",
                "start_line": 121,
                "end_line": 131,
                "span_lf_sha256": "bf6e74185e84d51e7e9fff01926d1a0a2af18a2cb6d73cc75166eb72b2f0161d"
              }
            ],
            "initial_flag_disposition": "existing-adequate-for-verb",
            "reason": "For “Build and extend enums”, the current selected text teaches table fields/keys/validation, extensible enums and page/extension/RoleCenter composition with data/UI/security boundaries. Extensible finite values, ordinal compatibility and enum/interface strategy selection explain the build/extension contract and unknown-value compatibility failure.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "objects"
            ]
          },
          {
            "wording": "Substitute a report",
            "objective_wording_sha256": "87750a0386b3606f4f48da136fdadb8e07b9586d93c53bf4af67f660e4a36e21",
            "group": "Build and extend reports",
            "group_number": 6,
            "objective_number": 1,
            "evidence_spans": [
              {
                "heading": "Reports",
                "start_line": 135,
                "end_line": 139,
                "span_lf_sha256": "2dfff40e62fc7fd91ecb29f7cb8cabe09e25977017ea66c85795ff246ef4ba61"
              },
              {
                "heading": "Worked object path: import, query and report",
                "start_line": 151,
                "end_line": 155,
                "span_lf_sha256": "e9a8115cb0b1bdbe68fd3acbab25c4d90111061d7fb972810f0b1078c99272c1"
              }
            ],
            "initial_flag_disposition": "repaired-by-actual-packet",
            "reason": "For “Substitute a report”, the current selected text teaches dataset/request-page/layout/document/processing-only contracts and actual substitution subscriber coexistence; explicit XMLport staging/invocation, query dataitem linking/open-read-close and report dataset/request/rendering construction with import/fan-out/header-line checks. For “Substitute a report”: The actual ReportManagement.OnAfterSubstituteReport subscriber, ReportId check and var NewReportId assignment now supply substitution with coexistence and original-call-context checks.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [
              "mb820-substitution"
            ],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "reports",
              "path"
            ]
          },
          {
            "wording": "Create a report layout",
            "objective_wording_sha256": "dd45085b630c974cc3e19f18723dba4cdfc3e1b315711c4b5620c43945132090",
            "group": "Build and extend reports",
            "group_number": 6,
            "objective_number": 2,
            "evidence_spans": [
              {
                "heading": "Reports",
                "start_line": 135,
                "end_line": 139,
                "span_lf_sha256": "2dfff40e62fc7fd91ecb29f7cb8cabe09e25977017ea66c85795ff246ef4ba61"
              },
              {
                "heading": "Worked object path: import, query and report",
                "start_line": 151,
                "end_line": 155,
                "span_lf_sha256": "e9a8115cb0b1bdbe68fd3acbab25c4d90111061d7fb972810f0b1078c99272c1"
              }
            ],
            "initial_flag_disposition": "repaired-by-actual-packet",
            "reason": "For “Create a report layout”, the current selected text teaches dataset/request-page/layout/document/processing-only contracts and actual substitution subscriber coexistence; explicit XMLport staging/invocation, query dataitem linking/open-read-close and report dataset/request/rendering construction with import/fan-out/header-line checks. For “Create a report layout”: The new path specifies XMLport direction/schema/invocation, query parent-child links/filter/open-read-close behavior and report dataset→request-page→rendering construction, then checks invalid import, fan-out and zero/one/many lines.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [
              "mb820-object-data-path"
            ],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "reports",
              "path"
            ]
          },
          {
            "wording": "Create document reports",
            "objective_wording_sha256": "1ab17b253d0bded47e41cb52cf4ce0e106c9f2e1257354950c5507d37d230acd",
            "group": "Build and extend reports",
            "group_number": 6,
            "objective_number": 3,
            "evidence_spans": [
              {
                "heading": "Reports",
                "start_line": 135,
                "end_line": 139,
                "span_lf_sha256": "2dfff40e62fc7fd91ecb29f7cb8cabe09e25977017ea66c85795ff246ef4ba61"
              },
              {
                "heading": "Worked object path: import, query and report",
                "start_line": 151,
                "end_line": 155,
                "span_lf_sha256": "e9a8115cb0b1bdbe68fd3acbab25c4d90111061d7fb972810f0b1078c99272c1"
              }
            ],
            "initial_flag_disposition": "repaired-by-actual-packet",
            "reason": "For “Create document reports”, the current selected text teaches dataset/request-page/layout/document/processing-only contracts and actual substitution subscriber coexistence; explicit XMLport staging/invocation, query dataitem linking/open-read-close and report dataset/request/rendering construction with import/fan-out/header-line checks. For “Create document reports”: The new path specifies XMLport direction/schema/invocation, query parent-child links/filter/open-read-close behavior and report dataset→request-page→rendering construction, then checks invalid import, fan-out and zero/one/many lines.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [
              "mb820-object-data-path"
            ],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "reports",
              "path"
            ]
          },
          {
            "wording": "Design the data model of a report",
            "objective_wording_sha256": "917587b543b4b928f6542f22879ca6d61b7dea5d758d8c973d44d43fd6308710",
            "group": "Build and extend reports",
            "group_number": 6,
            "objective_number": 4,
            "evidence_spans": [
              {
                "heading": "Reports",
                "start_line": 135,
                "end_line": 139,
                "span_lf_sha256": "2dfff40e62fc7fd91ecb29f7cb8cabe09e25977017ea66c85795ff246ef4ba61"
              },
              {
                "heading": "Worked object path: import, query and report",
                "start_line": 151,
                "end_line": 155,
                "span_lf_sha256": "e9a8115cb0b1bdbe68fd3acbab25c4d90111061d7fb972810f0b1078c99272c1"
              }
            ],
            "initial_flag_disposition": "repaired-by-actual-packet",
            "reason": "For “Design the data model of a report”, the current selected text teaches dataset/request-page/layout/document/processing-only contracts and actual substitution subscriber coexistence; explicit XMLport staging/invocation, query dataitem linking/open-read-close and report dataset/request/rendering construction with import/fan-out/header-line checks. For “Design the data model of a report”: The new path specifies XMLport direction/schema/invocation, query parent-child links/filter/open-read-close behavior and report dataset→request-page→rendering construction, then checks invalid import, fan-out and zero/one/many lines.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [
              "mb820-object-data-path"
            ],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "reports",
              "path"
            ]
          },
          {
            "wording": "Implement multilanguage in reports",
            "objective_wording_sha256": "06e3e048d8a8e80fa806e11508dc3a591321e809d71c073e88e757c677d105f9",
            "group": "Build and extend reports",
            "group_number": 6,
            "objective_number": 5,
            "evidence_spans": [
              {
                "heading": "Reports",
                "start_line": 135,
                "end_line": 139,
                "span_lf_sha256": "2dfff40e62fc7fd91ecb29f7cb8cabe09e25977017ea66c85795ff246ef4ba61"
              },
              {
                "heading": "Worked object path: import, query and report",
                "start_line": 151,
                "end_line": 155,
                "span_lf_sha256": "e9a8115cb0b1bdbe68fd3acbab25c4d90111061d7fb972810f0b1078c99272c1"
              }
            ],
            "initial_flag_disposition": "repaired-by-actual-packet",
            "reason": "For “Implement multilanguage in reports”, the current selected text teaches dataset/request-page/layout/document/processing-only contracts and actual substitution subscriber coexistence; explicit XMLport staging/invocation, query dataitem linking/open-read-close and report dataset/request/rendering construction with import/fan-out/header-line checks. For “Implement multilanguage in reports”: The new path specifies XMLport direction/schema/invocation, query parent-child links/filter/open-read-close behavior and report dataset→request-page→rendering construction, then checks invalid import, fan-out and zero/one/many lines.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [
              "mb820-object-data-path"
            ],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "reports",
              "path"
            ]
          },
          {
            "wording": "Use report triggers, functions, and processing-only reports",
            "objective_wording_sha256": "4eb2db4fec4bc0a2c5383c86070c1d834b8c502ec1fbd0b9ba4d3e911dfb4031",
            "group": "Build and extend reports",
            "group_number": 6,
            "objective_number": 6,
            "evidence_spans": [
              {
                "heading": "Reports",
                "start_line": 135,
                "end_line": 139,
                "span_lf_sha256": "2dfff40e62fc7fd91ecb29f7cb8cabe09e25977017ea66c85795ff246ef4ba61"
              },
              {
                "heading": "Worked object path: import, query and report",
                "start_line": 151,
                "end_line": 155,
                "span_lf_sha256": "e9a8115cb0b1bdbe68fd3acbab25c4d90111061d7fb972810f0b1078c99272c1"
              }
            ],
            "initial_flag_disposition": "repaired-by-actual-packet",
            "reason": "For “Use report triggers, functions, and processing-only reports”, the current selected text teaches dataset/request-page/layout/document/processing-only contracts and actual substitution subscriber coexistence; explicit XMLport staging/invocation, query dataitem linking/open-read-close and report dataset/request/rendering construction with import/fan-out/header-line checks. For “Use report triggers, functions, and processing-only reports”: The new path specifies XMLport direction/schema/invocation, query parent-child links/filter/open-read-close behavior and report dataset→request-page→rendering construction, then checks invalid import, fan-out and zero/one/many lines.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [
              "mb820-object-data-path"
            ],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "reports",
              "path"
            ]
          },
          {
            "wording": "Develop the report request page",
            "objective_wording_sha256": "9a088b712929cb640f783d150172be3a51b77d9bbc0f719afd42395b0f339d3e",
            "group": "Build and extend reports",
            "group_number": 6,
            "objective_number": 7,
            "evidence_spans": [
              {
                "heading": "Reports",
                "start_line": 135,
                "end_line": 139,
                "span_lf_sha256": "2dfff40e62fc7fd91ecb29f7cb8cabe09e25977017ea66c85795ff246ef4ba61"
              },
              {
                "heading": "Worked object path: import, query and report",
                "start_line": 151,
                "end_line": 155,
                "span_lf_sha256": "e9a8115cb0b1bdbe68fd3acbab25c4d90111061d7fb972810f0b1078c99272c1"
              }
            ],
            "initial_flag_disposition": "repaired-by-actual-packet",
            "reason": "For “Develop the report request page”, the current selected text teaches dataset/request-page/layout/document/processing-only contracts and actual substitution subscriber coexistence; explicit XMLport staging/invocation, query dataitem linking/open-read-close and report dataset/request/rendering construction with import/fan-out/header-line checks. For “Develop the report request page”: The new path specifies XMLport direction/schema/invocation, query parent-child links/filter/open-read-close behavior and report dataset→request-page→rendering construction, then checks invalid import, fan-out and zero/one/many lines.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [
              "mb820-object-data-path"
            ],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "reports",
              "path"
            ]
          },
          {
            "wording": "Configure different XMLport properties",
            "objective_wording_sha256": "591541f5dc7524ec56b79fd21645f629e827338f7085dc033230a32614f5a33a",
            "group": "Design and create an XMLport",
            "group_number": 7,
            "objective_number": 1,
            "evidence_spans": [
              {
                "heading": "XMLports and queries",
                "start_line": 143,
                "end_line": 147,
                "span_lf_sha256": "aa56ef9558462e02aa3c21dd3e9f264f88c7811ee0a446cfea89f6b7d5d86a12"
              },
              {
                "heading": "Worked object path: import, query and report",
                "start_line": 151,
                "end_line": 155,
                "span_lf_sha256": "e9a8115cb0b1bdbe68fd3acbab25c4d90111061d7fb972810f0b1078c99272c1"
              }
            ],
            "initial_flag_disposition": "repaired-by-actual-packet",
            "reason": "For “Configure different XMLport properties”, the current selected text teaches XMLport schema/direction/node and query join/filter/aggregate/lifecycle contracts; explicit XMLport staging/invocation, query dataitem linking/open-read-close and report dataset/request/rendering construction with import/fan-out/header-line checks. For “Configure different XMLport properties”: The new path specifies XMLport direction/schema/invocation, query parent-child links/filter/open-read-close behavior and report dataset→request-page→rendering construction, then checks invalid import, fan-out and zero/one/many lines.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [
              "mb820-object-data-path"
            ],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "xml",
              "path"
            ]
          },
          {
            "wording": "Configure nodes and their properties",
            "objective_wording_sha256": "f9d544a075d9fcecd4d1e1c9a4029f08043e018897179c45d4e4835fcefcf7b8",
            "group": "Design and create an XMLport",
            "group_number": 7,
            "objective_number": 2,
            "evidence_spans": [
              {
                "heading": "XMLports and queries",
                "start_line": 143,
                "end_line": 147,
                "span_lf_sha256": "aa56ef9558462e02aa3c21dd3e9f264f88c7811ee0a446cfea89f6b7d5d86a12"
              },
              {
                "heading": "Worked object path: import, query and report",
                "start_line": 151,
                "end_line": 155,
                "span_lf_sha256": "e9a8115cb0b1bdbe68fd3acbab25c4d90111061d7fb972810f0b1078c99272c1"
              }
            ],
            "initial_flag_disposition": "repaired-by-actual-packet",
            "reason": "For “Configure nodes and their properties”, the current selected text teaches XMLport schema/direction/node and query join/filter/aggregate/lifecycle contracts; explicit XMLport staging/invocation, query dataitem linking/open-read-close and report dataset/request/rendering construction with import/fan-out/header-line checks. For “Configure nodes and their properties”: The new path specifies XMLport direction/schema/invocation, query parent-child links/filter/open-read-close behavior and report dataset→request-page→rendering construction, then checks invalid import, fan-out and zero/one/many lines.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [
              "mb820-object-data-path"
            ],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "xml",
              "path"
            ]
          },
          {
            "wording": "Use XMLports in AL code",
            "objective_wording_sha256": "6b10cdd32d8f0683b45627b40a74da25bc2c1129689e67f6b829ec5c36c04791",
            "group": "Design and create an XMLport",
            "group_number": 7,
            "objective_number": 3,
            "evidence_spans": [
              {
                "heading": "XMLports and queries",
                "start_line": 143,
                "end_line": 147,
                "span_lf_sha256": "aa56ef9558462e02aa3c21dd3e9f264f88c7811ee0a446cfea89f6b7d5d86a12"
              },
              {
                "heading": "Worked object path: import, query and report",
                "start_line": 151,
                "end_line": 155,
                "span_lf_sha256": "e9a8115cb0b1bdbe68fd3acbab25c4d90111061d7fb972810f0b1078c99272c1"
              }
            ],
            "initial_flag_disposition": "repaired-by-actual-packet",
            "reason": "For “Use XMLports in AL code”, the current selected text teaches XMLport schema/direction/node and query join/filter/aggregate/lifecycle contracts; explicit XMLport staging/invocation, query dataitem linking/open-read-close and report dataset/request/rendering construction with import/fan-out/header-line checks. For “Use XMLports in AL code”: The new path specifies XMLport direction/schema/invocation, query parent-child links/filter/open-read-close behavior and report dataset→request-page→rendering construction, then checks invalid import, fan-out and zero/one/many lines.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [
              "mb820-object-data-path"
            ],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "xml",
              "path"
            ]
          },
          {
            "wording": "Create and access codeunits",
            "objective_wording_sha256": "7d82dbd0f96b8062741196ea0069b611fad1e33b4c06fd86bc3183b8329aef2c",
            "group": "Develop codeunits",
            "group_number": 8,
            "objective_number": 1,
            "evidence_spans": [
              {
                "heading": "Codeunits, events and interfaces",
                "start_line": 159,
                "end_line": 161,
                "span_lf_sha256": "98f4ace1f88db1708d8843fea70cbefda390b942468400faa90b0a459459c490"
              },
              {
                "heading": "Worked AL reasoning: values, variables and record effects",
                "start_line": 215,
                "end_line": 217,
                "span_lf_sha256": "19bd6cd7be05b8dac092a26b8d14bd633f7410a763a782cf3212b590f7cc6621"
              }
            ],
            "initial_flag_disposition": "existing-adequate-for-verb",
            "reason": "For “Create and access codeunits”, the current selected text teaches codeunit/procedure, trigger/event/subscriber and interface/enum strategy/default contracts; Decimal calculation/value-versus-var/local-versus-global trace and separate record Validate/Modify state effects. Cohesive codeunit procedures and smallest exposed surface are grounded in object lifecycle, subscriber boundaries and installation/upgrade responsibilities; the language trace reinforces procedure use.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "code",
              "trace"
            ]
          },
          {
            "wording": "Use events and triggers",
            "objective_wording_sha256": "12ca2fdd44f2e0401e25c7370f52570bcd2e016b849c78d527f43efed2da848c",
            "group": "Develop codeunits",
            "group_number": 8,
            "objective_number": 2,
            "evidence_spans": [
              {
                "heading": "Codeunits, events and interfaces",
                "start_line": 159,
                "end_line": 161,
                "span_lf_sha256": "98f4ace1f88db1708d8843fea70cbefda390b942468400faa90b0a459459c490"
              }
            ],
            "initial_flag_disposition": "not-flagged-initially",
            "reason": "For “Use events and triggers”, the selected current teaching explains codeunit/procedure, trigger/event/subscriber and interface/enum strategy/default contracts. Its purpose, operation/design boundary and checks support this objective; this is editorial teaching coverage, not observed product execution.",
            "initial_depth_result": "substantive",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "code"
            ]
          },
          {
            "wording": "Implement interfaces",
            "objective_wording_sha256": "434b7d3adfc8e71be3264559dc05d09bfb22d813d02f68874e26978d6ec0356c",
            "group": "Develop codeunits",
            "group_number": 8,
            "objective_number": 3,
            "evidence_spans": [
              {
                "heading": "Codeunits, events and interfaces",
                "start_line": 159,
                "end_line": 161,
                "span_lf_sha256": "98f4ace1f88db1708d8843fea70cbefda390b942468400faa90b0a459459c490"
              }
            ],
            "initial_flag_disposition": "existing-adequate-for-verb",
            "reason": "For “Implement interfaces”, the current selected text teaches codeunit/procedure, trigger/event/subscriber and interface/enum strategy/default contracts. The interface contract→implementation→enum strategy pattern includes default/unknown handling so an extension value cannot crash an older consumer. An exhaustive syntax sample is a retained thinner limit.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "code"
            ]
          },
          {
            "wording": "Create installation and upgrade codeunits",
            "objective_wording_sha256": "5e70694fa4eb9940f1671e67046bfa2557db5301e687bcda9d11decc8dea5834",
            "group": "Develop codeunits",
            "group_number": 8,
            "objective_number": 4,
            "evidence_spans": [
              {
                "heading": "Codeunits, events and interfaces",
                "start_line": 159,
                "end_line": 161,
                "span_lf_sha256": "98f4ace1f88db1708d8843fea70cbefda390b942468400faa90b0a459459c490"
              },
              {
                "heading": "Create, debug and deploy extensions",
                "start_line": 103,
                "end_line": 115,
                "span_lf_sha256": "2a07742e6c1e1895931b056c6b45c136bfdd11fc87f178209265089cca483726"
              },
              {
                "heading": "5. Upgrade every company exactly once",
                "start_line": 325,
                "end_line": 325,
                "span_lf_sha256": "90f04cdf17e02c012c6c248d5a8a21b05da239ba6e890075642b53eebf4dbad8"
              }
            ],
            "initial_flag_disposition": "not-flagged-initially",
            "reason": "For “Create installation and upgrade codeunits”, the selected current teaching explains codeunit/procedure, trigger/event/subscriber and interface/enum strategy/default contracts; create/debug/package/publish/install/upgrade/translation/deprecation sequence and compatibility tests; tagged per-company upgrade exactly-once/retry/new-company checks. Its purpose, operation/design boundary and checks support this objective; this is editorial teaching coverage, not observed product execution.",
            "initial_depth_result": "substantive",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "code",
              "develop",
              "upgrade"
            ]
          },
          {
            "wording": "Create and extend permission sets",
            "objective_wording_sha256": "35d58a5cbb0f527b8c591fbe7e45a58da4bdd04cf78b2a97d517c7e473d7c322",
            "group": "Create entitlement and permission set objects",
            "group_number": 9,
            "objective_number": 1,
            "evidence_spans": [
              {
                "heading": "Entitlements, permission sets and queries",
                "start_line": 165,
                "end_line": 171,
                "span_lf_sha256": "5e4c91d6d5a21bf21c1bc690777bd7d35b32453ef4ad22098c88562d3ea91a43"
              }
            ],
            "initial_flag_disposition": "existing-adequate-for-verb",
            "reason": "For “Create and extend permission sets”, the current selected text teaches permission-set object/include/extend, entitlement/inherent scope and full entry/execution/tabledata troubleshooting. Permission-set objects grant object/tabledata operations and include/extend other sets; the full entry→execution→tabledata trace and least-privilege negative test teach the effective construction boundary.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "perm"
            ]
          },
          {
            "wording": "Override entitlements with inherent permissions",
            "objective_wording_sha256": "009a2f63d30178f0b15d075572cc25b7721edaee3ad40768a6ddaaa173cdac8c",
            "group": "Create entitlement and permission set objects",
            "group_number": 9,
            "objective_number": 2,
            "evidence_spans": [
              {
                "heading": "Entitlements, permission sets and queries",
                "start_line": 165,
                "end_line": 171,
                "span_lf_sha256": "5e4c91d6d5a21bf21c1bc690777bd7d35b32453ef4ad22098c88562d3ea91a43"
              }
            ],
            "initial_flag_disposition": "not-flagged-initially",
            "reason": "For “Override entitlements with inherent permissions”, the selected current teaching explains permission-set object/include/extend, entitlement/inherent scope and full entry/execution/tabledata troubleshooting. Its purpose, operation/design boundary and checks support this objective; this is editorial teaching coverage, not observed product execution.",
            "initial_depth_result": "substantive",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "perm"
            ]
          },
          {
            "wording": "Troubleshoot permission sets",
            "objective_wording_sha256": "bc78a2228710d13a1bee8100511e700f07909daf19bd684fe4cc8a6f114671ea",
            "group": "Create entitlement and permission set objects",
            "group_number": 9,
            "objective_number": 3,
            "evidence_spans": [
              {
                "heading": "Entitlements, permission sets and queries",
                "start_line": 165,
                "end_line": 171,
                "span_lf_sha256": "5e4c91d6d5a21bf21c1bc690777bd7d35b32453ef4ad22098c88562d3ea91a43"
              }
            ],
            "initial_flag_disposition": "not-flagged-initially",
            "reason": "For “Troubleshoot permission sets”, the selected current teaching explains permission-set object/include/extend, entitlement/inherent scope and full entry/execution/tabledata troubleshooting. Its purpose, operation/design boundary and checks support this objective; this is editorial teaching coverage, not observed product execution.",
            "initial_depth_result": "substantive",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "perm"
            ]
          },
          {
            "wording": "Link and join data items",
            "objective_wording_sha256": "a93d642e4c50553c1b31821325f0af3e52b16c9cbc6139a6f3f840ad20da777f",
            "group": "Create queries in Business Central",
            "group_number": 10,
            "objective_number": 1,
            "evidence_spans": [
              {
                "heading": "XMLports and queries",
                "start_line": 143,
                "end_line": 147,
                "span_lf_sha256": "aa56ef9558462e02aa3c21dd3e9f264f88c7811ee0a446cfea89f6b7d5d86a12"
              },
              {
                "heading": "Worked object path: import, query and report",
                "start_line": 151,
                "end_line": 155,
                "span_lf_sha256": "e9a8115cb0b1bdbe68fd3acbab25c4d90111061d7fb972810f0b1078c99272c1"
              },
              {
                "heading": "3. Joining at the wrong grain doubles a report",
                "start_line": 317,
                "end_line": 317,
                "span_lf_sha256": "b1a4b4fbd422bc5287257a91f3c4172cac9703c4d4e375085c370ea9f5ed6a77"
              }
            ],
            "initial_flag_disposition": "repaired-by-actual-packet",
            "reason": "For “Link and join data items”, the current selected text teaches XMLport schema/direction/node and query join/filter/aggregate/lifecycle contracts; explicit XMLport staging/invocation, query dataitem linking/open-read-close and report dataset/request/rendering construction with import/fan-out/header-line checks; a concrete header/line fan-out example and correct grain reconciliation. For “Link and join data items”: The new path specifies XMLport direction/schema/invocation, query parent-child links/filter/open-read-close behavior and report dataset→request-page→rendering construction, then checks invalid import, fan-out and zero/one/many lines.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [
              "mb820-object-data-path"
            ],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "xml",
              "path",
              "join"
            ]
          },
          {
            "wording": "Apply filters in query objects",
            "objective_wording_sha256": "a2d218e06c04f9776465ae0c131842bfe13ae5a7a3386db9325f00373b9c9ccf",
            "group": "Create queries in Business Central",
            "group_number": 10,
            "objective_number": 2,
            "evidence_spans": [
              {
                "heading": "XMLports and queries",
                "start_line": 143,
                "end_line": 147,
                "span_lf_sha256": "aa56ef9558462e02aa3c21dd3e9f264f88c7811ee0a446cfea89f6b7d5d86a12"
              },
              {
                "heading": "Worked object path: import, query and report",
                "start_line": 151,
                "end_line": 155,
                "span_lf_sha256": "e9a8115cb0b1bdbe68fd3acbab25c4d90111061d7fb972810f0b1078c99272c1"
              },
              {
                "heading": "3. Joining at the wrong grain doubles a report",
                "start_line": 317,
                "end_line": 317,
                "span_lf_sha256": "b1a4b4fbd422bc5287257a91f3c4172cac9703c4d4e375085c370ea9f5ed6a77"
              }
            ],
            "initial_flag_disposition": "repaired-by-actual-packet",
            "reason": "For “Apply filters in query objects”, the current selected text teaches XMLport schema/direction/node and query join/filter/aggregate/lifecycle contracts; explicit XMLport staging/invocation, query dataitem linking/open-read-close and report dataset/request/rendering construction with import/fan-out/header-line checks; a concrete header/line fan-out example and correct grain reconciliation. For “Apply filters in query objects”: The new path specifies XMLport direction/schema/invocation, query parent-child links/filter/open-read-close behavior and report dataset→request-page→rendering construction, then checks invalid import, fan-out and zero/one/many lines.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [
              "mb820-object-data-path"
            ],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "xml",
              "path",
              "join"
            ]
          },
          {
            "wording": "Use queries instead of record variables",
            "objective_wording_sha256": "fb088a7efd5e85a4c05465e4f35c1587460d48315979000a9925ae98a028ffe5",
            "group": "Create queries in Business Central",
            "group_number": 10,
            "objective_number": 3,
            "evidence_spans": [
              {
                "heading": "XMLports and queries",
                "start_line": 143,
                "end_line": 147,
                "span_lf_sha256": "aa56ef9558462e02aa3c21dd3e9f264f88c7811ee0a446cfea89f6b7d5d86a12"
              },
              {
                "heading": "Worked object path: import, query and report",
                "start_line": 151,
                "end_line": 155,
                "span_lf_sha256": "e9a8115cb0b1bdbe68fd3acbab25c4d90111061d7fb972810f0b1078c99272c1"
              },
              {
                "heading": "3. Joining at the wrong grain doubles a report",
                "start_line": 317,
                "end_line": 317,
                "span_lf_sha256": "b1a4b4fbd422bc5287257a91f3c4172cac9703c4d4e375085c370ea9f5ed6a77"
              }
            ],
            "initial_flag_disposition": "not-flagged-initially",
            "reason": "For “Use queries instead of record variables”, the selected current teaching explains XMLport schema/direction/node and query join/filter/aggregate/lifecycle contracts; explicit XMLport staging/invocation, query dataitem linking/open-read-close and report dataset/request/rendering construction with import/fan-out/header-line checks; a concrete header/line fan-out example and correct grain reconciliation. Its purpose, operation/design boundary and checks support this objective; this is editorial teaching coverage, not observed product execution.",
            "initial_depth_result": "substantive",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "xml",
              "path",
              "join"
            ]
          },
          {
            "wording": "Aggregate data in query objects",
            "objective_wording_sha256": "9bfd50dd9648dae332a5d65289707e469e546627b056c756fd124005519b5d12",
            "group": "Create queries in Business Central",
            "group_number": 10,
            "objective_number": 4,
            "evidence_spans": [
              {
                "heading": "XMLports and queries",
                "start_line": 143,
                "end_line": 147,
                "span_lf_sha256": "aa56ef9558462e02aa3c21dd3e9f264f88c7811ee0a446cfea89f6b7d5d86a12"
              },
              {
                "heading": "Worked object path: import, query and report",
                "start_line": 151,
                "end_line": 155,
                "span_lf_sha256": "e9a8115cb0b1bdbe68fd3acbab25c4d90111061d7fb972810f0b1078c99272c1"
              },
              {
                "heading": "3. Joining at the wrong grain doubles a report",
                "start_line": 317,
                "end_line": 317,
                "span_lf_sha256": "b1a4b4fbd422bc5287257a91f3c4172cac9703c4d4e375085c370ea9f5ed6a77"
              }
            ],
            "initial_flag_disposition": "repaired-by-actual-packet",
            "reason": "For “Aggregate data in query objects”, the current selected text teaches XMLport schema/direction/node and query join/filter/aggregate/lifecycle contracts; explicit XMLport staging/invocation, query dataitem linking/open-read-close and report dataset/request/rendering construction with import/fan-out/header-line checks; a concrete header/line fan-out example and correct grain reconciliation. For “Aggregate data in query objects”: The new path specifies XMLport direction/schema/invocation, query parent-child links/filter/open-read-close behavior and report dataset→request-page→rendering construction, then checks invalid import, fan-out and zero/one/many lines.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [
              "mb820-object-data-path"
            ],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "xml",
              "path",
              "join"
            ]
          },
          {
            "wording": "Use a query to create a report",
            "objective_wording_sha256": "34d258e579c9d018d65e4b855da6bdbeb4e33a8779f6fe78918f7b5599a46237",
            "group": "Create queries in Business Central",
            "group_number": 10,
            "objective_number": 5,
            "evidence_spans": [
              {
                "heading": "XMLports and queries",
                "start_line": 143,
                "end_line": 147,
                "span_lf_sha256": "aa56ef9558462e02aa3c21dd3e9f264f88c7811ee0a446cfea89f6b7d5d86a12"
              },
              {
                "heading": "Worked object path: import, query and report",
                "start_line": 151,
                "end_line": 155,
                "span_lf_sha256": "e9a8115cb0b1bdbe68fd3acbab25c4d90111061d7fb972810f0b1078c99272c1"
              },
              {
                "heading": "3. Joining at the wrong grain doubles a report",
                "start_line": 317,
                "end_line": 317,
                "span_lf_sha256": "b1a4b4fbd422bc5287257a91f3c4172cac9703c4d4e375085c370ea9f5ed6a77"
              }
            ],
            "initial_flag_disposition": "repaired-by-actual-packet",
            "reason": "For “Use a query to create a report”, the current selected text teaches XMLport schema/direction/node and query join/filter/aggregate/lifecycle contracts; explicit XMLport staging/invocation, query dataitem linking/open-read-close and report dataset/request/rendering construction with import/fan-out/header-line checks; a concrete header/line fan-out example and correct grain reconciliation. For “Use a query to create a report”: The new path specifies XMLport direction/schema/invocation, query parent-child links/filter/open-read-close behavior and report dataset→request-page→rendering construction, then checks invalid import, fan-out and zero/one/many lines.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [
              "mb820-object-data-path"
            ],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "xml",
              "path",
              "join"
            ]
          },
          {
            "wording": "Create profiles in AL",
            "objective_wording_sha256": "3e64cfadf384c8ac991f518f9fd5c135d7eb23799958a45906167e340df96637",
            "group": "Customize the UI experience, and implement onboarding techniques",
            "group_number": 11,
            "objective_number": 1,
            "evidence_spans": [
              {
                "heading": "UI experience and onboarding",
                "start_line": 177,
                "end_line": 183,
                "span_lf_sha256": "849ca6008af75ab00ff9a564bb95946ad253eb96f46ac22325dccffbf3270d46"
              }
            ],
            "initial_flag_disposition": "repaired-by-actual-packet",
            "reason": "For “Create profiles in AL”, the current selected text teaches profile/view properties, user-help/setup/checklist registration and audience/completion/user/filter tests. For “Create profiles in AL”: The profile RoleCenter/customization binding and named view Filters/OrderBy/SharedLayout path supply the actual artifact properties and user/filter-result checks.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [
              "mb820-profile-views"
            ],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "ui"
            ]
          },
          {
            "wording": "Use and create views in AL",
            "objective_wording_sha256": "ca4c1b32abf38dccfc838cb1e8aced07fef6c8a41b22b4eb2a5e6a319ca0a1dd",
            "group": "Customize the UI experience, and implement onboarding techniques",
            "group_number": 11,
            "objective_number": 2,
            "evidence_spans": [
              {
                "heading": "UI experience and onboarding",
                "start_line": 177,
                "end_line": 183,
                "span_lf_sha256": "849ca6008af75ab00ff9a564bb95946ad253eb96f46ac22325dccffbf3270d46"
              }
            ],
            "initial_flag_disposition": "repaired-by-actual-packet",
            "reason": "For “Use and create views in AL”, the current selected text teaches profile/view properties, user-help/setup/checklist registration and audience/completion/user/filter tests. For “Use and create views in AL”: The profile RoleCenter/customization binding and named view Filters/OrderBy/SharedLayout path supply the actual artifact properties and user/filter-result checks.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [
              "mb820-profile-views"
            ],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "ui"
            ]
          },
          {
            "wording": "Develop the UI by using the user assistance model",
            "objective_wording_sha256": "ded17050b30e33a79e8a29b13923641f9241ca5f8d71540327fa487686532aca",
            "group": "Customize the UI experience, and implement onboarding techniques",
            "group_number": 11,
            "objective_number": 3,
            "evidence_spans": [
              {
                "heading": "UI experience and onboarding",
                "start_line": 177,
                "end_line": 183,
                "span_lf_sha256": "849ca6008af75ab00ff9a564bb95946ad253eb96f46ac22325dccffbf3270d46"
              }
            ],
            "initial_flag_disposition": "existing-adequate-for-verb",
            "reason": "For “Develop the UI by using the user assistance model”, the current selected text teaches profile/view properties, user-help/setup/checklist registration and audience/completion/user/filter tests. Tooltips/context help/conceptual guidance are separated from setup/checklists, with dismissible/localizable/accessible/resumable design and persisted-completion failure checks. The measured user-assistance model is broader than one UI widget.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "ui"
            ]
          },
          {
            "wording": "Integrate assisted setup",
            "objective_wording_sha256": "1a0d33179ed101487daa3aee9bde552bb2617b37b7c627a829ec2d40d0c3c439",
            "group": "Customize the UI experience, and implement onboarding techniques",
            "group_number": 11,
            "objective_number": 4,
            "evidence_spans": [
              {
                "heading": "UI experience and onboarding",
                "start_line": 177,
                "end_line": 183,
                "span_lf_sha256": "849ca6008af75ab00ff9a564bb95946ad253eb96f46ac22325dccffbf3270d46"
              }
            ],
            "initial_flag_disposition": "repaired-by-actual-packet",
            "reason": "For “Integrate assisted setup”, the current selected text teaches profile/view properties, user-help/setup/checklist registration and audience/completion/user/filter tests. For “Integrate assisted setup”: The Guided Experience registration→checklist→audience→persisted-completion path now supplies onboarding operations and failed/resumed setup checks; Microsoft-only Role Center Tour support remains an explicit limit.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [
              "mb820-guided-onboarding"
            ],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "ui"
            ]
          },
          {
            "wording": "Create teaching tips and in-app tours to onboard users",
            "objective_wording_sha256": "bf8d5392cabc44f839268138507bc775f869bb89c84fed01ccd7234daa21af67",
            "group": "Customize the UI experience, and implement onboarding techniques",
            "group_number": 11,
            "objective_number": 5,
            "evidence_spans": [
              {
                "heading": "UI experience and onboarding",
                "start_line": 177,
                "end_line": 183,
                "span_lf_sha256": "849ca6008af75ab00ff9a564bb95946ad253eb96f46ac22325dccffbf3270d46"
              }
            ],
            "initial_flag_disposition": "repaired-by-actual-packet",
            "reason": "For “Create teaching tips and in-app tours to onboard users”, the current selected text teaches profile/view properties, user-help/setup/checklist registration and audience/completion/user/filter tests. For “Create teaching tips and in-app tours to onboard users”: The Guided Experience registration→checklist→audience→persisted-completion path now supplies onboarding operations and failed/resumed setup checks; Microsoft-only Role Center Tour support remains an explicit limit.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [
              "mb820-guided-onboarding"
            ],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "ui"
            ]
          },
          {
            "wording": "Create an onboarding checklist",
            "objective_wording_sha256": "efc47b5f6fea7b90c79372b37da927fcc1489b384f3ce44450a0304b244a4ce8",
            "group": "Customize the UI experience, and implement onboarding techniques",
            "group_number": 11,
            "objective_number": 6,
            "evidence_spans": [
              {
                "heading": "UI experience and onboarding",
                "start_line": 177,
                "end_line": 183,
                "span_lf_sha256": "849ca6008af75ab00ff9a564bb95946ad253eb96f46ac22325dccffbf3270d46"
              }
            ],
            "initial_flag_disposition": "repaired-by-actual-packet",
            "reason": "For “Create an onboarding checklist”, the current selected text teaches profile/view properties, user-help/setup/checklist registration and audience/completion/user/filter tests. For “Create an onboarding checklist”: The Guided Experience registration→checklist→audience→persisted-completion path now supplies onboarding operations and failed/resumed setup checks; Microsoft-only Role Center Tour support remains an explicit limit.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [
              "mb820-guided-onboarding"
            ],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "ui"
            ]
          },
          {
            "wording": "Implement the data process model in Business Central",
            "objective_wording_sha256": "a7bab4f9a3e48de7922b510b6d4200db152781948580c10ec238e47011fda694",
            "group": "Describe the essential development standards",
            "group_number": 12,
            "objective_number": 1,
            "evidence_spans": [
              {
                "heading": "Development standards and data process",
                "start_line": 187,
                "end_line": 191,
                "span_lf_sha256": "8741fafe261140899d1d6b2813a08d397ef9d3c9acc201144ee24fd3ba7803ff"
              }
            ],
            "initial_flag_disposition": "not-flagged-initially",
            "reason": "For “Implement the data process model in Business Central”, the selected current teaching explains functional table/master/document/data-process conventions, numbering, posting and validation. Its purpose, operation/design boundary and checks support this objective; this is editorial teaching coverage, not observed product execution.",
            "initial_depth_result": "substantive",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "standards"
            ]
          },
          {
            "wording": "Define the different functional table types and characteristics",
            "objective_wording_sha256": "93eb68a184a98ef198c9bbea171c7f2dadc9b82bf396c92338c4c071a10cf1e2",
            "group": "Describe the essential development standards",
            "group_number": 12,
            "objective_number": 2,
            "evidence_spans": [
              {
                "heading": "Development standards and data process",
                "start_line": 187,
                "end_line": 191,
                "span_lf_sha256": "8741fafe261140899d1d6b2813a08d397ef9d3c9acc201144ee24fd3ba7803ff"
              }
            ],
            "initial_flag_disposition": "not-flagged-initially",
            "reason": "For “Define the different functional table types and characteristics”, the selected current teaching explains functional table/master/document/data-process conventions, numbering, posting and validation. Its purpose, operation/design boundary and checks support this objective; this is editorial teaching coverage, not observed product execution.",
            "initial_depth_result": "substantive",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "standards"
            ]
          },
          {
            "wording": "Use document standards in Business Central",
            "objective_wording_sha256": "cd3f39f0053eb301ec6433feaa3c874410e6b6364a09444c621492adf8ccb528",
            "group": "Describe the essential development standards",
            "group_number": 12,
            "objective_number": 3,
            "evidence_spans": [
              {
                "heading": "Development standards and data process",
                "start_line": 187,
                "end_line": 191,
                "span_lf_sha256": "8741fafe261140899d1d6b2813a08d397ef9d3c9acc201144ee24fd3ba7803ff"
              }
            ],
            "initial_flag_disposition": "not-flagged-initially",
            "reason": "For “Use document standards in Business Central”, the selected current teaching explains functional table/master/document/data-process conventions, numbering, posting and validation. Its purpose, operation/design boundary and checks support this objective; this is editorial teaching coverage, not observed product execution.",
            "initial_depth_result": "substantive",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "standards"
            ]
          },
          {
            "wording": "Implement master data standards and design patterns",
            "objective_wording_sha256": "147a21fda701e662ff4d326652903edbeb3cecd85e7add8ff9546e0c132a4ad9",
            "group": "Describe the essential development standards",
            "group_number": 12,
            "objective_number": 4,
            "evidence_spans": [
              {
                "heading": "Development standards and data process",
                "start_line": 187,
                "end_line": 191,
                "span_lf_sha256": "8741fafe261140899d1d6b2813a08d397ef9d3c9acc201144ee24fd3ba7803ff"
              }
            ],
            "initial_flag_disposition": "not-flagged-initially",
            "reason": "For “Implement master data standards and design patterns”, the selected current teaching explains functional table/master/document/data-process conventions, numbering, posting and validation. Its purpose, operation/design boundary and checks support this objective; this is editorial teaching coverage, not observed product execution.",
            "initial_depth_result": "substantive",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "standards"
            ]
          },
          {
            "wording": "Create custom procedures",
            "objective_wording_sha256": "28adc55c9a1a13a62fabe21d5369466ffdd14fe940e4b3367383b96171072f5c",
            "group": "Use AL to extend Business Central",
            "group_number": 13,
            "objective_number": 1,
            "evidence_spans": [
              {
                "heading": "AL language and safe data behavior",
                "start_line": 195,
                "end_line": 211,
                "span_lf_sha256": "527199509d5bdba03839538b98784130f221387ac3b3b8eb95845abca026286d"
              },
              {
                "heading": "Worked AL reasoning: values, variables and record effects",
                "start_line": 215,
                "end_line": 217,
                "span_lf_sha256": "19bd6cd7be05b8dac092a26b8d14bd633f7410a763a782cf3212b590f7cc6621"
              }
            ],
            "initial_flag_disposition": "repaired-by-actual-packet",
            "reason": "For “Create custom procedures”, the current selected text teaches typed procedures, variables, expressions, record/file methods, access modifiers and error/commit/partial-record boundaries; Decimal calculation/value-versus-var/local-versus-global trace and separate record Validate/Modify state effects. For “Create custom procedures”: The added AL value/variable/procedure trace makes declarations, parameter/value semantics, expressions and record validation observable through predicted outcomes rather than a language inventory.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [
              "mb820-language-trace"
            ],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "al",
              "trace"
            ]
          },
          {
            "wording": "Use data types in code",
            "objective_wording_sha256": "7f96035c2c4641b9360cf82edcea62fed5e947788faecdf9d45fab29828fee92",
            "group": "Use AL to extend Business Central",
            "group_number": 13,
            "objective_number": 2,
            "evidence_spans": [
              {
                "heading": "AL language and safe data behavior",
                "start_line": 195,
                "end_line": 211,
                "span_lf_sha256": "527199509d5bdba03839538b98784130f221387ac3b3b8eb95845abca026286d"
              },
              {
                "heading": "Worked AL reasoning: values, variables and record effects",
                "start_line": 215,
                "end_line": 217,
                "span_lf_sha256": "19bd6cd7be05b8dac092a26b8d14bd633f7410a763a782cf3212b590f7cc6621"
              }
            ],
            "initial_flag_disposition": "repaired-by-actual-packet",
            "reason": "For “Use data types in code”, the current selected text teaches typed procedures, variables, expressions, record/file methods, access modifiers and error/commit/partial-record boundaries; Decimal calculation/value-versus-var/local-versus-global trace and separate record Validate/Modify state effects. For “Use data types in code”: The added AL value/variable/procedure trace makes declarations, parameter/value semantics, expressions and record validation observable through predicted outcomes rather than a language inventory.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [
              "mb820-language-trace"
            ],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "al",
              "trace"
            ]
          },
          {
            "wording": "Manage files",
            "objective_wording_sha256": "b31d03367afa07fc078083519eceed5adbc16e7a7c7afd6cad441e1ec8d529b3",
            "group": "Use AL to extend Business Central",
            "group_number": 13,
            "objective_number": 3,
            "evidence_spans": [
              {
                "heading": "AL language and safe data behavior",
                "start_line": 195,
                "end_line": 211,
                "span_lf_sha256": "527199509d5bdba03839538b98784130f221387ac3b3b8eb95845abca026286d"
              },
              {
                "heading": "Worked AL reasoning: values, variables and record effects",
                "start_line": 215,
                "end_line": 217,
                "span_lf_sha256": "19bd6cd7be05b8dac092a26b8d14bd633f7410a763a782cf3212b590f7cc6621"
              }
            ],
            "initial_flag_disposition": "not-flagged-initially",
            "reason": "For “Manage files”, the selected current teaching explains typed procedures, variables, expressions, record/file methods, access modifiers and error/commit/partial-record boundaries; Decimal calculation/value-versus-var/local-versus-global trace and separate record Validate/Modify state effects. Its purpose, operation/design boundary and checks support this objective; this is editorial teaching coverage, not observed product execution.",
            "initial_depth_result": "substantive",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "al",
              "trace"
            ]
          },
          {
            "wording": "Manipulate data by using code",
            "objective_wording_sha256": "c350b2daabd129249417d0d4e111c387a7badb540132012ef7c6d9791ca244a4",
            "group": "Use AL to extend Business Central",
            "group_number": 13,
            "objective_number": 4,
            "evidence_spans": [
              {
                "heading": "AL language and safe data behavior",
                "start_line": 195,
                "end_line": 211,
                "span_lf_sha256": "527199509d5bdba03839538b98784130f221387ac3b3b8eb95845abca026286d"
              },
              {
                "heading": "Worked AL reasoning: values, variables and record effects",
                "start_line": 215,
                "end_line": 217,
                "span_lf_sha256": "19bd6cd7be05b8dac092a26b8d14bd633f7410a763a782cf3212b590f7cc6621"
              }
            ],
            "initial_flag_disposition": "not-flagged-initially",
            "reason": "For “Manipulate data by using code”, the selected current teaching explains typed procedures, variables, expressions, record/file methods, access modifiers and error/commit/partial-record boundaries; Decimal calculation/value-versus-var/local-versus-global trace and separate record Validate/Modify state effects. Its purpose, operation/design boundary and checks support this objective; this is editorial teaching coverage, not observed product execution.",
            "initial_depth_result": "substantive",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [
              "mb820-language-trace"
            ],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "al",
              "trace"
            ]
          },
          {
            "wording": "Describe the basics of the AL",
            "objective_wording_sha256": "3773cae2fbd84f6e87fe8d8ba4f0d14a8ddd536e0e31ced7df94e5e6a82c1a75",
            "group": "Use AL to extend Business Central",
            "group_number": 13,
            "objective_number": 5,
            "evidence_spans": [
              {
                "heading": "AL language and safe data behavior",
                "start_line": 195,
                "end_line": 211,
                "span_lf_sha256": "527199509d5bdba03839538b98784130f221387ac3b3b8eb95845abca026286d"
              },
              {
                "heading": "Worked AL reasoning: values, variables and record effects",
                "start_line": 215,
                "end_line": 217,
                "span_lf_sha256": "19bd6cd7be05b8dac092a26b8d14bd633f7410a763a782cf3212b590f7cc6621"
              }
            ],
            "initial_flag_disposition": "repaired-by-actual-packet",
            "reason": "For “Describe the basics of the AL”, the current selected text teaches typed procedures, variables, expressions, record/file methods, access modifiers and error/commit/partial-record boundaries; Decimal calculation/value-versus-var/local-versus-global trace and separate record Validate/Modify state effects. For “Describe the basics of the AL”: The added AL value/variable/procedure trace makes declarations, parameter/value semantics, expressions and record validation observable through predicted outcomes rather than a language inventory.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [
              "mb820-language-trace"
            ],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "al",
              "trace"
            ]
          },
          {
            "wording": "Use the different types of expressions",
            "objective_wording_sha256": "e07388e1959b9f102f5eeff6b769ba855203fd43ba9589e79632fd2d8302df81",
            "group": "Use AL to extend Business Central",
            "group_number": 13,
            "objective_number": 6,
            "evidence_spans": [
              {
                "heading": "AL language and safe data behavior",
                "start_line": 195,
                "end_line": 211,
                "span_lf_sha256": "527199509d5bdba03839538b98784130f221387ac3b3b8eb95845abca026286d"
              },
              {
                "heading": "Worked AL reasoning: values, variables and record effects",
                "start_line": 215,
                "end_line": 217,
                "span_lf_sha256": "19bd6cd7be05b8dac092a26b8d14bd633f7410a763a782cf3212b590f7cc6621"
              }
            ],
            "initial_flag_disposition": "repaired-by-actual-packet",
            "reason": "For “Use the different types of expressions”, the current selected text teaches typed procedures, variables, expressions, record/file methods, access modifiers and error/commit/partial-record boundaries; Decimal calculation/value-versus-var/local-versus-global trace and separate record Validate/Modify state effects. For “Use the different types of expressions”: The added AL value/variable/procedure trace makes declarations, parameter/value semantics, expressions and record validation observable through predicted outcomes rather than a language inventory.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [
              "mb820-language-trace"
            ],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "al",
              "trace"
            ]
          },
          {
            "wording": "Use AL built-in functions and AL statements",
            "objective_wording_sha256": "be1445633e6377a638771ddefba977e24b9314e57694f3cdda15145fde691523",
            "group": "Use AL to extend Business Central",
            "group_number": 13,
            "objective_number": 7,
            "evidence_spans": [
              {
                "heading": "AL language and safe data behavior",
                "start_line": 195,
                "end_line": 211,
                "span_lf_sha256": "527199509d5bdba03839538b98784130f221387ac3b3b8eb95845abca026286d"
              },
              {
                "heading": "Worked AL reasoning: values, variables and record effects",
                "start_line": 215,
                "end_line": 217,
                "span_lf_sha256": "19bd6cd7be05b8dac092a26b8d14bd633f7410a763a782cf3212b590f7cc6621"
              }
            ],
            "initial_flag_disposition": "repaired-by-actual-packet",
            "reason": "For “Use AL built-in functions and AL statements”, the current selected text teaches typed procedures, variables, expressions, record/file methods, access modifiers and error/commit/partial-record boundaries; Decimal calculation/value-versus-var/local-versus-global trace and separate record Validate/Modify state effects. For “Use AL built-in functions and AL statements”: The added AL value/variable/procedure trace makes declarations, parameter/value semantics, expressions and record validation observable through predicted outcomes rather than a language inventory.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [
              "mb820-language-trace"
            ],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "al",
              "trace"
            ]
          },
          {
            "wording": "Work with variables and define them in AL code",
            "objective_wording_sha256": "d8d22bee9398fe7b9c5ea64430f9cb703e10b5a30acc7409b72f77c664f9c227",
            "group": "Use AL to extend Business Central",
            "group_number": 13,
            "objective_number": 8,
            "evidence_spans": [
              {
                "heading": "AL language and safe data behavior",
                "start_line": 195,
                "end_line": 211,
                "span_lf_sha256": "527199509d5bdba03839538b98784130f221387ac3b3b8eb95845abca026286d"
              },
              {
                "heading": "Worked AL reasoning: values, variables and record effects",
                "start_line": 215,
                "end_line": 217,
                "span_lf_sha256": "19bd6cd7be05b8dac092a26b8d14bd633f7410a763a782cf3212b590f7cc6621"
              }
            ],
            "initial_flag_disposition": "repaired-by-actual-packet",
            "reason": "For “Work with variables and define them in AL code”, the current selected text teaches typed procedures, variables, expressions, record/file methods, access modifiers and error/commit/partial-record boundaries; Decimal calculation/value-versus-var/local-versus-global trace and separate record Validate/Modify state effects. For “Work with variables and define them in AL code”: The added AL value/variable/procedure trace makes declarations, parameter/value semantics, expressions and record validation observable through predicted outcomes rather than a language inventory.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [
              "mb820-language-trace"
            ],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "al",
              "trace"
            ]
          },
          {
            "wording": "Manage errors",
            "objective_wording_sha256": "e5d520f108b20c82ea72739cdc480b664b4d0999895644b245e3a67c4732fa1f",
            "group": "Use AL to extend Business Central",
            "group_number": 13,
            "objective_number": 9,
            "evidence_spans": [
              {
                "heading": "AL language and safe data behavior",
                "start_line": 195,
                "end_line": 211,
                "span_lf_sha256": "527199509d5bdba03839538b98784130f221387ac3b3b8eb95845abca026286d"
              },
              {
                "heading": "1. Trace what an error can still leave behind",
                "start_line": 283,
                "end_line": 283,
                "span_lf_sha256": "ac5df0f148db4c25455bf196d84e92d4a27da8411afff78310378ee4c27e5d3d"
              }
            ],
            "initial_flag_disposition": "not-flagged-initially",
            "reason": "For “Manage errors”, the selected current teaching explains typed procedures, variables, expressions, record/file methods, access modifiers and error/commit/partial-record boundaries; committed/uncommitted/try/remote-effect outcomes on one transaction timeline. Its purpose, operation/design boundary and checks support this objective; this is editorial teaching coverage, not observed product execution.",
            "initial_depth_result": "substantive",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "al",
              "errors"
            ]
          },
          {
            "wording": "Use access modifiers to limit access",
            "objective_wording_sha256": "84a6e0294b5b5a557e6c45ad35f9189f1a6ee40281e72a171aba5ab9036bf30e",
            "group": "Use AL to extend Business Central",
            "group_number": 13,
            "objective_number": 10,
            "evidence_spans": [
              {
                "heading": "AL language and safe data behavior",
                "start_line": 195,
                "end_line": 211,
                "span_lf_sha256": "527199509d5bdba03839538b98784130f221387ac3b3b8eb95845abca026286d"
              },
              {
                "heading": "Worked AL reasoning: values, variables and record effects",
                "start_line": 215,
                "end_line": 217,
                "span_lf_sha256": "19bd6cd7be05b8dac092a26b8d14bd633f7410a763a782cf3212b590f7cc6621"
              }
            ],
            "initial_flag_disposition": "not-flagged-initially",
            "reason": "For “Use access modifiers to limit access”, the selected current teaching explains typed procedures, variables, expressions, record/file methods, access modifiers and error/commit/partial-record boundaries; Decimal calculation/value-versus-var/local-versus-global trace and separate record Validate/Modify state effects. Its purpose, operation/design boundary and checks support this objective; this is editorial teaching coverage, not observed product execution.",
            "initial_depth_result": "substantive",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "al",
              "trace"
            ]
          },
          {
            "wording": "Test applications in Business Central",
            "objective_wording_sha256": "d34651757cbfa05ec2731e350636c150bf805bf7301a76b1c1edea70456f94bd",
            "group": "Implement semiautomated test processes, and run standard Business Central tests",
            "group_number": 14,
            "objective_number": 1,
            "evidence_spans": [
              {
                "heading": "Automated and semiautomated testing",
                "start_line": 223,
                "end_line": 229,
                "span_lf_sha256": "9b840faaa0868f6c29aa536583da6791308a3dc2e4d206d622a3ef319cf24c94"
              }
            ],
            "initial_flag_disposition": "not-flagged-initially",
            "reason": "For “Test applications in Business Central”, the selected current teaching explains supported test environments and actual Subtype=Test/[Test]/handler/assertion/runner evidence. Its purpose, operation/design boundary and checks support this objective; this is editorial teaching coverage, not observed product execution.",
            "initial_depth_result": "substantive",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "test"
            ]
          },
          {
            "wording": "Install and run the Test Toolkit",
            "objective_wording_sha256": "1d9aad003815dbc70dea113568dd44f8c771c224b9aa106bb5b7129dafdae9cd",
            "group": "Implement semiautomated test processes, and run standard Business Central tests",
            "group_number": 14,
            "objective_number": 2,
            "evidence_spans": [
              {
                "heading": "Automated and semiautomated testing",
                "start_line": 223,
                "end_line": 229,
                "span_lf_sha256": "9b840faaa0868f6c29aa536583da6791308a3dc2e4d206d622a3ef319cf24c94"
              }
            ],
            "initial_flag_disposition": "repaired-by-actual-packet",
            "reason": "For “Install and run the Test Toolkit”, the current selected text teaches supported test environments and actual Subtype=Test/[Test]/handler/assertion/runner evidence. For “Install and run the Test Toolkit”: Subtype=Test and [Test] setup/action/assertion, handlers and method-level runner output supply a minimal test creation/run contract, bounded by toolkit/environment support.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [
              "mb820-test-structure"
            ],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "test"
            ]
          },
          {
            "wording": "Develop test codeunits and procedures",
            "objective_wording_sha256": "4a223dbe96d9f29b7269c486d6d2e954c376c23c14c120c629d42877437336dc",
            "group": "Implement semiautomated test processes, and run standard Business Central tests",
            "group_number": 14,
            "objective_number": 3,
            "evidence_spans": [
              {
                "heading": "Automated and semiautomated testing",
                "start_line": 223,
                "end_line": 229,
                "span_lf_sha256": "9b840faaa0868f6c29aa536583da6791308a3dc2e4d206d622a3ef319cf24c94"
              }
            ],
            "initial_flag_disposition": "repaired-by-actual-packet",
            "reason": "For “Develop test codeunits and procedures”, the current selected text teaches supported test environments and actual Subtype=Test/[Test]/handler/assertion/runner evidence. For “Develop test codeunits and procedures”: Subtype=Test and [Test] setup/action/assertion, handlers and method-level runner output supply a minimal test creation/run contract, bounded by toolkit/environment support.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [
              "mb820-test-structure"
            ],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "test"
            ]
          },
          {
            "wording": "Monitor and analyze telemetry",
            "objective_wording_sha256": "62b5fde9b0790042ff9c9251658635f94ceea14f985c20ba63b5ecc193c003b8",
            "group": "Manage and analyze telemetry",
            "group_number": 15,
            "objective_number": 1,
            "evidence_spans": [
              {
                "heading": "Telemetry and performance",
                "start_line": 233,
                "end_line": 245,
                "span_lf_sha256": "e50e895d41f11b793518494649e65676ae7b115e502baef9fb943d49d94b3961"
              }
            ],
            "initial_flag_disposition": "not-flagged-initially",
            "reason": "For “Monitor and analyze telemetry”, the selected current teaching explains ApplicationInsights destination/manifest and Session.LogMessage scope/classification/correlation plus performance/missing-event checks. Its purpose, operation/design boundary and checks support this objective; this is editorial teaching coverage, not observed product execution.",
            "initial_depth_result": "substantive",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "telemetry"
            ]
          },
          {
            "wording": "Configure telemetry",
            "objective_wording_sha256": "be092c2d7c2d9f9f395b957604ea415742de5fbdd36ff93aa4693748a42e5f15",
            "group": "Manage and analyze telemetry",
            "group_number": 15,
            "objective_number": 2,
            "evidence_spans": [
              {
                "heading": "Telemetry and performance",
                "start_line": 233,
                "end_line": 245,
                "span_lf_sha256": "e50e895d41f11b793518494649e65676ae7b115e502baef9fb943d49d94b3961"
              }
            ],
            "initial_flag_disposition": "repaired-by-actual-packet",
            "reason": "For “Configure telemetry”, the current selected text teaches ApplicationInsights destination/manifest and Session.LogMessage scope/classification/correlation plus performance/missing-event checks. For “Configure telemetry”: app.json applicationInsightsConnectionString and Session.LogMessage now supply actual configuration/emission contracts, routing/classification rules and missing-event diagnostics.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [
              "mb820-telemetry-contract"
            ],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "telemetry"
            ]
          },
          {
            "wording": "Create custom telemetry signals",
            "objective_wording_sha256": "ea2e8e1127c7fea312b28590e2149d95734a3e650dd5dd661d3e8a94c9e82141",
            "group": "Manage and analyze telemetry",
            "group_number": 15,
            "objective_number": 3,
            "evidence_spans": [
              {
                "heading": "Telemetry and performance",
                "start_line": 233,
                "end_line": 245,
                "span_lf_sha256": "e50e895d41f11b793518494649e65676ae7b115e502baef9fb943d49d94b3961"
              }
            ],
            "initial_flag_disposition": "repaired-by-actual-packet",
            "reason": "For “Create custom telemetry signals”, the current selected text teaches ApplicationInsights destination/manifest and Session.LogMessage scope/classification/correlation plus performance/missing-event checks. For “Create custom telemetry signals”: app.json applicationInsightsConnectionString and Session.LogMessage now supply actual configuration/emission contracts, routing/classification rules and missing-event diagnostics.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [
              "mb820-telemetry-contract"
            ],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "telemetry"
            ]
          },
          {
            "wording": "Use the different HTTP classes and their functions",
            "objective_wording_sha256": "cca5f2be93ed2db05e024adaa7c67fe30c1b3a6facec627982ae9bfdb9333230",
            "group": "Access Representational State Transfer (REST) services from within Business Central",
            "group_number": 16,
            "objective_number": 1,
            "evidence_spans": [
              {
                "heading": "Call REST services from AL",
                "start_line": 251,
                "end_line": 257,
                "span_lf_sha256": "ff90c922055e57645883a79c5f7ee63d56ed038da954addff2e480dccf42bcea"
              },
              {
                "heading": "2. Retry an external effect with the same identity",
                "start_line": 287,
                "end_line": 313,
                "span_lf_sha256": "f373dbff98f216c53cd5ca3667f6f08a57181043f8ffecdcc3d24acdeb8f5f5e"
              }
            ],
            "initial_flag_disposition": "existing-adequate-for-verb",
            "reason": "For “Use the different HTTP classes and their functions”, the current selected text teaches HTTP/JSON method, identity, headers/content/status/schema contract, app/TLS/SSRF settings and retry failure boundaries; stable operation identity and recipient-side atomic deduplication across timeout/retry. The outbound contract explicitly assigns method/URI, credentials, headers, timeout, content and status/schema checks to the HTTP types, then diagnoses transport versus HTTP versus payload failure.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "rest",
              "retry"
            ]
          },
          {
            "wording": "Get data from and send data to an external REST service",
            "objective_wording_sha256": "c0093cb686d57fd7f64412532b3e4ec2c5425148169537c5e50356ff0eee3e10",
            "group": "Access Representational State Transfer (REST) services from within Business Central",
            "group_number": 16,
            "objective_number": 2,
            "evidence_spans": [
              {
                "heading": "Call REST services from AL",
                "start_line": 251,
                "end_line": 257,
                "span_lf_sha256": "ff90c922055e57645883a79c5f7ee63d56ed038da954addff2e480dccf42bcea"
              },
              {
                "heading": "2. Retry an external effect with the same identity",
                "start_line": 287,
                "end_line": 313,
                "span_lf_sha256": "f373dbff98f216c53cd5ca3667f6f08a57181043f8ffecdcc3d24acdeb8f5f5e"
              }
            ],
            "initial_flag_disposition": "existing-adequate-for-verb",
            "reason": "For “Get data from and send data to an external REST service”, the current selected text teaches HTTP/JSON method, identity, headers/content/status/schema contract, app/TLS/SSRF settings and retry failure boundaries; stable operation identity and recipient-side atomic deduplication across timeout/retry. The outbound request/result sequence includes supported app permission, TLS, transient retry and stable operation identity; the timeout-after-remote-success example explains the actual integration failure.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "rest",
              "retry"
            ]
          },
          {
            "wording": "Use and read JSON",
            "objective_wording_sha256": "3987141d9b7bf0833df2c07e309c84b7eae95110dcdafc337ec55a6bd2597c3b",
            "group": "Access Representational State Transfer (REST) services from within Business Central",
            "group_number": 16,
            "objective_number": 3,
            "evidence_spans": [
              {
                "heading": "Call REST services from AL",
                "start_line": 251,
                "end_line": 257,
                "span_lf_sha256": "ff90c922055e57645883a79c5f7ee63d56ed038da954addff2e480dccf42bcea"
              },
              {
                "heading": "2. Retry an external effect with the same identity",
                "start_line": 287,
                "end_line": 313,
                "span_lf_sha256": "f373dbff98f216c53cd5ca3667f6f08a57181043f8ffecdcc3d24acdeb8f5f5e"
              }
            ],
            "initial_flag_disposition": "existing-adequate-for-verb",
            "reason": "For “Use and read JSON”, the current selected text teaches HTTP/JSON method, identity, headers/content/status/schema contract, app/TLS/SSRF settings and retry failure boundaries; stable operation identity and recipient-side atomic deduplication across timeout/retry. JsonObject/Array/Token/Value serialization is paired with missing/null/type/size cases and response-schema validation. Exact per-method syntax remains a reference lookup, not a missing serialization concept.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "rest",
              "retry"
            ]
          },
          {
            "wording": "Create and work with APIs",
            "objective_wording_sha256": "2f5502fa659257f5050bb7fe5e101613e3a4eba36029edd23b9042777ec5510a",
            "group": "Implement APIs",
            "group_number": 17,
            "objective_number": 1,
            "evidence_spans": [
              {
                "heading": "Implement Business Central APIs",
                "start_line": 261,
                "end_line": 267,
                "span_lf_sha256": "4cdf1c374e346ffa120f589fb1cd2674decd799a34b3b43f7bf1410a814bf734"
              },
              {
                "heading": "API compatibility, atomicity and read consistency",
                "start_line": 271,
                "end_line": 275,
                "span_lf_sha256": "afcf9df276e247c085ac6257a918f43a011df6c9cb4fe0b8923e0139519e7e5b"
              }
            ],
            "initial_flag_disposition": "not-flagged-initially",
            "reason": "For “Create and work with APIs”, the selected current teaching explains inbound API-page identity/version/CRUD and bound/unbound action/resource contracts with concurrency/batch/read intent; nonextendable API contracts, stable SystemId, snapshot batch/commit boundaries and production/sandbox read-routing limits. Its purpose, operation/design boundary and checks support this objective; this is editorial teaching coverage, not observed product execution.",
            "initial_depth_result": "substantive",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "api",
              "compat"
            ]
          },
          {
            "wording": "Create and manage OData bound and unbound actions",
            "objective_wording_sha256": "c72042f0d0988b9076f43690b1af6667b189bdd2bb31c57a6cb99ed64d3ceafe",
            "group": "Implement APIs",
            "group_number": 17,
            "objective_number": 2,
            "evidence_spans": [
              {
                "heading": "Implement Business Central APIs",
                "start_line": 261,
                "end_line": 267,
                "span_lf_sha256": "4cdf1c374e346ffa120f589fb1cd2674decd799a34b3b43f7bf1410a814bf734"
              },
              {
                "heading": "API compatibility, atomicity and read consistency",
                "start_line": 271,
                "end_line": 275,
                "span_lf_sha256": "afcf9df276e247c085ac6257a918f43a011df6c9cb4fe0b8923e0139519e7e5b"
              }
            ],
            "initial_flag_disposition": "existing-adequate-for-verb",
            "reason": "For “Create and manage OData bound and unbound actions”, the current selected text teaches inbound API-page identity/version/CRUD and bound/unbound action/resource contracts with concurrency/batch/read intent; nonextendable API contracts, stable SystemId, snapshot batch/commit boundaries and production/sandbox read-routing limits. Bound resource operations versus unbound service operations are tied to permissions, validation, atomicity/error mapping, concurrency and batch partial failure. The guide gives the operation design/test contract; exact action declaration syntax is thinner reference-level treatment.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "api",
              "compat"
            ]
          },
          {
            "wording": "Use Read Scale-Out to improve performance",
            "objective_wording_sha256": "d9db776d7fa7b7efbeacd2bcb3f04fd537330324fe702e138ba418b382e968e1",
            "group": "Implement APIs",
            "group_number": 17,
            "objective_number": 3,
            "evidence_spans": [
              {
                "heading": "Implement Business Central APIs",
                "start_line": 261,
                "end_line": 267,
                "span_lf_sha256": "4cdf1c374e346ffa120f589fb1cd2674decd799a34b3b43f7bf1410a814bf734"
              },
              {
                "heading": "API compatibility, atomicity and read consistency",
                "start_line": 271,
                "end_line": 275,
                "span_lf_sha256": "afcf9df276e247c085ac6257a918f43a011df6c9cb4fe0b8923e0139519e7e5b"
              }
            ],
            "initial_flag_disposition": "not-flagged-initially",
            "reason": "For “Use Read Scale-Out to improve performance”, the selected current teaching explains inbound API-page identity/version/CRUD and bound/unbound action/resource contracts with concurrency/batch/read intent; nonextendable API contracts, stable SystemId, snapshot batch/commit boundaries and production/sandbox read-routing limits. Its purpose, operation/design boundary and checks support this objective; this is editorial teaching coverage, not observed product execution.",
            "initial_depth_result": "substantive",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "api",
              "compat"
            ]
          }
        ],
        "disposition_counts": {
          "not-flagged-initially": 33,
          "existing-adequate-for-verb": 13,
          "repaired-by-actual-packet": 29
        }
      },
      {
        "exam_code": "PL-300",
        "guide_path": "guides/PL-300-microsoft-power-bi-data-analyst.md",
        "guide_lf_sha256": "a8d85b7c0cc3756a49c5b9885f9462f98bfc5e3ce429986817cafff4bf6dc185",
        "objective_raw_sha256": "c1c6a25ab5e6285ba4cce3603f6e2624f482ff1d6f237d68e6fa79da93d9e8d9",
        "objective_count": 78,
        "current_mapping": [
          {
            "wording": "Identify and connect to data sources or a shared semantic model",
            "objective_wording_sha256": "841e0c46f75ebccf2bb0a531f6b350aa8a00fe5f8da8f15db2c002a16c0dacff",
            "group": "Get or connect to data",
            "group_number": 1,
            "objective_number": 1,
            "evidence_spans": [
              {
                "heading": "Requirements, sources, and storage mode",
                "start_line": 61,
                "end_line": 79,
                "span_lf_sha256": "60663ef7b5fbcf52edfc63a839b139b024a917f15d6d13d41c01386695932ea9"
              }
            ],
            "initial_flag_disposition": "not-flagged-initially",
            "reason": "For “Identify and connect to data sources or a shared semantic model”, the selected current teaching explains complete source/settings/storage-mode table, credential/privacy/parameter and real refresh-path choices. Its purpose, operation/design boundary and checks support this objective; this is editorial teaching coverage, not observed product execution.",
            "initial_depth_result": "substantive",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "sources"
            ]
          },
          {
            "wording": "Change data source settings, including credentials and privacy levels",
            "objective_wording_sha256": "ba0d6af2504efbd905f61dea14d3f1a63782d9f0bc5cd95eaf9f8482fcae8382",
            "group": "Get or connect to data",
            "group_number": 1,
            "objective_number": 2,
            "evidence_spans": [
              {
                "heading": "Requirements, sources, and storage mode",
                "start_line": 61,
                "end_line": 79,
                "span_lf_sha256": "60663ef7b5fbcf52edfc63a839b139b024a917f15d6d13d41c01386695932ea9"
              }
            ],
            "initial_flag_disposition": "not-flagged-initially",
            "reason": "For “Change data source settings, including credentials and privacy levels”, the selected current teaching explains complete source/settings/storage-mode table, credential/privacy/parameter and real refresh-path choices. Its purpose, operation/design boundary and checks support this objective; this is editorial teaching coverage, not observed product execution.",
            "initial_depth_result": "substantive",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "sources"
            ]
          },
          {
            "wording": "Choose between DirectLake, DirectQuery, and Import",
            "objective_wording_sha256": "60975a70bf31055f4cdfddea9b84742b65aae991755f12b49f8da8e86ce8e131",
            "group": "Get or connect to data",
            "group_number": 1,
            "objective_number": 3,
            "evidence_spans": [
              {
                "heading": "Requirements, sources, and storage mode",
                "start_line": 61,
                "end_line": 79,
                "span_lf_sha256": "60663ef7b5fbcf52edfc63a839b139b024a917f15d6d13d41c01386695932ea9"
              }
            ],
            "initial_flag_disposition": "not-flagged-initially",
            "reason": "For “Choose between DirectLake, DirectQuery, and Import”, the selected current teaching explains the full Import/DirectQuery/DirectLake comparison, including where evaluation runs, copied-data/latency tradeoffs, framing and different fallback behavior. Its purpose, operation/design boundary and checks support this objective; this is editorial teaching coverage, not observed product execution.",
            "initial_depth_result": "substantive",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "sources"
            ]
          },
          {
            "wording": "Create and modify parameters",
            "objective_wording_sha256": "d07214a2e4d6ff19e96e8d42d1283288fae83f4885e154837d1cddf2d60477e3",
            "group": "Get or connect to data",
            "group_number": 1,
            "objective_number": 4,
            "evidence_spans": [
              {
                "heading": "Requirements, sources, and storage mode",
                "start_line": 61,
                "end_line": 79,
                "span_lf_sha256": "60663ef7b5fbcf52edfc63a839b139b024a917f15d6d13d41c01386695932ea9"
              },
              {
                "heading": "Lab 1 — Connect and profile",
                "start_line": 303,
                "end_line": 303,
                "span_lf_sha256": "6e83180fc547415581cff0c9c284c6b76b98cba7ad485962bb67ae3ac81a759f"
              }
            ],
            "initial_flag_disposition": "existing-adequate-for-verb",
            "reason": "For “Create and modify parameters”, the current selected text teaches complete source/settings/storage-mode table, credential/privacy/parameter and real refresh-path choices; source parameter/privacy setup, whole-data profile and injected type/null/import-error evidence. Server/database/path/date/environment parameter choices, reusable source settings and the secret prohibition explain what to create/change and why; the source/refresh-path lab supplies verification. A dialog-by-dialog recipe is not material here.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "sources",
              "lab1"
            ]
          },
          {
            "wording": "Evaluate data, including data statistics and column properties",
            "objective_wording_sha256": "32a2eadb7a9092d3e7135d14f37de398364c2373f6c69155ccb3a099279379e2",
            "group": "Profile and clean the data",
            "group_number": 2,
            "objective_number": 1,
            "evidence_spans": [
              {
                "heading": "Profile and clean before transforming",
                "start_line": 83,
                "end_line": 92,
                "span_lf_sha256": "3b77822b52f18c6722389ebf1b9708d7d494acf997a33708c7d3424a24be2810"
              }
            ],
            "initial_flag_disposition": "not-flagged-initially",
            "reason": "For “Evaluate data, including data statistics and column properties”, the selected current teaching explains whole-data profile/type/null/domain/locale and conversion/import-error reconciliation. Its purpose, operation/design boundary and checks support this objective; this is editorial teaching coverage, not observed product execution.",
            "initial_depth_result": "substantive",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "profile"
            ]
          },
          {
            "wording": "Resolve inconsistencies, unexpected or null values, and data quality issues",
            "objective_wording_sha256": "d11334daa869b1118252659a6861bab7c7c3ef82962a1fce0cad0673dd57b526",
            "group": "Profile and clean the data",
            "group_number": 2,
            "objective_number": 2,
            "evidence_spans": [
              {
                "heading": "Profile and clean before transforming",
                "start_line": 83,
                "end_line": 92,
                "span_lf_sha256": "3b77822b52f18c6722389ebf1b9708d7d494acf997a33708c7d3424a24be2810"
              }
            ],
            "initial_flag_disposition": "not-flagged-initially",
            "reason": "For “Resolve inconsistencies, unexpected or null values, and data quality issues”, the selected current teaching explains whole-data profile/type/null/domain/locale and conversion/import-error reconciliation. Its purpose, operation/design boundary and checks support this objective; this is editorial teaching coverage, not observed product execution.",
            "initial_depth_result": "substantive",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "profile"
            ]
          },
          {
            "wording": "Resolve data import errors",
            "objective_wording_sha256": "bed022d0d1843b16ff378ede4f935659438c35b20598ed032d058391803e0482",
            "group": "Profile and clean the data",
            "group_number": 2,
            "objective_number": 3,
            "evidence_spans": [
              {
                "heading": "Profile and clean before transforming",
                "start_line": 83,
                "end_line": 92,
                "span_lf_sha256": "3b77822b52f18c6722389ebf1b9708d7d494acf997a33708c7d3424a24be2810"
              }
            ],
            "initial_flag_disposition": "not-flagged-initially",
            "reason": "For “Resolve data import errors”, the selected current teaching explains whole-data profile/type/null/domain/locale and conversion/import-error reconciliation. Its purpose, operation/design boundary and checks support this objective; this is editorial teaching coverage, not observed product execution.",
            "initial_depth_result": "substantive",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "profile"
            ]
          },
          {
            "wording": "Select appropriate column data types",
            "objective_wording_sha256": "703e5727dc3332b3a5ab8e29cedb994110ee3c5bb4e7371a273361bd399bd98e",
            "group": "Transform and load the data",
            "group_number": 3,
            "objective_number": 1,
            "evidence_spans": [
              {
                "heading": "Transform and load at an explicit grain",
                "start_line": 96,
                "end_line": 115,
                "span_lf_sha256": "d049a08819807d79cdc7a7a9d51da72af17f78c0b719583ecc50b8a9699c83a4"
              },
              {
                "heading": "Profile and clean before transforming",
                "start_line": 83,
                "end_line": 92,
                "span_lf_sha256": "3b77822b52f18c6722389ebf1b9708d7d494acf997a33708c7d3424a24be2810"
              }
            ],
            "initial_flag_disposition": "not-flagged-initially",
            "reason": "For “Select appropriate column data types”, the selected current teaching explains explicit-grain columns/pivot/unpivot/transpose/group/merge/append and keys/reference/duplicate/load/folding effects; whole-data profile/type/null/domain/locale and conversion/import-error reconciliation. Its purpose, operation/design boundary and checks support this objective; this is editorial teaching coverage, not observed product execution.",
            "initial_depth_result": "substantive",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "transform",
              "profile"
            ]
          },
          {
            "wording": "Create and transform columns",
            "objective_wording_sha256": "969e9487352dbf8e01843d6352db0cfeac809e9e2e7e1b1f7afba483371110db",
            "group": "Transform and load the data",
            "group_number": 3,
            "objective_number": 2,
            "evidence_spans": [
              {
                "heading": "Transform and load at an explicit grain",
                "start_line": 96,
                "end_line": 115,
                "span_lf_sha256": "d049a08819807d79cdc7a7a9d51da72af17f78c0b719583ecc50b8a9699c83a4"
              }
            ],
            "initial_flag_disposition": "existing-adequate-for-verb",
            "reason": "For “Create and transform columns”, the current selected text teaches explicit-grain columns/pivot/unpivot/transpose/group/merge/append and keys/reference/duplicate/load/folding effects. Type/name standardization and split/combine operations are placed before model evaluation at an explicit grain, with source-count/amount reconciliation and conversion failure handling.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "transform"
            ]
          },
          {
            "wording": "Group and aggregate rows",
            "objective_wording_sha256": "0d00e9f77c0ef93e453e7824b82389f303ea0738f753cb77ea284c3862384653",
            "group": "Transform and load the data",
            "group_number": 3,
            "objective_number": 3,
            "evidence_spans": [
              {
                "heading": "Transform and load at an explicit grain",
                "start_line": 96,
                "end_line": 115,
                "span_lf_sha256": "d049a08819807d79cdc7a7a9d51da72af17f78c0b719583ecc50b8a9699c83a4"
              }
            ],
            "initial_flag_disposition": "existing-adequate-for-verb",
            "reason": "For “Group and aggregate rows”, the current selected text teaches explicit-grain columns/pivot/unpivot/transpose/group/merge/append and keys/reference/duplicate/load/folding effects. Group is defined as a higher-grain aggregation that destroys detail; declaring the target grain and reconciling totals teach when and how the operation is safe.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "transform"
            ]
          },
          {
            "wording": "Pivot, unpivot, and transpose data",
            "objective_wording_sha256": "6b6c509abfb091a6b4ba8838bb9c7319fc05afec29ffbb8ebf53e7f6df1b6940",
            "group": "Transform and load the data",
            "group_number": 3,
            "objective_number": 4,
            "evidence_spans": [
              {
                "heading": "Transform and load at an explicit grain",
                "start_line": 96,
                "end_line": 115,
                "span_lf_sha256": "d049a08819807d79cdc7a7a9d51da72af17f78c0b719583ecc50b8a9699c83a4"
              }
            ],
            "initial_flag_disposition": "existing-adequate-for-verb",
            "reason": "For “Pivot, unpivot, and transpose data”, the current selected text teaches explicit-grain columns/pivot/unpivot/transpose/group/merge/append and keys/reference/duplicate/load/folding effects. The table distinguishes row-values→columns, columns→attribute/value rows and orientation swap, with identifier, aggregation, schema and type failures specific to each operation.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "transform"
            ]
          },
          {
            "wording": "Convert semi-structured data to a table",
            "objective_wording_sha256": "529719684e80726fb409a9be246e3cc0750702b26945d55e46d98817fe47dd54",
            "group": "Transform and load the data",
            "group_number": 3,
            "objective_number": 5,
            "evidence_spans": [
              {
                "heading": "Transform and load at an explicit grain",
                "start_line": 96,
                "end_line": 115,
                "span_lf_sha256": "d049a08819807d79cdc7a7a9d51da72af17f78c0b719583ecc50b8a9699c83a4"
              }
            ],
            "initial_flag_disposition": "existing-adequate-for-verb",
            "reason": "For “Convert semi-structured data to a table”, the current selected text teaches explicit-grain columns/pivot/unpivot/transpose/group/merge/append and keys/reference/duplicate/load/folding effects. Lists/records/JSON/XML are converted to tables before selected-field expansion; the explicit grain, type and reconciliation checks prevent accidental row multiplication. A separate fixture for each file format is nonessential.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "transform"
            ]
          },
          {
            "wording": "Create fact tables and dimension tables",
            "objective_wording_sha256": "d43f7fd342b94601724260db5ea994a145dc7532cc95d57019093e4924589969",
            "group": "Transform and load the data",
            "group_number": 3,
            "objective_number": 6,
            "evidence_spans": [
              {
                "heading": "Transform and load at an explicit grain",
                "start_line": 96,
                "end_line": 115,
                "span_lf_sha256": "d049a08819807d79cdc7a7a9d51da72af17f78c0b719583ecc50b8a9699c83a4"
              }
            ],
            "initial_flag_disposition": "not-flagged-initially",
            "reason": "For “Create fact tables and dimension tables”, the selected current teaching explains explicit-grain columns/pivot/unpivot/transpose/group/merge/append and keys/reference/duplicate/load/folding effects. Its purpose, operation/design boundary and checks support this objective; this is editorial teaching coverage, not observed product execution.",
            "initial_depth_result": "substantive",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "transform"
            ]
          },
          {
            "wording": "Identify when to use reference or duplicate queries and the resulting impact",
            "objective_wording_sha256": "ed973fec0419b97abe587f866edacf389bdcb9cc6e794a608f62d622a7a9c814",
            "group": "Transform and load the data",
            "group_number": 3,
            "objective_number": 7,
            "evidence_spans": [
              {
                "heading": "Transform and load at an explicit grain",
                "start_line": 96,
                "end_line": 115,
                "span_lf_sha256": "d049a08819807d79cdc7a7a9d51da72af17f78c0b719583ecc50b8a9699c83a4"
              }
            ],
            "initial_flag_disposition": "not-flagged-initially",
            "reason": "For “Identify when to use reference or duplicate queries and the resulting impact”, the selected current teaching explains explicit-grain columns/pivot/unpivot/transpose/group/merge/append and keys/reference/duplicate/load/folding effects. Its purpose, operation/design boundary and checks support this objective; this is editorial teaching coverage, not observed product execution.",
            "initial_depth_result": "substantive",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "transform"
            ]
          },
          {
            "wording": "Merge and append queries",
            "objective_wording_sha256": "d986b060d08f55e6f6bdaf475bc81695ce973206bb02e57d190d5eeeff9a3c25",
            "group": "Transform and load the data",
            "group_number": 3,
            "objective_number": 8,
            "evidence_spans": [
              {
                "heading": "Transform and load at an explicit grain",
                "start_line": 96,
                "end_line": 115,
                "span_lf_sha256": "d049a08819807d79cdc7a7a9d51da72af17f78c0b719583ecc50b8a9699c83a4"
              }
            ],
            "initial_flag_disposition": "not-flagged-initially",
            "reason": "For “Merge and append queries”, the selected current teaching explains explicit-grain columns/pivot/unpivot/transpose/group/merge/append and keys/reference/duplicate/load/folding effects. Its purpose, operation/design boundary and checks support this objective; this is editorial teaching coverage, not observed product execution.",
            "initial_depth_result": "substantive",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "transform"
            ]
          },
          {
            "wording": "Identify and create appropriate keys for relationships",
            "objective_wording_sha256": "14bc14d3d89998e3e0d4ce23c8ba0be329bf2865c33b5e4e3fa77e3709cfca7b",
            "group": "Transform and load the data",
            "group_number": 3,
            "objective_number": 9,
            "evidence_spans": [
              {
                "heading": "Transform and load at an explicit grain",
                "start_line": 96,
                "end_line": 115,
                "span_lf_sha256": "d049a08819807d79cdc7a7a9d51da72af17f78c0b719583ecc50b8a9699c83a4"
              }
            ],
            "initial_flag_disposition": "not-flagged-initially",
            "reason": "For “Identify and create appropriate keys for relationships”, the selected current teaching explains explicit-grain columns/pivot/unpivot/transpose/group/merge/append and keys/reference/duplicate/load/folding effects. Its purpose, operation/design boundary and checks support this objective; this is editorial teaching coverage, not observed product execution.",
            "initial_depth_result": "substantive",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "transform"
            ]
          },
          {
            "wording": "Configure data loading for queries",
            "objective_wording_sha256": "1ad48a371ef7e076605aaad33766c2b4ebef059d5df34d8862d254dab99847a8",
            "group": "Transform and load the data",
            "group_number": 3,
            "objective_number": 10,
            "evidence_spans": [
              {
                "heading": "Transform and load at an explicit grain",
                "start_line": 96,
                "end_line": 115,
                "span_lf_sha256": "d049a08819807d79cdc7a7a9d51da72af17f78c0b719583ecc50b8a9699c83a4"
              }
            ],
            "initial_flag_disposition": "not-flagged-initially",
            "reason": "For “Configure data loading for queries”, the selected current teaching explains explicit-grain columns/pivot/unpivot/transpose/group/merge/append and keys/reference/duplicate/load/folding effects. Its purpose, operation/design boundary and checks support this objective; this is editorial teaching coverage, not observed product execution.",
            "initial_depth_result": "substantive",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "transform"
            ]
          },
          {
            "wording": "Configure table and column properties",
            "objective_wording_sha256": "603b43af1e36a511121cfe802917e99daa0e13f226a2cb738838b7df60e0b2f4",
            "group": "Design and implement a data model",
            "group_number": 4,
            "objective_number": 1,
            "evidence_spans": [
              {
                "heading": "Build a semantic model that explains itself",
                "start_line": 121,
                "end_line": 127,
                "span_lf_sha256": "85f7761b39a545e707817e16021062eda357d6c1ff1d26c5b945129412ff5e9e"
              }
            ],
            "initial_flag_disposition": "not-flagged-initially",
            "reason": "For “Configure table and column properties”, the selected current teaching explains star-schema properties, active/cardinality/filter direction, role-playing date and contiguous-date/RLS rules. Its purpose, operation/design boundary and checks support this objective; this is editorial teaching coverage, not observed product execution.",
            "initial_depth_result": "substantive",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "model"
            ]
          },
          {
            "wording": "Implement role-playing dimensions",
            "objective_wording_sha256": "2d6890fa4410848579d7ca9f9d6fc5f720f39dcf232840af55d40df62469809a",
            "group": "Design and implement a data model",
            "group_number": 4,
            "objective_number": 2,
            "evidence_spans": [
              {
                "heading": "Build a semantic model that explains itself",
                "start_line": 121,
                "end_line": 127,
                "span_lf_sha256": "85f7761b39a545e707817e16021062eda357d6c1ff1d26c5b945129412ff5e9e"
              }
            ],
            "initial_flag_disposition": "not-flagged-initially",
            "reason": "For “Implement role-playing dimensions”, the selected current teaching explains star-schema properties, active/cardinality/filter direction, role-playing date and contiguous-date/RLS rules. Its purpose, operation/design boundary and checks support this objective; this is editorial teaching coverage, not observed product execution.",
            "initial_depth_result": "substantive",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "model"
            ]
          },
          {
            "wording": "Define a relationship's cardinality and cross-filter direction",
            "objective_wording_sha256": "f310e92d82c5e0080ff454d77c91cebb00abfae930dd6a83b1f107c0503bcfeb",
            "group": "Design and implement a data model",
            "group_number": 4,
            "objective_number": 3,
            "evidence_spans": [
              {
                "heading": "Build a semantic model that explains itself",
                "start_line": 121,
                "end_line": 127,
                "span_lf_sha256": "85f7761b39a545e707817e16021062eda357d6c1ff1d26c5b945129412ff5e9e"
              }
            ],
            "initial_flag_disposition": "not-flagged-initially",
            "reason": "For “Define a relationship's cardinality and cross-filter direction”, the selected current teaching explains star-schema properties, active/cardinality/filter direction, role-playing date and contiguous-date/RLS rules. Its purpose, operation/design boundary and checks support this objective; this is editorial teaching coverage, not observed product execution.",
            "initial_depth_result": "substantive",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "model"
            ]
          },
          {
            "wording": "Create a common date table",
            "objective_wording_sha256": "d728abfaa0b68eae0c01f9e332abe97078de8cd258a1f79823957acbc672f80d",
            "group": "Design and implement a data model",
            "group_number": 4,
            "objective_number": 4,
            "evidence_spans": [
              {
                "heading": "Build a semantic model that explains itself",
                "start_line": 121,
                "end_line": 127,
                "span_lf_sha256": "85f7761b39a545e707817e16021062eda357d6c1ff1d26c5b945129412ff5e9e"
              }
            ],
            "initial_flag_disposition": "existing-adequate-for-verb",
            "reason": "For “Create a common date table”, the current selected text teaches star-schema properties, active/cardinality/filter direction, role-playing date and contiguous-date/RLS rules. Create or import a contiguous common date table, mark it when required, add calendar attributes and establish the intended active/date-role relation; gaps and RLS/date-role failures are explained. A single mandatory CALENDAR formula is not required.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "model"
            ]
          },
          {
            "wording": "Identify use cases for calculated columns and calculated tables",
            "objective_wording_sha256": "bf33e26c9f786df7311b02c307887e6534de4baa93a21ef1ed59b336aafcdfc0",
            "group": "Design and implement a data model",
            "group_number": 4,
            "objective_number": 5,
            "evidence_spans": [
              {
                "heading": "Put each calculation in the right layer",
                "start_line": 131,
                "end_line": 165,
                "span_lf_sha256": "d579c2aaf6ca78962cc4bc5a0a2c001bff2a84dfe20ce06fbab5f7fe84e59da9"
              },
              {
                "heading": "Worked creation check: a column and a table",
                "start_line": 169,
                "end_line": 171,
                "span_lf_sha256": "30b4e08d15e91f918f43f16c955389b1112a201fbc031b33e4a3077848edf996"
              }
            ],
            "initial_flag_disposition": "not-flagged-initially",
            "reason": "For “Identify use cases for calculated columns and calculated tables”, the selected current teaching explains the calculated-column row-attribute/slicer/key use case versus derived-table relationships/metadata use case, contrasted with query-time measures, and the separate New column/New table example. Its purpose, operation/design boundary and checks support this objective; this is editorial teaching coverage, not observed product execution.",
            "initial_depth_result": "substantive",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "calc",
              "artifacts"
            ]
          },
          {
            "wording": "Create single aggregation measures",
            "objective_wording_sha256": "c48b4a1ec0ee1d6a1060adbdc3bdfa87edc90a50fff21f89ecfdb3331071ab01",
            "group": "Create model calculations by using DAX",
            "group_number": 5,
            "objective_number": 1,
            "evidence_spans": [
              {
                "heading": "Put each calculation in the right layer",
                "start_line": 131,
                "end_line": 165,
                "span_lf_sha256": "d579c2aaf6ca78962cc4bc5a0a2c001bff2a84dfe20ce06fbab5f7fe84e59da9"
              },
              {
                "heading": "Worked calculation build: explicit measure, quick measure and group",
                "start_line": 175,
                "end_line": 179,
                "span_lf_sha256": "9dfe29cb83fb5ac4f16c505ff3720cd6eb77df6dc559ab9741ac6cc7e23a510b"
              }
            ],
            "initial_flag_disposition": "repaired-by-actual-packet",
            "reason": "For “Create single aggregation measures”, the current selected text teaches calculation artifact timing/context, CALCULATE/KEEPFILTERS/distinct and semiadditive examples plus visual matrix/sort/axis/reset limits; SUM/AVERAGE prediction, generated quick-measure inspection and explicit-measure Current/YTD group application. For “Create single aggregation measures”: The Sales/AVERAGE fixture, quick-measure generated-DAX inspection and calculation-group Current/YTD application supply a create→predict→filter-check path, including explicit-measure and date prerequisites.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [
              "pl300-calculation-build"
            ],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "calc",
              "calcbuild"
            ]
          },
          {
            "wording": "Use the CALCULATE function",
            "objective_wording_sha256": "2f420405773cdd02ccf187fe78679352b0a76a5d40ef5b1f079585d352dc7dc1",
            "group": "Create model calculations by using DAX",
            "group_number": 5,
            "objective_number": 2,
            "evidence_spans": [
              {
                "heading": "Put each calculation in the right layer",
                "start_line": 131,
                "end_line": 165,
                "span_lf_sha256": "d579c2aaf6ca78962cc4bc5a0a2c001bff2a84dfe20ce06fbab5f7fe84e59da9"
              },
              {
                "heading": "Lab 4 — DAX calculation layers",
                "start_line": 315,
                "end_line": 315,
                "span_lf_sha256": "0df759919fa8cea935b8757092d620d081b8f990df7a5944a101ee62038b0265"
              }
            ],
            "initial_flag_disposition": "not-flagged-initially",
            "reason": "For “Use the CALCULATE function”, the selected current teaching explains calculation artifact timing/context, CALCULATE/KEEPFILTERS/distinct and semiadditive examples plus visual matrix/sort/axis/reset limits; DAX artifact/detail/subtotal/grand-total/filter comparison exercise. Its purpose, operation/design boundary and checks support this objective; this is editorial teaching coverage, not observed product execution.",
            "initial_depth_result": "substantive",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "calc",
              "labcalc"
            ]
          },
          {
            "wording": "Implement time intelligence measures",
            "objective_wording_sha256": "4b9c9cd47578a500dce7ca6c84c53a21f60931e566cba8ca174dd9daf6977ed3",
            "group": "Create model calculations by using DAX",
            "group_number": 5,
            "objective_number": 3,
            "evidence_spans": [
              {
                "heading": "Put each calculation in the right layer",
                "start_line": 131,
                "end_line": 165,
                "span_lf_sha256": "d579c2aaf6ca78962cc4bc5a0a2c001bff2a84dfe20ce06fbab5f7fe84e59da9"
              },
              {
                "heading": "Worked calculation build: explicit measure, quick measure and group",
                "start_line": 175,
                "end_line": 179,
                "span_lf_sha256": "9dfe29cb83fb5ac4f16c505ff3720cd6eb77df6dc559ab9741ac6cc7e23a510b"
              }
            ],
            "initial_flag_disposition": "repaired-by-actual-packet",
            "reason": "For “Implement time intelligence measures”, the current selected text teaches calculation artifact timing/context, CALCULATE/KEEPFILTERS/distinct and semiadditive examples plus visual matrix/sort/axis/reset limits; SUM/AVERAGE prediction, generated quick-measure inspection and explicit-measure Current/YTD group application. For “Implement time intelligence measures”: The Sales/AVERAGE fixture, quick-measure generated-DAX inspection and calculation-group Current/YTD application supply a create→predict→filter-check path, including explicit-measure and date prerequisites.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [
              "pl300-calculation-build"
            ],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "calc",
              "calcbuild"
            ]
          },
          {
            "wording": "Use basic statistical functions",
            "objective_wording_sha256": "33910d4bbfae4946955d027a453bcfaf20f6bd330ac37c7984f794d187c270a8",
            "group": "Create model calculations by using DAX",
            "group_number": 5,
            "objective_number": 4,
            "evidence_spans": [
              {
                "heading": "Put each calculation in the right layer",
                "start_line": 131,
                "end_line": 165,
                "span_lf_sha256": "d579c2aaf6ca78962cc4bc5a0a2c001bff2a84dfe20ce06fbab5f7fe84e59da9"
              },
              {
                "heading": "Worked calculation build: explicit measure, quick measure and group",
                "start_line": 175,
                "end_line": 179,
                "span_lf_sha256": "9dfe29cb83fb5ac4f16c505ff3720cd6eb77df6dc559ab9741ac6cc7e23a510b"
              }
            ],
            "initial_flag_disposition": "repaired-by-actual-packet",
            "reason": "For “Use basic statistical functions”, the current selected text teaches calculation artifact timing/context, CALCULATE/KEEPFILTERS/distinct and semiadditive examples plus visual matrix/sort/axis/reset limits; SUM/AVERAGE prediction, generated quick-measure inspection and explicit-measure Current/YTD group application. For “Use basic statistical functions”: The Sales/AVERAGE fixture, quick-measure generated-DAX inspection and calculation-group Current/YTD application supply a create→predict→filter-check path, including explicit-measure and date prerequisites.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [
              "pl300-calculation-build"
            ],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "calc",
              "calcbuild"
            ]
          },
          {
            "wording": "Create semi-additive measures",
            "objective_wording_sha256": "e94d191c52d61d95e3325b5e318ffd2bcf2f4a833c4ff064fdbf104e2cafc365",
            "group": "Create model calculations by using DAX",
            "group_number": 5,
            "objective_number": 5,
            "evidence_spans": [
              {
                "heading": "Put each calculation in the right layer",
                "start_line": 131,
                "end_line": 165,
                "span_lf_sha256": "d579c2aaf6ca78962cc4bc5a0a2c001bff2a84dfe20ce06fbab5f7fe84e59da9"
              },
              {
                "heading": "Lab 4 — DAX calculation layers",
                "start_line": 315,
                "end_line": 315,
                "span_lf_sha256": "0df759919fa8cea935b8757092d620d081b8f990df7a5944a101ee62038b0265"
              }
            ],
            "initial_flag_disposition": "existing-adequate-for-verb",
            "reason": "For “Create semi-additive measures”, the current selected text teaches calculation artifact timing/context, CALCULATE/KEEPFILTERS/distinct and semiadditive examples plus visual matrix/sort/axis/reset limits; DAX artifact/detail/subtotal/grand-total/filter comparison exercise. The month-end inventory explanation states the non-additive time contract and contrasts summing balances with selecting the intended closing balance; the subtotal/filter lab verifies this semantic operation. Full expression authoring is thinner than the new single-aggregation fixture.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "calc",
              "labcalc"
            ]
          },
          {
            "wording": "Create a measure by using quick measures",
            "objective_wording_sha256": "df79f3ad398ea1719deba098f2cb05bc51f0f0f0704d1234d6cb2cbdfb54970e",
            "group": "Create model calculations by using DAX",
            "group_number": 5,
            "objective_number": 6,
            "evidence_spans": [
              {
                "heading": "Put each calculation in the right layer",
                "start_line": 131,
                "end_line": 165,
                "span_lf_sha256": "d579c2aaf6ca78962cc4bc5a0a2c001bff2a84dfe20ce06fbab5f7fe84e59da9"
              },
              {
                "heading": "Worked calculation build: explicit measure, quick measure and group",
                "start_line": 175,
                "end_line": 179,
                "span_lf_sha256": "9dfe29cb83fb5ac4f16c505ff3720cd6eb77df6dc559ab9741ac6cc7e23a510b"
              }
            ],
            "initial_flag_disposition": "repaired-by-actual-packet",
            "reason": "For “Create a measure by using quick measures”, the current selected text teaches calculation artifact timing/context, CALCULATE/KEEPFILTERS/distinct and semiadditive examples plus visual matrix/sort/axis/reset limits; SUM/AVERAGE prediction, generated quick-measure inspection and explicit-measure Current/YTD group application. For “Create a measure by using quick measures”: The Sales/AVERAGE fixture, quick-measure generated-DAX inspection and calculation-group Current/YTD application supply a create→predict→filter-check path, including explicit-measure and date prerequisites.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [
              "pl300-calculation-build"
            ],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "calc",
              "calcbuild"
            ]
          },
          {
            "wording": "Create calculated tables or columns",
            "objective_wording_sha256": "ff53cb50a6f2b14e83aa524c6255e53688b958160cbc6f8e8376e9e69c609820",
            "group": "Create model calculations by using DAX",
            "group_number": 5,
            "objective_number": 7,
            "evidence_spans": [
              {
                "heading": "Put each calculation in the right layer",
                "start_line": 131,
                "end_line": 165,
                "span_lf_sha256": "d579c2aaf6ca78962cc4bc5a0a2c001bff2a84dfe20ce06fbab5f7fe84e59da9"
              },
              {
                "heading": "Worked creation check: a column and a table",
                "start_line": 169,
                "end_line": 171,
                "span_lf_sha256": "30b4e08d15e91f918f43f16c955389b1112a201fbc031b33e4a3077848edf996"
              }
            ],
            "initial_flag_disposition": "repaired-by-actual-packet",
            "reason": "For “Create calculated tables or columns”, the current selected text teaches calculation artifact timing/context, CALCULATE/KEEPFILTERS/distinct and semiadditive examples plus visual matrix/sort/axis/reset limits; New column scalar AmountBand and New table table-valued LargeSales with predicted rows, wrong-artifact and refresh checks. For “Create calculated tables or columns”: New column AmountBand and New table LargeSales now provide separate scalar/table DAX contracts, two-row predictions and wrong-artifact/refresh checks.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [
              "pl300-calculated-artifacts"
            ],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "calc",
              "artifacts"
            ]
          },
          {
            "wording": "Create calculation groups",
            "objective_wording_sha256": "5eae87b03f6627e97cd89a7c4c522a1c4e40fe53b5c2504c9157bffad15a24c0",
            "group": "Create model calculations by using DAX",
            "group_number": 5,
            "objective_number": 8,
            "evidence_spans": [
              {
                "heading": "Put each calculation in the right layer",
                "start_line": 131,
                "end_line": 165,
                "span_lf_sha256": "d579c2aaf6ca78962cc4bc5a0a2c001bff2a84dfe20ce06fbab5f7fe84e59da9"
              },
              {
                "heading": "Worked calculation build: explicit measure, quick measure and group",
                "start_line": 175,
                "end_line": 179,
                "span_lf_sha256": "9dfe29cb83fb5ac4f16c505ff3720cd6eb77df6dc559ab9741ac6cc7e23a510b"
              }
            ],
            "initial_flag_disposition": "repaired-by-actual-packet",
            "reason": "For “Create calculation groups”, the current selected text teaches calculation artifact timing/context, CALCULATE/KEEPFILTERS/distinct and semiadditive examples plus visual matrix/sort/axis/reset limits; SUM/AVERAGE prediction, generated quick-measure inspection and explicit-measure Current/YTD group application. For “Create calculation groups”: The Sales/AVERAGE fixture, quick-measure generated-DAX inspection and calculation-group Current/YTD application supply a create→predict→filter-check path, including explicit-measure and date prerequisites.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [
              "pl300-calculation-build"
            ],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "calc",
              "calcbuild"
            ]
          },
          {
            "wording": "Improve performance by identifying and removing unnecessary rows and columns",
            "objective_wording_sha256": "8ed3c18cc90956c54ba40e432a5592b569b6047c0d287b0b91a42e9fdfc2c0b9",
            "group": "Optimize model performance",
            "group_number": 6,
            "objective_number": 1,
            "evidence_spans": [
              {
                "heading": "Optimize from evidence",
                "start_line": 183,
                "end_line": 189,
                "span_lf_sha256": "f6b616f31c22b89f0ccc2adfc55a5f6cd2ea45cddc86a764fc1c667952ef01f9"
              }
            ],
            "initial_flag_disposition": "not-flagged-initially",
            "reason": "For “Improve performance by identifying and removing unnecessary rows and columns”, the selected current teaching explains measured row/column/grain/relationship/measure/visual optimization with PerformanceAnalyzer/DAX query evidence. Its purpose, operation/design boundary and checks support this objective; this is editorial teaching coverage, not observed product execution.",
            "initial_depth_result": "substantive",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "perf"
            ]
          },
          {
            "wording": "Identify poorly performing measures, relationships, and visuals by using Performance Analyzer and DAX query view",
            "objective_wording_sha256": "100e740222fcc279c9e1b38fb56092869b0ec060656469f16d34e5d46729ff8e",
            "group": "Optimize model performance",
            "group_number": 6,
            "objective_number": 2,
            "evidence_spans": [
              {
                "heading": "Optimize from evidence",
                "start_line": 183,
                "end_line": 189,
                "span_lf_sha256": "f6b616f31c22b89f0ccc2adfc55a5f6cd2ea45cddc86a764fc1c667952ef01f9"
              }
            ],
            "initial_flag_disposition": "not-flagged-initially",
            "reason": "For “Identify poorly performing measures, relationships, and visuals by using Performance Analyzer and DAX query view”, the selected current teaching explains measured row/column/grain/relationship/measure/visual optimization with PerformanceAnalyzer/DAX query evidence. Its purpose, operation/design boundary and checks support this objective; this is editorial teaching coverage, not observed product execution.",
            "initial_depth_result": "substantive",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "perf"
            ]
          },
          {
            "wording": "Improve performance by reducing granularity",
            "objective_wording_sha256": "d1919a44176c4146ef42d90287719ad4a903589c9cdab9cef2178ffe7a0f753b",
            "group": "Optimize model performance",
            "group_number": 6,
            "objective_number": 3,
            "evidence_spans": [
              {
                "heading": "Optimize from evidence",
                "start_line": 183,
                "end_line": 189,
                "span_lf_sha256": "f6b616f31c22b89f0ccc2adfc55a5f6cd2ea45cddc86a764fc1c667952ef01f9"
              }
            ],
            "initial_flag_disposition": "not-flagged-initially",
            "reason": "For “Improve performance by reducing granularity”, the selected current teaching explains measured row/column/grain/relationship/measure/visual optimization with PerformanceAnalyzer/DAX query evidence. Its purpose, operation/design boundary and checks support this objective; this is editorial teaching coverage, not observed product execution.",
            "initial_depth_result": "substantive",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "perf"
            ]
          },
          {
            "wording": "Select an appropriate visual",
            "objective_wording_sha256": "cca34d4224539c26be5268a81591822fca0cad1089d5648c8aeb2eeda045fc6f",
            "group": "Create reports",
            "group_number": 7,
            "objective_number": 1,
            "evidence_spans": [
              {
                "heading": "Select and configure reports for a decision",
                "start_line": 195,
                "end_line": 213,
                "span_lf_sha256": "821687279958f19a89fc7f50bfa1b6cfea4ab6841d867a9f8976704883d4ca6b"
              }
            ],
            "initial_flag_disposition": "not-flagged-initially",
            "reason": "For “Select an appropriate visual”, the selected current teaching explains cards/status, category bars, time lines, relationship scatterplots, precise tables/matrices and relevant maps/AI visuals chosen for the analytical question. Its purpose, operation/design boundary and checks support this objective; this is editorial teaching coverage, not observed product execution.",
            "initial_depth_result": "substantive",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "visuals"
            ]
          },
          {
            "wording": "Format and configure visuals",
            "objective_wording_sha256": "824bdceb37e3effe60ec0db32834b12f08a2e67a2e93f08ef7aa8feb32891cb1",
            "group": "Create reports",
            "group_number": 7,
            "objective_number": 2,
            "evidence_spans": [
              {
                "heading": "Select and configure reports for a decision",
                "start_line": 195,
                "end_line": 213,
                "span_lf_sha256": "821687279958f19a89fc7f50bfa1b6cfea4ab6841d867a9f8976704883d4ca6b"
              }
            ],
            "initial_flag_disposition": "not-flagged-initially",
            "reason": "For “Format and configure visuals”, the selected current teaching explains consistent formats/titles/units/colors/whitespace, visual choice and threshold meaning rather than unexplained decorative formatting. Its purpose, operation/design boundary and checks support this objective; this is editorial teaching coverage, not observed product execution.",
            "initial_depth_result": "substantive",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "visuals"
            ]
          },
          {
            "wording": "Create a narrative visual with Copilot",
            "objective_wording_sha256": "0afe0667caea7752e589d834d081138ae5178cbb5b8083a68c4eef98560c8eea",
            "group": "Create reports",
            "group_number": 7,
            "objective_number": 3,
            "evidence_spans": [
              {
                "heading": "Select and configure reports for a decision",
                "start_line": 195,
                "end_line": 213,
                "span_lf_sha256": "821687279958f19a89fc7f50bfa1b6cfea4ab6841d867a9f8976704883d4ca6b"
              }
            ],
            "initial_flag_disposition": "repaired-by-actual-packet",
            "reason": "For “Create a narrative visual with Copilot”, the current selected text teaches visual analytical choices and theme/threshold/filter/page/paginated/refresh controls, plus concrete Copilot page/narrative creation and verification. For “Create a narrative visual with Copilot”: A concrete sales-page prompt and narrative visual selection/create/footnote/refresh sequence now connect input, generated artifact and business verification; capacity/model restrictions are explicit.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [
              "pl300-copilot-creation"
            ],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "visuals"
            ]
          },
          {
            "wording": "Apply and customize a theme",
            "objective_wording_sha256": "42508458440e87c2dd961f63c81c7403c2eb2b4ccc6275b248fdde6c4f443f6d",
            "group": "Create reports",
            "group_number": 7,
            "objective_number": 4,
            "evidence_spans": [
              {
                "heading": "Select and configure reports for a decision",
                "start_line": 195,
                "end_line": 213,
                "span_lf_sha256": "821687279958f19a89fc7f50bfa1b6cfea4ab6841d867a9f8976704883d4ca6b"
              }
            ],
            "initial_flag_disposition": "not-flagged-initially",
            "reason": "For “Apply and customize a theme”, the selected current teaching explains theme consistency across formats, titles, units, sort and color, governed by audience/task/device/readability. Its purpose, operation/design boundary and checks support this objective; this is editorial teaching coverage, not observed product execution.",
            "initial_depth_result": "substantive",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "visuals"
            ]
          },
          {
            "wording": "Apply conditional formatting",
            "objective_wording_sha256": "b3f35d330b1eae078dfaa5076b2251e799688ed1d08f3655dd309fcd8bd16d9f",
            "group": "Create reports",
            "group_number": 7,
            "objective_number": 5,
            "evidence_spans": [
              {
                "heading": "Select and configure reports for a decision",
                "start_line": 195,
                "end_line": 213,
                "span_lf_sha256": "821687279958f19a89fc7f50bfa1b6cfea4ab6841d867a9f8976704883d4ca6b"
              }
            ],
            "initial_flag_disposition": "not-flagged-initially",
            "reason": "For “Apply conditional formatting”, the selected current teaching explains conditional formatting of a defined threshold on precise table/matrix/status content, with business meaning separated from decoration. Its purpose, operation/design boundary and checks support this objective; this is editorial teaching coverage, not observed product execution.",
            "initial_depth_result": "substantive",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "visuals"
            ]
          },
          {
            "wording": "Apply slicing and filtering",
            "objective_wording_sha256": "00cd7f5db7b926aaaa6daebe5c796e60e8ed639d797f1c6e734fc12cd7a6cff5",
            "group": "Create reports",
            "group_number": 7,
            "objective_number": 6,
            "evidence_spans": [
              {
                "heading": "Select and configure reports for a decision",
                "start_line": 195,
                "end_line": 213,
                "span_lf_sha256": "821687279958f19a89fc7f50bfa1b6cfea4ab6841d867a9f8976704883d4ca6b"
              }
            ],
            "initial_flag_disposition": "not-flagged-initially",
            "reason": "For “Apply slicing and filtering”, the selected current teaching explains report/page/visual filter scope versus visible slicers, with generated-output/filter-context checks and source-model access remaining separate. Its purpose, operation/design boundary and checks support this objective; this is editorial teaching coverage, not observed product execution.",
            "initial_depth_result": "substantive",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "visuals"
            ]
          },
          {
            "wording": "Use Copilot to create a new report page",
            "objective_wording_sha256": "e1377ec6f566790651a5ce0ebd51b5e805d1455422e69b9f1e044fa30418498c",
            "group": "Create reports",
            "group_number": 7,
            "objective_number": 7,
            "evidence_spans": [
              {
                "heading": "Select and configure reports for a decision",
                "start_line": 195,
                "end_line": 213,
                "span_lf_sha256": "821687279958f19a89fc7f50bfa1b6cfea4ab6841d867a9f8976704883d4ca6b"
              }
            ],
            "initial_flag_disposition": "repaired-by-actual-packet",
            "reason": "For “Use Copilot to create a new report page”, the current selected text teaches visual analytical choices and theme/threshold/filter/page/paginated/refresh controls, plus concrete Copilot page/narrative creation and verification. For “Use Copilot to create a new report page”: A concrete sales-page prompt and narrative visual selection/create/footnote/refresh sequence now connect input, generated artifact and business verification; capacity/model restrictions are explicit.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [
              "pl300-copilot-creation"
            ],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "visuals"
            ]
          },
          {
            "wording": "Use Copilot to suggest content for a new report page",
            "objective_wording_sha256": "de134b6198f3abb0a0de8432e46e661f15b169457e8ac91896068d674a4fda42",
            "group": "Create reports",
            "group_number": 7,
            "objective_number": 8,
            "evidence_spans": [
              {
                "heading": "Select and configure reports for a decision",
                "start_line": 195,
                "end_line": 213,
                "span_lf_sha256": "821687279958f19a89fc7f50bfa1b6cfea4ab6841d867a9f8976704883d4ca6b"
              }
            ],
            "initial_flag_disposition": "repaired-by-actual-packet",
            "reason": "For “Use Copilot to suggest content for a new report page”, the current selected text teaches visual analytical choices and theme/threshold/filter/page/paginated/refresh controls, plus concrete Copilot page/narrative creation and verification. For “Use Copilot to suggest content for a new report page”: A concrete sales-page prompt and narrative visual selection/create/footnote/refresh sequence now connect input, generated artifact and business verification; capacity/model restrictions are explicit.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [
              "pl300-copilot-creation"
            ],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "visuals"
            ]
          },
          {
            "wording": "Configure the report page",
            "objective_wording_sha256": "b7387012c41e2c54cad76fd47a1cfbee02af47b6bc0aa7ecdc4f6a7dcf24931e",
            "group": "Create reports",
            "group_number": 7,
            "objective_number": 9,
            "evidence_spans": [
              {
                "heading": "Select and configure reports for a decision",
                "start_line": 195,
                "end_line": 213,
                "span_lf_sha256": "821687279958f19a89fc7f50bfa1b6cfea4ab6841d867a9f8976704883d4ca6b"
              }
            ],
            "initial_flag_disposition": "not-flagged-initially",
            "reason": "For “Configure the report page”, the selected current teaching explains page size/background/wallpaper/display mode and supported page refresh selected for the consumption environment. Its purpose, operation/design boundary and checks support this objective; this is editorial teaching coverage, not observed product execution.",
            "initial_depth_result": "substantive",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "visuals"
            ]
          },
          {
            "wording": "Choose when to use a paginated report",
            "objective_wording_sha256": "f047682a716f31493c337bdc3267db2049b2af9e24c5430e45682cf9e67ef03e",
            "group": "Create reports",
            "group_number": 7,
            "objective_number": 10,
            "evidence_spans": [
              {
                "heading": "Select and configure reports for a decision",
                "start_line": 195,
                "end_line": 213,
                "span_lf_sha256": "821687279958f19a89fc7f50bfa1b6cfea4ab6841d867a9f8976704883d4ca6b"
              }
            ],
            "initial_flag_disposition": "not-flagged-initially",
            "reason": "For “Choose when to use a paginated report”, the selected current teaching explains paginated printable/pixel-controlled/multipage operational output as a different contract from interactive report canvas. Its purpose, operation/design boundary and checks support this objective; this is editorial teaching coverage, not observed product execution.",
            "initial_depth_result": "substantive",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "visuals"
            ]
          },
          {
            "wording": "Create visual calculations by using DAX",
            "objective_wording_sha256": "096c2d0d00e7327ef56000f2c62417420c5cba5e72ee843229e01755c0a1ec80",
            "group": "Create reports",
            "group_number": 7,
            "objective_number": 11,
            "evidence_spans": [
              {
                "heading": "Put each calculation in the right layer",
                "start_line": 131,
                "end_line": 165,
                "span_lf_sha256": "d579c2aaf6ca78962cc4bc5a0a2c001bff2a84dfe20ce06fbab5f7fe84e59da9"
              },
              {
                "heading": "Focused reading and evidence route",
                "start_line": 410,
                "end_line": 432,
                "span_lf_sha256": "65b90eb238087d57034c8ae8fdb2ebe1b52cc03aa341ac85bf39d24fae6f1c53"
              },
              {
                "heading": "Lab 4 — DAX calculation layers",
                "start_line": 315,
                "end_line": 315,
                "span_lf_sha256": "0df759919fa8cea935b8757092d620d081b8f990df7a5944a101ee62038b0265"
              }
            ],
            "initial_flag_disposition": "not-flagged-initially",
            "reason": "For “Create visual calculations by using DAX”, the selected current teaching explains DAX visual-local running/comparison calculations, visual-matrix/axis/reset/filter context, the worked missing-year comparison and current export/alert limitations, reinforced by the specific visual-calculations route. Its purpose, operation/design boundary and checks support this objective; this is editorial teaching coverage, not observed product execution.",
            "initial_depth_result": "substantive",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "calc",
              "visualroute",
              "labcalc"
            ]
          },
          {
            "wording": "Configure bookmarks",
            "objective_wording_sha256": "0e456ae8df2f5942fa2f1e77beb797efb63fa30721bd9b27c4ea2e0d7b184904",
            "group": "Enhance reports for usability and storytelling",
            "group_number": 8,
            "objective_number": 1,
            "evidence_spans": [
              {
                "heading": "Usability, storytelling, and accessibility",
                "start_line": 217,
                "end_line": 221,
                "span_lf_sha256": "5c0b2ed6671936a4071c7396943491dab98e58478ad4c7422b50e254a58bab58"
              }
            ],
            "initial_flag_disposition": "not-flagged-initially",
            "reason": "For “Configure bookmarks”, the selected current teaching explains bookmark state, interaction/navigation/sync/Selection/export/personalization/mobile/accessibility controls and permission boundaries. Its purpose, operation/design boundary and checks support this objective; this is editorial teaching coverage, not observed product execution.",
            "initial_depth_result": "substantive",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "ux"
            ]
          },
          {
            "wording": "Create custom tooltips",
            "objective_wording_sha256": "1b5abd692a0440cd572ceb8af864ce7a6deea720474335d202679723093d5299",
            "group": "Enhance reports for usability and storytelling",
            "group_number": 8,
            "objective_number": 2,
            "evidence_spans": [
              {
                "heading": "Usability, storytelling, and accessibility",
                "start_line": 217,
                "end_line": 221,
                "span_lf_sha256": "5c0b2ed6671936a4071c7396943491dab98e58478ad4c7422b50e254a58bab58"
              },
              {
                "heading": "Worked navigation: product details and tooltip context",
                "start_line": 225,
                "end_line": 227,
                "span_lf_sha256": "ddb611d150d5494ce495757f58575b710ef514edd1f29c0889e0dbd35e621309"
              }
            ],
            "initial_flag_disposition": "repaired-by-actual-packet",
            "reason": "For “Create custom tooltips”, the current selected text teaches bookmark state, interaction/navigation/sync/Selection/export/personalization/mobile/accessibility controls and permission boundaries; tooltip page binding and drillthrough field/button/Back creation with product-result/accessibility/unavailable-state checks. For “Create custom tooltips”: The dedicated tooltip page and drillthrough field/button/back path now specify artifact binding, product-level result checks and inaccessible/unavailable-state failures.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [
              "pl300-navigation-build"
            ],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "ux",
              "navigation"
            ]
          },
          {
            "wording": "Edit and configure interactions between visuals",
            "objective_wording_sha256": "366c91a4e969e0b4b4d6a3d1ce2f642219373b16b43502e3fefa6cad977d89a9",
            "group": "Enhance reports for usability and storytelling",
            "group_number": 8,
            "objective_number": 3,
            "evidence_spans": [
              {
                "heading": "Usability, storytelling, and accessibility",
                "start_line": 217,
                "end_line": 221,
                "span_lf_sha256": "5c0b2ed6671936a4071c7396943491dab98e58478ad4c7422b50e254a58bab58"
              }
            ],
            "initial_flag_disposition": "existing-adequate-for-verb",
            "reason": "For “Edit and configure interactions between visuals”, the current selected text teaches bookmark state, interaction/navigation/sync/Selection/export/personalization/mobile/accessibility controls and permission boundaries. Cross-filter/highlight/none behavior is explicitly edited to match the analytical question and tested alongside bookmarks/navigation; this teaches interaction configuration without needing identical pane labels.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "ux"
            ]
          },
          {
            "wording": "Configure navigation for a report",
            "objective_wording_sha256": "75aef2e3a85e1c9cf93177cfee501df0f2bea44a7ced1ba685d9b5de1596e673",
            "group": "Enhance reports for usability and storytelling",
            "group_number": 8,
            "objective_number": 4,
            "evidence_spans": [
              {
                "heading": "Usability, storytelling, and accessibility",
                "start_line": 217,
                "end_line": 221,
                "span_lf_sha256": "5c0b2ed6671936a4071c7396943491dab98e58478ad4c7422b50e254a58bab58"
              }
            ],
            "initial_flag_disposition": "not-flagged-initially",
            "reason": "For “Configure navigation for a report”, the selected current teaching explains bookmark state, interaction/navigation/sync/Selection/export/personalization/mobile/accessibility controls and permission boundaries. Its purpose, operation/design boundary and checks support this objective; this is editorial teaching coverage, not observed product execution.",
            "initial_depth_result": "substantive",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [
              "pl300-navigation-build"
            ],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "ux"
            ]
          },
          {
            "wording": "Apply sorting to visuals",
            "objective_wording_sha256": "521ec8c925d877ba09ec9f5e87727118937f1cc93a2156d0c5766dc012039733",
            "group": "Enhance reports for usability and storytelling",
            "group_number": 8,
            "objective_number": 5,
            "evidence_spans": [
              {
                "heading": "Select and configure reports for a decision",
                "start_line": 195,
                "end_line": 213,
                "span_lf_sha256": "821687279958f19a89fc7f50bfa1b6cfea4ab6841d867a9f8976704883d4ca6b"
              },
              {
                "heading": "Put each calculation in the right layer",
                "start_line": 131,
                "end_line": 165,
                "span_lf_sha256": "d579c2aaf6ca78962cc4bc5a0a2c001bff2a84dfe20ce06fbab5f7fe84e59da9"
              }
            ],
            "initial_flag_disposition": "existing-adequate-for-verb",
            "reason": "For “Apply sorting to visuals”, the current selected text teaches visual sort order as a configured analytical input and the visual-calculation sort/axis tests that can change results, rather than bookmark state alone. Visual-calculation worked checks show sort/axis changes alter results; sort is treated as an analytical input whose total and missing-period behavior must be tested, not a decorative choice.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "visuals",
              "calc"
            ]
          },
          {
            "wording": "Configure sync slicers",
            "objective_wording_sha256": "f041bea631c1f5419b2314f44a63db6c817ff535b3a7d1b9dc8a8f7b486234d9",
            "group": "Enhance reports for usability and storytelling",
            "group_number": 8,
            "objective_number": 6,
            "evidence_spans": [
              {
                "heading": "Usability, storytelling, and accessibility",
                "start_line": 217,
                "end_line": 221,
                "span_lf_sha256": "5c0b2ed6671936a4071c7396943491dab98e58478ad4c7422b50e254a58bab58"
              }
            ],
            "initial_flag_disposition": "not-flagged-initially",
            "reason": "For “Configure sync slicers”, the selected current teaching explains bookmark state, interaction/navigation/sync/Selection/export/personalization/mobile/accessibility controls and permission boundaries. Its purpose, operation/design boundary and checks support this objective; this is editorial teaching coverage, not observed product execution.",
            "initial_depth_result": "substantive",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "ux"
            ]
          },
          {
            "wording": "Group and layer visuals by using the Selection pane",
            "objective_wording_sha256": "12a55b618d2ff7152b5e92f5112718d4b2a1dd95b45d9177973211fd17ddfa30",
            "group": "Enhance reports for usability and storytelling",
            "group_number": 8,
            "objective_number": 7,
            "evidence_spans": [
              {
                "heading": "Usability, storytelling, and accessibility",
                "start_line": 217,
                "end_line": 221,
                "span_lf_sha256": "5c0b2ed6671936a4071c7396943491dab98e58478ad4c7422b50e254a58bab58"
              }
            ],
            "initial_flag_disposition": "not-flagged-initially",
            "reason": "For “Group and layer visuals by using the Selection pane”, the selected current teaching explains bookmark state, interaction/navigation/sync/Selection/export/personalization/mobile/accessibility controls and permission boundaries. Its purpose, operation/design boundary and checks support this objective; this is editorial teaching coverage, not observed product execution.",
            "initial_depth_result": "substantive",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "ux"
            ]
          },
          {
            "wording": "Configure drillthrough navigation, including pages, filters, and buttons",
            "objective_wording_sha256": "02750675e3cb4aa1056bf49215784256ad4185d5d3cc32fe69fb30a73dd24d14",
            "group": "Enhance reports for usability and storytelling",
            "group_number": 8,
            "objective_number": 8,
            "evidence_spans": [
              {
                "heading": "Usability, storytelling, and accessibility",
                "start_line": 217,
                "end_line": 221,
                "span_lf_sha256": "5c0b2ed6671936a4071c7396943491dab98e58478ad4c7422b50e254a58bab58"
              },
              {
                "heading": "Worked navigation: product details and tooltip context",
                "start_line": 225,
                "end_line": 227,
                "span_lf_sha256": "ddb611d150d5494ce495757f58575b710ef514edd1f29c0889e0dbd35e621309"
              }
            ],
            "initial_flag_disposition": "repaired-by-actual-packet",
            "reason": "For “Configure drillthrough navigation, including pages, filters, and buttons”, the current selected text teaches bookmark state, interaction/navigation/sync/Selection/export/personalization/mobile/accessibility controls and permission boundaries; tooltip page binding and drillthrough field/button/Back creation with product-result/accessibility/unavailable-state checks. For “Configure drillthrough navigation, including pages, filters, and buttons”: The dedicated tooltip page and drillthrough field/button/back path now specify artifact binding, product-level result checks and inaccessible/unavailable-state failures.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [
              "pl300-navigation-build"
            ],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "ux",
              "navigation"
            ]
          },
          {
            "wording": "Configure export settings",
            "objective_wording_sha256": "76fe60d99a05112948284b67c5410c530a7b197a8416a94df2ae7309c454765b",
            "group": "Enhance reports for usability and storytelling",
            "group_number": 8,
            "objective_number": 9,
            "evidence_spans": [
              {
                "heading": "Usability, storytelling, and accessibility",
                "start_line": 217,
                "end_line": 221,
                "span_lf_sha256": "5c0b2ed6671936a4071c7396943491dab98e58478ad4c7422b50e254a58bab58"
              }
            ],
            "initial_flag_disposition": "not-flagged-initially",
            "reason": "For “Configure export settings”, the selected current teaching explains bookmark state, interaction/navigation/sync/Selection/export/personalization/mobile/accessibility controls and permission boundaries. Its purpose, operation/design boundary and checks support this objective; this is editorial teaching coverage, not observed product execution.",
            "initial_depth_result": "substantive",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "ux"
            ]
          },
          {
            "wording": "Design reports for mobile devices",
            "objective_wording_sha256": "aeefdc4a5ffb462f4c825e4dd089ea9c4e954a1dfe725731f818499c456c1973",
            "group": "Enhance reports for usability and storytelling",
            "group_number": 8,
            "objective_number": 10,
            "evidence_spans": [
              {
                "heading": "Usability, storytelling, and accessibility",
                "start_line": 217,
                "end_line": 221,
                "span_lf_sha256": "5c0b2ed6671936a4071c7396943491dab98e58478ad4c7422b50e254a58bab58"
              }
            ],
            "initial_flag_disposition": "not-flagged-initially",
            "reason": "For “Design reports for mobile devices”, the selected current teaching explains bookmark state, interaction/navigation/sync/Selection/export/personalization/mobile/accessibility controls and permission boundaries. Its purpose, operation/design boundary and checks support this objective; this is editorial teaching coverage, not observed product execution.",
            "initial_depth_result": "substantive",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "ux"
            ]
          },
          {
            "wording": "Enable personalization in a report, including personalized visuals",
            "objective_wording_sha256": "d970cfc69ee8bfb6f126c4cb093ddb20aa306946f10562f3ac4d1f2cc099b667",
            "group": "Enhance reports for usability and storytelling",
            "group_number": 8,
            "objective_number": 11,
            "evidence_spans": [
              {
                "heading": "Usability, storytelling, and accessibility",
                "start_line": 217,
                "end_line": 221,
                "span_lf_sha256": "5c0b2ed6671936a4071c7396943491dab98e58478ad4c7422b50e254a58bab58"
              }
            ],
            "initial_flag_disposition": "not-flagged-initially",
            "reason": "For “Enable personalization in a report, including personalized visuals”, the selected current teaching explains bookmark state, interaction/navigation/sync/Selection/export/personalization/mobile/accessibility controls and permission boundaries. Its purpose, operation/design boundary and checks support this objective; this is editorial teaching coverage, not observed product execution.",
            "initial_depth_result": "substantive",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "ux"
            ]
          },
          {
            "wording": "Design and configure Power BI reports for accessibility",
            "objective_wording_sha256": "2f01daefd603fefe65011c2bdfe1eff0e404f62d0535f0a98059da1548047d4c",
            "group": "Enhance reports for usability and storytelling",
            "group_number": 8,
            "objective_number": 12,
            "evidence_spans": [
              {
                "heading": "Usability, storytelling, and accessibility",
                "start_line": 217,
                "end_line": 221,
                "span_lf_sha256": "5c0b2ed6671936a4071c7396943491dab98e58478ad4c7422b50e254a58bab58"
              },
              {
                "heading": "Worked navigation: product details and tooltip context",
                "start_line": 225,
                "end_line": 227,
                "span_lf_sha256": "ddb611d150d5494ce495757f58575b710ef514edd1f29c0889e0dbd35e621309"
              }
            ],
            "initial_flag_disposition": "not-flagged-initially",
            "reason": "For “Design and configure Power BI reports for accessibility”, the selected current teaching explains bookmark state, interaction/navigation/sync/Selection/export/personalization/mobile/accessibility controls and permission boundaries; tooltip page binding and drillthrough field/button/Back creation with product-result/accessibility/unavailable-state checks. Its purpose, operation/design boundary and checks support this objective; this is editorial teaching coverage, not observed product execution.",
            "initial_depth_result": "substantive",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [
              "pl300-navigation-build"
            ],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "ux",
              "navigation"
            ]
          },
          {
            "wording": "Configure automatic page refresh",
            "objective_wording_sha256": "a038669daba53ad18ec602ce686137ca6cb2a7b46ee1c9445d27182272370850",
            "group": "Enhance reports for usability and storytelling",
            "group_number": 8,
            "objective_number": 13,
            "evidence_spans": [
              {
                "heading": "Select and configure reports for a decision",
                "start_line": 195,
                "end_line": 213,
                "span_lf_sha256": "821687279958f19a89fc7f50bfa1b6cfea4ab6841d867a9f8976704883d4ca6b"
              }
            ],
            "initial_flag_disposition": "not-flagged-initially",
            "reason": "For “Configure automatic page refresh”, the selected current teaching explains supported-source requery versus Import model refresh, published shared-capacity30-minute/no-change-detection limits and dedicated-capacity cadence settings. Its purpose, operation/design boundary and checks support this objective; this is editorial teaching coverage, not observed product execution.",
            "initial_depth_result": "substantive",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "visuals"
            ]
          },
          {
            "wording": "Use the Analyze feature in Power BI",
            "objective_wording_sha256": "a69ebbcdcc7db0454e24da83e1b828a08244c492b543fcf5c83768a1df8e2c37",
            "group": "Identify patterns and trends",
            "group_number": 9,
            "objective_number": 1,
            "evidence_spans": [
              {
                "heading": "Analyze patterns without overclaiming",
                "start_line": 231,
                "end_line": 237,
                "span_lf_sha256": "0a8431969d05fd8f04ed58c80e64f9edf68155553b00d90c1038ce3de18e9aa7"
              },
              {
                "heading": "Lab 6 — Analysis and Copilot",
                "start_line": 323,
                "end_line": 323,
                "span_lf_sha256": "afded020b6d7d7cc4c7c9c86139ce3cde35279df5cbb246c8ba42c0fbe6947f7"
              }
            ],
            "initial_flag_disposition": "existing-adequate-for-verb",
            "reason": "For “Use the Analyze feature in Power BI”, the current selected text teaches Analyze/group/bin/cluster/reference/error/forecast/anomaly/AI interpretation under grain/filter/date/seasonality/sample limits; analysis method/assumption/expected-result and corrected Copilot-output exercise. The analysis procedure starts from selected data/question and checks grain, filter, dates and measure before interpreting Explain/Analyze output; model defects and association-versus-causation are explicit failure checks.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "analysis",
              "labanalysis"
            ]
          },
          {
            "wording": "Use grouping, binning, and clustering",
            "objective_wording_sha256": "d343a8659bcecbee51743301e764c886cf8dc8b9e82bf9de20234629aa1565b7",
            "group": "Identify patterns and trends",
            "group_number": 9,
            "objective_number": 2,
            "evidence_spans": [
              {
                "heading": "Analyze patterns without overclaiming",
                "start_line": 231,
                "end_line": 237,
                "span_lf_sha256": "0a8431969d05fd8f04ed58c80e64f9edf68155553b00d90c1038ce3de18e9aa7"
              },
              {
                "heading": "Lab 6 — Analysis and Copilot",
                "start_line": 323,
                "end_line": 323,
                "span_lf_sha256": "afded020b6d7d7cc4c7c9c86139ce3cde35279df5cbb246c8ba42c0fbe6947f7"
              }
            ],
            "initial_flag_disposition": "existing-adequate-for-verb",
            "reason": "For “Use grouping, binning, and clustering”, the current selected text teaches Analyze/group/bin/cluster/reference/error/forecast/anomaly/AI interpretation under grain/filter/date/seasonality/sample limits; analysis method/assumption/expected-result and corrected Copilot-output exercise. Grouping/bins/clusters are presented as exploratory transformations whose grain, continuous/categorical axis, sample size and preserved method/result must be checked; the Lab6 method/expected-output worksheet supplies practice.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "analysis",
              "labanalysis"
            ]
          },
          {
            "wording": "Use AI visuals",
            "objective_wording_sha256": "c5c2738c13205c57086c1b9bd5cbedeefa6df292df024e7db65eacb15af457c8",
            "group": "Identify patterns and trends",
            "group_number": 9,
            "objective_number": 3,
            "evidence_spans": [
              {
                "heading": "Analyze patterns without overclaiming",
                "start_line": 231,
                "end_line": 237,
                "span_lf_sha256": "0a8431969d05fd8f04ed58c80e64f9edf68155553b00d90c1038ce3de18e9aa7"
              },
              {
                "heading": "Select and configure reports for a decision",
                "start_line": 195,
                "end_line": 213,
                "span_lf_sha256": "821687279958f19a89fc7f50bfa1b6cfea4ab6841d867a9f8976704883d4ca6b"
              },
              {
                "heading": "Lab 6 — Analysis and Copilot",
                "start_line": 323,
                "end_line": 323,
                "span_lf_sha256": "afded020b6d7d7cc4c7c9c86139ce3cde35279df5cbb246c8ba42c0fbe6947f7"
              }
            ],
            "initial_flag_disposition": "existing-adequate-for-verb",
            "reason": "For “Use AI visuals”, the current selected text teaches Analyze/group/bin/cluster/reference/error/forecast/anomaly/AI interpretation under grain/filter/date/seasonality/sample limits; visual analytical choices and theme/threshold/filter/page/paginated/refresh controls, plus concrete Copilot page/narrative creation and verification; analysis method/assumption/expected-result and corrected Copilot-output exercise. AI visual use is bounded by correct grain/measure/context, sample adequacy and noncausal interpretation, with Lab6 recording assumptions and corrected output. Individual AI-visual UI walkthroughs remain thinner.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "analysis",
              "visuals",
              "labanalysis"
            ]
          },
          {
            "wording": "Use reference lines, error bars, and forecasting",
            "objective_wording_sha256": "fce7ee6e37781fd3bb62274322cedd68515dd4fcfeef21c3b090693a8a17dc53",
            "group": "Identify patterns and trends",
            "group_number": 9,
            "objective_number": 4,
            "evidence_spans": [
              {
                "heading": "Analyze patterns without overclaiming",
                "start_line": 231,
                "end_line": 237,
                "span_lf_sha256": "0a8431969d05fd8f04ed58c80e64f9edf68155553b00d90c1038ce3de18e9aa7"
              },
              {
                "heading": "Lab 6 — Analysis and Copilot",
                "start_line": 323,
                "end_line": 323,
                "span_lf_sha256": "afded020b6d7d7cc4c7c9c86139ce3cde35279df5cbb246c8ba42c0fbe6947f7"
              }
            ],
            "initial_flag_disposition": "existing-adequate-for-verb",
            "reason": "For “Use reference lines, error bars, and forecasting”, the current selected text teaches Analyze/group/bin/cluster/reference/error/forecast/anomaly/AI interpretation under grain/filter/date/seasonality/sample limits; analysis method/assumption/expected-result and corrected Copilot-output exercise. Reference/error/forecast outputs are distinguished by statistical meaning and tested for missing periods, seasonality and intervals; the guide does not promise forecast certainty or treat an interval as a hard bound.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "analysis",
              "labanalysis"
            ]
          },
          {
            "wording": "Detect outliers and anomalies",
            "objective_wording_sha256": "a5cb911b53dc1d6de0c53b6b39e03259184b0afa86561c241285bb6bf4fb70cc",
            "group": "Identify patterns and trends",
            "group_number": 9,
            "objective_number": 5,
            "evidence_spans": [
              {
                "heading": "Analyze patterns without overclaiming",
                "start_line": 231,
                "end_line": 237,
                "span_lf_sha256": "0a8431969d05fd8f04ed58c80e64f9edf68155553b00d90c1038ce3de18e9aa7"
              },
              {
                "heading": "Lab 6 — Analysis and Copilot",
                "start_line": 323,
                "end_line": 323,
                "span_lf_sha256": "afded020b6d7d7cc4c7c9c86139ce3cde35279df5cbb246c8ba42c0fbe6947f7"
              }
            ],
            "initial_flag_disposition": "existing-adequate-for-verb",
            "reason": "For “Detect outliers and anomalies”, the current selected text teaches Analyze/group/bin/cluster/reference/error/forecast/anomaly/AI interpretation under grain/filter/date/seasonality/sample limits; analysis method/assumption/expected-result and corrected Copilot-output exercise. Outlier/anomaly inspection explicitly separates statistical deviation from business incident and requires model/filter/date/definition checks before interpretation. Detection without causal certainty is the intended learning outcome.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "analysis",
              "labanalysis"
            ]
          },
          {
            "wording": "Use Copilot to summarize the underlying semantic model",
            "objective_wording_sha256": "ae3af7cdcae65b2ab3400ae0392261a25a4f62367bb2dec4e66ae3e554f77603",
            "group": "Identify patterns and trends",
            "group_number": 9,
            "objective_number": 6,
            "evidence_spans": [
              {
                "heading": "Select and configure reports for a decision",
                "start_line": 195,
                "end_line": 213,
                "span_lf_sha256": "821687279958f19a89fc7f50bfa1b6cfea4ab6841d867a9f8976704883d4ca6b"
              }
            ],
            "initial_flag_disposition": "not-flagged-initially",
            "reason": "For “Use Copilot to summarize the underlying semantic model”, the selected current teaching explains Copilot semantic-model/report summary capability, curated model definitions and draft verification, plus actual summary/hidden-bookmark/filter/citation scope; this span is not the automatic-refresh paragraph. Its purpose, operation/design boundary and checks support this objective; this is editorial teaching coverage, not observed product execution.",
            "initial_depth_result": "substantive",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "visuals"
            ]
          },
          {
            "wording": "Create and configure a workspace",
            "objective_wording_sha256": "b71742e67175930f2fca953e7f768742d6dc0368e7d5706abdf7f650e24c10d0",
            "group": "Create and manage workspaces and assets",
            "group_number": 10,
            "objective_number": 1,
            "evidence_spans": [
              {
                "heading": "Workspaces, assets, apps, and distribution",
                "start_line": 243,
                "end_line": 255,
                "span_lf_sha256": "cac8393c5962b964b0a32b19a4ba6a64770db7ce61f632c4b49ccc1eeb623822"
              },
              {
                "heading": "Scenario 1: Regional sales app",
                "start_line": 287,
                "end_line": 287,
                "span_lf_sha256": "548c9980ed39408568e682560f69af8d5328dcca8438f2931157f1509736d6f5"
              }
            ],
            "initial_flag_disposition": "existing-adequate-for-verb",
            "reason": "For “Create and configure a workspace”, the current selected text teaches workspace/report/model/dashboard/app distinctions, publish/update/audience/distribution and personal refreshed-tile alert behavior; source/grain/model/report/app/RLS/refresh/label deployment with ordinary allowed/denied users. Workspace creation/configuration is taught through collaborative-container role scope, publication dependencies and post-publish connection/refresh/permission checks; the regional-sales deployment scenario applies that sequence.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "workspace",
              "scenario1"
            ]
          },
          {
            "wording": "Configure and update an app",
            "objective_wording_sha256": "98de8419ac56f0a325649d1410309b7b84d61618f8bd032eeb05e9e2dfbc8ff8",
            "group": "Create and manage workspaces and assets",
            "group_number": 10,
            "objective_number": 2,
            "evidence_spans": [
              {
                "heading": "Workspaces, assets, apps, and distribution",
                "start_line": 243,
                "end_line": 255,
                "span_lf_sha256": "cac8393c5962b964b0a32b19a4ba6a64770db7ce61f632c4b49ccc1eeb623822"
              }
            ],
            "initial_flag_disposition": "existing-adequate-for-verb",
            "reason": "For “Configure and update an app”, the current selected text teaches workspace/report/model/dashboard/app distinctions, publish/update/audience/distribution and personal refreshed-tile alert behavior. App/audience packaging, chosen audience content, update lifecycle and Build/reshare boundaries are distinguished from workspace sharing and tested against consumer access.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "workspace"
            ]
          },
          {
            "wording": "Publish, import, or update items in a workspace",
            "objective_wording_sha256": "e7716bfff2fe5540aed195564b2a780f0539394bf9b712eb3dcf87ca4d94e5dc",
            "group": "Create and manage workspaces and assets",
            "group_number": 10,
            "objective_number": 3,
            "evidence_spans": [
              {
                "heading": "Workspaces, assets, apps, and distribution",
                "start_line": 243,
                "end_line": 255,
                "span_lf_sha256": "cac8393c5962b964b0a32b19a4ba6a64770db7ce61f632c4b49ccc1eeb623822"
              }
            ],
            "initial_flag_disposition": "not-flagged-initially",
            "reason": "For “Publish, import, or update items in a workspace”, the selected current teaching explains workspace/report/model/dashboard/app distinctions, publish/update/audience/distribution and personal refreshed-tile alert behavior. Its purpose, operation/design boundary and checks support this objective; this is editorial teaching coverage, not observed product execution.",
            "initial_depth_result": "substantive",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "workspace"
            ]
          },
          {
            "wording": "Create dashboards",
            "objective_wording_sha256": "9b7389da5ef24a1744c9b4177cd849e284d17469e1194d78ba441ec331fe8104",
            "group": "Create and manage workspaces and assets",
            "group_number": 10,
            "objective_number": 4,
            "evidence_spans": [
              {
                "heading": "Workspaces, assets, apps, and distribution",
                "start_line": 243,
                "end_line": 255,
                "span_lf_sha256": "cac8393c5962b964b0a32b19a4ba6a64770db7ce61f632c4b49ccc1eeb623822"
              }
            ],
            "initial_flag_disposition": "existing-adequate-for-verb",
            "reason": "For “Create dashboards”, the current selected text teaches workspace/report/model/dashboard/app distinctions, publish/update/audience/distribution and personal refreshed-tile alert behavior. Dashboards are service tile artifacts pinned from report/model content, with multiple-source and personal alert behavior; refreshed numeric tile/threshold checks distinguish a working dashboard from an unchanged report page.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "workspace"
            ]
          },
          {
            "wording": "Choose a distribution method",
            "objective_wording_sha256": "7c730ce8cbc2ad69ef9c99940f79b2bb99e5d386406653cf9a5fa3870a2909db",
            "group": "Create and manage workspaces and assets",
            "group_number": 10,
            "objective_number": 5,
            "evidence_spans": [
              {
                "heading": "Workspaces, assets, apps, and distribution",
                "start_line": 243,
                "end_line": 255,
                "span_lf_sha256": "cac8393c5962b964b0a32b19a4ba6a64770db7ce61f632c4b49ccc1eeb623822"
              }
            ],
            "initial_flag_disposition": "not-flagged-initially",
            "reason": "For “Choose a distribution method”, the selected current teaching explains workspace/report/model/dashboard/app distinctions, publish/update/audience/distribution and personal refreshed-tile alert behavior. Its purpose, operation/design boundary and checks support this objective; this is editorial teaching coverage, not observed product execution.",
            "initial_depth_result": "substantive",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "workspace"
            ]
          },
          {
            "wording": "Configure subscriptions and data alerts",
            "objective_wording_sha256": "5c868d1dec5fb5c130f8ba29bc96110257ee9f8d386c94e4f7a2a3764c1cc8aa",
            "group": "Create and manage workspaces and assets",
            "group_number": 10,
            "objective_number": 6,
            "evidence_spans": [
              {
                "heading": "Workspaces, assets, apps, and distribution",
                "start_line": 243,
                "end_line": 255,
                "span_lf_sha256": "cac8393c5962b964b0a32b19a4ba6a64770db7ce61f632c4b49ccc1eeb623822"
              }
            ],
            "initial_flag_disposition": "existing-adequate-for-verb",
            "reason": "For “Configure subscriptions and data alerts”, the current selected text teaches workspace/report/model/dashboard/app distinctions, publish/update/audience/distribution and personal refreshed-tile alert behavior. Scheduled subscription versus personal refreshed-tile alert delivery has recipient/access/sensitivity/threshold checks; sharing the dashboard does not share alert rules.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "workspace"
            ]
          },
          {
            "wording": "Promote or certify Power BI content",
            "objective_wording_sha256": "346b04ffadc74eb5571640d7f7f8c9d572ef2b241cac77865515303e666e61b5",
            "group": "Create and manage workspaces and assets",
            "group_number": 10,
            "objective_number": 7,
            "evidence_spans": [
              {
                "heading": "Workspaces, assets, apps, and distribution",
                "start_line": 243,
                "end_line": 255,
                "span_lf_sha256": "cac8393c5962b964b0a32b19a4ba6a64770db7ce61f632c4b49ccc1eeb623822"
              }
            ],
            "initial_flag_disposition": "not-flagged-initially",
            "reason": "For “Promote or certify Power BI content”, the selected current teaching explains workspace/report/model/dashboard/app distinctions, publish/update/audience/distribution and personal refreshed-tile alert behavior. Its purpose, operation/design boundary and checks support this objective; this is editorial teaching coverage, not observed product execution.",
            "initial_depth_result": "substantive",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "workspace"
            ]
          },
          {
            "wording": "Identify when a gateway is required",
            "objective_wording_sha256": "7d9d37954077a61c046e1db2821cf9d4df161e2c6125db4e2df1b0e0a3cceb32",
            "group": "Create and manage workspaces and assets",
            "group_number": 10,
            "objective_number": 8,
            "evidence_spans": [
              {
                "heading": "Gateways and refresh",
                "start_line": 259,
                "end_line": 267,
                "span_lf_sha256": "6d6f9a6bab1ecf6a640f9aaa1c37ba7e506f9c64197e73b764a94a414e74db04"
              }
            ],
            "initial_flag_disposition": "not-flagged-initially",
            "reason": "For “Identify when a gateway is required”, the selected current teaching explains gateway mapping/identity/availability and scheduled/schema/data/file-versus-visual refresh with failure disable/pause limits. Its purpose, operation/design boundary and checks support this objective; this is editorial teaching coverage, not observed product execution.",
            "initial_depth_result": "substantive",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "refresh"
            ]
          },
          {
            "wording": "Configure a semantic model scheduled refresh",
            "objective_wording_sha256": "fbbbaa650dacad2ab5211e50a23d3ab6eb9e5bbe2c04cde433cc88f0182fb08d",
            "group": "Create and manage workspaces and assets",
            "group_number": 10,
            "objective_number": 9,
            "evidence_spans": [
              {
                "heading": "Gateways and refresh",
                "start_line": 259,
                "end_line": 267,
                "span_lf_sha256": "6d6f9a6bab1ecf6a640f9aaa1c37ba7e506f9c64197e73b764a94a414e74db04"
              }
            ],
            "initial_flag_disposition": "not-flagged-initially",
            "reason": "For “Configure a semantic model scheduled refresh”, the selected current teaching explains gateway mapping/identity/availability and scheduled/schema/data/file-versus-visual refresh with failure disable/pause limits. Its purpose, operation/design boundary and checks support this objective; this is editorial teaching coverage, not observed product execution.",
            "initial_depth_result": "substantive",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "refresh"
            ]
          },
          {
            "wording": "Assign workspace roles",
            "objective_wording_sha256": "40a9fab9ad4e3a1e46dc5b1e4a89e0055566cf4741e61a55b0d522050826041e",
            "group": "Secure and govern Power BI items",
            "group_number": 11,
            "objective_number": 1,
            "evidence_spans": [
              {
                "heading": "Roles, item permissions, semantic-model access, and RLS",
                "start_line": 271,
                "end_line": 281,
                "span_lf_sha256": "ad679aaa34679d44e2e055d93624d61b0dcc88c2a7d7d2065d9c10c49533145e"
              }
            ],
            "initial_flag_disposition": "existing-adequate-for-verb",
            "reason": "For “Assign workspace roles”, the current selected text teaches workspace/item/model grants, RLS role union/group/real-consumer tests and sensitivity labels on supported versus unsupported export routes. Admin/Member/Contributor/Viewer are assigned by least-privilege group/author/consumer purpose; the worked Viewer+Build versus Contributor case proves the RLS consequence.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "roles"
            ]
          },
          {
            "wording": "Configure item-level access",
            "objective_wording_sha256": "d9bc8d4c39843eea745c10dfccba3054fb2792034456832209d1f97611729dd7",
            "group": "Secure and govern Power BI items",
            "group_number": 11,
            "objective_number": 2,
            "evidence_spans": [
              {
                "heading": "Roles, item permissions, semantic-model access, and RLS",
                "start_line": 271,
                "end_line": 281,
                "span_lf_sha256": "ad679aaa34679d44e2e055d93624d61b0dcc88c2a7d7d2065d9c10c49533145e"
              }
            ],
            "initial_flag_disposition": "existing-adequate-for-verb",
            "reason": "For “Configure item-level access”, the current selected text teaches workspace/item/model grants, RLS role union/group/real-consumer tests and sensitivity labels on supported versus unsupported export routes. Item-level access is separated from broad workspace membership and linked to report/model dependency and reshare sprawl checks.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "roles"
            ]
          },
          {
            "wording": "Configure access to semantic models",
            "objective_wording_sha256": "584f54e4bc2104c6bdb33bb16a3239da41c9a0c58aabe1d46f8c09c353c3b6cd",
            "group": "Secure and govern Power BI items",
            "group_number": 11,
            "objective_number": 3,
            "evidence_spans": [
              {
                "heading": "Roles, item permissions, semantic-model access, and RLS",
                "start_line": 271,
                "end_line": 281,
                "span_lf_sha256": "ad679aaa34679d44e2e055d93624d61b0dcc88c2a7d7d2065d9c10c49533145e"
              }
            ],
            "initial_flag_disposition": "existing-adequate-for-verb",
            "reason": "For “Configure access to semantic models”, the current selected text teaches workspace/item/model grants, RLS role union/group/real-consumer tests and sensitivity labels on supported versus unsupported export routes. Read/Build/Reshare/Write are separate model actions; Build is explicitly approved and tested with effective workspace permissions rather than assumed from report access.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "roles"
            ]
          },
          {
            "wording": "Implement row-level security roles",
            "objective_wording_sha256": "9faa7564fe82c1fa326e4042e8576111a88797e476d389105d89bf6ac898d2e0",
            "group": "Secure and govern Power BI items",
            "group_number": 11,
            "objective_number": 4,
            "evidence_spans": [
              {
                "heading": "Roles, item permissions, semantic-model access, and RLS",
                "start_line": 271,
                "end_line": 281,
                "span_lf_sha256": "ad679aaa34679d44e2e055d93624d61b0dcc88c2a7d7d2065d9c10c49533145e"
              }
            ],
            "initial_flag_disposition": "not-flagged-initially",
            "reason": "For “Implement row-level security roles”, the selected current teaching explains workspace/item/model grants, RLS role union/group/real-consumer tests and sensitivity labels on supported versus unsupported export routes. Its purpose, operation/design boundary and checks support this objective; this is editorial teaching coverage, not observed product execution.",
            "initial_depth_result": "substantive",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "roles"
            ]
          },
          {
            "wording": "Configure row-level security group membership",
            "objective_wording_sha256": "0efaf4b3964ec1e45c19d1bdda32bdf5d87788a399eb9241985dac0e05859973",
            "group": "Secure and govern Power BI items",
            "group_number": 11,
            "objective_number": 5,
            "evidence_spans": [
              {
                "heading": "Roles, item permissions, semantic-model access, and RLS",
                "start_line": 271,
                "end_line": 281,
                "span_lf_sha256": "ad679aaa34679d44e2e055d93624d61b0dcc88c2a7d7d2065d9c10c49533145e"
              }
            ],
            "initial_flag_disposition": "existing-adequate-for-verb",
            "reason": "For “Configure row-level security group membership”, the current selected text teaches workspace/item/model grants, RLS role union/group/real-consumer tests and sensitivity labels on supported versus unsupported export routes. Published model roles receive supported users/groups; East/West union, excluded Microsoft365 groups and real restricted-identity tests teach membership configuration and its critical failure.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "roles"
            ]
          },
          {
            "wording": "Apply sensitivity labels",
            "objective_wording_sha256": "c690b8d40e28d295b504d12407689c29aa5d27a0f50aad3bb4a9a00d6d329399",
            "group": "Secure and govern Power BI items",
            "group_number": 11,
            "objective_number": 6,
            "evidence_spans": [
              {
                "heading": "Roles, item permissions, semantic-model access, and RLS",
                "start_line": 271,
                "end_line": 281,
                "span_lf_sha256": "ad679aaa34679d44e2e055d93624d61b0dcc88c2a7d7d2065d9c10c49533145e"
              }
            ],
            "initial_flag_disposition": "not-flagged-initially",
            "reason": "For “Apply sensitivity labels”, the selected current teaching explains sensitivity classification and policy protection on supported Excel/PDF/PowerPoint exports, the CSV/unsupported-route gap and recipient-open tests independent of RLS/access. Its purpose, operation/design boundary and checks support this objective; this is editorial teaching coverage, not observed product execution.",
            "initial_depth_result": "substantive",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "roles"
            ]
          }
        ],
        "disposition_counts": {
          "not-flagged-initially": 45,
          "existing-adequate-for-verb": 22,
          "repaired-by-actual-packet": 11
        }
      },
      {
        "exam_code": "PL-900",
        "guide_path": "guides/PL-900-microsoft-power-platform-fundamentals.md",
        "guide_lf_sha256": "d111dba01cb12e5fb753260ef6f19967ca34bcac282fd54f1bd8e5b8db253c77",
        "objective_raw_sha256": "959c63326efa3e74735cd2abc1cb28246d816506296b218428802240f9f99bd0",
        "objective_count": 37,
        "current_mapping": [
          {
            "wording": "Describe the value of Microsoft Power Apps to build applications",
            "objective_wording_sha256": "395ea85f9733adf9f68287a75337750a130b8f1f7087bca5e406ebd7c783a6b4",
            "group": "Describe the business value of Microsoft Power Platform services",
            "group_number": 1,
            "objective_number": 1,
            "evidence_spans": [
              {
                "heading": "1. The Power Platform mental model",
                "start_line": 61,
                "end_line": 91,
                "span_lf_sha256": "65e8e81645b64dfbef0f67696f3b6fd3beec39a6b0889c73e12ad95c7b8dfce6"
              }
            ],
            "initial_flag_disposition": "not-flagged-initially",
            "reason": "For “Describe the value of Microsoft Power Apps to build applications”, the selected current teaching explains product business roles, shared governed data, integration identity and end-to-end measurable value. Its purpose, operation/design boundary and checks support this objective; this is editorial teaching coverage, not observed product execution.",
            "initial_depth_result": "substantive",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "mental"
            ]
          },
          {
            "wording": "Describe the value of Microsoft Power Automate to automate processes",
            "objective_wording_sha256": "0907ee1df50d8e725b0e0a6b51fc24ee87ea4f917ae843c72db1f7a3edb4098e",
            "group": "Describe the business value of Microsoft Power Platform services",
            "group_number": 1,
            "objective_number": 2,
            "evidence_spans": [
              {
                "heading": "1. The Power Platform mental model",
                "start_line": 61,
                "end_line": 91,
                "span_lf_sha256": "65e8e81645b64dfbef0f67696f3b6fd3beec39a6b0889c73e12ad95c7b8dfce6"
              }
            ],
            "initial_flag_disposition": "not-flagged-initially",
            "reason": "For “Describe the value of Microsoft Power Automate to automate processes”, the selected current teaching explains product business roles, shared governed data, integration identity and end-to-end measurable value. Its purpose, operation/design boundary and checks support this objective; this is editorial teaching coverage, not observed product execution.",
            "initial_depth_result": "substantive",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "mental"
            ]
          },
          {
            "wording": "Describe the value of Microsoft Dataverse to organize business data",
            "objective_wording_sha256": "b1fe6cc59bfc1ca3cabd691e67fae1e20ef445916d2a2016f046b475d13c7a85",
            "group": "Describe the business value of Microsoft Power Platform services",
            "group_number": 1,
            "objective_number": 3,
            "evidence_spans": [
              {
                "heading": "1. The Power Platform mental model",
                "start_line": 61,
                "end_line": 91,
                "span_lf_sha256": "65e8e81645b64dfbef0f67696f3b6fd3beec39a6b0889c73e12ad95c7b8dfce6"
              }
            ],
            "initial_flag_disposition": "not-flagged-initially",
            "reason": "For “Describe the value of Microsoft Dataverse to organize business data”, the selected current teaching explains product business roles, shared governed data, integration identity and end-to-end measurable value. Its purpose, operation/design boundary and checks support this objective; this is editorial teaching coverage, not observed product execution.",
            "initial_depth_result": "substantive",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "mental"
            ]
          },
          {
            "wording": "Describe the value of connectors to integrate services and data for apps and flows",
            "objective_wording_sha256": "d27c62a74a0d66242bb339c610bb773dddbbd8dfbf5b0e32aec78ee7361c33b0",
            "group": "Describe the business value of Microsoft Power Platform services",
            "group_number": 1,
            "objective_number": 4,
            "evidence_spans": [
              {
                "heading": "1. The Power Platform mental model",
                "start_line": 61,
                "end_line": 91,
                "span_lf_sha256": "65e8e81645b64dfbef0f67696f3b6fd3beec39a6b0889c73e12ad95c7b8dfce6"
              },
              {
                "heading": "Connectors and data movement",
                "start_line": 126,
                "end_line": 134,
                "span_lf_sha256": "13c9525c8031348d8c722b441d478d3dd370233c3d23e0a5452c606204f2aa55"
              }
            ],
            "initial_flag_disposition": "not-flagged-initially",
            "reason": "For “Describe the value of connectors to integrate services and data for apps and flows”, the selected current teaching explains product business roles, shared governed data, integration identity and end-to-end measurable value; connector versus connection identity, supported operations/data movement and policy/source-permission boundaries. Its purpose, operation/design boundary and checks support this objective; this is editorial teaching coverage, not observed product execution.",
            "initial_depth_result": "substantive",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "mental",
              "connect"
            ]
          },
          {
            "wording": "Describe the value of Microsoft Power Pages to build websites",
            "objective_wording_sha256": "2a281700a768dd8341ebf561797b1be50751867b0891eb1285b6f2da7800eff7",
            "group": "Describe the business value of Microsoft Power Platform services",
            "group_number": 1,
            "objective_number": 5,
            "evidence_spans": [
              {
                "heading": "1. The Power Platform mental model",
                "start_line": 61,
                "end_line": 91,
                "span_lf_sha256": "65e8e81645b64dfbef0f67696f3b6fd3beec39a6b0889c73e12ad95c7b8dfce6"
              }
            ],
            "initial_flag_disposition": "not-flagged-initially",
            "reason": "For “Describe the value of Microsoft Power Pages to build websites”, the selected current teaching explains product business roles, shared governed data, integration identity and end-to-end measurable value. Its purpose, operation/design boundary and checks support this objective; this is editorial teaching coverage, not observed product execution.",
            "initial_depth_result": "substantive",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "mental"
            ]
          },
          {
            "wording": "Describe the value of generative AI features in Microsoft Power Platform",
            "objective_wording_sha256": "cc45a6ead4912b5325aed007f6e6c3a82272ece382f050abc8a5f8901fdd8172",
            "group": "Describe the business value of Microsoft Power Platform services",
            "group_number": 1,
            "objective_number": 6,
            "evidence_spans": [
              {
                "heading": "1. The Power Platform mental model",
                "start_line": 61,
                "end_line": 91,
                "span_lf_sha256": "65e8e81645b64dfbef0f67696f3b6fd3beec39a6b0889c73e12ad95c7b8dfce6"
              }
            ],
            "initial_flag_disposition": "not-flagged-initially",
            "reason": "For “Describe the value of generative AI features in Microsoft Power Platform”, the selected current teaching explains product business roles, shared governed data, integration identity and end-to-end measurable value. Its purpose, operation/design boundary and checks support this objective; this is editorial teaching coverage, not observed product execution.",
            "initial_depth_result": "substantive",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "mental"
            ]
          },
          {
            "wording": "Describe the value of Copilot Studio to create agents",
            "objective_wording_sha256": "e6ab281f7924993bf78fa80a704638396142f29643eae8f8e8869752206cf8a2",
            "group": "Describe the business value of Microsoft Power Platform services",
            "group_number": 1,
            "objective_number": 7,
            "evidence_spans": [
              {
                "heading": "1. The Power Platform mental model",
                "start_line": 61,
                "end_line": 91,
                "span_lf_sha256": "65e8e81645b64dfbef0f67696f3b6fd3beec39a6b0889c73e12ad95c7b8dfce6"
              }
            ],
            "initial_flag_disposition": "not-flagged-initially",
            "reason": "For “Describe the value of Copilot Studio to create agents”, the selected current teaching explains product business roles, shared governed data, integration identity and end-to-end measurable value. Its purpose, operation/design boundary and checks support this objective; this is editorial teaching coverage, not observed product execution.",
            "initial_depth_result": "substantive",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "mental"
            ]
          },
          {
            "wording": "Describe differences between traditional databases and Dataverse",
            "objective_wording_sha256": "fb94f39f7c3a38465d32bf0ebb4bea2cda706d6eaba7bf8263842d2e8bb42866",
            "group": "Describe Microsoft Dataverse",
            "group_number": 2,
            "objective_number": 1,
            "evidence_spans": [
              {
                "heading": "Dataverse concepts",
                "start_line": 97,
                "end_line": 122,
                "span_lf_sha256": "0528186d2c55c696a9aef5e9a11800e425ec1f552a2a2bdb831b83fc0f813acd"
              }
            ],
            "initial_flag_disposition": "not-flagged-initially",
            "reason": "For “Describe differences between traditional databases and Dataverse”, the selected current teaching explains Dataverse table/column/relationship/form/view/logic/security and traditional-database distinctions. Its purpose, operation/design boundary and checks support this objective; this is editorial teaching coverage, not observed product execution.",
            "initial_depth_result": "substantive",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "data"
            ]
          },
          {
            "wording": "Describe tables, columns, and relationships",
            "objective_wording_sha256": "060a97c2f0e5a4297498aa65761aa6e605a8c088385256239b9192ba91d20485",
            "group": "Describe Microsoft Dataverse",
            "group_number": 2,
            "objective_number": 2,
            "evidence_spans": [
              {
                "heading": "Dataverse concepts",
                "start_line": 97,
                "end_line": 122,
                "span_lf_sha256": "0528186d2c55c696a9aef5e9a11800e425ec1f552a2a2bdb831b83fc0f813acd"
              }
            ],
            "initial_flag_disposition": "not-flagged-initially",
            "reason": "For “Describe tables, columns, and relationships”, the selected current teaching explains Dataverse table/column/relationship/form/view/logic/security and traditional-database distinctions. Its purpose, operation/design boundary and checks support this objective; this is editorial teaching coverage, not observed product execution.",
            "initial_depth_result": "substantive",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "data"
            ]
          },
          {
            "wording": "Describe table forms and views",
            "objective_wording_sha256": "36b15571269b4e9e2cda7897f42127b979cbd091c78c3efedff6ba9c02cd3272",
            "group": "Describe Microsoft Dataverse",
            "group_number": 2,
            "objective_number": 3,
            "evidence_spans": [
              {
                "heading": "Dataverse concepts",
                "start_line": 97,
                "end_line": 122,
                "span_lf_sha256": "0528186d2c55c696a9aef5e9a11800e425ec1f552a2a2bdb831b83fc0f813acd"
              }
            ],
            "initial_flag_disposition": "not-flagged-initially",
            "reason": "For “Describe table forms and views”, the selected current teaching explains Dataverse table/column/relationship/form/view/logic/security and traditional-database distinctions. Its purpose, operation/design boundary and checks support this objective; this is editorial teaching coverage, not observed product execution.",
            "initial_depth_result": "substantive",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "data"
            ]
          },
          {
            "wording": "Describe the options for business logic in Dataverse, including Power Fx",
            "objective_wording_sha256": "e37ba1d47535f1ee573c039d86ebd52da4d478feac7bb795c381b4202544f399",
            "group": "Describe Microsoft Dataverse",
            "group_number": 2,
            "objective_number": 4,
            "evidence_spans": [
              {
                "heading": "Dataverse concepts",
                "start_line": 97,
                "end_line": 122,
                "span_lf_sha256": "0528186d2c55c696a9aef5e9a11800e425ec1f552a2a2bdb831b83fc0f813acd"
              }
            ],
            "initial_flag_disposition": "not-flagged-initially",
            "reason": "For “Describe the options for business logic in Dataverse, including Power Fx”, the selected current teaching explains Dataverse table/column/relationship/form/view/logic/security and traditional-database distinctions. Its purpose, operation/design boundary and checks support this objective; this is editorial teaching coverage, not observed product execution.",
            "initial_depth_result": "substantive",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "data"
            ]
          },
          {
            "wording": "Describe how to use AI to create and edit tables, columns, and relationships",
            "objective_wording_sha256": "1f8770d0245c68bd9c0192a902f2aaf0acaf8c8a99e2779bd5bfde83fc4aa6c4",
            "group": "Describe Microsoft Dataverse",
            "group_number": 2,
            "objective_number": 5,
            "evidence_spans": [
              {
                "heading": "Dataverse concepts",
                "start_line": 97,
                "end_line": 122,
                "span_lf_sha256": "0528186d2c55c696a9aef5e9a11800e425ec1f552a2a2bdb831b83fc0f813acd"
              },
              {
                "heading": "Worked creation path: one model, two app experiences",
                "start_line": 221,
                "end_line": 223,
                "span_lf_sha256": "435b990eeec44bd95a98772a978f53fdd3b2ffcb84a0e2b5737562c79f15e5f4"
              }
            ],
            "initial_flag_disposition": "not-flagged-initially",
            "reason": "For “Describe how to use AI to create and edit tables, columns, and relationships”, the selected current teaching explains Dataverse table/column/relationship/form/view/logic/security and traditional-database distinctions; reviewed equipment table/relationship proposal and saved-plan canvas/model-driven creation/publish/user checks. Its purpose, operation/design boundary and checks support this objective; this is editorial teaching coverage, not observed product execution.",
            "initial_depth_result": "substantive",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [
              "pl900-ai-build"
            ],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "data",
              "create"
            ]
          },
          {
            "wording": "Describe environments",
            "objective_wording_sha256": "aeff75c7c3c29884a35424e3cbbb348b767c49616f426d0152da339217ac2830",
            "group": "Describe Microsoft Power Platform administration and governance",
            "group_number": 3,
            "objective_number": 1,
            "evidence_spans": [
              {
                "heading": "3. Environments, security, governance, and ALM",
                "start_line": 138,
                "end_line": 196,
                "span_lf_sha256": "3a34524b584225de1787041dd43865244733dad921f4a24e1dda1ccd1dcd1339"
              }
            ],
            "initial_flag_disposition": "not-flagged-initially",
            "reason": "For “Describe environments”, the selected current teaching explains environment separation/capacity/region, layered security, DLP, ALM, monitoring and accessibility as a complete platform operating model. Its purpose, operation/design boundary and checks support this objective; this is editorial teaching coverage, not observed product execution.",
            "initial_depth_result": "substantive",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "environment"
            ]
          },
          {
            "wording": "Describe the Microsoft Power Platform security model",
            "objective_wording_sha256": "9351d21c54f1156124ff6c57723a749f30b1a789f69b56034b8f0beb40ce0ad6",
            "group": "Describe Microsoft Power Platform administration and governance",
            "group_number": 3,
            "objective_number": 2,
            "evidence_spans": [
              {
                "heading": "Security layers",
                "start_line": 146,
                "end_line": 171,
                "span_lf_sha256": "c18af47ec3e8ca84c6d66cbff541ab896fa5da3fd839b269e5c154dffe66cb9e"
              }
            ],
            "initial_flag_disposition": "not-flagged-initially",
            "reason": "For “Describe the Microsoft Power Platform security model”, the selected current teaching explains app, Dataverse, connector/source and DLP grants with accumulating permissions and policy-combination failures. Its purpose, operation/design boundary and checks support this objective; this is editorial teaching coverage, not observed product execution.",
            "initial_depth_result": "substantive",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "security"
            ]
          },
          {
            "wording": "Describe how Microsoft Power Platform supports data privacy and accessibility guidelines",
            "objective_wording_sha256": "7e444b64184ec5b5dd81267b66886d76dbdcec0a844df92a6238a6c2ffcd08e6",
            "group": "Describe Microsoft Power Platform administration and governance",
            "group_number": 3,
            "objective_number": 3,
            "evidence_spans": [
              {
                "heading": "Security layers",
                "start_line": 146,
                "end_line": 171,
                "span_lf_sha256": "c18af47ec3e8ca84c6d66cbff541ab896fa5da3fd839b269e5c154dffe66cb9e"
              },
              {
                "heading": "Monitoring and accessibility",
                "start_line": 192,
                "end_line": 196,
                "span_lf_sha256": "2b49a3e63afdca407af12057691cd89ba1d2a4f09f30da2938d10e6462134e5a"
              }
            ],
            "initial_flag_disposition": "not-flagged-initially",
            "reason": "For “Describe how Microsoft Power Platform supports data privacy and accessibility guidelines”, the selected current teaching explains app, Dataverse, connector/source and DLP grants with accumulating permissions and policy-combination failures; technical/business monitoring evidence and keyboard/label/focus/contrast/assistive access checks. Its purpose, operation/design boundary and checks support this objective; this is editorial teaching coverage, not observed product execution.",
            "initial_depth_result": "substantive",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "security",
              "monitor"
            ]
          },
          {
            "wording": "Describe the monitoring and analytics capabilities of the Microsoft Power Platform",
            "objective_wording_sha256": "952018e9331bc8f20bd975b8225c329782c86a7e82de084b981767a2206a5fd0",
            "group": "Describe Microsoft Power Platform administration and governance",
            "group_number": 3,
            "objective_number": 4,
            "evidence_spans": [
              {
                "heading": "Monitoring and accessibility",
                "start_line": 192,
                "end_line": 196,
                "span_lf_sha256": "2b49a3e63afdca407af12057691cd89ba1d2a4f09f30da2938d10e6462134e5a"
              }
            ],
            "initial_flag_disposition": "not-flagged-initially",
            "reason": "For “Describe the monitoring and analytics capabilities of the Microsoft Power Platform”, the selected current teaching explains technical/business monitoring evidence and keyboard/label/focus/contrast/assistive access checks. Its purpose, operation/design boundary and checks support this objective; this is editorial teaching coverage, not observed product execution.",
            "initial_depth_result": "substantive",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "monitor"
            ]
          },
          {
            "wording": "Describe application lifecycle management (ALM) with Microsoft Power Platform pipelines",
            "objective_wording_sha256": "b4d03154544e78c6d4c6beec4f2d028551f299d921fadccae1db5ba9e9e3a1cb",
            "group": "Describe Microsoft Power Platform administration and governance",
            "group_number": 3,
            "objective_number": 5,
            "evidence_spans": [
              {
                "heading": "Solutions and lifecycle",
                "start_line": 175,
                "end_line": 188,
                "span_lf_sha256": "39395c5d48149e1a9078b65776800898e9e91163f7a891947b739e0d7d89c6d3"
              }
            ],
            "initial_flag_disposition": "not-flagged-initially",
            "reason": "For “Describe application lifecycle management (ALM) with Microsoft Power Platform pipelines”, the selected current teaching explains solution component/configuration/connection/environment pipeline deployment versus business-row movement. Its purpose, operation/design boundary and checks support this objective; this is editorial teaching coverage, not observed product execution.",
            "initial_depth_result": "substantive",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "alm"
            ]
          },
          {
            "wording": "Describe use cases for and capabilities of canvas apps",
            "objective_wording_sha256": "d5a5eb218b5c088cc8f9504397c7ab48444314b49fb59fa9e18b86f037b0b858",
            "group": "Describe Power Apps capabilities and use cases",
            "group_number": 4,
            "objective_number": 1,
            "evidence_spans": [
              {
                "heading": "Choose an app type",
                "start_line": 202,
                "end_line": 217,
                "span_lf_sha256": "2349fc281a52e39cfaaf99f1ea6f184ab33b7be0ae569f0b9729211243aba70f"
              },
              {
                "heading": "Canvas apps",
                "start_line": 233,
                "end_line": 245,
                "span_lf_sha256": "c62526cade10ccebd4b3745208c44bb6ed60649ccc359837ad6ee9f3b187f362"
              }
            ],
            "initial_flag_disposition": "not-flagged-initially",
            "reason": "For “Describe use cases for and capabilities of canvas apps”, the selected current teaching explains canvas/model-driven/Pages/code/plan/vibe artifact selection and review boundaries; control→formula→connector→identity→authorization→feedback plus delegation/responsive/accessibility failure. Its purpose, operation/design boundary and checks support this objective; this is editorial teaching coverage, not observed product execution.",
            "initial_depth_result": "substantive",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "choose",
              "canvas"
            ]
          },
          {
            "wording": "Describe use cases for and capabilities of model-driven apps",
            "objective_wording_sha256": "01d7f991d3e943d57ff4a47e02a7bbe9af264a917fe8e412f33a8098a0bde4c1",
            "group": "Describe Power Apps capabilities and use cases",
            "group_number": 4,
            "objective_number": 2,
            "evidence_spans": [
              {
                "heading": "Choose an app type",
                "start_line": 202,
                "end_line": 217,
                "span_lf_sha256": "2349fc281a52e39cfaaf99f1ea6f184ab33b7be0ae569f0b9729211243aba70f"
              },
              {
                "heading": "Model-driven apps",
                "start_line": 249,
                "end_line": 255,
                "span_lf_sha256": "82137dccd775c47254477b16073fdedfe1e93d918fd1a4c8af4fd293eec8c503"
              }
            ],
            "initial_flag_disposition": "not-flagged-initially",
            "reason": "For “Describe use cases for and capabilities of model-driven apps”, the selected current teaching explains canvas/model-driven/Pages/code/plan/vibe artifact selection and review boundaries; Dataverse metadata/forms/views/process and record-based role-aware experience. Its purpose, operation/design boundary and checks support this objective; this is editorial teaching coverage, not observed product execution.",
            "initial_depth_result": "substantive",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "choose",
              "model"
            ]
          },
          {
            "wording": "Describe use cases for and capabilities of Plan designer",
            "objective_wording_sha256": "7d9b775abee82ee33823ae4825b96d6145ebfccf8ff616bf43f7ce4e468ea6c5",
            "group": "Describe Power Apps capabilities and use cases",
            "group_number": 4,
            "objective_number": 3,
            "evidence_spans": [
              {
                "heading": "Choose an app type",
                "start_line": 202,
                "end_line": 217,
                "span_lf_sha256": "2349fc281a52e39cfaaf99f1ea6f184ab33b7be0ae569f0b9729211243aba70f"
              },
              {
                "heading": "Worked creation path: one model, two app experiences",
                "start_line": 221,
                "end_line": 223,
                "span_lf_sha256": "435b990eeec44bd95a98772a978f53fdd3b2ffcb84a0e2b5737562c79f15e5f4"
              },
              {
                "heading": "Current app-building boundaries",
                "start_line": 227,
                "end_line": 229,
                "span_lf_sha256": "0f2ff2a89f7b437c87eb20ba4f86e94bf1d93b4a59a0df59cb5d7a20af459e40"
              }
            ],
            "initial_flag_disposition": "not-flagged-initially",
            "reason": "For “Describe use cases for and capabilities of Plan designer”, the selected current teaching explains canvas/model-driven/Pages/code/plan/vibe artifact selection and review boundaries; reviewed equipment table/relationship proposal and saved-plan canvas/model-driven creation/publish/user checks; current plan/vibe/code experience, source-control, licensing and preview boundaries. Its purpose, operation/design boundary and checks support this objective; this is editorial teaching coverage, not observed product execution.",
            "initial_depth_result": "substantive",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [
              "pl900-ai-build"
            ],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "choose",
              "create",
              "current"
            ]
          },
          {
            "wording": "Describe use cases for and capabilities of code apps",
            "objective_wording_sha256": "11d575610f0428cbdc665875273096f3408ad52d33fd166b02250572d3b9ccbd",
            "group": "Describe Power Apps capabilities and use cases",
            "group_number": 4,
            "objective_number": 4,
            "evidence_spans": [
              {
                "heading": "Choose an app type",
                "start_line": 202,
                "end_line": 217,
                "span_lf_sha256": "2349fc281a52e39cfaaf99f1ea6f184ab33b7be0ae569f0b9729211243aba70f"
              },
              {
                "heading": "Current app-building boundaries",
                "start_line": 227,
                "end_line": 229,
                "span_lf_sha256": "0f2ff2a89f7b437c87eb20ba4f86e94bf1d93b4a59a0df59cb5d7a20af459e40"
              }
            ],
            "initial_flag_disposition": "not-flagged-initially",
            "reason": "For “Describe use cases for and capabilities of code apps”, the selected current teaching explains canvas/model-driven/Pages/code/plan/vibe artifact selection and review boundaries; current plan/vibe/code experience, source-control, licensing and preview boundaries. Its purpose, operation/design boundary and checks support this objective; this is editorial teaching coverage, not observed product execution.",
            "initial_depth_result": "substantive",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "choose",
              "current"
            ]
          },
          {
            "wording": "Describe how to use AI to create a canvas app",
            "objective_wording_sha256": "6f2e53fea707814bfc683d7a7dba6298eecbf7462a9d6c80736d0b0f778c20a1",
            "group": "Describe how to build basic apps by using Power Apps",
            "group_number": 5,
            "objective_number": 1,
            "evidence_spans": [
              {
                "heading": "Worked creation path: one model, two app experiences",
                "start_line": 221,
                "end_line": 223,
                "span_lf_sha256": "435b990eeec44bd95a98772a978f53fdd3b2ffcb84a0e2b5737562c79f15e5f4"
              },
              {
                "heading": "Current app-building boundaries",
                "start_line": 227,
                "end_line": 229,
                "span_lf_sha256": "0f2ff2a89f7b437c87eb20ba4f86e94bf1d93b4a59a0df59cb5d7a20af459e40"
              }
            ],
            "initial_flag_disposition": "repaired-by-actual-packet",
            "reason": "For “Describe how to use AI to create a canvas app”, the current selected text teaches reviewed equipment table/relationship proposal and saved-plan canvas/model-driven creation/publish/user checks; current plan/vibe/code experience, source-control, licensing and preview boundaries. For “Describe how to use AI to create a canvas app”: The reviewed equipment-table proposal and saved-plan app tiles distinguish generated canvas/model-driven artifacts, designer review, publishing and ordinary-user access.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [
              "pl900-ai-build"
            ],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "create",
              "current"
            ]
          },
          {
            "wording": "Describe how to use AI to create a model-driven app",
            "objective_wording_sha256": "0b558f4c7b4310755c1eb300f78ec8764d97da6e803ad158915de7850d013c75",
            "group": "Describe how to build basic apps by using Power Apps",
            "group_number": 5,
            "objective_number": 2,
            "evidence_spans": [
              {
                "heading": "Worked creation path: one model, two app experiences",
                "start_line": 221,
                "end_line": 223,
                "span_lf_sha256": "435b990eeec44bd95a98772a978f53fdd3b2ffcb84a0e2b5737562c79f15e5f4"
              },
              {
                "heading": "Current app-building boundaries",
                "start_line": 227,
                "end_line": 229,
                "span_lf_sha256": "0f2ff2a89f7b437c87eb20ba4f86e94bf1d93b4a59a0df59cb5d7a20af459e40"
              }
            ],
            "initial_flag_disposition": "repaired-by-actual-packet",
            "reason": "For “Describe how to use AI to create a model-driven app”, the current selected text teaches reviewed equipment table/relationship proposal and saved-plan canvas/model-driven creation/publish/user checks; current plan/vibe/code experience, source-control, licensing and preview boundaries. For “Describe how to use AI to create a model-driven app”: The reviewed equipment-table proposal and saved-plan app tiles distinguish generated canvas/model-driven artifacts, designer review, publishing and ordinary-user access.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [
              "pl900-ai-build"
            ],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "create",
              "current"
            ]
          },
          {
            "wording": "Describe creating AI-powered apps by using the vibe experience",
            "objective_wording_sha256": "b522ca89551a00f836204d8b37512526ab2a59b0b9d34fc100caeaaf8fa4a6d0",
            "group": "Describe how to build basic apps by using Power Apps",
            "group_number": 5,
            "objective_number": 3,
            "evidence_spans": [
              {
                "heading": "Choose an app type",
                "start_line": 202,
                "end_line": 217,
                "span_lf_sha256": "2349fc281a52e39cfaaf99f1ea6f184ab33b7be0ae569f0b9729211243aba70f"
              },
              {
                "heading": "Current app-building boundaries",
                "start_line": 227,
                "end_line": 229,
                "span_lf_sha256": "0f2ff2a89f7b437c87eb20ba4f86e94bf1d93b4a59a0df59cb5d7a20af459e40"
              }
            ],
            "initial_flag_disposition": "not-flagged-initially",
            "reason": "For “Describe creating AI-powered apps by using the vibe experience”, the selected current teaching explains canvas/model-driven/Pages/code/plan/vibe artifact selection and review boundaries; current plan/vibe/code experience, source-control, licensing and preview boundaries. Its purpose, operation/design boundary and checks support this objective; this is editorial teaching coverage, not observed product execution.",
            "initial_depth_result": "substantive",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "choose",
              "current"
            ]
          },
          {
            "wording": "Describe use cases for cloud and desktop flows",
            "objective_wording_sha256": "b79f8663c1d19ae68e92d43a22eb5904df487a13585b1876c6aec47d26661534",
            "group": "Describe Power Automate use cases and capabilities",
            "group_number": 6,
            "objective_number": 1,
            "evidence_spans": [
              {
                "heading": "Automation types",
                "start_line": 261,
                "end_line": 271,
                "span_lf_sha256": "c4996c57c0a4832f87fac967690e67ffd2f64f9d631db24dc961255db3daa0f1"
              },
              {
                "heading": "Approvals and common integrations",
                "start_line": 275,
                "end_line": 279,
                "span_lf_sha256": "9a6b62db901a9591deeea25783bda4633a308b8f0fb6346a41787af9fa773a23"
              }
            ],
            "initial_flag_disposition": "not-flagged-initially",
            "reason": "For “Describe use cases for cloud and desktop flows”, the selected current teaching explains cloud/desktop/process trigger/action and identity/run chain with AI draft review; Teams/Outlook/SharePoint/Forms/Dataverse approvals and persisted long-running state/timeout handling. Its purpose, operation/design boundary and checks support this objective; this is editorial teaching coverage, not observed product execution.",
            "initial_depth_result": "substantive",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "auto",
              "approve"
            ]
          },
          {
            "wording": "Describe Power Automate use cases for approvals, Microsoft Teams, Outlook, SharePoint, Forms, and document automation",
            "objective_wording_sha256": "0ecb110f3ed055da4597a0b72f5ffaf04489f1d7ddc13079bb13cc3a337d7410",
            "group": "Describe Power Automate use cases and capabilities",
            "group_number": 6,
            "objective_number": 2,
            "evidence_spans": [
              {
                "heading": "Approvals and common integrations",
                "start_line": 275,
                "end_line": 279,
                "span_lf_sha256": "9a6b62db901a9591deeea25783bda4633a308b8f0fb6346a41787af9fa773a23"
              },
              {
                "heading": "Worked automation choices: a document and a desktop draft",
                "start_line": 283,
                "end_line": 285,
                "span_lf_sha256": "9b01a2bc81503497a952fbe7501ed0e9408d6508277e3d3b601e85a95c7c8d03"
              }
            ],
            "initial_flag_disposition": "repaired-by-actual-packet",
            "reason": "For “Describe Power Automate use cases for approvals, Microsoft Teams, Outlook, SharePoint, Forms, and document automation”, the current selected text teaches Teams/Outlook/SharePoint/Forms/Dataverse approvals and persisted long-running state/timeout handling; AIBuilder Process documents file/value/confidence checks and generated desktop steps/recorder-placeholder review. For “Describe Power Automate use cases for approvals, Microsoft Teams, Outlook, SharePoint, Forms, and document automation”: Process documents File Content/value/confidence and desktop generated-step/recorder-placeholder review now explain the named automation routes with low-confidence/incomplete-action failures.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [
              "pl900-document-desktop"
            ],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "approve",
              "automodel"
            ]
          },
          {
            "wording": "Describe connector triggers and actions for cloud flows",
            "objective_wording_sha256": "c1969d9084644b8563920168cc212e2b2c915d09fb2c16c8764e5a37d86b699f",
            "group": "Describe how to build basic flows by using Power Automate",
            "group_number": 7,
            "objective_number": 1,
            "evidence_spans": [
              {
                "heading": "Automation types",
                "start_line": 261,
                "end_line": 271,
                "span_lf_sha256": "c4996c57c0a4832f87fac967690e67ffd2f64f9d631db24dc961255db3daa0f1"
              }
            ],
            "initial_flag_disposition": "not-flagged-initially",
            "reason": "For “Describe connector triggers and actions for cloud flows”, the selected current teaching explains cloud/desktop/process trigger/action and identity/run chain with AI draft review. Its purpose, operation/design boundary and checks support this objective; this is editorial teaching coverage, not observed product execution.",
            "initial_depth_result": "substantive",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "auto"
            ]
          },
          {
            "wording": "Describe how to use AI to create and modify cloud flows",
            "objective_wording_sha256": "c3503c2c61231dd0b25a03126e561687f9cb8628e0de5289d1bb62130b1b64d5",
            "group": "Describe how to build basic flows by using Power Automate",
            "group_number": 7,
            "objective_number": 2,
            "evidence_spans": [
              {
                "heading": "Automation types",
                "start_line": 261,
                "end_line": 271,
                "span_lf_sha256": "c4996c57c0a4832f87fac967690e67ffd2f64f9d631db24dc961255db3daa0f1"
              }
            ],
            "initial_flag_disposition": "not-flagged-initially",
            "reason": "For “Describe how to use AI to create and modify cloud flows”, the selected current teaching explains cloud/desktop/process trigger/action and identity/run chain with AI draft review. Its purpose, operation/design boundary and checks support this objective; this is editorial teaching coverage, not observed product execution.",
            "initial_depth_result": "substantive",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "auto"
            ]
          },
          {
            "wording": "Describe how to use AI to create and modify desktop flows",
            "objective_wording_sha256": "f4504c735ae34981886bf2edc8699338d0723cab2a36f34b33485c9757e3bf4e",
            "group": "Describe how to build basic flows by using Power Automate",
            "group_number": 7,
            "objective_number": 3,
            "evidence_spans": [
              {
                "heading": "Worked automation choices: a document and a desktop draft",
                "start_line": 283,
                "end_line": 285,
                "span_lf_sha256": "9b01a2bc81503497a952fbe7501ed0e9408d6508277e3d3b601e85a95c7c8d03"
              },
              {
                "heading": "Reliability and desktop automation",
                "start_line": 289,
                "end_line": 308,
                "span_lf_sha256": "9895bf9c1e901c65c44f2d09498c51131401dab0ce437f542576934445220a50"
              }
            ],
            "initial_flag_disposition": "repaired-by-actual-packet",
            "reason": "For “Describe how to use AI to create and modify desktop flows”, the current selected text teaches AIBuilder Process documents file/value/confidence checks and generated desktop steps/recorder-placeholder review; idempotent retry/run-after/scopes and desktop machine/session/selector/credential/error recovery. For “Describe how to use AI to create and modify desktop flows”: Process documents File Content/value/confidence and desktop generated-step/recorder-placeholder review now explain the named automation routes with low-confidence/incomplete-action failures.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [
              "pl900-document-desktop"
            ],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "automodel",
              "reliability"
            ]
          },
          {
            "wording": "Describe use cases for agents",
            "objective_wording_sha256": "c0332ddb52190c4396675339bad937990684102f1297c4bbf01e0eccd61dabf8",
            "group": "Describe how to build agents in Copilot Studio",
            "group_number": 8,
            "objective_number": 1,
            "evidence_spans": [
              {
                "heading": "6. Copilot Studio agents",
                "start_line": 312,
                "end_line": 371,
                "span_lf_sha256": "4739c914f9b19bbb923b58fe3130f35163d8569b504a398ce42fe26cf6ff8795"
              }
            ],
            "initial_flag_disposition": "not-flagged-initially",
            "reason": "For “Describe use cases for agents”, the selected current teaching explains complete agent component and turn→knowledge/tool/channel/evaluation control chain. Its purpose, operation/design boundary and checks support this objective; this is editorial teaching coverage, not observed product execution.",
            "initial_depth_result": "substantive",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "agent"
            ]
          },
          {
            "wording": "Describe how to build agent conversation paths by using topics",
            "objective_wording_sha256": "e8b5872ea96570964ada56909b3fd84a76ff0f3d4b14bfb727366e7ccbc4e04c",
            "group": "Describe how to build agents in Copilot Studio",
            "group_number": 8,
            "objective_number": 2,
            "evidence_spans": [
              {
                "heading": "Topics, knowledge, and orchestration",
                "start_line": 339,
                "end_line": 343,
                "span_lf_sha256": "875ad24a9574df8745d4dfce7cd8796c900b722daaec5bed4bf0a2d8f96cec0b"
              },
              {
                "heading": "Follow one agent turn",
                "start_line": 327,
                "end_line": 335,
                "span_lf_sha256": "b02e3d7456b97f59a672ba768610790306a7bfc3ae28ee793d6e668e9e360e2f"
              }
            ],
            "initial_flag_disposition": "repaired-by-actual-packet",
            "reason": "For “Describe how to build agent conversation paths by using topics”, the current selected text teaches topic Question/Condition/branch construction, approved knowledge and uploaded-file audience permissions; user/event identity→orchestration→source permission→tool authorization→response/escalation→evidence. For “Describe how to build agent conversation paths by using topics”: The equipment Question→Condition branches, stored choice and allowed/unsupported/unauthorized test-chat paths now describe topic authoring substantively.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [
              "pl900-topic"
            ],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "topics",
              "turn"
            ]
          },
          {
            "wording": "Describe how to use knowledge sources in agents",
            "objective_wording_sha256": "823a5c6460dbd6c5246eff58c0dad6ea666bebc54df09aff7128d80d2870fb6d",
            "group": "Describe how to build agents in Copilot Studio",
            "group_number": 8,
            "objective_number": 3,
            "evidence_spans": [
              {
                "heading": "Topics, knowledge, and orchestration",
                "start_line": 339,
                "end_line": 343,
                "span_lf_sha256": "875ad24a9574df8745d4dfce7cd8796c900b722daaec5bed4bf0a2d8f96cec0b"
              },
              {
                "heading": "Follow one agent turn",
                "start_line": 327,
                "end_line": 335,
                "span_lf_sha256": "b02e3d7456b97f59a672ba768610790306a7bfc3ae28ee793d6e668e9e360e2f"
              }
            ],
            "initial_flag_disposition": "not-flagged-initially",
            "reason": "For “Describe how to use knowledge sources in agents”, the selected current teaching explains topic Question/Condition/branch construction, approved knowledge and uploaded-file audience permissions; user/event identity→orchestration→source permission→tool authorization→response/escalation→evidence. Its purpose, operation/design boundary and checks support this objective; this is editorial teaching coverage, not observed product execution.",
            "initial_depth_result": "substantive",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "topics",
              "turn"
            ]
          },
          {
            "wording": "Describe how tools, including MCP servers and agent flows, are used in agents",
            "objective_wording_sha256": "821f0c0b96ca29be94c728c8ee19e8e9eae4b94094b35c10c408a13bd7ef608f",
            "group": "Describe how to build agents in Copilot Studio",
            "group_number": 8,
            "objective_number": 4,
            "evidence_spans": [
              {
                "heading": "Tools and MCP",
                "start_line": 347,
                "end_line": 351,
                "span_lf_sha256": "9004e9562356fc8fadfeae6df03718629a71ec7b3e4961146d0785a34713e86b"
              },
              {
                "heading": "Follow one agent turn",
                "start_line": 327,
                "end_line": 335,
                "span_lf_sha256": "b02e3d7456b97f59a672ba768610790306a7bfc3ae28ee793d6e668e9e360e2f"
              }
            ],
            "initial_flag_disposition": "not-flagged-initially",
            "reason": "For “Describe how tools, including MCP servers and agent flows, are used in agents”, the selected current teaching explains tool schema versus service authorization, MCP/flow identity and side-effect safeguards; user/event identity→orchestration→source permission→tool authorization→response/escalation→evidence. Its purpose, operation/design boundary and checks support this objective; this is editorial teaching coverage, not observed product execution.",
            "initial_depth_result": "substantive",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "tools",
              "turn"
            ]
          },
          {
            "wording": "Describe how to publish agents by using channels",
            "objective_wording_sha256": "be5a48727d4f4785f1ef5c34b849d7b0d276a7074656c6f099ef45c46f6a4c56",
            "group": "Describe how to build agents in Copilot Studio",
            "group_number": 8,
            "objective_number": 5,
            "evidence_spans": [
              {
                "heading": "Publish, monitor, and evaluate",
                "start_line": 355,
                "end_line": 361,
                "span_lf_sha256": "093c67f9daaec1ef8b0d55cba7367986f33568dae31906c88177148e422ca395"
              }
            ],
            "initial_flag_disposition": "not-flagged-initially",
            "reason": "For “Describe how to publish agents by using channels”, the selected current teaching explains channel authentication/publish tests, monitoring/adoption and repeatable evaluation with real-identity limits. Its purpose, operation/design boundary and checks support this objective; this is editorial teaching coverage, not observed product execution.",
            "initial_depth_result": "substantive",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "publish"
            ]
          },
          {
            "wording": "Describe use cases and capabilities for Microsoft Agent 365",
            "objective_wording_sha256": "38a3da4f1b186d778e2716e350192d7db2ea7d0ee438abb87c60e508f21d6b40",
            "group": "Describe how to manage agents in Copilot Studio",
            "group_number": 9,
            "objective_number": 1,
            "evidence_spans": [
              {
                "heading": "Microsoft Agent 365 boundary",
                "start_line": 365,
                "end_line": 371,
                "span_lf_sha256": "2ca57584770d7b3e1e7c1aacb3398982845ca28cdbdeac62b4df34e57312272f"
              }
            ],
            "initial_flag_disposition": "not-flagged-initially",
            "reason": "For “Describe use cases and capabilities for Microsoft Agent 365”, the selected current teaching explains estate inventory/access/lifecycle/security observability versus individual agent authoring. Its purpose, operation/design boundary and checks support this objective; this is editorial teaching coverage, not observed product execution.",
            "initial_depth_result": "substantive",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "agent365"
            ]
          },
          {
            "wording": "Describe how to monitor Copilot Studio agent usage and adoption",
            "objective_wording_sha256": "80af275252a5c42bd16d3aa8feae545f9ea49ea6898927c63472fcbf63ea27b4",
            "group": "Describe how to manage agents in Copilot Studio",
            "group_number": 9,
            "objective_number": 2,
            "evidence_spans": [
              {
                "heading": "Publish, monitor, and evaluate",
                "start_line": 355,
                "end_line": 361,
                "span_lf_sha256": "093c67f9daaec1ef8b0d55cba7367986f33568dae31906c88177148e422ca395"
              },
              {
                "heading": "6. Read evaluation and adoption denominators",
                "start_line": 433,
                "end_line": 433,
                "span_lf_sha256": "be1593eabcb7728b7a27e38e333ffeb6a341df06ab698a8e118b592665f1dc4f"
              }
            ],
            "initial_flag_disposition": "not-flagged-initially",
            "reason": "For “Describe how to monitor Copilot Studio agent usage and adoption”, the selected current teaching explains channel authentication/publish tests, monitoring/adoption and repeatable evaluation with real-identity limits; cohort quality, adoption and session-resolution denominators with access failures retained. Its purpose, operation/design boundary and checks support this objective; this is editorial teaching coverage, not observed product execution.",
            "initial_depth_result": "substantive",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "publish",
              "denominators"
            ]
          },
          {
            "wording": "Describe agent evaluations",
            "objective_wording_sha256": "a7b08713473e9689e78f0743b1b0ddd0ee4a98785068ca9ae5ad9559b52c3b9d",
            "group": "Describe how to manage agents in Copilot Studio",
            "group_number": 9,
            "objective_number": 3,
            "evidence_spans": [
              {
                "heading": "Publish, monitor, and evaluate",
                "start_line": 355,
                "end_line": 361,
                "span_lf_sha256": "093c67f9daaec1ef8b0d55cba7367986f33568dae31906c88177148e422ca395"
              },
              {
                "heading": "6. Read evaluation and adoption denominators",
                "start_line": 433,
                "end_line": 433,
                "span_lf_sha256": "be1593eabcb7728b7a27e38e333ffeb6a341df06ab698a8e118b592665f1dc4f"
              }
            ],
            "initial_flag_disposition": "not-flagged-initially",
            "reason": "For “Describe agent evaluations”, the selected current teaching explains channel authentication/publish tests, monitoring/adoption and repeatable evaluation with real-identity limits; cohort quality, adoption and session-resolution denominators with access failures retained. Its purpose, operation/design boundary and checks support this objective; this is editorial teaching coverage, not observed product execution.",
            "initial_depth_result": "substantive",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "publish",
              "denominators"
            ]
          }
        ],
        "disposition_counts": {
          "not-flagged-initially": 32,
          "repaired-by-actual-packet": 5
        }
      },
      {
        "exam_code": "SC-500",
        "guide_path": "guides/SC-500-microsoft-cloud-ai-security-engineer.md",
        "guide_lf_sha256": "f9f604b2bf2b694b08f9da07b87fd918e26fc6713fa1b35deadc60c0122895a2",
        "objective_raw_sha256": "9f832db799678f547b3272c902e5529c77077e2cd4272326cf8ad94ef50cf7c6",
        "objective_count": 87,
        "current_mapping": [
          {
            "wording": "Implement and configure Privileged Identity Management (PIM)",
            "objective_wording_sha256": "7d2edc3f919e3bacc2214bc76e67c5602e5926b196732bc1b54514181347c12b",
            "group": "Secure access to resources by using Microsoft Entra ID",
            "group_number": 1,
            "objective_number": 1,
            "evidence_spans": [
              {
                "heading": "Treat identity as the control plane",
                "start_line": 78,
                "end_line": 95,
                "span_lf_sha256": "ad52f136aff8bbdbc0df0564c494e69871381681153d413ec5b5f671f9d34fed"
              },
              {
                "heading": "Lab 1: Privileged access and overprivilege review",
                "start_line": 453,
                "end_line": 453,
                "span_lf_sha256": "d3d22074b9ef261c33e72ae2e9d28098075d1a50efa26d882f120fe8461974a3"
              }
            ],
            "initial_flag_disposition": "not-flagged-initially",
            "reason": "For “Implement and configure Privileged Identity Management (PIM)”, the selected current teaching explains PIM/CA/method and control-plane subject boundaries, activation/report-only/enforcement/emergency recovery; privileged-role/group/PIM/custom-role inventory, narrowed grant, denied call and rollback evidence. Its purpose, operation/design boundary and checks support this objective; this is editorial teaching coverage, not observed product execution.",
            "initial_depth_result": "substantive",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "human",
              "lab1"
            ]
          },
          {
            "wording": "Implement conditional access policies",
            "objective_wording_sha256": "6d51b470e4f61cb578a6f324724030e95c81cc7db6c343dcf093c178c33fe6a9",
            "group": "Secure access to resources by using Microsoft Entra ID",
            "group_number": 1,
            "objective_number": 2,
            "evidence_spans": [
              {
                "heading": "Treat identity as the control plane",
                "start_line": 78,
                "end_line": 95,
                "span_lf_sha256": "ad52f136aff8bbdbc0df0564c494e69871381681153d413ec5b5f671f9d34fed"
              },
              {
                "heading": "Lab 1: Privileged access and overprivilege review",
                "start_line": 453,
                "end_line": 453,
                "span_lf_sha256": "d3d22074b9ef261c33e72ae2e9d28098075d1a50efa26d882f120fe8461974a3"
              }
            ],
            "initial_flag_disposition": "not-flagged-initially",
            "reason": "For “Implement conditional access policies”, the selected current teaching explains PIM/CA/method and control-plane subject boundaries, activation/report-only/enforcement/emergency recovery; privileged-role/group/PIM/custom-role inventory, narrowed grant, denied call and rollback evidence. Its purpose, operation/design boundary and checks support this objective; this is editorial teaching coverage, not observed product execution.",
            "initial_depth_result": "substantive",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "human",
              "lab1"
            ]
          },
          {
            "wording": "Implement and configure authentication methods, including multifactor authentication (MFA) and passwordless",
            "objective_wording_sha256": "802cce7ad70c1308d14f782e97a467f2acac909a13ae547441165381b4c21ff0",
            "group": "Secure access to resources by using Microsoft Entra ID",
            "group_number": 1,
            "objective_number": 3,
            "evidence_spans": [
              {
                "heading": "Treat identity as the control plane",
                "start_line": 78,
                "end_line": 95,
                "span_lf_sha256": "ad52f136aff8bbdbc0df0564c494e69871381681153d413ec5b5f671f9d34fed"
              },
              {
                "heading": "Lab 1: Privileged access and overprivilege review",
                "start_line": 453,
                "end_line": 453,
                "span_lf_sha256": "d3d22074b9ef261c33e72ae2e9d28098075d1a50efa26d882f120fe8461974a3"
              }
            ],
            "initial_flag_disposition": "existing-adequate-for-verb",
            "reason": "For “Implement and configure authentication methods, including multifactor authentication (MFA) and passwordless”, the current selected text teaches PIM/CA/method and control-plane subject boundaries, activation/report-only/enforcement/emergency recovery; privileged-role/group/PIM/custom-role inventory, narrowed grant, denied call and rollback evidence. Authentication-method choice is tied to registration, recovery, device dependencies and phishing resistance, then staged report-only/enforcement/emergency testing in Lab1. Configuration is taught as a controlled policy rollout, not a method-name list.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "human",
              "lab1"
            ]
          },
          {
            "wording": "Implement and configure identity for applications, including enterprise applications and app registrations",
            "objective_wording_sha256": "fd77ce95522e57266763cd1d11ee810a0f95775f2a3cc70ec1445642c960cb25",
            "group": "Secure access to resources by using Microsoft Entra ID",
            "group_number": 1,
            "objective_number": 4,
            "evidence_spans": [
              {
                "heading": "Secure application and workload identities",
                "start_line": 99,
                "end_line": 113,
                "span_lf_sha256": "127ae5e6b5198339bfa0944db313f3b3571a439a9b6f6270b5962488a3707303"
              },
              {
                "heading": "Lab 2: Application identity and Key Vault boundary",
                "start_line": 457,
                "end_line": 457,
                "span_lf_sha256": "7eab2a4214b165f4b1217eda9bdddf78570742c084ffb6b14288eab79d36ebb9"
              }
            ],
            "initial_flag_disposition": "not-flagged-initially",
            "reason": "For “Implement and configure identity for applications, including enterprise applications and app registrations”, the selected current teaching explains app registration/service principal, delegated/application permissions, consent and managed/federated identity lifecycle; managed-identity vault setup, DNS/allowed-denied calls and secret rotation/recovery. Its purpose, operation/design boundary and checks support this objective; this is editorial teaching coverage, not observed product execution.",
            "initial_depth_result": "substantive",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "app",
              "lab2"
            ]
          },
          {
            "wording": "Manage OAuth permission grants and consent settings",
            "objective_wording_sha256": "e5b5067c390f1f3edf46370586ea59b44234679911685651bad45649cfb110bd",
            "group": "Secure access to resources by using Microsoft Entra ID",
            "group_number": 1,
            "objective_number": 5,
            "evidence_spans": [
              {
                "heading": "Secure application and workload identities",
                "start_line": 99,
                "end_line": 113,
                "span_lf_sha256": "127ae5e6b5198339bfa0944db313f3b3571a439a9b6f6270b5962488a3707303"
              },
              {
                "heading": "Lab 2: Application identity and Key Vault boundary",
                "start_line": 457,
                "end_line": 457,
                "span_lf_sha256": "7eab2a4214b165f4b1217eda9bdddf78570742c084ffb6b14288eab79d36ebb9"
              }
            ],
            "initial_flag_disposition": "not-flagged-initially",
            "reason": "For “Manage OAuth permission grants and consent settings”, the selected current teaching explains app registration/service principal, delegated/application permissions, consent and managed/federated identity lifecycle; managed-identity vault setup, DNS/allowed-denied calls and secret rotation/recovery. Its purpose, operation/design boundary and checks support this objective; this is editorial teaching coverage, not observed product execution.",
            "initial_depth_result": "substantive",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "app",
              "lab2"
            ]
          },
          {
            "wording": "Implement and configure managed identities for Azure resources",
            "objective_wording_sha256": "e4ad46018afd42169700bfff40bf68385a1333fee1237bcafa46c6c12092ad04",
            "group": "Secure access to resources by using Microsoft Entra ID",
            "group_number": 1,
            "objective_number": 6,
            "evidence_spans": [
              {
                "heading": "Secure application and workload identities",
                "start_line": 99,
                "end_line": 113,
                "span_lf_sha256": "127ae5e6b5198339bfa0944db313f3b3571a439a9b6f6270b5962488a3707303"
              },
              {
                "heading": "Lab 2: Application identity and Key Vault boundary",
                "start_line": 457,
                "end_line": 457,
                "span_lf_sha256": "7eab2a4214b165f4b1217eda9bdddf78570742c084ffb6b14288eab79d36ebb9"
              }
            ],
            "initial_flag_disposition": "not-flagged-initially",
            "reason": "For “Implement and configure managed identities for Azure resources”, the selected current teaching explains app registration/service principal, delegated/application permissions, consent and managed/federated identity lifecycle; managed-identity vault setup, DNS/allowed-denied calls and secret rotation/recovery. Its purpose, operation/design boundary and checks support this objective; this is editorial teaching coverage, not observed product execution.",
            "initial_depth_result": "substantive",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "app",
              "lab2"
            ]
          },
          {
            "wording": "Deploy Key Vault",
            "objective_wording_sha256": "c31a6a9f8f1e354c0d4de8b40e93bf19c017fb15108c693096c0c3686629ce43",
            "group": "Secure secrets and keys by using Azure Key Vault",
            "group_number": 2,
            "objective_number": 1,
            "evidence_spans": [
              {
                "heading": "Secure Azure Key Vault as a boundary, not just a container",
                "start_line": 117,
                "end_line": 131,
                "span_lf_sha256": "bf986f528b545589e18d71accb9aabecb3b6915b7dae4a60a2554d64f8f7781e"
              },
              {
                "heading": "Lab 2: Application identity and Key Vault boundary",
                "start_line": 457,
                "end_line": 457,
                "span_lf_sha256": "7eab2a4214b165f4b1217eda9bdddf78570742c084ffb6b14288eab79d36ebb9"
              }
            ],
            "initial_flag_disposition": "not-flagged-initially",
            "reason": "For “Deploy Key Vault”, the selected current teaching explains vault RBAC/network/DNS/object recovery/rotation and exposed-secret versus threat-alert control paths; managed-identity vault setup, DNS/allowed-denied calls and secret rotation/recovery. Its purpose, operation/design boundary and checks support this objective; this is editorial teaching coverage, not observed product execution.",
            "initial_depth_result": "substantive",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "vault",
              "lab2"
            ]
          },
          {
            "wording": "Configure Key Vault settings",
            "objective_wording_sha256": "f5ed27bbeb3f29cc5e007f13c281cd9860dbd04fe610afff59426a61386cac68",
            "group": "Secure secrets and keys by using Azure Key Vault",
            "group_number": 2,
            "objective_number": 2,
            "evidence_spans": [
              {
                "heading": "Secure Azure Key Vault as a boundary, not just a container",
                "start_line": 117,
                "end_line": 131,
                "span_lf_sha256": "bf986f528b545589e18d71accb9aabecb3b6915b7dae4a60a2554d64f8f7781e"
              },
              {
                "heading": "Lab 2: Application identity and Key Vault boundary",
                "start_line": 457,
                "end_line": 457,
                "span_lf_sha256": "7eab2a4214b165f4b1217eda9bdddf78570742c084ffb6b14288eab79d36ebb9"
              }
            ],
            "initial_flag_disposition": "not-flagged-initially",
            "reason": "For “Configure Key Vault settings”, the selected current teaching explains vault RBAC/network/DNS/object recovery/rotation and exposed-secret versus threat-alert control paths; managed-identity vault setup, DNS/allowed-denied calls and secret rotation/recovery. Its purpose, operation/design boundary and checks support this objective; this is editorial teaching coverage, not observed product execution.",
            "initial_depth_result": "substantive",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "vault",
              "lab2"
            ]
          },
          {
            "wording": "Configure access to Key Vault",
            "objective_wording_sha256": "a364c8bb651fbf5e96282fc351564824bf4855238f87bb80f93c9b0dc37127cf",
            "group": "Secure secrets and keys by using Azure Key Vault",
            "group_number": 2,
            "objective_number": 3,
            "evidence_spans": [
              {
                "heading": "Secure Azure Key Vault as a boundary, not just a container",
                "start_line": 117,
                "end_line": 131,
                "span_lf_sha256": "bf986f528b545589e18d71accb9aabecb3b6915b7dae4a60a2554d64f8f7781e"
              },
              {
                "heading": "Lab 2: Application identity and Key Vault boundary",
                "start_line": 457,
                "end_line": 457,
                "span_lf_sha256": "7eab2a4214b165f4b1217eda9bdddf78570742c084ffb6b14288eab79d36ebb9"
              }
            ],
            "initial_flag_disposition": "not-flagged-initially",
            "reason": "For “Configure access to Key Vault”, the selected current teaching explains vault RBAC/network/DNS/object recovery/rotation and exposed-secret versus threat-alert control paths; managed-identity vault setup, DNS/allowed-denied calls and secret rotation/recovery. Its purpose, operation/design boundary and checks support this objective; this is editorial teaching coverage, not observed product execution.",
            "initial_depth_result": "substantive",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "vault",
              "lab2"
            ]
          },
          {
            "wording": "Configure firewall settings on Key Vault",
            "objective_wording_sha256": "1915dc325aa292178598d4ca8a0ae483f37152bc3d5ce2a533d0495dd867c94f",
            "group": "Secure secrets and keys by using Azure Key Vault",
            "group_number": 2,
            "objective_number": 4,
            "evidence_spans": [
              {
                "heading": "Secure Azure Key Vault as a boundary, not just a container",
                "start_line": 117,
                "end_line": 131,
                "span_lf_sha256": "bf986f528b545589e18d71accb9aabecb3b6915b7dae4a60a2554d64f8f7781e"
              },
              {
                "heading": "Lab 2: Application identity and Key Vault boundary",
                "start_line": 457,
                "end_line": 457,
                "span_lf_sha256": "7eab2a4214b165f4b1217eda9bdddf78570742c084ffb6b14288eab79d36ebb9"
              }
            ],
            "initial_flag_disposition": "not-flagged-initially",
            "reason": "For “Configure firewall settings on Key Vault”, the selected current teaching explains vault RBAC/network/DNS/object recovery/rotation and exposed-secret versus threat-alert control paths; managed-identity vault setup, DNS/allowed-denied calls and secret rotation/recovery. Its purpose, operation/design boundary and checks support this objective; this is editorial teaching coverage, not observed product execution.",
            "initial_depth_result": "substantive",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "vault",
              "lab2"
            ]
          },
          {
            "wording": "Manage keys, secrets, and certificates",
            "objective_wording_sha256": "356be3b0199d716c497ae7343d8c7d64a204281a4e69549c036bbca6481666f8",
            "group": "Secure secrets and keys by using Azure Key Vault",
            "group_number": 2,
            "objective_number": 5,
            "evidence_spans": [
              {
                "heading": "Secure Azure Key Vault as a boundary, not just a container",
                "start_line": 117,
                "end_line": 131,
                "span_lf_sha256": "bf986f528b545589e18d71accb9aabecb3b6915b7dae4a60a2554d64f8f7781e"
              },
              {
                "heading": "Lab 2: Application identity and Key Vault boundary",
                "start_line": 457,
                "end_line": 457,
                "span_lf_sha256": "7eab2a4214b165f4b1217eda9bdddf78570742c084ffb6b14288eab79d36ebb9"
              }
            ],
            "initial_flag_disposition": "not-flagged-initially",
            "reason": "For “Manage keys, secrets, and certificates”, the selected current teaching explains vault RBAC/network/DNS/object recovery/rotation and exposed-secret versus threat-alert control paths; managed-identity vault setup, DNS/allowed-denied calls and secret rotation/recovery. Its purpose, operation/design boundary and checks support this objective; this is editorial teaching coverage, not observed product execution.",
            "initial_depth_result": "substantive",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "vault",
              "lab2"
            ]
          },
          {
            "wording": "Scan for secrets by using Defender Cloud Security Posture Management (Defender CSPM)",
            "objective_wording_sha256": "b74bf28c9556dae13a395df916d8b6e5c8fb8ca357b8f82be1c1b9b8c55576df",
            "group": "Secure secrets and keys by using Azure Key Vault",
            "group_number": 2,
            "objective_number": 6,
            "evidence_spans": [
              {
                "heading": "Secure Azure Key Vault as a boundary, not just a container",
                "start_line": 117,
                "end_line": 131,
                "span_lf_sha256": "bf986f528b545589e18d71accb9aabecb3b6915b7dae4a60a2554d64f8f7781e"
              },
              {
                "heading": "Lab 2: Application identity and Key Vault boundary",
                "start_line": 457,
                "end_line": 457,
                "span_lf_sha256": "7eab2a4214b165f4b1217eda9bdddf78570742c084ffb6b14288eab79d36ebb9"
              }
            ],
            "initial_flag_disposition": "existing-adequate-for-verb",
            "reason": "For “Scan for secrets by using Defender Cloud Security Posture Management (Defender CSPM)”, the current selected text teaches vault RBAC/network/DNS/object recovery/rotation and exposed-secret versus threat-alert control paths; managed-identity vault setup, DNS/allowed-denied calls and secret rotation/recovery. CSPM secret discovery is explicitly separated from runtime alerts and followed by expose→revoke/rotate→remove source→validate consumers→hunt. Lab2/10 supply access and incident evidence; plan coverage must be verified.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "vault",
              "lab2"
            ]
          },
          {
            "wording": "Implement Defender for Key Vault",
            "objective_wording_sha256": "90deb72be514f77e4c771fae9b870a27b728fc473b2719b54d58775cbe4d3e37",
            "group": "Secure secrets and keys by using Azure Key Vault",
            "group_number": 2,
            "objective_number": 7,
            "evidence_spans": [
              {
                "heading": "Secure Azure Key Vault as a boundary, not just a container",
                "start_line": 117,
                "end_line": 131,
                "span_lf_sha256": "bf986f528b545589e18d71accb9aabecb3b6915b7dae4a60a2554d64f8f7781e"
              },
              {
                "heading": "Lab 2: Application identity and Key Vault boundary",
                "start_line": 457,
                "end_line": 457,
                "span_lf_sha256": "7eab2a4214b165f4b1217eda9bdddf78570742c084ffb6b14288eab79d36ebb9"
              }
            ],
            "initial_flag_disposition": "existing-adequate-for-verb",
            "reason": "For “Implement Defender for Key Vault”, the current selected text teaches vault RBAC/network/DNS/object recovery/rotation and exposed-secret versus threat-alert control paths; managed-identity vault setup, DNS/allowed-denied calls and secret rotation/recovery. Key Vault threat protection is positioned after identity/network/lifecycle/logging configuration, with suspicious-access investigation and permitted/denied object calls. Enabling a plan alone is explicitly insufficient.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "vault",
              "lab2"
            ]
          },
          {
            "wording": "Implement and configure security controls by using Azure Policy, including built-in and custom policy definitions",
            "objective_wording_sha256": "65ffa00d474940005e21f678d610f61c9291e77d70fc2180f1f27172c80f72a6",
            "group": "Implement governance to enforce security and regulatory compliance",
            "group_number": 3,
            "objective_number": 1,
            "evidence_spans": [
              {
                "heading": "Enforce governance without confusing policy, permission, and protection",
                "start_line": 135,
                "end_line": 147,
                "span_lf_sha256": "ba902781d08bf25f68173f92452636b54f945bdbd195c6ccd8d9a67ca7e5d6e2"
              },
              {
                "heading": "Lab 3: Policy, Defender, backup, and IaC",
                "start_line": 461,
                "end_line": 461,
                "span_lf_sha256": "8324f19c0eb487bc54be9d4a73106eb2504c958a93075c764c7581e3f566fc7e"
              }
            ],
            "initial_flag_disposition": "not-flagged-initially",
            "reason": "For “Implement and configure security controls by using Azure Policy, including built-in and custom policy definitions”, the selected current teaching explains Policy effects/remediation, Defender standards/recommendations, locks/role scopes/overprivilege, Backup and IaC evidence; Policy/IaC/federated deployment/remediation/exemption and protected Backup/restore evidence. Its purpose, operation/design boundary and checks support this objective; this is editorial teaching coverage, not observed product execution.",
            "initial_depth_result": "substantive",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "governance",
              "lab3"
            ]
          },
          {
            "wording": "Evaluate regulatory compliance by using Microsoft Defender for Cloud",
            "objective_wording_sha256": "52e3c7791a06769ac83f4e1a540c1ab85c210afbf1d5d5d3565ffa2626582cdc",
            "group": "Implement governance to enforce security and regulatory compliance",
            "group_number": 3,
            "objective_number": 2,
            "evidence_spans": [
              {
                "heading": "Enforce governance without confusing policy, permission, and protection",
                "start_line": 135,
                "end_line": 147,
                "span_lf_sha256": "ba902781d08bf25f68173f92452636b54f945bdbd195c6ccd8d9a67ca7e5d6e2"
              },
              {
                "heading": "Lab 3: Policy, Defender, backup, and IaC",
                "start_line": 461,
                "end_line": 461,
                "span_lf_sha256": "8324f19c0eb487bc54be9d4a73106eb2504c958a93075c764c7581e3f566fc7e"
              }
            ],
            "initial_flag_disposition": "not-flagged-initially",
            "reason": "For “Evaluate regulatory compliance by using Microsoft Defender for Cloud”, the selected current teaching explains Policy effects/remediation, Defender standards/recommendations, locks/role scopes/overprivilege, Backup and IaC evidence; Policy/IaC/federated deployment/remediation/exemption and protected Backup/restore evidence. Its purpose, operation/design boundary and checks support this objective; this is editorial teaching coverage, not observed product execution.",
            "initial_depth_result": "substantive",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "governance",
              "lab3"
            ]
          },
          {
            "wording": "Implement and configure security controls in Defender for Cloud, including security standards and recommendations",
            "objective_wording_sha256": "f3411bf6746509f708804a64f136a878fb84f4285e095c9f20f9a155b9d5d5d3",
            "group": "Implement governance to enforce security and regulatory compliance",
            "group_number": 3,
            "objective_number": 3,
            "evidence_spans": [
              {
                "heading": "Enforce governance without confusing policy, permission, and protection",
                "start_line": 135,
                "end_line": 147,
                "span_lf_sha256": "ba902781d08bf25f68173f92452636b54f945bdbd195c6ccd8d9a67ca7e5d6e2"
              },
              {
                "heading": "Lab 3: Policy, Defender, backup, and IaC",
                "start_line": 461,
                "end_line": 461,
                "span_lf_sha256": "8324f19c0eb487bc54be9d4a73106eb2504c958a93075c764c7581e3f566fc7e"
              }
            ],
            "initial_flag_disposition": "not-flagged-initially",
            "reason": "For “Implement and configure security controls in Defender for Cloud, including security standards and recommendations”, the selected current teaching explains Policy effects/remediation, Defender standards/recommendations, locks/role scopes/overprivilege, Backup and IaC evidence; Policy/IaC/federated deployment/remediation/exemption and protected Backup/restore evidence. Its purpose, operation/design boundary and checks support this objective; this is editorial teaching coverage, not observed product execution.",
            "initial_depth_result": "substantive",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "governance",
              "lab3"
            ]
          },
          {
            "wording": "Implement resource locks",
            "objective_wording_sha256": "1a5f4039c1688fc391e81acfddeb838d4cc602357ad98b5c2653a6890171b408",
            "group": "Implement governance to enforce security and regulatory compliance",
            "group_number": 3,
            "objective_number": 4,
            "evidence_spans": [
              {
                "heading": "Enforce governance without confusing policy, permission, and protection",
                "start_line": 135,
                "end_line": 147,
                "span_lf_sha256": "ba902781d08bf25f68173f92452636b54f945bdbd195c6ccd8d9a67ca7e5d6e2"
              },
              {
                "heading": "Lab 3: Policy, Defender, backup, and IaC",
                "start_line": 461,
                "end_line": 461,
                "span_lf_sha256": "8324f19c0eb487bc54be9d4a73106eb2504c958a93075c764c7581e3f566fc7e"
              }
            ],
            "initial_flag_disposition": "not-flagged-initially",
            "reason": "For “Implement resource locks”, the selected current teaching explains Policy effects/remediation, Defender standards/recommendations, locks/role scopes/overprivilege, Backup and IaC evidence; Policy/IaC/federated deployment/remediation/exemption and protected Backup/restore evidence. Its purpose, operation/design boundary and checks support this objective; this is editorial teaching coverage, not observed product execution.",
            "initial_depth_result": "substantive",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "governance",
              "lab3"
            ]
          },
          {
            "wording": "Manage Azure built-in role assignments",
            "objective_wording_sha256": "54d1c46c05c150df3f0b3bd871dee4d3f3d9943ee7ee04debe6ba2b48512941c",
            "group": "Implement governance to enforce security and regulatory compliance",
            "group_number": 3,
            "objective_number": 5,
            "evidence_spans": [
              {
                "heading": "Enforce governance without confusing policy, permission, and protection",
                "start_line": 135,
                "end_line": 147,
                "span_lf_sha256": "ba902781d08bf25f68173f92452636b54f945bdbd195c6ccd8d9a67ca7e5d6e2"
              },
              {
                "heading": "Lab 1: Privileged access and overprivilege review",
                "start_line": 453,
                "end_line": 453,
                "span_lf_sha256": "d3d22074b9ef261c33e72ae2e9d28098075d1a50efa26d882f120fe8461974a3"
              }
            ],
            "initial_flag_disposition": "existing-adequate-for-verb",
            "reason": "For “Manage Azure built-in role assignments”, the current selected text teaches Policy effects/remediation, Defender standards/recommendations, locks/role scopes/overprivilege, Backup and IaC evidence; privileged-role/group/PIM/custom-role inventory, narrowed grant, denied call and rollback evidence. Built-in roles start at narrow scope, inspect effective inheritance and PIM/group/service grants, and remove incrementally with monitoring/rollback; Lab1 captures the before/after and denied call.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "governance",
              "lab1"
            ]
          },
          {
            "wording": "Manage custom roles, including Azure roles and Microsoft Entra roles",
            "objective_wording_sha256": "e35dec33fa4533918abf41fb4d93e50d23c45581d4745fd094163bbe5fc64640",
            "group": "Implement governance to enforce security and regulatory compliance",
            "group_number": 3,
            "objective_number": 6,
            "evidence_spans": [
              {
                "heading": "Enforce governance without confusing policy, permission, and protection",
                "start_line": 135,
                "end_line": 147,
                "span_lf_sha256": "ba902781d08bf25f68173f92452636b54f945bdbd195c6ccd8d9a67ca7e5d6e2"
              },
              {
                "heading": "Lab 1: Privileged access and overprivilege review",
                "start_line": 453,
                "end_line": 453,
                "span_lf_sha256": "d3d22074b9ef261c33e72ae2e9d28098075d1a50efa26d882f120fe8461974a3"
              }
            ],
            "initial_flag_disposition": "existing-adequate-for-verb",
            "reason": "For “Manage custom roles, including Azure roles and Microsoft Entra roles”, the current selected text teaches Policy effects/remediation, Defender standards/recommendations, locks/role scopes/overprivilege, Backup and IaC evidence; privileged-role/group/PIM/custom-role inventory, narrowed grant, denied call and rollback evidence. Azure actions/data-actions/assignable scopes are distinguished from supported Entra directory permissions and versioned IaC/review; Lab1 inventories custom roles and tests narrowing rather than treating role systems as interchangeable.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "governance",
              "lab1"
            ]
          },
          {
            "wording": "Evaluate and remediate overprivileged access assignments by using Azure role-based access control (RBAC)",
            "objective_wording_sha256": "ad6edbff468ea1dd0475db0c975fb41aefc91932527b04185c3ba6b6e85e210b",
            "group": "Implement governance to enforce security and regulatory compliance",
            "group_number": 3,
            "objective_number": 7,
            "evidence_spans": [
              {
                "heading": "Enforce governance without confusing policy, permission, and protection",
                "start_line": 135,
                "end_line": 147,
                "span_lf_sha256": "ba902781d08bf25f68173f92452636b54f945bdbd195c6ccd8d9a67ca7e5d6e2"
              },
              {
                "heading": "Lab 1: Privileged access and overprivilege review",
                "start_line": 453,
                "end_line": 453,
                "span_lf_sha256": "d3d22074b9ef261c33e72ae2e9d28098075d1a50efa26d882f120fe8461974a3"
              }
            ],
            "initial_flag_disposition": "not-flagged-initially",
            "reason": "For “Evaluate and remediate overprivileged access assignments by using Azure role-based access control (RBAC)”, the selected current teaching explains Policy effects/remediation, Defender standards/recommendations, locks/role scopes/overprivilege, Backup and IaC evidence; privileged-role/group/PIM/custom-role inventory, narrowed grant, denied call and rollback evidence. Its purpose, operation/design boundary and checks support this objective; this is editorial teaching coverage, not observed product execution.",
            "initial_depth_result": "substantive",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "governance",
              "lab1"
            ]
          },
          {
            "wording": "Configure security controls for backup protection by using Azure Backup security features",
            "objective_wording_sha256": "30c57b0da9d46371a0c6065acc3f56d9e4aa0f0f05fcd5111dc35d66f4fc9454",
            "group": "Implement governance to enforce security and regulatory compliance",
            "group_number": 3,
            "objective_number": 8,
            "evidence_spans": [
              {
                "heading": "Enforce governance without confusing policy, permission, and protection",
                "start_line": 135,
                "end_line": 147,
                "span_lf_sha256": "ba902781d08bf25f68173f92452636b54f945bdbd195c6ccd8d9a67ca7e5d6e2"
              },
              {
                "heading": "Lab 3: Policy, Defender, backup, and IaC",
                "start_line": 461,
                "end_line": 461,
                "span_lf_sha256": "8324f19c0eb487bc54be9d4a73106eb2504c958a93075c764c7581e3f566fc7e"
              }
            ],
            "initial_flag_disposition": "not-flagged-initially",
            "reason": "For “Configure security controls for backup protection by using Azure Backup security features”, the selected current teaching explains Policy effects/remediation, Defender standards/recommendations, locks/role scopes/overprivilege, Backup and IaC evidence; Policy/IaC/federated deployment/remediation/exemption and protected Backup/restore evidence. Its purpose, operation/design boundary and checks support this objective; this is editorial teaching coverage, not observed product execution.",
            "initial_depth_result": "substantive",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "governance",
              "lab3"
            ]
          },
          {
            "wording": "Implement and configure security controls by using infrastructure as code",
            "objective_wording_sha256": "69dad9203bce5ffa7fa86dcd170a06febd2c4d5d5191a3530adca4b494cbdf90",
            "group": "Implement governance to enforce security and regulatory compliance",
            "group_number": 3,
            "objective_number": 9,
            "evidence_spans": [
              {
                "heading": "Enforce governance without confusing policy, permission, and protection",
                "start_line": 135,
                "end_line": 147,
                "span_lf_sha256": "ba902781d08bf25f68173f92452636b54f945bdbd195c6ccd8d9a67ca7e5d6e2"
              },
              {
                "heading": "Lab 3: Policy, Defender, backup, and IaC",
                "start_line": 461,
                "end_line": 461,
                "span_lf_sha256": "8324f19c0eb487bc54be9d4a73106eb2504c958a93075c764c7581e3f566fc7e"
              }
            ],
            "initial_flag_disposition": "not-flagged-initially",
            "reason": "For “Implement and configure security controls by using infrastructure as code”, the selected current teaching explains Policy effects/remediation, Defender standards/recommendations, locks/role scopes/overprivilege, Backup and IaC evidence; Policy/IaC/federated deployment/remediation/exemption and protected Backup/restore evidence. Its purpose, operation/design boundary and checks support this objective; this is editorial teaching coverage, not observed product execution.",
            "initial_depth_result": "substantive",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "governance",
              "lab3"
            ]
          },
          {
            "wording": "Implement and configure security for storage accounts",
            "objective_wording_sha256": "605db438952c5ff249a3ad957ef0d065fe5afb2fec6e8c320463ecfcd23e8040",
            "group": "Implement security for storage accounts",
            "group_number": 4,
            "objective_number": 1,
            "evidence_spans": [
              {
                "heading": "Secure storage from identity through recovery",
                "start_line": 153,
                "end_line": 165,
                "span_lf_sha256": "a1e88646b3b27fa38c987b51efbd12e5e98b5c425d5d49950b487f9e51b6d1cb"
              },
              {
                "heading": "Lab 4: Storage and SQL data plane",
                "start_line": 465,
                "end_line": 465,
                "span_lf_sha256": "3d527e8f5f180304f89cd5436db192d422f53a1481391273b09d1b8685e9edf8"
              }
            ],
            "initial_flag_disposition": "not-flagged-initially",
            "reason": "For “Implement and configure security for storage accounts”, the selected current teaching explains Storage data-plane identity/SAS, firewall/private DNS, encryption/recovery and Defender plan coverage; Storage/SQL identity/network/audit/Defender and recovery checks. Its purpose, operation/design boundary and checks support this objective; this is editorial teaching coverage, not observed product execution.",
            "initial_depth_result": "substantive",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "storage",
              "lab4"
            ]
          },
          {
            "wording": "Configure Azure Storage firewall rules",
            "objective_wording_sha256": "c32f29e4a8c439801867e06a85352d6b98a17a982b7dee33449b5fcfc1975037",
            "group": "Implement security for storage accounts",
            "group_number": 4,
            "objective_number": 2,
            "evidence_spans": [
              {
                "heading": "Secure storage from identity through recovery",
                "start_line": 153,
                "end_line": 165,
                "span_lf_sha256": "a1e88646b3b27fa38c987b51efbd12e5e98b5c425d5d49950b487f9e51b6d1cb"
              },
              {
                "heading": "Lab 4: Storage and SQL data plane",
                "start_line": 465,
                "end_line": 465,
                "span_lf_sha256": "3d527e8f5f180304f89cd5436db192d422f53a1481391273b09d1b8685e9edf8"
              }
            ],
            "initial_flag_disposition": "not-flagged-initially",
            "reason": "For “Configure Azure Storage firewall rules”, the selected current teaching explains Storage data-plane identity/SAS, firewall/private DNS, encryption/recovery and Defender plan coverage; Storage/SQL identity/network/audit/Defender and recovery checks. Its purpose, operation/design boundary and checks support this objective; this is editorial teaching coverage, not observed product execution.",
            "initial_depth_result": "substantive",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "storage",
              "lab4"
            ]
          },
          {
            "wording": "Implement Defender for Storage threat protection configurations",
            "objective_wording_sha256": "086526980364ac140c5b4d6f80f01c7f97640fde5d551a5b76ec916898076cfc",
            "group": "Implement security for storage accounts",
            "group_number": 4,
            "objective_number": 3,
            "evidence_spans": [
              {
                "heading": "Secure storage from identity through recovery",
                "start_line": 153,
                "end_line": 165,
                "span_lf_sha256": "a1e88646b3b27fa38c987b51efbd12e5e98b5c425d5d49950b487f9e51b6d1cb"
              },
              {
                "heading": "Lab 4: Storage and SQL data plane",
                "start_line": 465,
                "end_line": 465,
                "span_lf_sha256": "3d527e8f5f180304f89cd5436db192d422f53a1481391273b09d1b8685e9edf8"
              }
            ],
            "initial_flag_disposition": "not-flagged-initially",
            "reason": "For “Implement Defender for Storage threat protection configurations”, the selected current teaching explains Storage data-plane identity/SAS, firewall/private DNS, encryption/recovery and Defender plan coverage; Storage/SQL identity/network/audit/Defender and recovery checks. Its purpose, operation/design boundary and checks support this objective; this is editorial teaching coverage, not observed product execution.",
            "initial_depth_result": "substantive",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "storage",
              "lab4"
            ]
          },
          {
            "wording": "Manage access to storage, including access policies",
            "objective_wording_sha256": "82fd3e98d4776c64b308b331822d55978ee398f0d9e6a08dfbe7154ebb5a766b",
            "group": "Implement security for storage accounts",
            "group_number": 4,
            "objective_number": 4,
            "evidence_spans": [
              {
                "heading": "Secure storage from identity through recovery",
                "start_line": 153,
                "end_line": 165,
                "span_lf_sha256": "a1e88646b3b27fa38c987b51efbd12e5e98b5c425d5d49950b487f9e51b6d1cb"
              },
              {
                "heading": "Lab 4: Storage and SQL data plane",
                "start_line": 465,
                "end_line": 465,
                "span_lf_sha256": "3d527e8f5f180304f89cd5436db192d422f53a1481391273b09d1b8685e9edf8"
              }
            ],
            "initial_flag_disposition": "not-flagged-initially",
            "reason": "For “Manage access to storage, including access policies”, the selected current teaching explains Storage data-plane identity/SAS, firewall/private DNS, encryption/recovery and Defender plan coverage; Storage/SQL identity/network/audit/Defender and recovery checks. Its purpose, operation/design boundary and checks support this objective; this is editorial teaching coverage, not observed product execution.",
            "initial_depth_result": "substantive",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "storage",
              "lab4"
            ]
          },
          {
            "wording": "Implement platform-level security configurations in Azure SQL",
            "objective_wording_sha256": "5b61d96d0507d854d5cbd31b11dd249be7def59c6b670eda95ae584558ae69f8",
            "group": "Implement security for databases",
            "group_number": 5,
            "objective_number": 1,
            "evidence_spans": [
              {
                "heading": "Layer Azure SQL security and evidence",
                "start_line": 169,
                "end_line": 179,
                "span_lf_sha256": "bcc403df5e6196fee41f5611d2adfb63d1ce13c562d0c68f70c36258d5833d79"
              },
              {
                "heading": "Lab 4: Storage and SQL data plane",
                "start_line": 465,
                "end_line": 465,
                "span_lf_sha256": "3d527e8f5f180304f89cd5436db192d422f53a1481391273b09d1b8685e9edf8"
              }
            ],
            "initial_flag_disposition": "not-flagged-initially",
            "reason": "For “Implement platform-level security configurations in Azure SQL”, the selected current teaching explains SQL identity/roles/network/encryption, audit event/destination/retention and engine-specific Defender coverage; Storage/SQL identity/network/audit/Defender and recovery checks. Its purpose, operation/design boundary and checks support this objective; this is editorial teaching coverage, not observed product execution.",
            "initial_depth_result": "substantive",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "sql",
              "lab4"
            ]
          },
          {
            "wording": "Configure database auditing for Azure SQL Database and Azure SQL Managed Instance",
            "objective_wording_sha256": "43ab296656a03ffda4fa76e051f38d6b16c1926c946f252284bad6c3e563cf0d",
            "group": "Implement security for databases",
            "group_number": 5,
            "objective_number": 2,
            "evidence_spans": [
              {
                "heading": "Layer Azure SQL security and evidence",
                "start_line": 169,
                "end_line": 179,
                "span_lf_sha256": "bcc403df5e6196fee41f5611d2adfb63d1ce13c562d0c68f70c36258d5833d79"
              },
              {
                "heading": "Lab 4: Storage and SQL data plane",
                "start_line": 465,
                "end_line": 465,
                "span_lf_sha256": "3d527e8f5f180304f89cd5436db192d422f53a1481391273b09d1b8685e9edf8"
              }
            ],
            "initial_flag_disposition": "existing-adequate-for-verb",
            "reason": "For “Configure database auditing for Azure SQL Database and Azure SQL Managed Instance”, the current selected text teaches SQL identity/roles/network/encryption, audit event/destination/retention and engine-specific Defender coverage; Storage/SQL identity/network/audit/Defender and recovery checks. Server/database audit scope, selected events, destination identity/access, retention/tamper resistance and known-action retrieval/failure monitoring form an actual configuration/evidence sequence.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "sql",
              "lab4"
            ]
          },
          {
            "wording": "Configure Defender for Databases protection across Azure database services",
            "objective_wording_sha256": "5fb5776df24800c2598a0ee4041ddc3f930288e97abc1c1891d24ea5a56074ac",
            "group": "Implement security for databases",
            "group_number": 5,
            "objective_number": 3,
            "evidence_spans": [
              {
                "heading": "Layer Azure SQL security and evidence",
                "start_line": 169,
                "end_line": 179,
                "span_lf_sha256": "bcc403df5e6196fee41f5611d2adfb63d1ce13c562d0c68f70c36258d5833d79"
              },
              {
                "heading": "Lab 4: Storage and SQL data plane",
                "start_line": 465,
                "end_line": 465,
                "span_lf_sha256": "3d527e8f5f180304f89cd5436db192d422f53a1481391273b09d1b8685e9edf8"
              }
            ],
            "initial_flag_disposition": "existing-adequate-for-verb",
            "reason": "For “Configure Defender for Databases protection across Azure database services”, the current selected text teaches SQL identity/roles/network/encryption, audit event/destination/retention and engine-specific Defender coverage; Storage/SQL identity/network/audit/Defender and recovery checks. The database family is resolved by engine/deployment/cloud, plan and VA/alert onboarding support; Lab4 couples the selected plan to allowed/denied data access and audit evidence, avoiding a universal toggle.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "sql",
              "lab4"
            ]
          },
          {
            "wording": "Implement and manage network security groups (NSGs) and application security groups (ASGs)",
            "objective_wording_sha256": "ab69dbfbe95d7da87315482c09cfec17e1f2c85ea42f9b8cc41ab68504b05a02",
            "group": "Implement security for Azure network services",
            "group_number": 6,
            "objective_number": 1,
            "evidence_spans": [
              {
                "heading": "Build segmentation and private access deliberately",
                "start_line": 183,
                "end_line": 197,
                "span_lf_sha256": "4bb654b27a0e98e7a1d19c66588f3266a80c5bf3818b7a08e207de5d127db0ad"
              },
              {
                "heading": "Lab 5: Network path and effective controls",
                "start_line": 469,
                "end_line": 469,
                "span_lf_sha256": "6029e5ba405b79770faae686a2908e9e0375d73e4393711bcd7ab1adcab98587"
              }
            ],
            "initial_flag_disposition": "not-flagged-initially",
            "reason": "For “Implement and manage network security groups (NSGs) and application security groups (ASGs)”, the selected current teaching explains NSG/admin-rule and WAN/VPN/PrivateAccess/PrivateLink/Firewall configuration and effective DNS/route/rule tests; implemented/tabletop packet-path DNS/route/effective-rule/public-bypass/failover evidence. Its purpose, operation/design boundary and checks support this objective; this is editorial teaching coverage, not observed product execution.",
            "initial_depth_result": "substantive",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "network",
              "lab5"
            ]
          },
          {
            "wording": "Implement and configure network access policies by using Azure Virtual Network Manager",
            "objective_wording_sha256": "8f233dfa96e74c00550e2699ff30f18e68881168b4bd19892fe74fd9a057e284",
            "group": "Implement security for Azure network services",
            "group_number": 6,
            "objective_number": 2,
            "evidence_spans": [
              {
                "heading": "Build segmentation and private access deliberately",
                "start_line": 183,
                "end_line": 197,
                "span_lf_sha256": "4bb654b27a0e98e7a1d19c66588f3266a80c5bf3818b7a08e207de5d127db0ad"
              },
              {
                "heading": "Lab 5: Network path and effective controls",
                "start_line": 469,
                "end_line": 469,
                "span_lf_sha256": "6029e5ba405b79770faae686a2908e9e0375d73e4393711bcd7ab1adcab98587"
              }
            ],
            "initial_flag_disposition": "existing-adequate-for-verb",
            "reason": "For “Implement and configure network access policies by using Azure Virtual Network Manager”, the current selected text teaches NSG/admin-rule and WAN/VPN/PrivateAccess/PrivateLink/Firewall configuration and effective DNS/route/rule tests; implemented/tabletop packet-path DNS/route/effective-rule/public-bypass/failover evidence. Network-group membership→regional deployment→effective security-admin-rule evidence and exception testing teach central rule configuration and precedence before NSGs.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "network",
              "lab5"
            ]
          },
          {
            "wording": "Configure security for an Azure Virtual WAN",
            "objective_wording_sha256": "4f97763beb96c918b47d14b587c95a01c1775d8dc7a3ba2aeeacce7cdb00c12b",
            "group": "Implement security for Azure network services",
            "group_number": 6,
            "objective_number": 3,
            "evidence_spans": [
              {
                "heading": "Build segmentation and private access deliberately",
                "start_line": 183,
                "end_line": 197,
                "span_lf_sha256": "4bb654b27a0e98e7a1d19c66588f3266a80c5bf3818b7a08e207de5d127db0ad"
              },
              {
                "heading": "Lab 5: Network path and effective controls",
                "start_line": 469,
                "end_line": 469,
                "span_lf_sha256": "6029e5ba405b79770faae686a2908e9e0375d73e4393711bcd7ab1adcab98587"
              }
            ],
            "initial_flag_disposition": "existing-adequate-for-verb",
            "reason": "For “Configure security for an Azure Virtual WAN”, the current selected text teaches NSG/admin-rule and WAN/VPN/PrivateAccess/PrivateLink/Firewall configuration and effective DNS/route/rule tests; implemented/tabletop packet-path DNS/route/effective-rule/public-bypass/failover evidence. Secured hub routing/intent, association/propagation, next hop, SNAT, DNS and symmetric return checks teach the configuration path and firewall-bypass failure.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "network",
              "lab5"
            ]
          },
          {
            "wording": "Implement and configure security for virtual private network (VPN) connections",
            "objective_wording_sha256": "15313d3f7140a53c5d05c1ddbcfe110db44a4dff989eaac1bc274b34f704144c",
            "group": "Implement security for Azure network services",
            "group_number": 6,
            "objective_number": 4,
            "evidence_spans": [
              {
                "heading": "Build segmentation and private access deliberately",
                "start_line": 183,
                "end_line": 197,
                "span_lf_sha256": "4bb654b27a0e98e7a1d19c66588f3266a80c5bf3818b7a08e207de5d127db0ad"
              },
              {
                "heading": "Lab 5: Network path and effective controls",
                "start_line": 469,
                "end_line": 469,
                "span_lf_sha256": "6029e5ba405b79770faae686a2908e9e0375d73e4393711bcd7ab1adcab98587"
              }
            ],
            "initial_flag_disposition": "existing-adequate-for-verb",
            "reason": "For “Implement and configure security for virtual private network (VPN) connections”, the current selected text teaches NSG/admin-rule and WAN/VPN/PrivateAccess/PrivateLink/Firewall configuration and effective DNS/route/rule tests; implemented/tabletop packet-path DNS/route/effective-rule/public-bypass/failover evidence. The VPN path selects site/point-to-site, SKU/availability, BGP, authentication/certificates and IKE/IPsec before route/rekey/failover tests; insecure compatibility workarounds are rejected.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "network",
              "lab5"
            ]
          },
          {
            "wording": "Implement and configure Microsoft Entra Private Access",
            "objective_wording_sha256": "8ff4678c04118c706520e8d7367b7744851413e9085e837f2bd3bf42fc4dcb05",
            "group": "Implement security for Azure network services",
            "group_number": 6,
            "objective_number": 5,
            "evidence_spans": [
              {
                "heading": "Build segmentation and private access deliberately",
                "start_line": 183,
                "end_line": 197,
                "span_lf_sha256": "4bb654b27a0e98e7a1d19c66588f3266a80c5bf3818b7a08e207de5d127db0ad"
              },
              {
                "heading": "Lab 5: Network path and effective controls",
                "start_line": 469,
                "end_line": 469,
                "span_lf_sha256": "6029e5ba405b79770faae686a2908e9e0375d73e4393711bcd7ab1adcab98587"
              }
            ],
            "initial_flag_disposition": "existing-adequate-for-verb",
            "reason": "For “Implement and configure Microsoft Entra Private Access”, the current selected text teaches NSG/admin-rule and WAN/VPN/PrivateAccess/PrivateLink/Firewall configuration and effective DNS/route/rule tests; implemented/tabletop packet-path DNS/route/effective-rule/public-bypass/failover evidence. Private Access explicitly configures connector placement/health, app segments, assignment/CA, DNS/ports and client, with failure semantics; it is distinguished from VNet endpoints.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "network",
              "lab5"
            ]
          },
          {
            "wording": "Configure Azure private endpoints to secure access to Azure platform as a service (PaaS) resources",
            "objective_wording_sha256": "672bda6dadbdf1159a0e4cb9d3ae6fdedf22de244bb3d28443db84a26982c03a",
            "group": "Implement security for Azure network services",
            "group_number": 6,
            "objective_number": 6,
            "evidence_spans": [
              {
                "heading": "Build segmentation and private access deliberately",
                "start_line": 183,
                "end_line": 197,
                "span_lf_sha256": "4bb654b27a0e98e7a1d19c66588f3266a80c5bf3818b7a08e207de5d127db0ad"
              },
              {
                "heading": "Lab 5: Network path and effective controls",
                "start_line": 469,
                "end_line": 469,
                "span_lf_sha256": "6029e5ba405b79770faae686a2908e9e0375d73e4393711bcd7ab1adcab98587"
              }
            ],
            "initial_flag_disposition": "not-flagged-initially",
            "reason": "For “Configure Azure private endpoints to secure access to Azure platform as a service (PaaS) resources”, the selected current teaching explains NSG/admin-rule and WAN/VPN/PrivateAccess/PrivateLink/Firewall configuration and effective DNS/route/rule tests; implemented/tabletop packet-path DNS/route/effective-rule/public-bypass/failover evidence. Its purpose, operation/design boundary and checks support this objective; this is editorial teaching coverage, not observed product execution.",
            "initial_depth_result": "substantive",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "network",
              "lab5"
            ]
          },
          {
            "wording": "Configure Azure Private Link services to secure access to network resources",
            "objective_wording_sha256": "391dd599997d1a900b86beeb974a0ce448c1c63016cf7b371818613e07cfd8e3",
            "group": "Implement security for Azure network services",
            "group_number": 6,
            "objective_number": 7,
            "evidence_spans": [
              {
                "heading": "Build segmentation and private access deliberately",
                "start_line": 183,
                "end_line": 197,
                "span_lf_sha256": "4bb654b27a0e98e7a1d19c66588f3266a80c5bf3818b7a08e207de5d127db0ad"
              },
              {
                "heading": "Lab 5: Network path and effective controls",
                "start_line": 469,
                "end_line": 469,
                "span_lf_sha256": "6029e5ba405b79770faae686a2908e9e0375d73e4393711bcd7ab1adcab98587"
              }
            ],
            "initial_flag_disposition": "existing-adequate-for-verb",
            "reason": "For “Configure Azure Private Link services to secure access to network resources”, the current selected text teaches NSG/admin-rule and WAN/VPN/PrivateAccess/PrivateLink/Firewall configuration and effective DNS/route/rule tests; implemented/tabletop packet-path DNS/route/effective-rule/public-bypass/failover evidence. Provider Standard Load Balancer/service publication is paired with consumer endpoints, approval, DNS, NAT/visibility and revocation; Scenario3 applies that private publishing path.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "network",
              "lab5"
            ]
          },
          {
            "wording": "Implement and configure Azure Firewall",
            "objective_wording_sha256": "e294cbcc090e744f4eceab647de6b3d28710f09399bb21f4d93e84aee392d485",
            "group": "Implement security for Azure network services",
            "group_number": 6,
            "objective_number": 8,
            "evidence_spans": [
              {
                "heading": "Build segmentation and private access deliberately",
                "start_line": 183,
                "end_line": 197,
                "span_lf_sha256": "4bb654b27a0e98e7a1d19c66588f3266a80c5bf3818b7a08e207de5d127db0ad"
              },
              {
                "heading": "Lab 5: Network path and effective controls",
                "start_line": 469,
                "end_line": 469,
                "span_lf_sha256": "6029e5ba405b79770faae686a2908e9e0375d73e4393711bcd7ab1adcab98587"
              }
            ],
            "initial_flag_disposition": "existing-adequate-for-verb",
            "reason": "For “Implement and configure Azure Firewall”, the current selected text teaches NSG/admin-rule and WAN/VPN/PrivateAccess/PrivateLink/Firewall configuration and effective DNS/route/rule tests; implemented/tabletop packet-path DNS/route/effective-rule/public-bypass/failover evidence. Firewall Policy hierarchy/rule groups, network/application/DNAT choice, tier-dependent inspection, logging, DNS and asymmetric-route tests supply a coherent implementation path.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "network",
              "lab5"
            ]
          },
          {
            "wording": "Evaluate effective security rules by using Azure Network Watcher diagnostics",
            "objective_wording_sha256": "297a1ca1f63d5a3cc11515561cb1274643b38141c053c4123499084866c27277",
            "group": "Implement security for Azure network services",
            "group_number": 6,
            "objective_number": 9,
            "evidence_spans": [
              {
                "heading": "Build segmentation and private access deliberately",
                "start_line": 183,
                "end_line": 197,
                "span_lf_sha256": "4bb654b27a0e98e7a1d19c66588f3266a80c5bf3818b7a08e207de5d127db0ad"
              },
              {
                "heading": "Lab 5: Network path and effective controls",
                "start_line": 469,
                "end_line": 469,
                "span_lf_sha256": "6029e5ba405b79770faae686a2908e9e0375d73e4393711bcd7ab1adcab98587"
              }
            ],
            "initial_flag_disposition": "not-flagged-initially",
            "reason": "For “Evaluate effective security rules by using Azure Network Watcher diagnostics”, the selected current teaching explains NSG/admin-rule and WAN/VPN/PrivateAccess/PrivateLink/Firewall configuration and effective DNS/route/rule tests; implemented/tabletop packet-path DNS/route/effective-rule/public-bypass/failover evidence. Its purpose, operation/design boundary and checks support this objective; this is editorial teaching coverage, not observed product execution.",
            "initial_depth_result": "substantive",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "network",
              "lab5"
            ]
          },
          {
            "wording": "Identify overexposure of data in SharePoint",
            "objective_wording_sha256": "f5d5b0c2f51f26ff111354d478268d595d7925cc9f3812c5486043d2a75af195",
            "group": "Implement security for AI",
            "group_number": 7,
            "objective_number": 1,
            "evidence_spans": [
              {
                "heading": "Secure AI as a connected system",
                "start_line": 203,
                "end_line": 237,
                "span_lf_sha256": "3e195d1acd9b515953c03d304efe613900d3af094d8f6e94837b632ec4c5b004"
              },
              {
                "heading": "Lab 6: AI and agent security control chain",
                "start_line": 473,
                "end_line": 473,
                "span_lf_sha256": "cd0e084ab8b1762b89af445f7bbb98b4763b40ee4e81513ca51d4be75a6bdf8d"
              }
            ],
            "initial_flag_disposition": "existing-adequate-for-verb",
            "reason": "For “Identify overexposure of data in SharePoint”, the current selected text teaches AI data/identity/tool/gateway/guardrail/posture/runtime control chain, agent subjects, license/support and explicit coverage gaps; safe AI/agent permission/guardrail/gateway/runtime/injection/tool/revocation test matrix. Site/content/external/everyone-except-external sharing and high-value/inactive content are inspected before AI use; correcting source permissions is the concrete response to overexposure.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "ai",
              "lab6"
            ]
          },
          {
            "wording": "Identify risks related to Microsoft Copilot and AI apps by using Microsoft Purview Data Security Posture Management (DSPM)",
            "objective_wording_sha256": "9c9aa04d3d2848496614f96cc4160d686499011d9cc367de54ab2df3ca915f64",
            "group": "Implement security for AI",
            "group_number": 7,
            "objective_number": 2,
            "evidence_spans": [
              {
                "heading": "Secure AI as a connected system",
                "start_line": 203,
                "end_line": 237,
                "span_lf_sha256": "3e195d1acd9b515953c03d304efe613900d3af094d8f6e94837b632ec4c5b004"
              },
              {
                "heading": "Lab 6: AI and agent security control chain",
                "start_line": 473,
                "end_line": 473,
                "span_lf_sha256": "cd0e084ab8b1762b89af445f7bbb98b4763b40ee4e81513ca51d4be75a6bdf8d"
              }
            ],
            "initial_flag_disposition": "existing-adequate-for-verb",
            "reason": "For “Identify risks related to Microsoft Copilot and AI apps by using Microsoft Purview Data Security Posture Management (DSPM)”, the current selected text teaches AI data/identity/tool/gateway/guardrail/posture/runtime control chain, agent subjects, license/support and explicit coverage gaps; safe AI/agent permission/guardrail/gateway/runtime/injection/tool/revocation test matrix. DSPM identifies AI use/interactions/data risks and policy opportunities but does not replace source access cleanup; the regulated-agent scenario links findings to scoped corpus and denied disclosure tests.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "ai",
              "lab6"
            ]
          },
          {
            "wording": "Enable and configure real-time protection for Microsoft Copilot Studio agents",
            "objective_wording_sha256": "cae445329f359445d7b124009871f3dca2ce1b7790b734b4356fe4db6283051f",
            "group": "Implement security for AI",
            "group_number": 7,
            "objective_number": 3,
            "evidence_spans": [
              {
                "heading": "Secure AI as a connected system",
                "start_line": 203,
                "end_line": 237,
                "span_lf_sha256": "3e195d1acd9b515953c03d304efe613900d3af094d8f6e94837b632ec4c5b004"
              },
              {
                "heading": "Focused reading and evidence route",
                "start_line": 571,
                "end_line": 591,
                "span_lf_sha256": "87f692c28a38c45dc18774d2ae44da79f16d5e1d005d051522440e5f6288752c"
              },
              {
                "heading": "Lab 6: AI and agent security control chain",
                "start_line": 473,
                "end_line": 473,
                "span_lf_sha256": "cd0e084ab8b1762b89af445f7bbb98b4763b40ee4e81513ca51d4be75a6bdf8d"
              }
            ],
            "initial_flag_disposition": "existing-adequate-for-verb",
            "reason": "For “Enable and configure real-time protection for Microsoft Copilot Studio agents”, the current selected text teaches AI data/identity/tool/gateway/guardrail/posture/runtime control chain, agent subjects, license/support and explicit coverage gaps; specific DefenderURL/PowerPlatform/AppID enablement worksheet with missing/mismatched-connector and fresh-session checks; safe AI/agent permission/guardrail/gateway/runtime/injection/tool/revocation test matrix. The current full-text protection worksheet assigns Defender URL, Power Platform configuration and matching App ID to owners, then specifies mismatched-ID/missing-connector/fresh-session checks. The earlier generic passage is supplemented by actual enablement teaching.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "ai",
              "protectionroute",
              "lab6"
            ]
          },
          {
            "wording": "Implement conditional access for Microsoft Entra Agent ID",
            "objective_wording_sha256": "b54d8fa82251672043b3f6c6da751aa3b04ed95aec2edb304950449cf2100e5b",
            "group": "Implement security for AI",
            "group_number": 7,
            "objective_number": 4,
            "evidence_spans": [
              {
                "heading": "Secure AI as a connected system",
                "start_line": 203,
                "end_line": 237,
                "span_lf_sha256": "3e195d1acd9b515953c03d304efe613900d3af094d8f6e94837b632ec4c5b004"
              },
              {
                "heading": "1. Map the caller before assigning a policy",
                "start_line": 412,
                "end_line": 419,
                "span_lf_sha256": "bc023a72cb72c34659fa845e0ebc9bcc16afcc5db310abb66aab2c7d8f700c33"
              },
              {
                "heading": "Lab 6: AI and agent security control chain",
                "start_line": 473,
                "end_line": 473,
                "span_lf_sha256": "cd0e084ab8b1762b89af445f7bbb98b4763b40ee4e81513ca51d4be75a6bdf8d"
              }
            ],
            "initial_flag_disposition": "not-flagged-initially",
            "reason": "For “Implement conditional access for Microsoft Entra Agent ID”, the selected current teaching explains AI data/identity/tool/gateway/guardrail/posture/runtime control chain, agent subjects, license/support and explicit coverage gaps; four delegated/application/agent-user/API-key caller and policy cases; safe AI/agent permission/guardrail/gateway/runtime/injection/tool/revocation test matrix. Its purpose, operation/design boundary and checks support this objective; this is editorial teaching coverage, not observed product execution.",
            "initial_depth_result": "substantive",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "ai",
              "caller",
              "lab6"
            ]
          },
          {
            "wording": "Analyze blast radius for security risks related to Entra Agent ID by using Defender XDR",
            "objective_wording_sha256": "eacd7d5c8440c54d1200ee6c47a9c1be92420498f2a65c059c2343ea7c5ce636",
            "group": "Implement security for AI",
            "group_number": 7,
            "objective_number": 5,
            "evidence_spans": [
              {
                "heading": "Secure AI as a connected system",
                "start_line": 203,
                "end_line": 237,
                "span_lf_sha256": "3e195d1acd9b515953c03d304efe613900d3af094d8f6e94837b632ec4c5b004"
              },
              {
                "heading": "2. Compute effective access without double counting",
                "start_line": 423,
                "end_line": 423,
                "span_lf_sha256": "bb78f181fba67afc26a398acf8800a9724d914a295d6422b2964f00a4638055e"
              },
              {
                "heading": "Lab 6: AI and agent security control chain",
                "start_line": 473,
                "end_line": 473,
                "span_lf_sha256": "cd0e084ab8b1762b89af445f7bbb98b4763b40ee4e81513ca51d4be75a6bdf8d"
              }
            ],
            "initial_flag_disposition": "existing-adequate-for-verb",
            "reason": "For “Analyze blast radius for security risks related to Entra Agent ID by using Defender XDR”, the current selected text teaches AI data/identity/tool/gateway/guardrail/posture/runtime control chain, agent subjects, license/support and explicit coverage gaps; effective grant union and unnecessary reachable-resource quantification; safe AI/agent permission/guardrail/gateway/runtime/injection/tool/revocation test matrix. The blast-radius graph is read as identity→permissions→users/resources→observed activity, qualified by onboarded coverage; Example2 quantifies excess reachable resources before remediation.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "ai",
              "reachability",
              "lab6"
            ]
          },
          {
            "wording": "Manage Entra Agent ID access",
            "objective_wording_sha256": "4d81caf4bd0517dadced194db59c7fb944bc2c6d7aaea6ac6ad55c55aa9ec130",
            "group": "Implement security for AI",
            "group_number": 7,
            "objective_number": 6,
            "evidence_spans": [
              {
                "heading": "Secure AI as a connected system",
                "start_line": 203,
                "end_line": 237,
                "span_lf_sha256": "3e195d1acd9b515953c03d304efe613900d3af094d8f6e94837b632ec4c5b004"
              },
              {
                "heading": "1. Map the caller before assigning a policy",
                "start_line": 412,
                "end_line": 419,
                "span_lf_sha256": "bc023a72cb72c34659fa845e0ebc9bcc16afcc5db310abb66aab2c7d8f700c33"
              },
              {
                "heading": "Lab 6: AI and agent security control chain",
                "start_line": 473,
                "end_line": 473,
                "span_lf_sha256": "cd0e084ab8b1762b89af445f7bbb98b4763b40ee4e81513ca51d4be75a6bdf8d"
              }
            ],
            "initial_flag_disposition": "existing-adequate-for-verb",
            "reason": "For “Manage Entra Agent ID access”, the current selected text teaches AI data/identity/tool/gateway/guardrail/posture/runtime control chain, agent subjects, license/support and explicit coverage gaps; four delegated/application/agent-user/API-key caller and policy cases; safe AI/agent permission/guardrail/gateway/runtime/injection/tool/revocation test matrix. Agent owner/host/identity, credentials, permissions, tools, activity and deletion state are inventoried and changed under explicit subject/audience rules; the token-subject fixture tests delegated/app/agent-user/key differences.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "ai",
              "caller",
              "lab6"
            ]
          },
          {
            "wording": "Configure and deploy AI Gateway in Azure API Management for Microsoft Foundry",
            "objective_wording_sha256": "bcd0ba3a15cc377654d10e5a29f5e939129d755693d93e09ea1ba3a3a245e27d",
            "group": "Implement security for AI",
            "group_number": 7,
            "objective_number": 7,
            "evidence_spans": [
              {
                "heading": "Secure AI as a connected system",
                "start_line": 203,
                "end_line": 237,
                "span_lf_sha256": "3e195d1acd9b515953c03d304efe613900d3af094d8f6e94837b632ec4c5b004"
              },
              {
                "heading": "7. Gateway success is not backend authorization",
                "start_line": 445,
                "end_line": 445,
                "span_lf_sha256": "a0fa5d9b903e50970a0554ba3cdc76cd56f3d37c1a27500babc5b1f446f0794b"
              },
              {
                "heading": "Lab 6: AI and agent security control chain",
                "start_line": 473,
                "end_line": 473,
                "span_lf_sha256": "cd0e084ab8b1762b89af445f7bbb98b4763b40ee4e81513ca51d4be75a6bdf8d"
              }
            ],
            "initial_flag_disposition": "existing-adequate-for-verb",
            "reason": "For “Configure and deploy AI Gateway in Azure API Management for Microsoft Foundry”, the current selected text teaches AI data/identity/tool/gateway/guardrail/posture/runtime control chain, agent subjects, license/support and explicit coverage gaps; client JWT acceptance versus separate gateway-backend identity permission and bypass test; safe AI/agent permission/guardrail/gateway/runtime/injection/tool/revocation test matrix. AI Gateway configuration selects supported tier/route/authentication/quota/token/content policy and backend identity, then tests direct bypass and wrong backend permission in Scenario1/Example7.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "ai",
              "gateway",
              "lab6"
            ]
          },
          {
            "wording": "Enable Defender for AI Service in Cloud Workload Protection in Defender for Cloud",
            "objective_wording_sha256": "186fa3218734045aab3b9143b012e5a96a6fd57fae4c93042e85a62832393789",
            "group": "Implement security for AI",
            "group_number": 7,
            "objective_number": 8,
            "evidence_spans": [
              {
                "heading": "Secure AI as a connected system",
                "start_line": 203,
                "end_line": 237,
                "span_lf_sha256": "3e195d1acd9b515953c03d304efe613900d3af094d8f6e94837b632ec4c5b004"
              },
              {
                "heading": "Lab 6: AI and agent security control chain",
                "start_line": 473,
                "end_line": 473,
                "span_lf_sha256": "cd0e084ab8b1762b89af445f7bbb98b4763b40ee4e81513ca51d4be75a6bdf8d"
              }
            ],
            "initial_flag_disposition": "not-flagged-initially",
            "reason": "For “Enable Defender for AI Service in Cloud Workload Protection in Defender for Cloud”, the selected current teaching explains AI data/identity/tool/gateway/guardrail/posture/runtime control chain, agent subjects, license/support and explicit coverage gaps; safe AI/agent permission/guardrail/gateway/runtime/injection/tool/revocation test matrix. Its purpose, operation/design boundary and checks support this objective; this is editorial teaching coverage, not observed product execution.",
            "initial_depth_result": "substantive",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "ai",
              "lab6"
            ]
          },
          {
            "wording": "Configure guardrails for agent security in Foundry",
            "objective_wording_sha256": "3ea9a5dbd19fb2d255f237f5827e1c98a283ec9b0f89a4b8bf48ac0477e4846d",
            "group": "Implement security for AI",
            "group_number": 7,
            "objective_number": 9,
            "evidence_spans": [
              {
                "heading": "Secure AI as a connected system",
                "start_line": 203,
                "end_line": 237,
                "span_lf_sha256": "3e195d1acd9b515953c03d304efe613900d3af094d8f6e94837b632ec4c5b004"
              },
              {
                "heading": "Lab 6: AI and agent security control chain",
                "start_line": 473,
                "end_line": 473,
                "span_lf_sha256": "cd0e084ab8b1762b89af445f7bbb98b4763b40ee4e81513ca51d4be75a6bdf8d"
              }
            ],
            "initial_flag_disposition": "existing-adequate-for-verb",
            "reason": "For “Configure guardrails for agent security in Foundry”, the current selected text teaches AI data/identity/tool/gateway/guardrail/posture/runtime control chain, agent subjects, license/support and explicit coverage gaps; safe AI/agent permission/guardrail/gateway/runtime/injection/tool/revocation test matrix. Guardrails choose thresholds/blocklists, evaluate allowed/prohibited/multilingual/encoded/indirect input and version/rollback settings; unsafe tool authorization remains a separate negative test.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "ai",
              "lab6"
            ]
          },
          {
            "wording": "Monitor AI security by using the Data and AI security dashboard in Defender for Cloud",
            "objective_wording_sha256": "aca3f0786696f07cebd6453621233f67fc9102338719494638c9aaa477c4f0ae",
            "group": "Implement security for AI",
            "group_number": 7,
            "objective_number": 10,
            "evidence_spans": [
              {
                "heading": "Secure AI as a connected system",
                "start_line": 203,
                "end_line": 237,
                "span_lf_sha256": "3e195d1acd9b515953c03d304efe613900d3af094d8f6e94837b632ec4c5b004"
              },
              {
                "heading": "Lab 6: AI and agent security control chain",
                "start_line": 473,
                "end_line": 473,
                "span_lf_sha256": "cd0e084ab8b1762b89af445f7bbb98b4763b40ee4e81513ca51d4be75a6bdf8d"
              }
            ],
            "initial_flag_disposition": "not-flagged-initially",
            "reason": "For “Monitor AI security by using the Data and AI security dashboard in Defender for Cloud”, the selected current teaching explains AI data/identity/tool/gateway/guardrail/posture/runtime control chain, agent subjects, license/support and explicit coverage gaps; safe AI/agent permission/guardrail/gateway/runtime/injection/tool/revocation test matrix. Its purpose, operation/design boundary and checks support this objective; this is editorial teaching coverage, not observed product execution.",
            "initial_depth_result": "substantive",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "ai",
              "lab6"
            ]
          },
          {
            "wording": "Manage agents in Microsoft 365 admin center",
            "objective_wording_sha256": "812b6241afe89c43289831425dbf731b036e8b95290af05e2ecd871576e70c9f",
            "group": "Implement security for AI",
            "group_number": 7,
            "objective_number": 11,
            "evidence_spans": [
              {
                "heading": "Secure AI as a connected system",
                "start_line": 203,
                "end_line": 237,
                "span_lf_sha256": "3e195d1acd9b515953c03d304efe613900d3af094d8f6e94837b632ec4c5b004"
              },
              {
                "heading": "Lab 6: AI and agent security control chain",
                "start_line": 473,
                "end_line": 473,
                "span_lf_sha256": "cd0e084ab8b1762b89af445f7bbb98b4763b40ee4e81513ca51d4be75a6bdf8d"
              }
            ],
            "initial_flag_disposition": "existing-adequate-for-verb",
            "reason": "For “Manage agents in Microsoft 365 admin center”, the current selected text teaches AI data/identity/tool/gateway/guardrail/posture/runtime control chain, agent subjects, license/support and explicit coverage gaps; safe AI/agent permission/guardrail/gateway/runtime/injection/tool/revocation test matrix. The admin agent inventory is correlated with owner/publisher/users/license/knowledge/actions/identity/environment/data policy and security signals, with supported custom/partner/host coverage explicitly checked.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "ai",
              "lab6"
            ]
          },
          {
            "wording": "Implement and configure disk encryption",
            "objective_wording_sha256": "b41050084187a2ab3ff05a15f101539f1f8e186408a99c623c1f407381014025",
            "group": "Implement security for servers and virtual machines (VMs)",
            "group_number": 8,
            "objective_number": 1,
            "evidence_spans": [
              {
                "heading": "Harden servers and virtual machines across clouds",
                "start_line": 241,
                "end_line": 251,
                "span_lf_sha256": "ec7699a39b88ea2f9b4c55d52924eede9c036c5b215560714af9d8f5ed3b6cd3"
              },
              {
                "heading": "Lab 7: Hybrid VM protection and recovery",
                "start_line": 477,
                "end_line": 477,
                "span_lf_sha256": "31e60acb5a48cf55a9dc1c7d2ee84acc4cc80884a9263bcb5d97fa8345a80435"
              }
            ],
            "initial_flag_disposition": "not-flagged-initially",
            "reason": "For “Implement and configure disk encryption”, the selected current teaching explains encryption/Bastion/JIT/Arc/Defender/EDR/VA/agentless/TrustedLaunch/MachineConfiguration prerequisites and health/drift checks; hybrid VM plan/sensor/extension/VA/JIT/drift/restore and support checks. Its purpose, operation/design boundary and checks support this objective; this is editorial teaching coverage, not observed product execution.",
            "initial_depth_result": "substantive",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "vm",
              "lab7"
            ]
          },
          {
            "wording": "Plan and implement Azure Bastion",
            "objective_wording_sha256": "f9d9981c9e07a94a4e8f3bddca48aed8e12fcf9b3cb7706dff056b7c3390a333",
            "group": "Implement security for servers and virtual machines (VMs)",
            "group_number": 8,
            "objective_number": 2,
            "evidence_spans": [
              {
                "heading": "Harden servers and virtual machines across clouds",
                "start_line": 241,
                "end_line": 251,
                "span_lf_sha256": "ec7699a39b88ea2f9b4c55d52924eede9c036c5b215560714af9d8f5ed3b6cd3"
              },
              {
                "heading": "Lab 7: Hybrid VM protection and recovery",
                "start_line": 477,
                "end_line": 477,
                "span_lf_sha256": "31e60acb5a48cf55a9dc1c7d2ee84acc4cc80884a9263bcb5d97fa8345a80435"
              }
            ],
            "initial_flag_disposition": "existing-adequate-for-verb",
            "reason": "For “Plan and implement Azure Bastion”, the current selected text teaches encryption/Bastion/JIT/Arc/Defender/EDR/VA/agentless/TrustedLaunch/MachineConfiguration prerequisites and health/drift checks; hybrid VM plan/sensor/extension/VA/JIT/drift/restore and support checks. Bastion removes the VM public management endpoint while retaining RBAC, NSG and host/session controls; Lab7 tests denied direct management and the intended access route.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "vm",
              "lab7"
            ]
          },
          {
            "wording": "Enable and enforce use of just-in-time (JIT) VM access",
            "objective_wording_sha256": "7fef6bf41805c1b4f0261a92b373d6efbecdacedaf161f56e53e4b51b17fa42f",
            "group": "Implement security for servers and virtual machines (VMs)",
            "group_number": 8,
            "objective_number": 3,
            "evidence_spans": [
              {
                "heading": "Harden servers and virtual machines across clouds",
                "start_line": 241,
                "end_line": 251,
                "span_lf_sha256": "ec7699a39b88ea2f9b4c55d52924eede9c036c5b215560714af9d8f5ed3b6cd3"
              },
              {
                "heading": "Lab 7: Hybrid VM protection and recovery",
                "start_line": 477,
                "end_line": 477,
                "span_lf_sha256": "31e60acb5a48cf55a9dc1c7d2ee84acc4cc80884a9263bcb5d97fa8345a80435"
              }
            ],
            "initial_flag_disposition": "existing-adequate-for-verb",
            "reason": "For “Enable and enforce use of just-in-time (JIT) VM access”, the current selected text teaches encryption/Bastion/JIT/Arc/Defender/EDR/VA/agentless/TrustedLaunch/MachineConfiguration prerequisites and health/drift checks; hybrid VM plan/sensor/extension/VA/JIT/drift/restore and support checks. JIT narrows source/port/protocol/duration under the applicable Defender plan and Lab7 verifies expiry/denial. Time-bounded opening and Bastion are correctly separate paths.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "vm",
              "lab7"
            ]
          },
          {
            "wording": "Extend security controls to hybrid and multicloud servers by using Azure Arc",
            "objective_wording_sha256": "7b995d15ec64535c45b75986f29c7fb71ebdb4dcb615481bb3712c94b75cbd22",
            "group": "Implement security for servers and virtual machines (VMs)",
            "group_number": 8,
            "objective_number": 4,
            "evidence_spans": [
              {
                "heading": "Harden servers and virtual machines across clouds",
                "start_line": 241,
                "end_line": 251,
                "span_lf_sha256": "ec7699a39b88ea2f9b4c55d52924eede9c036c5b215560714af9d8f5ed3b6cd3"
              },
              {
                "heading": "Lab 7: Hybrid VM protection and recovery",
                "start_line": 477,
                "end_line": 477,
                "span_lf_sha256": "31e60acb5a48cf55a9dc1c7d2ee84acc4cc80884a9263bcb5d97fa8345a80435"
              }
            ],
            "initial_flag_disposition": "existing-adequate-for-verb",
            "reason": "For “Extend security controls to hybrid and multicloud servers by using Azure Arc”, the current selected text teaches encryption/Bastion/JIT/Arc/Defender/EDR/VA/agentless/TrustedLaunch/MachineConfiguration prerequisites and health/drift checks; hybrid VM plan/sensor/extension/VA/JIT/drift/restore and support checks. Arc onboarding identity/agent/extensions/proxy/endpoints/local permissions are scoped before policy/Defender use, with health/drift checks in the hybrid scenario.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "vm",
              "lab7"
            ]
          },
          {
            "wording": "Onboard servers to Defender for Servers in Defender for Cloud, including hybrid and multicloud scenarios",
            "objective_wording_sha256": "10f37de57065395e7d0302e237c78147c9b72cf9b2c7ddd868e6661556cfaacd",
            "group": "Implement security for servers and virtual machines (VMs)",
            "group_number": 8,
            "objective_number": 5,
            "evidence_spans": [
              {
                "heading": "Harden servers and virtual machines across clouds",
                "start_line": 241,
                "end_line": 251,
                "span_lf_sha256": "ec7699a39b88ea2f9b4c55d52924eede9c036c5b215560714af9d8f5ed3b6cd3"
              },
              {
                "heading": "4. Separate scanning from live endpoint protection",
                "start_line": 431,
                "end_line": 431,
                "span_lf_sha256": "3c6680d28495592ae76ba59956db953edea1aae5444b89067b688df70c9acdaf"
              },
              {
                "heading": "Lab 7: Hybrid VM protection and recovery",
                "start_line": 477,
                "end_line": 477,
                "span_lf_sha256": "31e60acb5a48cf55a9dc1c7d2ee84acc4cc80884a9263bcb5d97fa8345a80435"
              }
            ],
            "initial_flag_disposition": "existing-adequate-for-verb",
            "reason": "For “Onboard servers to Defender for Servers in Defender for Cloud, including hybrid and multicloud scenarios”, the current selected text teaches encryption/Bastion/JIT/Arc/Defender/EDR/VA/agentless/TrustedLaunch/MachineConfiguration prerequisites and health/drift checks; 120-server scan/EDR intersection, uncovered hosts and denominator/health/timestamp evidence; hybrid VM plan/sensor/extension/VA/JIT/drift/restore and support checks. Plan1/2 and hybrid/multicloud agent/agentless prerequisites are selected by host/cloud and checked for healthy sensor and supported disk coverage; the 120-server fixture detects plan-count overclaim.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "vm",
              "scanfixture",
              "lab7"
            ]
          },
          {
            "wording": "Configure Defender for Servers settings, including vulnerability scanning, and endpoint detection and response (EDR)",
            "objective_wording_sha256": "1c9c52d53f67404bc3e756b3afd89712df7a44d0e17ea1b8c76048110e184122",
            "group": "Implement security for servers and virtual machines (VMs)",
            "group_number": 8,
            "objective_number": 6,
            "evidence_spans": [
              {
                "heading": "Harden servers and virtual machines across clouds",
                "start_line": 241,
                "end_line": 251,
                "span_lf_sha256": "ec7699a39b88ea2f9b4c55d52924eede9c036c5b215560714af9d8f5ed3b6cd3"
              },
              {
                "heading": "4. Separate scanning from live endpoint protection",
                "start_line": 431,
                "end_line": 431,
                "span_lf_sha256": "3c6680d28495592ae76ba59956db953edea1aae5444b89067b688df70c9acdaf"
              },
              {
                "heading": "Lab 7: Hybrid VM protection and recovery",
                "start_line": 477,
                "end_line": 477,
                "span_lf_sha256": "31e60acb5a48cf55a9dc1c7d2ee84acc4cc80884a9263bcb5d97fa8345a80435"
              }
            ],
            "initial_flag_disposition": "existing-adequate-for-verb",
            "reason": "For “Configure Defender for Servers settings, including vulnerability scanning, and endpoint detection and response (EDR)”, the current selected text teaches encryption/Bastion/JIT/Arc/Defender/EDR/VA/agentless/TrustedLaunch/MachineConfiguration prerequisites and health/drift checks; 120-server scan/EDR intersection, uncovered hosts and denominator/health/timestamp evidence; hybrid VM plan/sensor/extension/VA/JIT/drift/restore and support checks. EDR integration, VA, file integrity and snapshot scanning are independent configured signals with plan/coverage/health checks, not assumed from an enabled plan.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "vm",
              "scanfixture",
              "lab7"
            ]
          },
          {
            "wording": "Implement and manage agentless scanning for VMs in Defender for Servers",
            "objective_wording_sha256": "e36208ee63f67a2137001b2f969925077731e6d9b5af3e526a1b91c1090be166",
            "group": "Implement security for servers and virtual machines (VMs)",
            "group_number": 8,
            "objective_number": 7,
            "evidence_spans": [
              {
                "heading": "Harden servers and virtual machines across clouds",
                "start_line": 241,
                "end_line": 251,
                "span_lf_sha256": "ec7699a39b88ea2f9b4c55d52924eede9c036c5b215560714af9d8f5ed3b6cd3"
              },
              {
                "heading": "4. Separate scanning from live endpoint protection",
                "start_line": 431,
                "end_line": 431,
                "span_lf_sha256": "3c6680d28495592ae76ba59956db953edea1aae5444b89067b688df70c9acdaf"
              },
              {
                "heading": "Lab 7: Hybrid VM protection and recovery",
                "start_line": 477,
                "end_line": 477,
                "span_lf_sha256": "31e60acb5a48cf55a9dc1c7d2ee84acc4cc80884a9263bcb5d97fa8345a80435"
              }
            ],
            "initial_flag_disposition": "not-flagged-initially",
            "reason": "For “Implement and manage agentless scanning for VMs in Defender for Servers”, the selected current teaching explains encryption/Bastion/JIT/Arc/Defender/EDR/VA/agentless/TrustedLaunch/MachineConfiguration prerequisites and health/drift checks; 120-server scan/EDR intersection, uncovered hosts and denominator/health/timestamp evidence; hybrid VM plan/sensor/extension/VA/JIT/drift/restore and support checks. Its purpose, operation/design boundary and checks support this objective; this is editorial teaching coverage, not observed product execution.",
            "initial_depth_result": "substantive",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "vm",
              "scanfixture",
              "lab7"
            ]
          },
          {
            "wording": "Configure security features on a VM, including secure boot, virtual Trusted Platform Module (vTPM), integrity monitoring, and security type",
            "objective_wording_sha256": "479aa36a7a4c54621d1ddd8e11d6ba5de69f57e09e1a161147b14b19ef810008",
            "group": "Implement security for servers and virtual machines (VMs)",
            "group_number": 8,
            "objective_number": 8,
            "evidence_spans": [
              {
                "heading": "Harden servers and virtual machines across clouds",
                "start_line": 241,
                "end_line": 251,
                "span_lf_sha256": "ec7699a39b88ea2f9b4c55d52924eede9c036c5b215560714af9d8f5ed3b6cd3"
              },
              {
                "heading": "Lab 7: Hybrid VM protection and recovery",
                "start_line": 477,
                "end_line": 477,
                "span_lf_sha256": "31e60acb5a48cf55a9dc1c7d2ee84acc4cc80884a9263bcb5d97fa8345a80435"
              }
            ],
            "initial_flag_disposition": "existing-adequate-for-verb",
            "reason": "For “Configure security features on a VM, including secure boot, virtual Trusted Platform Module (vTPM), integrity monitoring, and security type”, the current selected text teaches encryption/Bastion/JIT/Arc/Defender/EDR/VA/agentless/TrustedLaunch/MachineConfiguration prerequisites and health/drift checks; hybrid VM plan/sensor/extension/VA/JIT/drift/restore and support checks. Security type selects supported SecureBoot/vTPM/integrity monitoring together with image/size/generation/disk/extension support; Lab7 checks health and migration prerequisites.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "vm",
              "lab7"
            ]
          },
          {
            "wording": "Enforce security configuration of Azure-managed servers by using Azure Machine Configuration",
            "objective_wording_sha256": "6ab606f6ffdeef7c93171d301a9e8c112f4f4bf59759f6041c0799e383468682",
            "group": "Implement security for servers and virtual machines (VMs)",
            "group_number": 8,
            "objective_number": 9,
            "evidence_spans": [
              {
                "heading": "Harden servers and virtual machines across clouds",
                "start_line": 241,
                "end_line": 251,
                "span_lf_sha256": "ec7699a39b88ea2f9b4c55d52924eede9c036c5b215560714af9d8f5ed3b6cd3"
              },
              {
                "heading": "Lab 7: Hybrid VM protection and recovery",
                "start_line": 477,
                "end_line": 477,
                "span_lf_sha256": "31e60acb5a48cf55a9dc1c7d2ee84acc4cc80884a9263bcb5d97fa8345a80435"
              }
            ],
            "initial_flag_disposition": "existing-adequate-for-verb",
            "reason": "For “Enforce security configuration of Azure-managed servers by using Azure Machine Configuration”, the current selected text teaches encryption/Bastion/JIT/Arc/Defender/EDR/VA/agentless/TrustedLaunch/MachineConfiguration prerequisites and health/drift checks; hybrid VM plan/sensor/extension/VA/JIT/drift/restore and support checks. Machine Configuration audits/applies guest state via policy/extensions and is paired with drift verification; it is explicitly separated from patching and EDR.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "vm",
              "lab7"
            ]
          },
          {
            "wording": "Detect misconfigurations and runtime risks in container workloads by using Defender for Containers",
            "objective_wording_sha256": "44deaa43d39dfb20d828e75f56b88f772d26f1903d2c6d9f65ea515e6c03d992",
            "group": "Implement security for application platform services",
            "group_number": 9,
            "objective_number": 1,
            "evidence_spans": [
              {
                "heading": "Secure containers, serverless, web apps, and APIs",
                "start_line": 255,
                "end_line": 279,
                "span_lf_sha256": "4ecec97b6648eb3229a4f7639307d1e26e2129fa54110fe4d5a19a151d2e27e6"
              },
              {
                "heading": "Lab 8: Application platform, Sentinel, and Copilot operations",
                "start_line": 481,
                "end_line": 481,
                "span_lf_sha256": "f3de4143a87719da6e1ffaf761e7882ae84775dc15c6b6d1793c25ad3a8a6a3c"
              }
            ],
            "initial_flag_disposition": "existing-adequate-for-verb",
            "reason": "For “Detect misconfigurations and runtime risks in container workloads by using Defender for Containers”, the current selected text teaches AKS/registry/container controls and distinct Functions/LogicApps/AppService/WAF/APIM inbound/outbound/backend configuration; application-platform security plus known-event Sentinel schema/rule/guarded-playbook and Copilot evidence. Registry/build/admission/identity/network/node/runtime are separate protection stages; Defender onboarding/sensor/cloud coverage is verified before interpreting findings.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "compute",
              "lab8"
            ]
          },
          {
            "wording": "Implement and configure security controls for Azure Kubernetes Service (AKS)",
            "objective_wording_sha256": "113c4446302096b57a82b85429c5c37ff1ff5c7973ece0233834bfd95121e983",
            "group": "Implement security for application platform services",
            "group_number": 9,
            "objective_number": 2,
            "evidence_spans": [
              {
                "heading": "Secure containers, serverless, web apps, and APIs",
                "start_line": 255,
                "end_line": 279,
                "span_lf_sha256": "4ecec97b6648eb3229a4f7639307d1e26e2129fa54110fe4d5a19a151d2e27e6"
              },
              {
                "heading": "Lab 8: Application platform, Sentinel, and Copilot operations",
                "start_line": 481,
                "end_line": 481,
                "span_lf_sha256": "f3de4143a87719da6e1ffaf761e7882ae84775dc15c6b6d1793c25ad3a8a6a3c"
              }
            ],
            "initial_flag_disposition": "existing-adequate-for-verb",
            "reason": "For “Implement and configure security controls for Azure Kubernetes Service (AKS)”, the current selected text teaches AKS/registry/container controls and distinct Functions/LogicApps/AppService/WAF/APIM inbound/outbound/backend configuration; application-platform security plus known-event Sentinel schema/rule/guarded-playbook and Copilot evidence. The AKS path explicitly configures Entra/RBAC, federated service-account identity, private/control-plane access, network policy/egress, pod/admission restrictions, node maintenance and audit/runtime signals; Scenario3 applies it.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "compute",
              "lab8"
            ]
          },
          {
            "wording": "Implement and configure security controls for Azure Container Registry",
            "objective_wording_sha256": "e6f103cb60b1a4df1743624ed9ad9d992dd5bda891a47dc0490622f80ee8d7fa",
            "group": "Implement security for application platform services",
            "group_number": 9,
            "objective_number": 3,
            "evidence_spans": [
              {
                "heading": "Secure containers, serverless, web apps, and APIs",
                "start_line": 255,
                "end_line": 279,
                "span_lf_sha256": "4ecec97b6648eb3229a4f7639307d1e26e2129fa54110fe4d5a19a151d2e27e6"
              },
              {
                "heading": "Lab 8: Application platform, Sentinel, and Copilot operations",
                "start_line": 481,
                "end_line": 481,
                "span_lf_sha256": "f3de4143a87719da6e1ffaf761e7882ae84775dc15c6b6d1793c25ad3a8a6a3c"
              }
            ],
            "initial_flag_disposition": "existing-adequate-for-verb",
            "reason": "For “Implement and configure security controls for Azure Container Registry”, the current selected text teaches AKS/registry/container controls and distinct Functions/LogicApps/AppService/WAF/APIM inbound/outbound/backend configuration; application-platform security plus known-event Sentinel schema/rule/guarded-playbook and Copilot evidence. ACR configuration disables admin access, chooses Entra/managed identity/private access and governed imports/scan/provenance/retention; point-in-time scan evidence is bounded.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "compute",
              "lab8"
            ]
          },
          {
            "wording": "Implement and configure security controls for Azure Container Instances and Azure Container Apps",
            "objective_wording_sha256": "35b8c6e9b74bf3e602c2935b48a9397d0bcb963b14d50ce0d8444de27c1ece68",
            "group": "Implement security for application platform services",
            "group_number": 9,
            "objective_number": 4,
            "evidence_spans": [
              {
                "heading": "Secure containers, serverless, web apps, and APIs",
                "start_line": 255,
                "end_line": 279,
                "span_lf_sha256": "4ecec97b6648eb3229a4f7639307d1e26e2129fa54110fe4d5a19a151d2e27e6"
              },
              {
                "heading": "Lab 8: Application platform, Sentinel, and Copilot operations",
                "start_line": 481,
                "end_line": 481,
                "span_lf_sha256": "f3de4143a87719da6e1ffaf761e7882ae84775dc15c6b6d1793c25ad3a8a6a3c"
              }
            ],
            "initial_flag_disposition": "existing-adequate-for-verb",
            "reason": "For “Implement and configure security controls for Azure Container Instances and Azure Container Apps”, the current selected text teaches AKS/registry/container controls and distinct Functions/LogicApps/AppService/WAF/APIM inbound/outbound/backend configuration; application-platform security plus known-event Sentinel schema/rule/guarded-playbook and Copilot evidence. ACI versus Container Apps selects different orchestration/identity/network/ingress/revision surfaces; both receive image, identity, secret, egress and log checks rather than copied AKS settings.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "compute",
              "lab8"
            ]
          },
          {
            "wording": "Implement and configure security controls for Azure Functions, including authentication and network access",
            "objective_wording_sha256": "60ba1a1281b9fcc5792c0990c0e8c920a122a4718afee3664306c36fe544bea7",
            "group": "Implement security for application platform services",
            "group_number": 9,
            "objective_number": 5,
            "evidence_spans": [
              {
                "heading": "Secure containers, serverless, web apps, and APIs",
                "start_line": 255,
                "end_line": 279,
                "span_lf_sha256": "4ecec97b6648eb3229a4f7639307d1e26e2129fa54110fe4d5a19a151d2e27e6"
              },
              {
                "heading": "Lab 8: Application platform, Sentinel, and Copilot operations",
                "start_line": 481,
                "end_line": 481,
                "span_lf_sha256": "f3de4143a87719da6e1ffaf761e7882ae84775dc15c6b6d1793c25ad3a8a6a3c"
              }
            ],
            "initial_flag_disposition": "existing-adequate-for-verb",
            "reason": "For “Implement and configure security controls for Azure Functions, including authentication and network access”, the current selected text teaches AKS/registry/container controls and distinct Functions/LogicApps/AppService/WAF/APIM inbound/outbound/backend configuration; application-platform security plus known-event Sentinel schema/rule/guarded-playbook and Copilot evidence. Functions separate keys from identity and configure authentication, managed dependencies, private endpoint/outbound integration, restrictions/TLS/CORS and diagnostics with network/authorization tests.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "compute",
              "lab8"
            ]
          },
          {
            "wording": "Implement and configure security controls for Azure Logic Apps",
            "objective_wording_sha256": "7ea73084e442e52a72b374aa164bfd6a26846ae9c3a0a96985eadfd06e937e5c",
            "group": "Implement security for application platform services",
            "group_number": 9,
            "objective_number": 6,
            "evidence_spans": [
              {
                "heading": "Secure containers, serverless, web apps, and APIs",
                "start_line": 255,
                "end_line": 279,
                "span_lf_sha256": "4ecec97b6648eb3229a4f7639307d1e26e2129fa54110fe4d5a19a151d2e27e6"
              },
              {
                "heading": "Lab 8: Application platform, Sentinel, and Copilot operations",
                "start_line": 481,
                "end_line": 481,
                "span_lf_sha256": "f3de4143a87719da6e1ffaf761e7882ae84775dc15c6b6d1793c25ad3a8a6a3c"
              }
            ],
            "initial_flag_disposition": "existing-adequate-for-verb",
            "reason": "For “Implement and configure security controls for Azure Logic Apps”, the current selected text teaches AKS/registry/container controls and distinct Functions/LogicApps/AppService/WAF/APIM inbound/outbound/backend configuration; application-platform security plus known-event Sentinel schema/rule/guarded-playbook and Copilot evidence. Logic Apps hosting mode determines network/storage/identity; callback, connector/run-history and secure-input/output settings are configured with operational debugging tradeoffs.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "compute",
              "lab8"
            ]
          },
          {
            "wording": "Implement and configure security controls for Azure App Service",
            "objective_wording_sha256": "09e765eaa9cc25a186f1140fe77c417c63349de379f9db967b0d62d39a03b97e",
            "group": "Implement security for application platform services",
            "group_number": 9,
            "objective_number": 7,
            "evidence_spans": [
              {
                "heading": "Secure containers, serverless, web apps, and APIs",
                "start_line": 255,
                "end_line": 279,
                "span_lf_sha256": "4ecec97b6648eb3229a4f7639307d1e26e2129fa54110fe4d5a19a151d2e27e6"
              },
              {
                "heading": "Lab 8: Application platform, Sentinel, and Copilot operations",
                "start_line": 481,
                "end_line": 481,
                "span_lf_sha256": "f3de4143a87719da6e1ffaf761e7882ae84775dc15c6b6d1793c25ad3a8a6a3c"
              }
            ],
            "initial_flag_disposition": "existing-adequate-for-verb",
            "reason": "For “Implement and configure security controls for Azure App Service”, the current selected text teaches AKS/registry/container controls and distinct Functions/LogicApps/AppService/WAF/APIM inbound/outbound/backend configuration; application-platform security plus known-event Sentinel schema/rule/guarded-playbook and Copilot evidence. App Service inbound endpoint versus outbound VNet integration, authentication/managed identity, TLS, references, slots and diagnostics are configured as two independently tested flows.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "compute",
              "lab8"
            ]
          },
          {
            "wording": "Implement and configure Azure Web Application Firewall",
            "objective_wording_sha256": "17e12893f6bdbae9a7f0ce93d2d0a2ed726d2383c77cba1287495fa712f0cde0",
            "group": "Implement security for application platform services",
            "group_number": 9,
            "objective_number": 8,
            "evidence_spans": [
              {
                "heading": "Secure containers, serverless, web apps, and APIs",
                "start_line": 255,
                "end_line": 279,
                "span_lf_sha256": "4ecec97b6648eb3229a4f7639307d1e26e2129fa54110fe4d5a19a151d2e27e6"
              },
              {
                "heading": "Lab 8: Application platform, Sentinel, and Copilot operations",
                "start_line": 481,
                "end_line": 481,
                "span_lf_sha256": "f3de4143a87719da6e1ffaf761e7882ae84775dc15c6b6d1793c25ad3a8a6a3c"
              }
            ],
            "initial_flag_disposition": "existing-adequate-for-verb",
            "reason": "For “Implement and configure Azure Web Application Firewall”, the current selected text teaches AKS/registry/container controls and distinct Functions/LogicApps/AppService/WAF/APIM inbound/outbound/backend configuration; application-platform security plus known-event Sentinel schema/rule/guarded-playbook and Copilot evidence. WAF config chooses host/path, detection/prevention, managed/custom rules, minimal exclusion, TLS/origin restriction and logs; a reachable origin is the specific bypass test.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "compute",
              "lab8"
            ]
          },
          {
            "wording": "Implement security policies for back-end API protection by using API Management",
            "objective_wording_sha256": "bec3ea9718fb9d63717c3d4bab3e413a729192b0a4128d5e609316a80920ae96",
            "group": "Implement security for application platform services",
            "group_number": 9,
            "objective_number": 9,
            "evidence_spans": [
              {
                "heading": "Secure containers, serverless, web apps, and APIs",
                "start_line": 255,
                "end_line": 279,
                "span_lf_sha256": "4ecec97b6648eb3229a4f7639307d1e26e2129fa54110fe4d5a19a151d2e27e6"
              },
              {
                "heading": "7. Gateway success is not backend authorization",
                "start_line": 445,
                "end_line": 445,
                "span_lf_sha256": "a0fa5d9b903e50970a0554ba3cdc76cd56f3d37c1a27500babc5b1f446f0794b"
              },
              {
                "heading": "Lab 8: Application platform, Sentinel, and Copilot operations",
                "start_line": 481,
                "end_line": 481,
                "span_lf_sha256": "f3de4143a87719da6e1ffaf761e7882ae84775dc15c6b6d1793c25ad3a8a6a3c"
              }
            ],
            "initial_flag_disposition": "existing-adequate-for-verb",
            "reason": "For “Implement security policies for back-end API protection by using API Management”, the current selected text teaches AKS/registry/container controls and distinct Functions/LogicApps/AppService/WAF/APIM inbound/outbound/backend configuration; client JWT acceptance versus separate gateway-backend identity permission and bypass test; application-platform security plus known-event Sentinel schema/rule/guarded-playbook and Copilot evidence. APIM validates clients separately from managed-identity/mTLS/OAuth backend access, removes secrets, blocks direct origin, versions/tests fragments and checks both identities in Example7.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "compute",
              "gateway",
              "lab8"
            ]
          },
          {
            "wording": "Identify security risks by using Defender CSPM",
            "objective_wording_sha256": "ebfea976240028c85122ead3482d9f82ed984c12422122ccdff16f3fd7e0c91d",
            "group": "Manage security posture by using Defender for Cloud",
            "group_number": 10,
            "objective_number": 1,
            "evidence_spans": [
              {
                "heading": "Turn Defender for Cloud findings into controlled remediation",
                "start_line": 285,
                "end_line": 302,
                "span_lf_sha256": "7de5228cd8f484ac2d670bedb8720522aed51c4c696df8a4e2aaa043a0b3c8a4"
              }
            ],
            "initial_flag_disposition": "not-flagged-initially",
            "reason": "For “Identify security risks by using Defender CSPM”, the selected current teaching explains inventory/risk/owner/remediation/exemption workflow, plan/connector coverage and EASM ownership/false-positive checks. Its purpose, operation/design boundary and checks support this objective; this is editorial teaching coverage, not observed product execution.",
            "initial_depth_result": "substantive",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "posture"
            ]
          },
          {
            "wording": "Evaluate compliance against security frameworks by using Defender for Cloud",
            "objective_wording_sha256": "7decea7325191af420e05841de90c881cb03aa806a7bf290ee0f1c67bb5a0af1",
            "group": "Manage security posture by using Defender for Cloud",
            "group_number": 10,
            "objective_number": 2,
            "evidence_spans": [
              {
                "heading": "Turn Defender for Cloud findings into controlled remediation",
                "start_line": 285,
                "end_line": 302,
                "span_lf_sha256": "7de5228cd8f484ac2d670bedb8720522aed51c4c696df8a4e2aaa043a0b3c8a4"
              }
            ],
            "initial_flag_disposition": "not-flagged-initially",
            "reason": "For “Evaluate compliance against security frameworks by using Defender for Cloud”, the selected current teaching explains inventory/risk/owner/remediation/exemption workflow, plan/connector coverage and EASM ownership/false-positive checks. Its purpose, operation/design boundary and checks support this objective; this is editorial teaching coverage, not observed product execution.",
            "initial_depth_result": "substantive",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "posture"
            ]
          },
          {
            "wording": "Enable and configure Defender for Cloud workload protection plans",
            "objective_wording_sha256": "b025521d91efdfc7fa0dcfe610b9009c4dd9123e80a3e63e96060a89bc404e8f",
            "group": "Manage security posture by using Defender for Cloud",
            "group_number": 10,
            "objective_number": 3,
            "evidence_spans": [
              {
                "heading": "Turn Defender for Cloud findings into controlled remediation",
                "start_line": 285,
                "end_line": 302,
                "span_lf_sha256": "7de5228cd8f484ac2d670bedb8720522aed51c4c696df8a4e2aaa043a0b3c8a4"
              }
            ],
            "initial_flag_disposition": "existing-adequate-for-verb",
            "reason": "For “Enable and configure Defender for Cloud workload protection plans”, the current selected text teaches inventory/risk/owner/remediation/exemption workflow, plan/connector coverage and EASM ownership/false-positive checks. Workload plans are deliberately enabled at governed scope with component settings, pilot exclusions/billing and operational coverage checks; posture and workload protection remain separate.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "posture"
            ]
          },
          {
            "wording": "Connect hybrid cloud and multicloud environments to Defender for Cloud, including Amazon Web Services (AWS) and Google Cloud Platform (GCP)",
            "objective_wording_sha256": "1c7f0b7a2a08049d77419e412b97e35fd7066da2c90dee755f0fa725fc1516f0",
            "group": "Manage security posture by using Defender for Cloud",
            "group_number": 10,
            "objective_number": 4,
            "evidence_spans": [
              {
                "heading": "Turn Defender for Cloud findings into controlled remediation",
                "start_line": 285,
                "end_line": 302,
                "span_lf_sha256": "7de5228cd8f484ac2d670bedb8720522aed51c4c696df8a4e2aaa043a0b3c8a4"
              }
            ],
            "initial_flag_disposition": "existing-adequate-for-verb",
            "reason": "For “Connect hybrid cloud and multicloud environments to Defender for Cloud, including Amazon Web Services (AWS) and Google Cloud Platform (GCP)”, the current selected text teaches inventory/risk/owner/remediation/exemption workflow, plan/connector coverage and EASM ownership/false-positive checks. AWS/GCP connectors specify least-privilege account/project discovery, regional/service support, Arc/agentless/residency and removal, then verify per-asset coverage rather than connector-green status.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "posture"
            ]
          },
          {
            "wording": "Configure Microsoft Defender Vulnerability Management settings for Azure VMs",
            "objective_wording_sha256": "4ef7bc03c7085a20975c0db77aa0d6f463e4970a2b8441834b1d71a44f077377",
            "group": "Manage security posture by using Defender for Cloud",
            "group_number": 10,
            "objective_number": 5,
            "evidence_spans": [
              {
                "heading": "Harden servers and virtual machines across clouds",
                "start_line": 241,
                "end_line": 251,
                "span_lf_sha256": "ec7699a39b88ea2f9b4c55d52924eede9c036c5b215560714af9d8f5ed3b6cd3"
              },
              {
                "heading": "4. Separate scanning from live endpoint protection",
                "start_line": 431,
                "end_line": 431,
                "span_lf_sha256": "3c6680d28495592ae76ba59956db953edea1aae5444b89067b688df70c9acdaf"
              },
              {
                "heading": "Lab 7: Hybrid VM protection and recovery",
                "start_line": 477,
                "end_line": 477,
                "span_lf_sha256": "31e60acb5a48cf55a9dc1c7d2ee84acc4cc80884a9263bcb5d97fa8345a80435"
              }
            ],
            "initial_flag_disposition": "existing-adequate-for-verb",
            "reason": "For “Configure Microsoft Defender Vulnerability Management settings for Azure VMs”, the current selected text teaches the actual Defender for Servers/MDVM paragraph on vulnerability/EDR/snapshot configuration dependencies, software/vulnerability findings and exposure/exploitability/criticality-based triage, reinforced by sensor/scan coverage tests. VA findings are prioritized by exploitability/exposure/criticality/active threat and checked against supported plan/scan/sensor state; this is an operational settings/triage path rather than CVSS-only reporting.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "vm",
              "scanfixture",
              "lab7"
            ]
          },
          {
            "wording": "Discover unprotected assets and vulnerabilities by using Microsoft Defender External Attack Surface Management (EASM)",
            "objective_wording_sha256": "45d2b90e8f140f28cc92fc1da71dcc4d915ad8e97a66d4f6a4d91774cbaff81e",
            "group": "Manage security posture by using Defender for Cloud",
            "group_number": 10,
            "objective_number": 6,
            "evidence_spans": [
              {
                "heading": "Turn Defender for Cloud findings into controlled remediation",
                "start_line": 285,
                "end_line": 302,
                "span_lf_sha256": "7de5228cd8f484ac2d670bedb8720522aed51c4c696df8a4e2aaa043a0b3c8a4"
              }
            ],
            "initial_flag_disposition": "existing-adequate-for-verb",
            "reason": "For “Discover unprotected assets and vulnerabilities by using Microsoft Defender External Attack Surface Management (EASM)”, the current selected text teaches inventory/risk/owner/remediation/exemption workflow, plan/connector coverage and EASM ownership/false-positive checks. EASM seed→candidate discovery→ownership validation/tagging→false-positive removal→change monitoring→remediation is an explicit actionable outside-in workflow.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "posture"
            ]
          },
          {
            "wording": "Create and connect workspaces in Microsoft Sentinel",
            "objective_wording_sha256": "e29966584a92c5dc038b1223bb9ea9bb6a728ac3ef8319ef9b908772968b26b1",
            "group": "Implement activity and event collection in Microsoft Sentinel",
            "group_number": 11,
            "objective_number": 1,
            "evidence_spans": [
              {
                "heading": "Engineer Microsoft Sentinel ingestion before analytics",
                "start_line": 306,
                "end_line": 320,
                "span_lf_sha256": "5ce77f2eabe9dbfb2a9ecc6c3a2b44c3092e01c283fc21d65f09ba7d2b3ccb59"
              },
              {
                "heading": "Current release and onboarding boundaries",
                "start_line": 344,
                "end_line": 358,
                "span_lf_sha256": "33d9da723e05f1ba642f19b90a4ac53068be57ddd45b3a09a96c8c26b6316443"
              }
            ],
            "initial_flag_disposition": "existing-adequate-for-verb",
            "reason": "For “Create and connect workspaces in Microsoft Sentinel”, the current selected text teaches workspace/role/content/connector and Azure diagnostic settings, Syslog/CEF/Windows/custom-table/schema/automation/retention/PurviewAudit lineage; current release/onboarding uncertainties and Sentinel lake regional/CMK/query/support-offboarding boundaries. Tenant/region/workspace/ownership/retention/residency/volume/cost/access decisions precede connecting sources; current same-region lake onboarding/offboarding limits prevent treating workspace creation as a free reversible toggle.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "sentinel",
              "release"
            ]
          },
          {
            "wording": "Assign roles in Microsoft Sentinel",
            "objective_wording_sha256": "e6bed7729b793cc60d287901c0afa2c95947fd26c5595b780de8da1fd274ed5f",
            "group": "Implement activity and event collection in Microsoft Sentinel",
            "group_number": 11,
            "objective_number": 2,
            "evidence_spans": [
              {
                "heading": "Engineer Microsoft Sentinel ingestion before analytics",
                "start_line": 306,
                "end_line": 320,
                "span_lf_sha256": "5ce77f2eabe9dbfb2a9ecc6c3a2b44c3092e01c283fc21d65f09ba7d2b3ccb59"
              }
            ],
            "initial_flag_disposition": "existing-adequate-for-verb",
            "reason": "For “Assign roles in Microsoft Sentinel”, the current selected text teaches workspace/role/content/connector and Azure diagnostic settings, Syslog/CEF/Windows/custom-table/schema/automation/retention/PurviewAudit lineage. Least-privilege Sentinel/resource-context roles are separated from source and playbook identity; Lab8 documents workspace roles and proves known-event visibility.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "sentinel"
            ]
          },
          {
            "wording": "Implement and use content hub solutions",
            "objective_wording_sha256": "7d6b88ea5d4d59b021ba36976c97e2dff1d7e135690fb1af096baa5436b4a5bb",
            "group": "Implement activity and event collection in Microsoft Sentinel",
            "group_number": 11,
            "objective_number": 3,
            "evidence_spans": [
              {
                "heading": "Engineer Microsoft Sentinel ingestion before analytics",
                "start_line": 306,
                "end_line": 320,
                "span_lf_sha256": "5ce77f2eabe9dbfb2a9ecc6c3a2b44c3092e01c283fc21d65f09ba7d2b3ccb59"
              },
              {
                "heading": "Worked ingestion path: direct Windows events versus WEF",
                "start_line": 324,
                "end_line": 326,
                "span_lf_sha256": "fbe7aa2179ba439044ef5fd6794c961690d8050523ff9671d7aeb06083704f6b"
              }
            ],
            "initial_flag_disposition": "repaired-by-actual-packet",
            "reason": "For “Implement and use content hub solutions”, the current selected text teaches workspace/role/content/connector and Azure diagnostic settings, Syslog/CEF/Windows/custom-table/schema/automation/retention/PurviewAudit lineage; ContentHub→connector→DCR→machine→known-event setup and SecurityEvent versus WEF WindowsEvent query failure. For “Implement and use content hub solutions”: Content Hub→connector→DCR→machine association→event/table checks now teach collection setup; WEC/WEF WindowsEvent versus direct SecurityEvent makes the query-mismatch failure concrete.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [
              "sc500-windows-collection"
            ],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "sentinel",
              "windows"
            ]
          },
          {
            "wording": "Configure and use Microsoft data connectors for Azure resources",
            "objective_wording_sha256": "d9168669d9b527873776da4656e53fefef9acb9fc28728f8491b6e53758420e4",
            "group": "Implement activity and event collection in Microsoft Sentinel",
            "group_number": 11,
            "objective_number": 4,
            "evidence_spans": [
              {
                "heading": "Engineer Microsoft Sentinel ingestion before analytics",
                "start_line": 306,
                "end_line": 320,
                "span_lf_sha256": "5ce77f2eabe9dbfb2a9ecc6c3a2b44c3092e01c283fc21d65f09ba7d2b3ccb59"
              },
              {
                "heading": "Worked ingestion path: direct Windows events versus WEF",
                "start_line": 324,
                "end_line": 326,
                "span_lf_sha256": "fbe7aa2179ba439044ef5fd6794c961690d8050523ff9671d7aeb06083704f6b"
              }
            ],
            "initial_flag_disposition": "existing-adequate-for-verb",
            "reason": "For “Configure and use Microsoft data connectors for Azure resources”, the current selected text teaches existing Azure diagnostic-setting categories/destinations or policy deployment, followed by a known action traced into its table/parser/rule/incident/retention; this is separate from the Windows AMA/WEF addition. The existing Azure diagnostic-settings/policy paragraph already specifies categories/destinations and known-event source-to-detection verification. The Windows-only packet is adjacent collection depth and receives no actual repair credit for this Azure-resource diagnostic-setting objective.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [
              "sc500-windows-collection"
            ],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "sentinel",
              "windows"
            ]
          },
          {
            "wording": "Implement and configure syslog and Common Event Format (CEF) event collections",
            "objective_wording_sha256": "25121d86db1b866c58e6845eb366c6b4b5273370d6202e511300b94af673c621",
            "group": "Implement activity and event collection in Microsoft Sentinel",
            "group_number": 11,
            "objective_number": 5,
            "evidence_spans": [
              {
                "heading": "Engineer Microsoft Sentinel ingestion before analytics",
                "start_line": 306,
                "end_line": 320,
                "span_lf_sha256": "5ce77f2eabe9dbfb2a9ecc6c3a2b44c3092e01c283fc21d65f09ba7d2b3ccb59"
              }
            ],
            "initial_flag_disposition": "existing-adequate-for-verb",
            "reason": "For “Implement and configure syslog and Common Event Format (CEF) event collections”, the current selected text teaches workspace/role/content/connector and Azure diagnostic settings, Syslog/CEF/Windows/custom-table/schema/automation/retention/PurviewAudit lineage. AMA Syslog/CEF source→hardened forwarder→DCR/parser path includes facilities/severities, TLS, queue/disk, redundancy/time and failure evidence. Lab8 verifies source lineage.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "sentinel"
            ]
          },
          {
            "wording": "Implement and configure collection of Windows Security events by using data collection rules, including Windows Event Forwarding (WEF)",
            "objective_wording_sha256": "64dc550352d0af2a3e87b4c0e7ddada3d2b4be3e504452829285130f20ff5241",
            "group": "Implement activity and event collection in Microsoft Sentinel",
            "group_number": 11,
            "objective_number": 6,
            "evidence_spans": [
              {
                "heading": "Engineer Microsoft Sentinel ingestion before analytics",
                "start_line": 306,
                "end_line": 320,
                "span_lf_sha256": "5ce77f2eabe9dbfb2a9ecc6c3a2b44c3092e01c283fc21d65f09ba7d2b3ccb59"
              },
              {
                "heading": "Worked ingestion path: direct Windows events versus WEF",
                "start_line": 324,
                "end_line": 326,
                "span_lf_sha256": "fbe7aa2179ba439044ef5fd6794c961690d8050523ff9671d7aeb06083704f6b"
              }
            ],
            "initial_flag_disposition": "repaired-by-actual-packet",
            "reason": "For “Implement and configure collection of Windows Security events by using data collection rules, including Windows Event Forwarding (WEF)”, the current selected text teaches workspace/role/content/connector and Azure diagnostic settings, Syslog/CEF/Windows/custom-table/schema/automation/retention/PurviewAudit lineage; ContentHub→connector→DCR→machine→known-event setup and SecurityEvent versus WEF WindowsEvent query failure. For “Implement and configure collection of Windows Security events by using data collection rules, including Windows Event Forwarding (WEF)”: Content Hub→connector→DCR→machine association→event/table checks now teach collection setup; WEC/WEF WindowsEvent versus direct SecurityEvent makes the query-mismatch failure concrete.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [
              "sc500-windows-collection"
            ],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "sentinel",
              "windows"
            ]
          },
          {
            "wording": "Create custom log tables in the workspace to store ingested data",
            "objective_wording_sha256": "34626c553c83a6096d1f0182a760d6fe7a25f257a80f4cc0262ca8cc76ea37b6",
            "group": "Implement activity and event collection in Microsoft Sentinel",
            "group_number": 11,
            "objective_number": 7,
            "evidence_spans": [
              {
                "heading": "Engineer Microsoft Sentinel ingestion before analytics",
                "start_line": 306,
                "end_line": 320,
                "span_lf_sha256": "5ce77f2eabe9dbfb2a9ecc6c3a2b44c3092e01c283fc21d65f09ba7d2b3ccb59"
              }
            ],
            "initial_flag_disposition": "existing-adequate-for-verb",
            "reason": "For “Create custom log tables in the workspace to store ingested data”, the current selected text teaches workspace/role/content/connector and Azure diagnostic settings, Syslog/CEF/Windows/custom-table/schema/automation/retention/PurviewAudit lineage. Custom ingestion explicitly requires DCR/transformation, table schema, normalized timestamp fields, retention/access and parser, tested with malformed/missing/duplicate/delayed events. Exact portal field enumeration is thinner.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "sentinel"
            ]
          },
          {
            "wording": "Implement automation rules and playbooks in Microsoft Sentinel",
            "objective_wording_sha256": "22474ccaadd78f823227471220668e0c317379329c20710de69577f6b9aeef64",
            "group": "Implement activity and event collection in Microsoft Sentinel",
            "group_number": 11,
            "objective_number": 8,
            "evidence_spans": [
              {
                "heading": "Engineer Microsoft Sentinel ingestion before analytics",
                "start_line": 306,
                "end_line": 320,
                "span_lf_sha256": "5ce77f2eabe9dbfb2a9ecc6c3a2b44c3092e01c283fc21d65f09ba7d2b3ccb59"
              }
            ],
            "initial_flag_disposition": "existing-adequate-for-verb",
            "reason": "For “Implement automation rules and playbooks in Microsoft Sentinel”, the current selected text teaches workspace/role/content/connector and Azure diagnostic settings, Syslog/CEF/Windows/custom-table/schema/automation/retention/PurviewAudit lineage. Rule triage/action→LogicApp playbook identity/trigger authorization→guarded action path includes least privilege, idempotency/approval, retries and rollback plus rule/run-failure evidence.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "sentinel"
            ]
          },
          {
            "wording": "Implement data retention in Microsoft Sentinel data stores",
            "objective_wording_sha256": "e8fce9ca24a4bf5aec40baa86363670b9ef14dbf7fbe0912f05716089f38d1da",
            "group": "Implement activity and event collection in Microsoft Sentinel",
            "group_number": 11,
            "objective_number": 9,
            "evidence_spans": [
              {
                "heading": "Engineer Microsoft Sentinel ingestion before analytics",
                "start_line": 306,
                "end_line": 320,
                "span_lf_sha256": "5ce77f2eabe9dbfb2a9ecc6c3a2b44c3092e01c283fc21d65f09ba7d2b3ccb59"
              },
              {
                "heading": "Current release and onboarding boundaries",
                "start_line": 344,
                "end_line": 358,
                "span_lf_sha256": "33d9da723e05f1ba642f19b90a4ac53068be57ddd45b3a09a96c8c26b6316443"
              }
            ],
            "initial_flag_disposition": "existing-adequate-for-verb",
            "reason": "For “Implement data retention in Microsoft Sentinel data stores”, the current selected text teaches workspace/role/content/connector and Azure diagnostic settings, Syslog/CEF/Windows/custom-table/schema/automation/retention/PurviewAudit lineage; current release/onboarding uncertainties and Sentinel lake regional/CMK/query/support-offboarding boundaries. Interactive/long-term class is selected by investigation/query/restore/deletion requirement and the current lake CMK/regional/support-offboarding boundaries are explicit.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "sentinel",
              "release"
            ]
          },
          {
            "wording": "Query Microsoft Purview Audit in Defender XDR",
            "objective_wording_sha256": "d716f5395673690770a7d0c265e1e7442f780ae7a388b854612f932c66a0bc13",
            "group": "Implement activity and event collection in Microsoft Sentinel",
            "group_number": 11,
            "objective_number": 10,
            "evidence_spans": [
              {
                "heading": "Engineer Microsoft Sentinel ingestion before analytics",
                "start_line": 306,
                "end_line": 320,
                "span_lf_sha256": "5ce77f2eabe9dbfb2a9ecc6c3a2b44c3092e01c283fc21d65f09ba7d2b3ccb59"
              }
            ],
            "initial_flag_disposition": "existing-adequate-for-verb",
            "reason": "For “Query Microsoft Purview Audit in Defender XDR”, the current selected text teaches workspace/role/content/connector and Azure diagnostic settings, Syslog/CEF/Windows/custom-table/schema/automation/retention/PurviewAudit lineage. Purview Audit queries specify access/license/workload/retention/time scope and preserve parameters/exports; missing-event hypotheses distinguish absent action from aged/hidden/unemitted evidence.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "sentinel"
            ]
          },
          {
            "wording": "Configure workspaces for Security Copilot",
            "objective_wording_sha256": "0be5ff1ec3e963817819d1657705fc29aba801d077ac6ea44a0468ece4c7c7da",
            "group": "Implement Microsoft Security Copilot",
            "group_number": 12,
            "objective_number": 1,
            "evidence_spans": [
              {
                "heading": "Operate Microsoft Security Copilot with the same rigor as other privileged tooling",
                "start_line": 330,
                "end_line": 340,
                "span_lf_sha256": "4b4c9f5cea742326ef26d6dba4170237fcfd90602dac511207587a4a2e3c1df9"
              }
            ],
            "initial_flag_disposition": "existing-adequate-for-verb",
            "reason": "For “Configure workspaces for Security Copilot”, the current selected text teaches workspace/capacity/platform/source permissions and plugin/agent identity/data/action/recovery governance. Workspace ownership/capacity/location/retention/sharing and permitted workflows precede prompting, with platform versus source roles separately checked in the real Sentinel read case.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "copilot"
            ]
          },
          {
            "wording": "Manage permissions and roles in Security Copilot",
            "objective_wording_sha256": "8dbd04c3f03d42db00fb0c6614d6575d6df60662c2c1f880607d52dd7afaed73",
            "group": "Implement Microsoft Security Copilot",
            "group_number": 12,
            "objective_number": 2,
            "evidence_spans": [
              {
                "heading": "Operate Microsoft Security Copilot with the same rigor as other privileged tooling",
                "start_line": 330,
                "end_line": 340,
                "span_lf_sha256": "4b4c9f5cea742326ef26d6dba4170237fcfd90602dac511207587a4a2e3c1df9"
              }
            ],
            "initial_flag_disposition": "not-flagged-initially",
            "reason": "For “Manage permissions and roles in Security Copilot”, the selected current teaching explains workspace/capacity/platform/source permissions and plugin/agent identity/data/action/recovery governance. Its purpose, operation/design boundary and checks support this objective; this is editorial teaching coverage, not observed product execution.",
            "initial_depth_result": "substantive",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "copilot"
            ]
          },
          {
            "wording": "Enable and configure plugins",
            "objective_wording_sha256": "03a46b2f0bf0935ce799b969b770d8b7ecbbb2029af360226c9cf1dfe70bdec8",
            "group": "Implement Microsoft Security Copilot",
            "group_number": 12,
            "objective_number": 3,
            "evidence_spans": [
              {
                "heading": "Operate Microsoft Security Copilot with the same rigor as other privileged tooling",
                "start_line": 330,
                "end_line": 340,
                "span_lf_sha256": "4b4c9f5cea742326ef26d6dba4170237fcfd90602dac511207587a4a2e3c1df9"
              }
            ],
            "initial_flag_disposition": "existing-adequate-for-verb",
            "reason": "For “Enable and configure plugins”, the current selected text teaches workspace/capacity/platform/source permissions and plugin/agent identity/data/action/recovery governance. Plugin publisher/version→connection identity/permissions→data/geography/logs→bounded prompts/actions→owner/revoke path supplies enablement and negative tests; unused plugins are disabled.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "copilot"
            ]
          },
          {
            "wording": "Enable and configure Microsoft agents and Security Store agents",
            "objective_wording_sha256": "938e7d104bde35df92849455924f8ee0146cdcfe5674c0b61fd38d6eab3889de",
            "group": "Implement Microsoft Security Copilot",
            "group_number": 12,
            "objective_number": 4,
            "evidence_spans": [
              {
                "heading": "Operate Microsoft Security Copilot with the same rigor as other privileged tooling",
                "start_line": 330,
                "end_line": 340,
                "span_lf_sha256": "4b4c9f5cea742326ef26d6dba4170237fcfd90602dac511207587a4a2e3c1df9"
              }
            ],
            "initial_flag_disposition": "existing-adequate-for-verb",
            "reason": "For “Enable and configure Microsoft agents and Security Store agents”, the current selected text teaches workspace/capacity/platform/source permissions and plugin/agent identity/data/action/recovery governance. Agent enablement reviews publisher, source, permissions, trigger/action, approval, cost, telemetry and rollback, starts read-only and checks outcome; generated claims require cited incident evidence.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "copilot"
            ]
          }
        ],
        "disposition_counts": {
          "not-flagged-initially": 33,
          "existing-adequate-for-verb": 52,
          "repaired-by-actual-packet": 2
        }
      },
      {
        "exam_code": "AB-250",
        "guide_path": "guides/AB-250-transforming-contact-center-experiences-ai-dynamics-365.md",
        "guide_lf_sha256": "4d10c415eb14245dd8dc4d38fee8f2ad3f69f332ed32ff791e40114c3855947f",
        "objective_raw_sha256": "852f325868be15013f6b67d2fe5e0152744d4e1d8c1f86a82874b2eecaca5e11",
        "objective_count": 119,
        "current_mapping": [
          {
            "wording": "Configure the Copilot Service workspace",
            "objective_wording_sha256": "dd34ce435486dc4135a3ca5e234e906dd152b3938792424b8ee6a65d939eace5",
            "group": "Implement Dynamics 365 Contact Center",
            "group_number": 1,
            "objective_number": 1,
            "evidence_spans": [
              {
                "heading": "Configure workspace, agents and operational helpers",
                "start_line": 81,
                "end_line": 91,
                "span_lf_sha256": "0f92968f3e5c5c9823b08f6e85807e18c2e2ce65cec26c7a269f0d4d77612171"
              },
              {
                "heading": "Configure productivity tools",
                "start_line": 318,
                "end_line": 324,
                "span_lf_sha256": "f7e8a3dc5654c661d03a34a4fb9e22027fd7798ba174c8a5c18fbb48e22e3bed"
              }
            ],
            "initial_flag_disposition": "existing-adequate-for-verb",
            "reason": "For “Configure the Copilot Service workspace”, the current selected text teaches persona workspace/agent roles, ServiceOperations supported setup, simulation and rollout setting limits; tools/panel/collaboration/context boundaries, actual persona setup and server-to-server messaging create/header/webhook contract. Workspace configuration proceeds by persona-specific profiles/templates, channels/tools and restricted transcript/customer rights, with a later actual profile pilot that checks assigned/unassigned users.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "workspace",
              "productivity"
            ]
          },
          {
            "wording": "Configure and extend connectors for Dynamics 365 Contact Center",
            "objective_wording_sha256": "cb3c1e41f9937b7002dc511bb28404d15087a45885fed8836ff9cca2a77efdee",
            "group": "Implement Dynamics 365 Contact Center",
            "group_number": 1,
            "objective_number": 2,
            "evidence_spans": [
              {
                "heading": "Choose the architecture and deployment mode",
                "start_line": 67,
                "end_line": 77,
                "span_lf_sha256": "96dd0cdc9dc0e16b6fb2ba41c0bd5f08b19434806406e486657e14903148f4cf"
              }
            ],
            "initial_flag_disposition": "not-flagged-initially",
            "reason": "For “Configure and extend connectors for Dynamics 365 Contact Center”, the selected current teaching explains standalone/embedded/thirdparty integration choice, actual CRM sync/embed setup and connector/TCO contracts. Its purpose, operation/design boundary and checks support this objective; this is editorial teaching coverage, not observed product execution.",
            "initial_depth_result": "substantive",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "architecture"
            ]
          },
          {
            "wording": "Configure embedded Dynamics 365 Contact Center mode",
            "objective_wording_sha256": "ccb6315a1a544e7c4e626374609d2cc7c9348ce8e4955a1fa7335ab4cce7b0ce",
            "group": "Implement Dynamics 365 Contact Center",
            "group_number": 1,
            "objective_number": 3,
            "evidence_spans": [
              {
                "heading": "Choose the architecture and deployment mode",
                "start_line": 67,
                "end_line": 77,
                "span_lf_sha256": "96dd0cdc9dc0e16b6fb2ba41c0bd5f08b19434806406e486657e14903148f4cf"
              }
            ],
            "initial_flag_disposition": "not-flagged-initially",
            "reason": "For “Configure embedded Dynamics 365 Contact Center mode”, the selected current teaching explains standalone/embedded/thirdparty integration choice, actual CRM sync/embed setup and connector/TCO contracts. Its purpose, operation/design boundary and checks support this objective; this is editorial teaching coverage, not observed product execution.",
            "initial_depth_result": "substantive",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "architecture"
            ]
          },
          {
            "wording": "Configure Copilot for third-party CCaaS solutions",
            "objective_wording_sha256": "4bdebaedb5cda1c2ec8c6df54b965e2c44a65c8619cd22d6411fc6c12fcea509",
            "group": "Implement Dynamics 365 Contact Center",
            "group_number": 1,
            "objective_number": 4,
            "evidence_spans": [
              {
                "heading": "Choose the architecture and deployment mode",
                "start_line": 67,
                "end_line": 77,
                "span_lf_sha256": "96dd0cdc9dc0e16b6fb2ba41c0bd5f08b19434806406e486657e14903148f4cf"
              }
            ],
            "initial_flag_disposition": "existing-adequate-for-verb",
            "reason": "For “Configure Copilot for third-party CCaaS solutions”, the current selected text teaches standalone/embedded/thirdparty integration choice, actual CRM sync/embed setup and connector/TCO contracts. The architecture distinguishes retained third-party CCaaS assistance from replacing the platform, then gives connector identity/context/mapping/partial-failure checks; deployment mode and source authorization remain explicit.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "architecture"
            ]
          },
          {
            "wording": "Enable agent simulation to evaluate journeys",
            "objective_wording_sha256": "817fbb3073a8f2c03d26be1b86d2fb702eed92230c6e717aa259eb85141edad2",
            "group": "Implement Dynamics 365 Contact Center",
            "group_number": 1,
            "objective_number": 5,
            "evidence_spans": [
              {
                "heading": "Configure workspace, agents and operational helpers",
                "start_line": 81,
                "end_line": 91,
                "span_lf_sha256": "0f92968f3e5c5c9823b08f6e85807e18c2e2ce65cec26c7a269f0d4d77612171"
              },
              {
                "heading": "Worked example 2 — Simulation scope and a rough budget",
                "start_line": 117,
                "end_line": 120,
                "span_lf_sha256": "4dc535cf84bfea1adc7badafc4d641435651cedc081f461a88802babf114eadb"
              }
            ],
            "initial_flag_disposition": "not-flagged-initially",
            "reason": "For “Enable agent simulation to evaluate journeys”, the selected current teaching explains persona workspace/agent roles, ServiceOperations supported setup, simulation and rollout setting limits; bounded English inbound simulation duration/concurrency and consumption arithmetic. Its purpose, operation/design boundary and checks support this objective; this is editorial teaching coverage, not observed product execution.",
            "initial_depth_result": "substantive",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "workspace",
              "simulation"
            ]
          },
          {
            "wording": "Enable the Health Agent to proactively investigate issues",
            "objective_wording_sha256": "1c3074679136749400c4f4424387c11a63a1e9f1bef12c9922e27d798ac5b5c2",
            "group": "Implement Dynamics 365 Contact Center",
            "group_number": 1,
            "objective_number": 6,
            "evidence_spans": [
              {
                "heading": "Configure workspace, agents and operational helpers",
                "start_line": 81,
                "end_line": 91,
                "span_lf_sha256": "0f92968f3e5c5c9823b08f6e85807e18c2e2ce65cec26c7a269f0d4d77612171"
              }
            ],
            "initial_flag_disposition": "existing-adequate-for-verb",
            "reason": "For “Enable the Health Agent to proactively investigate issues”, the current selected text teaches persona workspace/agent roles, ServiceOperations supported setup, simulation and rollout setting limits. Service Operations diagnostics identifies role, Dataverse/MCP and ApplicationInsights dependencies and its actual supported/unsupported configuration operations. The old Health Agent objective name is preserved rather than falsely equated to every newer agent label.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "workspace"
            ]
          },
          {
            "wording": "Enable agents to perform transformation, environment migration, and configuration",
            "objective_wording_sha256": "5b48063df6c2d796d74a99150c8460936a34d9cb819dec70f71e541ebf4776da",
            "group": "Implement Dynamics 365 Contact Center",
            "group_number": 1,
            "objective_number": 7,
            "evidence_spans": [
              {
                "heading": "Configure workspace, agents and operational helpers",
                "start_line": 81,
                "end_line": 91,
                "span_lf_sha256": "0f92968f3e5c5c9823b08f6e85807e18c2e2ce65cec26c7a269f0d4d77612171"
              },
              {
                "heading": "Apply ALM and environment governance",
                "start_line": 95,
                "end_line": 99,
                "span_lf_sha256": "829f57fcf8c757f4b2fbe159716d885f11d0eb9dab3bc3f098ce7def3754cb45"
              }
            ],
            "initial_flag_disposition": "existing-adequate-for-verb",
            "reason": "For “Enable agents to perform transformation, environment migration, and configuration”, the current selected text teaches persona workspace/agent roles, ServiceOperations supported setup, simulation and rollout setting limits; solution/reference/environment/dependency versioned deployment and calendar/number/rollback exceptions. Agentic setup is bounded to supported queue/workstream/unconditional-route changes, while migration/ALM records environment-specific dependencies, export/target verification and rollback; a rollout plan is not a universal disable switch.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "workspace",
              "alm"
            ]
          },
          {
            "wording": "Manage and roll out agents by using the Agent hub",
            "objective_wording_sha256": "3c0e80f3bdee86a388e0769b04b85ce144d350616e5b9ce26e5b80d29aa6e282",
            "group": "Deploy Dynamics 365 Contact Center",
            "group_number": 2,
            "objective_number": 1,
            "evidence_spans": [
              {
                "heading": "Apply ALM and environment governance",
                "start_line": 95,
                "end_line": 99,
                "span_lf_sha256": "829f57fcf8c757f4b2fbe159716d885f11d0eb9dab3bc3f098ce7def3754cb45"
              },
              {
                "heading": "Configure workspace, agents and operational helpers",
                "start_line": 81,
                "end_line": 91,
                "span_lf_sha256": "0f92968f3e5c5c9823b08f6e85807e18c2e2ce65cec26c7a269f0d4d77612171"
              }
            ],
            "initial_flag_disposition": "existing-adequate-for-verb",
            "reason": "For “Manage and roll out agents by using the Agent hub”, the current selected text teaches solution/reference/environment/dependency versioned deployment and calendar/number/rollback exceptions; persona workspace/agent roles, ServiceOperations supported setup, simulation and rollout setting limits. Agent hub rollout uses pilot cohort, supported intents/channel/autonomy and existing settings; deletion/deactivation is checked separately against retained Intent/Knowledge and removed Case rules.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "alm",
              "workspace"
            ]
          },
          {
            "wording": "Create solutions for Dynamics 365 Contact Center deployments",
            "objective_wording_sha256": "12938c3eda8a71e987c6b9c0fde1ec7f17ba7c18567f5bd065e4f024873e64e5",
            "group": "Deploy Dynamics 365 Contact Center",
            "group_number": 2,
            "objective_number": 2,
            "evidence_spans": [
              {
                "heading": "Apply ALM and environment governance",
                "start_line": 95,
                "end_line": 99,
                "span_lf_sha256": "829f57fcf8c757f4b2fbe159716d885f11d0eb9dab3bc3f098ce7def3754cb45"
              },
              {
                "heading": "Configure workspace, agents and operational helpers",
                "start_line": 81,
                "end_line": 91,
                "span_lf_sha256": "0f92968f3e5c5c9823b08f6e85807e18c2e2ce65cec26c7a269f0d4d77612171"
              }
            ],
            "initial_flag_disposition": "existing-adequate-for-verb",
            "reason": "For “Create solutions for Dynamics 365 Contact Center deployments”, the current selected text teaches solution/reference/environment/dependency versioned deployment and calendar/number/rollback exceptions; persona workspace/agent roles, ServiceOperations supported setup, simulation and rollout setting limits. Solution creation includes publisher, environment variables, connection references and configuration/component dependencies before ordered import/validation; calendars/numbers are explicit nonordinary migration cases.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "alm",
              "workspace"
            ]
          },
          {
            "wording": "Configure application lifecycle management (ALM) for Dynamics 365 Contact Center deployments",
            "objective_wording_sha256": "665bcf7eec05440e24cc3e79f6015e993c9a1c1dfc3e1fa5a2c2f34071c64dce",
            "group": "Deploy Dynamics 365 Contact Center",
            "group_number": 2,
            "objective_number": 3,
            "evidence_spans": [
              {
                "heading": "Apply ALM and environment governance",
                "start_line": 95,
                "end_line": 99,
                "span_lf_sha256": "829f57fcf8c757f4b2fbe159716d885f11d0eb9dab3bc3f098ce7def3754cb45"
              },
              {
                "heading": "Configure workspace, agents and operational helpers",
                "start_line": 81,
                "end_line": 91,
                "span_lf_sha256": "0f92968f3e5c5c9823b08f6e85807e18c2e2ce65cec26c7a269f0d4d77612171"
              }
            ],
            "initial_flag_disposition": "existing-adequate-for-verb",
            "reason": "For “Configure application lifecycle management (ALM) for Dynamics 365 Contact Center deployments”, the current selected text teaches solution/reference/environment/dependency versioned deployment and calendar/number/rollback exceptions; persona workspace/agent roles, ServiceOperations supported setup, simulation and rollout setting limits. Separate dev/test/prod, versioned prompts/tools/knowledge, automated validation and secret/connection/rollback checks teach ALM as a controlled deployment sequence.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "alm",
              "workspace"
            ]
          },
          {
            "wording": "Manage an omnichannel environment",
            "objective_wording_sha256": "5492ee5eea76da82da5bd5a3630b53f1a2f3748f5b3efec755a9114902d91c70",
            "group": "Deploy Dynamics 365 Contact Center",
            "group_number": 2,
            "objective_number": 4,
            "evidence_spans": [
              {
                "heading": "Apply ALM and environment governance",
                "start_line": 95,
                "end_line": 99,
                "span_lf_sha256": "829f57fcf8c757f4b2fbe159716d885f11d0eb9dab3bc3f098ce7def3754cb45"
              },
              {
                "heading": "Configure workspace, agents and operational helpers",
                "start_line": 81,
                "end_line": 91,
                "span_lf_sha256": "0f92968f3e5c5c9823b08f6e85807e18c2e2ce65cec26c7a269f0d4d77612171"
              }
            ],
            "initial_flag_disposition": "existing-adequate-for-verb",
            "reason": "For “Manage an omnichannel environment”, the current selected text teaches solution/reference/environment/dependency versioned deployment and calendar/number/rollback exceptions; persona workspace/agent roles, ServiceOperations supported setup, simulation and rollout setting limits. Environment management combines identities/licenses/roles, capacity, connections, target configuration and calendars/telephony migration boundaries rather than assuming a copied environment is operational.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "alm",
              "workspace"
            ]
          },
          {
            "wording": "Configure user settings",
            "objective_wording_sha256": "13e45a4810907dc3425dd6bcfc283680f17343b9c55d0bfe64bd29f592063889",
            "group": "Manage users",
            "group_number": 3,
            "objective_number": 1,
            "evidence_spans": [
              {
                "heading": "Manage users, security and capacity",
                "start_line": 103,
                "end_line": 107,
                "span_lf_sha256": "99f6046afe169e986ec312663bfc3ce09ca580d74bbb4087e6dc3a22ddfebf36"
              }
            ],
            "initial_flag_disposition": "existing-adequate-for-verb",
            "reason": "For “Configure user settings”, the current selected text teaches identity/license/role/persona/bookable-resource/presence/capacity assignment and restricted data access. User settings coordinate license/role/persona, presence, capacity and operating hours, with individual persona access and assignment eligibility tests.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "users"
            ]
          },
          {
            "wording": "Create user accounts",
            "objective_wording_sha256": "ddb6c0d3cd7edfa1ef192e61704c671da1b129858f480a9bed9d71a5bdcf269c",
            "group": "Manage users",
            "group_number": 3,
            "objective_number": 2,
            "evidence_spans": [
              {
                "heading": "Manage users, security and capacity",
                "start_line": 103,
                "end_line": 107,
                "span_lf_sha256": "99f6046afe169e986ec312663bfc3ce09ca580d74bbb4087e6dc3a22ddfebf36"
              }
            ],
            "initial_flag_disposition": "existing-adequate-for-verb",
            "reason": "For “Create user accounts”, the current selected text teaches identity/license/role/persona/bookable-resource/presence/capacity assignment and restricted data access. Provision identity→license→representative/supervisor/admin role and bookable-resource/capacity dependencies supplies the account-ready sequence; an identity alone is not routing-ready.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "users"
            ]
          },
          {
            "wording": "Manage security roles, including custom security roles and personas",
            "objective_wording_sha256": "407d99cfd65891a11b54b55442fcaf196685a7962173e9ec164bdfe2b30e5926",
            "group": "Manage users",
            "group_number": 3,
            "objective_number": 3,
            "evidence_spans": [
              {
                "heading": "Manage users, security and capacity",
                "start_line": 103,
                "end_line": 107,
                "span_lf_sha256": "99f6046afe169e986ec312663bfc3ce09ca580d74bbb4087e6dc3a22ddfebf36"
              }
            ],
            "initial_flag_disposition": "existing-adequate-for-verb",
            "reason": "For “Manage security roles, including custom security roles and personas”, the current selected text teaches identity/license/role/persona/bookable-resource/presence/capacity assignment and restricted data access. Custom roles begin with job duties and separated administrator/content/routing/quality/analytics responsibility, then test each persona against transcripts/recordings/customer/knowledge access.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "users"
            ]
          },
          {
            "wording": "Manage capacity profiles",
            "objective_wording_sha256": "2b41147c996298046f5de5238ea854ab87cee0d97aba0ffef906b558c978f12d",
            "group": "Manage users",
            "group_number": 3,
            "objective_number": 4,
            "evidence_spans": [
              {
                "heading": "Manage users, security and capacity",
                "start_line": 103,
                "end_line": 107,
                "span_lf_sha256": "99f6046afe169e986ec312663bfc3ce09ca580d74bbb4087e6dc3a22ddfebf36"
              },
              {
                "heading": "Worked example 1 — Capacity is an intersection",
                "start_line": 111,
                "end_line": 113,
                "span_lf_sha256": "b36517414fd51201b744a9a354c2311e499684a517ceef8eb09b80cc08f8d6b1"
              }
            ],
            "initial_flag_disposition": "not-flagged-initially",
            "reason": "For “Manage capacity profiles”, the selected current teaching explains identity/license/role/persona/bookable-resource/presence/capacity assignment and restricted data access; intersection of daily/high-priority/normal capacities and non-eviction after lower limits. Its purpose, operation/design boundary and checks support this objective; this is editorial teaching coverage, not observed product execution.",
            "initial_depth_result": "substantive",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "users",
              "capacity"
            ]
          },
          {
            "wording": "Configure the chat channel",
            "objective_wording_sha256": "570983f92159f2f8263a227375c69e4e01d536c149f53790f929713422b1e85d",
            "group": "Configure chat and digital channels",
            "group_number": 4,
            "objective_number": 1,
            "evidence_spans": [
              {
                "heading": "Configure chat and digital engagement",
                "start_line": 126,
                "end_line": 134,
                "span_lf_sha256": "6936d379d80cb739a6f8c6367052748e3e94de74acb0006479385627ea92cc0b"
              }
            ],
            "initial_flag_disposition": "existing-adequate-for-verb",
            "reason": "For “Configure the chat channel”, the current selected text teaches channel/workstream/widget/survey/context/authentication/translation/attachment/availability and customer-identity tests. Channel→workstream→context/classification/routing is explicit; widget identity/availability/survey/attachments/escalation settings are tested as one digital interaction path.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "chat"
            ]
          },
          {
            "wording": "Configure the record-based channel",
            "objective_wording_sha256": "0d4ccd196b2cb1e2ef9656e1b5aa19a4361a1a0dcb789611d170af5fc1167766",
            "group": "Configure chat and digital channels",
            "group_number": 4,
            "objective_number": 2,
            "evidence_spans": [
              {
                "heading": "Configure chat and digital engagement",
                "start_line": 126,
                "end_line": 134,
                "span_lf_sha256": "6936d379d80cb739a6f8c6367052748e3e94de74acb0006479385627ea92cc0b"
              },
              {
                "heading": "Build basic and unified routing",
                "start_line": 291,
                "end_line": 306,
                "span_lf_sha256": "e10b3df0e2dd33fe299bf2fc7df4fefd1ea704b13de7b8ecd9ef565479a1bfe6"
              },
              {
                "heading": "Design queues and capacity behavior",
                "start_line": 279,
                "end_line": 287,
                "span_lf_sha256": "bc233a63c8147b7dd7f2e8ba231e2ff1633d1ede9c73b1bc14c945987becec3e"
              },
              {
                "heading": "Manage users, security and capacity",
                "start_line": 103,
                "end_line": 107,
                "span_lf_sha256": "99f6046afe169e986ec312663bfc3ce09ca580d74bbb4087e6dc3a22ddfebf36"
              }
            ],
            "initial_flag_disposition": "existing-adequate-for-verb",
            "reason": "For “Configure the record-based channel”, the current selected text teaches channel/workstream/widget/survey/context/authentication/translation/attachment/availability and customer-identity tests; workstream/context→classification→route/queue→skills/AI/intent/preferred/record/basic assignment with diagnostics; compatible queue types/member/priority/hours/capacity and assignment/overflow/fallback evaluation/failure; identity/license/role/persona/bookable-resource/presence/capacity assignment and restricted data access. Record intake is explicitly separated from messaging/voice queue compatibility, then classified/routed/assigned with different capacity-release rules; the ten-case routing lab tests that path.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "chat",
              "routing",
              "queue",
              "users"
            ]
          },
          {
            "wording": "Configure digital channels",
            "objective_wording_sha256": "b987ddcb7c7f2188ffc23649158ef51bfc6b57c53062cae46213766dc91e7559",
            "group": "Configure chat and digital channels",
            "group_number": 4,
            "objective_number": 3,
            "evidence_spans": [
              {
                "heading": "Configure chat and digital engagement",
                "start_line": 126,
                "end_line": 134,
                "span_lf_sha256": "6936d379d80cb739a6f8c6367052748e3e94de74acb0006479385627ea92cc0b"
              }
            ],
            "initial_flag_disposition": "existing-adequate-for-verb",
            "reason": "For “Configure digital channels”, the current selected text teaches channel/workstream/widget/survey/context/authentication/translation/attachment/availability and customer-identity tests. Provider/region/consent/identity/retention are prerequisites to supported digital setup, followed by workstream/routing and closure/masking evidence; Apple onboarding retirement is kept separate.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "chat"
            ]
          },
          {
            "wording": "Configure and embed a chat widget",
            "objective_wording_sha256": "adbaf27a44cbca53f5b193547b808b7e3e52b47c3db38414c47587c13a0f041e",
            "group": "Configure chat and digital channels",
            "group_number": 4,
            "objective_number": 4,
            "evidence_spans": [
              {
                "heading": "Configure chat and digital engagement",
                "start_line": 126,
                "end_line": 134,
                "span_lf_sha256": "6936d379d80cb739a6f8c6367052748e3e94de74acb0006479385627ea92cc0b"
              }
            ],
            "initial_flag_disposition": "existing-adequate-for-verb",
            "reason": "For “Configure and embed a chat widget”, the current selected text teaches channel/workstream/widget/survey/context/authentication/translation/attachment/availability and customer-identity tests. Widget domain/branding/authentication/context/availability/file/proactive/escalation configuration is paired with invalid token, customer ambiguity and source-access checks.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "chat"
            ]
          },
          {
            "wording": "Configure proactive chat",
            "objective_wording_sha256": "05dbafc760ec9d33e23a6ff1224f680116e4d85d25b9e544da596d26007c24cd",
            "group": "Configure chat and digital channels",
            "group_number": 4,
            "objective_number": 5,
            "evidence_spans": [
              {
                "heading": "Configure chat and digital engagement",
                "start_line": 126,
                "end_line": 134,
                "span_lf_sha256": "6936d379d80cb739a6f8c6367052748e3e94de74acb0006479385627ea92cc0b"
              },
              {
                "heading": "Configure proactive outbound engagement",
                "start_line": 203,
                "end_line": 209,
                "span_lf_sha256": "99ca666e505583faa397e0c658332c0e8c9250612ef33dfa2346cea4b95c1b4d"
              }
            ],
            "initial_flag_disposition": "existing-adequate-for-verb",
            "reason": "For “Configure proactive chat”, the current selected text teaches channel/workstream/widget/survey/context/authentication/translation/attachment/availability and customer-identity tests; audience/workstream/trigger/dial-mode/priority/timezone/quiet/retry/suppression/dashboard and queued-cancel behavior. Invitation conditions are separated from outbound campaigns, with allowed audience/consent/quiet hours/suppression/stop behavior and routing fallback checks.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "chat",
              "proactive"
            ]
          },
          {
            "wording": "Configure pre-chat surveys",
            "objective_wording_sha256": "147fe05c6fd7e211754f64046e9ed386c51e86a437a9a06aac3c184ea5597b6a",
            "group": "Configure chat and digital channels",
            "group_number": 4,
            "objective_number": 6,
            "evidence_spans": [
              {
                "heading": "Configure chat and digital engagement",
                "start_line": 126,
                "end_line": 134,
                "span_lf_sha256": "6936d379d80cb739a6f8c6367052748e3e94de74acb0006479385627ea92cc0b"
              }
            ],
            "initial_flag_disposition": "existing-adequate-for-verb",
            "reason": "For “Configure pre-chat surveys”, the current selected text teaches channel/workstream/widget/survey/context/authentication/translation/attachment/availability and customer-identity tests. Pre-chat fields collect bounded typed context; untrusted customer claims are separated from verified authentication and ambiguity-safe customer matching.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "chat"
            ]
          },
          {
            "wording": "Manage quick replies",
            "objective_wording_sha256": "7c117edbd7644758be6dd1a4316e67f39612bddd6924784158c642610af9ac1e",
            "group": "Configure chat and digital channels",
            "group_number": 4,
            "objective_number": 7,
            "evidence_spans": [
              {
                "heading": "Worked representative settings: reply scope and availability",
                "start_line": 185,
                "end_line": 189,
                "span_lf_sha256": "dd4190c86631a20e0ff951b808536ae3d5e0bc75d509cb1f3a9fece76cca6ba5"
              }
            ],
            "initial_flag_disposition": "repaired-by-actual-packet",
            "reason": "For “Manage quick replies”, the current selected text teaches quick-reply locale/workstream/tag and custom-presence base status plus actual IRecordSource web-resource timeline implementation. For “Manage quick replies”: Quick-reply locale/workstream/tag binding and custom-presence base status now connect saved records to representative visibility/assignment tests; blank association and misleading display labels have explicit failures.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [
              "ab250-reply-presence"
            ],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "reply"
            ]
          },
          {
            "wording": "Extend the chat experience using the live chat SDK",
            "objective_wording_sha256": "83e8f63de7fdd17e3a94b9881ad384a867cd06056d62c177df683ce9abb24f60",
            "group": "Configure chat and digital channels",
            "group_number": 4,
            "objective_number": 8,
            "evidence_spans": [
              {
                "heading": "Worked chat SDK lifecycle",
                "start_line": 138,
                "end_line": 140,
                "span_lf_sha256": "7e203a5420bc32cef2bbbdfb67e28977a06f268e202e91d2bc3737cd24c4c33b"
              },
              {
                "heading": "Configure chat and digital engagement",
                "start_line": 126,
                "end_line": 134,
                "span_lf_sha256": "6936d379d80cb739a6f8c6367052748e3e94de74acb0006479385627ea92cc0b"
              }
            ],
            "initial_flag_disposition": "repaired-by-actual-packet",
            "reason": "For “Extend the chat experience using the live chat SDK”, the current selected text teaches lcw:ready/auth-provider/startChat and native initialize/start/callback/reconnect contracts with token/context/resume checks; channel/workstream/widget/survey/context/authentication/translation/attachment/availability and customer-identity tests. For “Extend the chat experience using the live chat SDK”: lcw:ready→server-signed auth provider→startChat and native initialize→startChat/callback/reconnect paths now teach actual invocation, context/token and resume/duplicate failure checks.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [
              "ab250-web-mobile-sdk"
            ],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "sdk",
              "chat"
            ]
          },
          {
            "wording": "Configure authentication settings for chat",
            "objective_wording_sha256": "71b0a4abb7acf71744aaff5fe99422b4a041cd2105e94190f90985a42cf42fc1",
            "group": "Configure chat and digital channels",
            "group_number": 4,
            "objective_number": 9,
            "evidence_spans": [
              {
                "heading": "Configure chat and digital engagement",
                "start_line": 126,
                "end_line": 134,
                "span_lf_sha256": "6936d379d80cb739a6f8c6367052748e3e94de74acb0006479385627ea92cc0b"
              }
            ],
            "initial_flag_disposition": "not-flagged-initially",
            "reason": "For “Configure authentication settings for chat”, the selected current teaching explains channel/workstream/widget/survey/context/authentication/translation/attachment/availability and customer-identity tests. Its purpose, operation/design boundary and checks support this objective; this is editorial teaching coverage, not observed product execution.",
            "initial_depth_result": "substantive",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "chat"
            ]
          },
          {
            "wording": "Manage chat in native mobile apps by using the Messaging SDK for Dynamics 365 Contact Center",
            "objective_wording_sha256": "3079edb5bf33165b1754caeb2600930ca3a529fea3bbceb91d1f86440782fb05",
            "group": "Configure chat and digital channels",
            "group_number": 4,
            "objective_number": 10,
            "evidence_spans": [
              {
                "heading": "Worked chat SDK lifecycle",
                "start_line": 138,
                "end_line": 140,
                "span_lf_sha256": "7e203a5420bc32cef2bbbdfb67e28977a06f268e202e91d2bc3737cd24c4c33b"
              },
              {
                "heading": "Configure chat and digital engagement",
                "start_line": 126,
                "end_line": 134,
                "span_lf_sha256": "6936d379d80cb739a6f8c6367052748e3e94de74acb0006479385627ea92cc0b"
              }
            ],
            "initial_flag_disposition": "repaired-by-actual-packet",
            "reason": "For “Manage chat in native mobile apps by using the Messaging SDK for Dynamics 365 Contact Center”, the current selected text teaches lcw:ready/auth-provider/startChat and native initialize/start/callback/reconnect contracts with token/context/resume checks; channel/workstream/widget/survey/context/authentication/translation/attachment/availability and customer-identity tests. For “Manage chat in native mobile apps by using the Messaging SDK for Dynamics 365 Contact Center”: lcw:ready→server-signed auth provider→startChat and native initialize→startChat/callback/reconnect paths now teach actual invocation, context/token and resume/duplicate failure checks.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [
              "ab250-web-mobile-sdk"
            ],
            "related_improvement_packet_ids": [
              "ab250-profile-api-path"
            ],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "sdk",
              "chat"
            ]
          },
          {
            "wording": "Configure a custom messaging channel by using messaging APIs",
            "objective_wording_sha256": "0c6d5ab3e2d67515b873efe013e7bf0e4a08d3d82af99fd5a98f65d07c18beb0",
            "group": "Configure chat and digital channels",
            "group_number": 4,
            "objective_number": 11,
            "evidence_spans": [
              {
                "heading": "Configure productivity tools",
                "start_line": 318,
                "end_line": 324,
                "span_lf_sha256": "f7e8a3dc5654c661d03a34a4fb9e22027fd7798ba174c8a5c18fbb48e22e3bed"
              }
            ],
            "initial_flag_disposition": "repaired-by-actual-packet",
            "reason": "For “Configure a custom messaging channel by using messaging APIs”, the current selected text teaches tools/panel/collaboration/context boundaries, actual persona setup and server-to-server messaging create/header/webhook contract. For “Configure a custom messaging channel by using messaging APIs”: The custom persona users/template/tools/inbox setup and separate server-to-server POST conversation/create/header/webhook sequence now give real configuration/invocation paths rather than API labels.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [
              "ab250-profile-api-path"
            ],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "productivity"
            ]
          },
          {
            "wording": "Enable real-time translation of conversations",
            "objective_wording_sha256": "876a82d30cf51631ca70811c620542a77b52abc8b53ae599431f867dc257295c",
            "group": "Configure chat and digital channels",
            "group_number": 4,
            "objective_number": 12,
            "evidence_spans": [
              {
                "heading": "Configure chat and digital engagement",
                "start_line": 126,
                "end_line": 134,
                "span_lf_sha256": "6936d379d80cb739a6f8c6367052748e3e94de74acb0006479385627ea92cc0b"
              }
            ],
            "initial_flag_disposition": "existing-adequate-for-verb",
            "reason": "For “Enable real-time translation of conversations”, the current selected text teaches channel/workstream/widget/survey/context/authentication/translation/attachment/availability and customer-identity tests. Translation preserves language state/original evidence and explicitly tests meaning/names/policy/sensitive content with high-risk interpreter fallback; voice and digital data flows remain distinct.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "chat"
            ]
          },
          {
            "wording": "Configure customer settings, including location and self-service settings",
            "objective_wording_sha256": "2688e47cd4c17e99ab83efdee713c4997daafd2be0353d847d2ca7a7c8239492",
            "group": "Configure chat and digital channels",
            "group_number": 4,
            "objective_number": 13,
            "evidence_spans": [
              {
                "heading": "Configure chat and digital engagement",
                "start_line": 126,
                "end_line": 134,
                "span_lf_sha256": "6936d379d80cb739a6f8c6367052748e3e94de74acb0006479385627ea92cc0b"
              },
              {
                "heading": "Configure conversation lifecycle features",
                "start_line": 169,
                "end_line": 175,
                "span_lf_sha256": "c0a978b90506d6522119935bf6437de94bd752df55cfc332dee87d7203c5febc"
              },
              {
                "heading": "Configure proactive outbound engagement",
                "start_line": 203,
                "end_line": 209,
                "span_lf_sha256": "99ca666e505583faa397e0c658332c0e8c9250612ef33dfa2346cea4b95c1b4d"
              },
              {
                "heading": "Worked example 3 — Missing time zone changes quiet-hour decisions",
                "start_line": 213,
                "end_line": 213,
                "span_lf_sha256": "0c94f39d8e49552765a0257e356dfb894c57ad74cb754945067fd3a05d8532ba"
              }
            ],
            "initial_flag_disposition": "existing-adequate-for-verb",
            "reason": "For “Configure customer settings, including location and self-service settings”, the current selected text teaches channel/workstream/widget/survey/context/authentication/translation/attachment/availability and customer-identity tests; typed context/customer matching, conversation state/consult/transfer, CIF/timeline/attachment and feedback boundaries; audience/workstream/trigger/dial-mode/priority/timezone/quiet/retry/suppression/dashboard and queued-cancel behavior; UTC fallback quiet-hour eligibility failure on one explicit customer offset. Location/self-service context is treated as validated channel input, with real location/time-zone/identity versus claim boundaries and supported audience/escalation checks.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "chat",
              "lifecycle",
              "proactive",
              "timezone"
            ]
          },
          {
            "wording": "Configure the voice channel",
            "objective_wording_sha256": "491e2452c4a61ca28abf66b8e6872fd15b7e7c9ca6f0c2b143aa30e42dacb3be",
            "group": "Provision and manage the voice channel",
            "group_number": 5,
            "objective_number": 1,
            "evidence_spans": [
              {
                "heading": "Provision voice",
                "start_line": 144,
                "end_line": 159,
                "span_lf_sha256": "2f13ac624728d828105bdcbf740d3f263d6a65fdd93383d1bc5515a18d064440"
              }
            ],
            "initial_flag_disposition": "not-flagged-initially",
            "reason": "For “Configure the voice channel”, the selected current teaching explains ACS versus Teams number/resource/workstream path, SBC/carrier/external-IVR metadata and media/quality/recovery tests. Its purpose, operation/design boundary and checks support this objective; this is editorial teaching coverage, not observed product execution.",
            "initial_depth_result": "substantive",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "voice"
            ]
          },
          {
            "wording": "Integrate a non-Microsoft interactive voice response (IVR) system with voice channel",
            "objective_wording_sha256": "05670df19ae6f233fc37337409b7a3736abfb623bb7094adc1ed417834cd2153",
            "group": "Provision and manage the voice channel",
            "group_number": 5,
            "objective_number": 2,
            "evidence_spans": [
              {
                "heading": "Provision voice",
                "start_line": 144,
                "end_line": 159,
                "span_lf_sha256": "2f13ac624728d828105bdcbf740d3f263d6a65fdd93383d1bc5515a18d064440"
              },
              {
                "heading": "Worked voice binding: keypad trigger and transfer context",
                "start_line": 263,
                "end_line": 273,
                "span_lf_sha256": "445ebbc15b894012da5c49403b88a06f201fff1831cb93d13f7eefe0834fd872"
              }
            ],
            "initial_flag_disposition": "existing-adequate-for-verb",
            "reason": "For “Integrate a non-Microsoft interactive voice response (IVR) system with voice channel”, the current selected text teaches external IVR call-state/context/failure and carrier/SBC metadata-preservation contracts, plus the concrete DirectRouting parse/schema/transfer header path and receiving-side validation. External IVR integration has an explicit call-state/context/failure contract, carrier/SBC responsibility and SIP metadata-loss risk; the new transfer-header path makes the key handoff primitive concrete.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "voice",
              "voicebind"
            ]
          },
          {
            "wording": "Manage phone numbers",
            "objective_wording_sha256": "cf3672ffcca01f07d4745432dcad39c6d339827b5cdfb359d1286e4cc298cc91",
            "group": "Provision and manage the voice channel",
            "group_number": 5,
            "objective_number": 3,
            "evidence_spans": [
              {
                "heading": "Provision voice",
                "start_line": 144,
                "end_line": 159,
                "span_lf_sha256": "2f13ac624728d828105bdcbf740d3f263d6a65fdd93383d1bc5515a18d064440"
              }
            ],
            "initial_flag_disposition": "existing-adequate-for-verb",
            "reason": "For “Manage phone numbers”, the current selected text teaches ACS versus Teams number/resource/workstream path, SBC/carrier/external-IVR metadata and media/quality/recovery tests. Number management selects ACS versus Teams eligibility/licensing/resource-account/sync/workstream binding, preserves environment bindings and stages SBC-name/certificate cutover. The unresolved acquisition date/eligibility gate remains blocked.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "voice"
            ]
          },
          {
            "wording": "Configure inbound and outbound calling profiles",
            "objective_wording_sha256": "900e94b4942f9749b5e1431ab64948c31fb016a0795d764982d793c0ed66d8de",
            "group": "Provision and manage the voice channel",
            "group_number": 5,
            "objective_number": 4,
            "evidence_spans": [
              {
                "heading": "Provision voice",
                "start_line": 144,
                "end_line": 159,
                "span_lf_sha256": "2f13ac624728d828105bdcbf740d3f263d6a65fdd93383d1bc5515a18d064440"
              },
              {
                "heading": "Answers and reasoning",
                "start_line": 471,
                "end_line": 509,
                "span_lf_sha256": "1eb7e07ee2d6de31275c3ecd81754d20f015ff28beb1d108ab7618112f606c03"
              }
            ],
            "initial_flag_disposition": "existing-adequate-for-verb",
            "reason": "For “Configure inbound and outbound calling profiles”, the current selected text teaches ACS versus Teams number/resource/workstream path, SBC/carrier/external-IVR metadata and media/quality/recovery tests; explicit inbound/outbound profile, eligible number/resource/channel/workstream/queue and Teams resource-account/sync provisioning dependencies. The voice setup path binds eligible numbers/channel/workstream/queues to inbound/outbound profiles and tests callerID/routing/consult/transfer/failover; separate provisioning models are not merged.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "voice",
              "callingprofileanswer"
            ]
          },
          {
            "wording": "Configure call recording, transcription, and real-time translation",
            "objective_wording_sha256": "0e32db397cb50474b6da728fc994675176b4031843c47856e78e82b3b09cf553",
            "group": "Provision and manage the voice channel",
            "group_number": 5,
            "objective_number": 5,
            "evidence_spans": [
              {
                "heading": "Provision voice",
                "start_line": 144,
                "end_line": 159,
                "span_lf_sha256": "2f13ac624728d828105bdcbf740d3f263d6a65fdd93383d1bc5515a18d064440"
              },
              {
                "heading": "Distinguish message masking, voice masking and recording controls",
                "start_line": 193,
                "end_line": 199,
                "span_lf_sha256": "4309e744e9c7f2948c77bf84d47bd22f572984f8d38533b386c855245228422d"
              },
              {
                "heading": "Worked CCaaS voice operation: request versus completion",
                "start_line": 163,
                "end_line": 165,
                "span_lf_sha256": "71622bf10a5d919667a91cd3a9fccac154bbb2c9bd32e3ce96b1cb38a29c961f"
              }
            ],
            "initial_flag_disposition": "existing-adequate-for-verb",
            "reason": "For “Configure call recording, transcription, and real-time translation”, the current selected text teaches ACS versus Teams number/resource/workstream path, SBC/carrier/external-IVR metadata and media/quality/recovery tests; direction/channel-specific digital masking, voice sensitive-variable/pause gaps and complete survey publish/bind/response path; actual recording-pause request and separately correlated successful completion/final media state. Recording/transcription/translation specify consent, enablement, retention/access/encryption/redaction and destination flows; voice sensitive-variable first-answer/latency and explicit pause/completion behavior define concrete checks.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [
              "ab250-voice-sdk"
            ],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "voice",
              "mask",
              "voicesdk"
            ]
          },
          {
            "wording": "Configure agent feedback",
            "objective_wording_sha256": "ac0eb29d118f8994ea1bf9066858232785fa797d72cd576d2358211f214d654f",
            "group": "Provision and manage the voice channel",
            "group_number": 5,
            "objective_number": 6,
            "evidence_spans": [
              {
                "heading": "Distinguish message masking, voice masking and recording controls",
                "start_line": 193,
                "end_line": 199,
                "span_lf_sha256": "4309e744e9c7f2948c77bf84d47bd22f572984f8d38533b386c855245228422d"
              },
              {
                "heading": "Distinguish message masking, voice masking and recording controls",
                "start_line": 199,
                "end_line": 199,
                "span_lf_sha256": "857b037fec32ebafe47f6fd77e3d218acb647de596808abbbc6e55374b27557f"
              }
            ],
            "initial_flag_disposition": "existing-adequate-for-verb",
            "reason": "For “Configure agent feedback”, the current selected text teaches the concrete template/language/Dataverse connection→CopilotStudio publish→channel/workstream survey path and published/Ready/response checks; it teaches post-conversation customer feedback, while a separate internal representative-feedback contract remains a stated scope limit. Feedback is configured as a scoped survey/response flow with language, channel/workstream and consent checks. The new post-conversation worksheet is useful supporting depth; it is not falsely treated as every internal representative-feedback mechanism.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "mask",
              "feedback"
            ]
          },
          {
            "wording": "Manage voice calls via the CCaaS SDK API",
            "objective_wording_sha256": "f24b45de0b026ee172f7c0148977ea80aa1fd9ca3284142328092077451e1fe0",
            "group": "Provision and manage the voice channel",
            "group_number": 5,
            "objective_number": 7,
            "evidence_spans": [
              {
                "heading": "Worked CCaaS voice operation: request versus completion",
                "start_line": 163,
                "end_line": 165,
                "span_lf_sha256": "71622bf10a5d919667a91cd3a9fccac154bbb2c9bd32e3ce96b1cb38a29c961f"
              }
            ],
            "initial_flag_disposition": "repaired-by-actual-packet",
            "reason": "For “Manage voice calls via the CCaaS SDK API”, the current selected text teaches actual recording-pause request and separately correlated successful completion/final media state. For “Manage voice calls via the CCaaS SDK API”: The confirmed recording-pause request plus completion-event correlation now supplies one concrete CCaaS voice-operation contract; requested versus confirmed media state is tested, without inventing hold/transfer APIs.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [
              "ab250-voice-sdk"
            ],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "voicesdk"
            ]
          },
          {
            "wording": "Manage context variables",
            "objective_wording_sha256": "34abeb133db8718cd1b9eb293942c43e8e17ecf3e89176482bd9d609a8c3c4f5",
            "group": "Configure channel features",
            "group_number": 6,
            "objective_number": 1,
            "evidence_spans": [
              {
                "heading": "Configure conversation lifecycle features",
                "start_line": 169,
                "end_line": 175,
                "span_lf_sha256": "c0a978b90506d6522119935bf6437de94bd752df55cfc332dee87d7203c5febc"
              },
              {
                "heading": "Configure chat and digital engagement",
                "start_line": 126,
                "end_line": 134,
                "span_lf_sha256": "6936d379d80cb739a6f8c6367052748e3e94de74acb0006479385627ea92cc0b"
              },
              {
                "heading": "Worked chat SDK lifecycle",
                "start_line": 138,
                "end_line": 140,
                "span_lf_sha256": "7e203a5420bc32cef2bbbdfb67e28977a06f268e202e91d2bc3737cd24c4c33b"
              }
            ],
            "initial_flag_disposition": "existing-adequate-for-verb",
            "reason": "For “Manage context variables”, the current selected text teaches typed context/customer matching, conversation state/consult/transfer, CIF/timeline/attachment and feedback boundaries; channel/workstream/widget/survey/context/authentication/translation/attachment/availability and customer-identity tests; lcw:ready/auth-provider/startChat and native initialize/start/callback/reconnect contracts with token/context/resume checks. Typed/named context with provenance is traced through client/provider, workstream, classification/routing/handoff and session-slug resolution; invalid/mismatched context is tested rather than trusted.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [
              "ab250-reply-presence"
            ],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "lifecycle",
              "chat",
              "sdk"
            ]
          },
          {
            "wording": "Configure automatic customer identification",
            "objective_wording_sha256": "12f1cf1b031b01c95e59a91dd95939d28673955e020523858fc1fd23858bd86f",
            "group": "Configure channel features",
            "group_number": 6,
            "objective_number": 2,
            "evidence_spans": [
              {
                "heading": "Configure conversation lifecycle features",
                "start_line": 169,
                "end_line": 175,
                "span_lf_sha256": "c0a978b90506d6522119935bf6437de94bd752df55cfc332dee87d7203c5febc"
              },
              {
                "heading": "Configure chat and digital engagement",
                "start_line": 126,
                "end_line": 134,
                "span_lf_sha256": "6936d379d80cb739a6f8c6367052748e3e94de74acb0006479385627ea92cc0b"
              },
              {
                "heading": "Worked chat SDK lifecycle",
                "start_line": 138,
                "end_line": 140,
                "span_lf_sha256": "7e203a5420bc32cef2bbbdfb67e28977a06f268e202e91d2bc3737cd24c4c33b"
              }
            ],
            "initial_flag_disposition": "existing-adequate-for-verb",
            "reason": "For “Configure automatic customer identification”, the current selected text teaches typed context/customer matching, conversation state/consult/transfer, CIF/timeline/attachment and feedback boundaries; channel/workstream/widget/survey/context/authentication/translation/attachment/availability and customer-identity tests; lcw:ready/auth-provider/startChat and native initialize/start/callback/reconnect contracts with token/context/resume checks. Server-signed authentication/public-key/authentication-record binding, indicator and invalid/expired/ambiguous-contact tests teach automatic matching while rejecting unverified pre-chat identity.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "lifecycle",
              "chat",
              "sdk"
            ]
          },
          {
            "wording": "Close conversations automatically",
            "objective_wording_sha256": "6e7227bb9deaa465f1e457efc843c7f150a61b4f6757aa13d206fdc2065a61a3",
            "group": "Configure channel features",
            "group_number": 6,
            "objective_number": 3,
            "evidence_spans": [
              {
                "heading": "Configure conversation lifecycle features",
                "start_line": 169,
                "end_line": 175,
                "span_lf_sha256": "c0a978b90506d6522119935bf6437de94bd752df55cfc332dee87d7203c5febc"
              },
              {
                "heading": "Worked conversation lifecycle rule",
                "start_line": 179,
                "end_line": 181,
                "span_lf_sha256": "15c54bf11cada9aa2b74dd577a98478e18792f27a0ba66a58c2ec519ad17528f"
              }
            ],
            "initial_flag_disposition": "repaired-by-actual-packet",
            "reason": "For “Close conversations automatically”, the current selected text teaches typed context/customer matching, conversation state/consult/transfer, CIF/timeline/attachment and feedback boundaries; nonresponse side/threshold/action/priority/workstream timeout path versus state/modifiedon closure scheduler. For “Close conversations automatically”: The nonresponse-party/threshold/action/priority/workstream rule path supplies lifecycle configuration and expected transition checks, distinguished from the modifiedon closure scheduler.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [
              "ab250-lifecycle-rule"
            ],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "lifecycle",
              "rule"
            ]
          },
          {
            "wording": "Enable consult with representatives and transfer of conversations",
            "objective_wording_sha256": "90cb062c652d4068034952d600390401d1bd3f4d3c7ba39be716880e2efcc610",
            "group": "Configure channel features",
            "group_number": 6,
            "objective_number": 4,
            "evidence_spans": [
              {
                "heading": "Configure conversation lifecycle features",
                "start_line": 169,
                "end_line": 175,
                "span_lf_sha256": "c0a978b90506d6522119935bf6437de94bd752df55cfc332dee87d7203c5febc"
              },
              {
                "heading": "Provision voice",
                "start_line": 144,
                "end_line": 159,
                "span_lf_sha256": "2f13ac624728d828105bdcbf740d3f263d6a65fdd93383d1bc5515a18d064440"
              },
              {
                "heading": "Worked conversation lifecycle rule",
                "start_line": 179,
                "end_line": 181,
                "span_lf_sha256": "15c54bf11cada9aa2b74dd577a98478e18792f27a0ba66a58c2ec519ad17528f"
              },
              {
                "heading": "Design queues and capacity behavior",
                "start_line": 279,
                "end_line": 287,
                "span_lf_sha256": "bc233a63c8147b7dd7f2e8ba231e2ff1633d1ede9c73b1bc14c945987becec3e"
              }
            ],
            "initial_flag_disposition": "existing-adequate-for-verb",
            "reason": "For “Enable consult with representatives and transfer of conversations”, the current selected text teaches typed context/customer matching, conversation state/consult/transfer, CIF/timeline/attachment and feedback boundaries; ACS versus Teams number/resource/workstream path, SBC/carrier/external-IVR metadata and media/quality/recovery tests; nonresponse side/threshold/action/priority/workstream timeout path versus state/modifiedon closure scheduler; compatible queue types/member/priority/hours/capacity and assignment/overflow/fallback evaluation/failure. Consult/transfer is governed by compatible queue/channel, state, context/transcript and permission; scheduler reset, diagnostics exclusions and safe transfer tests identify its operational consequences.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "lifecycle",
              "voice",
              "rule",
              "queue"
            ]
          },
          {
            "wording": "Configure sensitive data masking",
            "objective_wording_sha256": "745b69a239b19f9475f0bfabef03396b5640f147685c53edfafa9cfdc471594d",
            "group": "Configure channel features",
            "group_number": 6,
            "objective_number": 5,
            "evidence_spans": [
              {
                "heading": "Distinguish message masking, voice masking and recording controls",
                "start_line": 193,
                "end_line": 199,
                "span_lf_sha256": "4309e744e9c7f2948c77bf84d47bd22f572984f8d38533b386c855245228422d"
              }
            ],
            "initial_flag_disposition": "not-flagged-initially",
            "reason": "For “Configure sensitive data masking”, the selected current teaching explains direction/channel-specific digital masking, voice sensitive-variable/pause gaps and complete survey publish/bind/response path. Its purpose, operation/design boundary and checks support this objective; this is editorial teaching coverage, not observed product execution.",
            "initial_depth_result": "substantive",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "mask"
            ]
          },
          {
            "wording": "Configure custom presences",
            "objective_wording_sha256": "dd75153f6f1f1b28207466a496b717917d06782a75b37bad1aeb479f68ed15a2",
            "group": "Configure channel features",
            "group_number": 6,
            "objective_number": 6,
            "evidence_spans": [
              {
                "heading": "Worked representative settings: reply scope and availability",
                "start_line": 185,
                "end_line": 189,
                "span_lf_sha256": "dd4190c86631a20e0ff951b808536ae3d5e0bc75d509cb1f3a9fece76cca6ba5"
              }
            ],
            "initial_flag_disposition": "repaired-by-actual-packet",
            "reason": "For “Configure custom presences”, the current selected text teaches quick-reply locale/workstream/tag and custom-presence base status plus actual IRecordSource web-resource timeline implementation. For “Configure custom presences”: Quick-reply locale/workstream/tag binding and custom-presence base status now connect saved records to representative visibility/assignment tests; blank association and misleading display labels have explicit failures.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [
              "ab250-reply-presence"
            ],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "reply"
            ]
          },
          {
            "wording": "Configure messages, including templates, formatting, automated messages, and outbound messages",
            "objective_wording_sha256": "06add52ce4188f6e99574786195c6f5aa11fc19eeaefcabbdcb26f124ef423d1",
            "group": "Configure channel features",
            "group_number": 6,
            "objective_number": 7,
            "evidence_spans": [
              {
                "heading": "Worked representative settings: reply scope and availability",
                "start_line": 185,
                "end_line": 189,
                "span_lf_sha256": "dd4190c86631a20e0ff951b808536ae3d5e0bc75d509cb1f3a9fece76cca6ba5"
              },
              {
                "heading": "Worked conversation lifecycle rule",
                "start_line": 179,
                "end_line": 181,
                "span_lf_sha256": "15c54bf11cada9aa2b74dd577a98478e18792f27a0ba66a58c2ec519ad17528f"
              }
            ],
            "initial_flag_disposition": "repaired-by-actual-packet",
            "reason": "For “Configure messages, including templates, formatting, automated messages, and outbound messages”, the current selected text teaches quick-reply locale/workstream/tag and custom-presence base status plus actual IRecordSource web-resource timeline implementation; nonresponse side/threshold/action/priority/workstream timeout path versus state/modifiedon closure scheduler. For “Configure messages, including templates, formatting, automated messages, and outbound messages”: Quick-reply locale/workstream/tag binding and custom-presence base status now connect saved records to representative visibility/assignment tests; blank association and misleading display labels have explicit failures.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [
              "ab250-reply-presence"
            ],
            "related_improvement_packet_ids": [
              "ab250-lifecycle-rule"
            ],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "reply",
              "rule"
            ]
          },
          {
            "wording": "Manage active conversation settings",
            "objective_wording_sha256": "63903553dc2f74469c5d1cfcd2c7478f274f06915b8932a3b511f7dd098481b2",
            "group": "Configure channel features",
            "group_number": 6,
            "objective_number": 8,
            "evidence_spans": [
              {
                "heading": "Configure conversation lifecycle features",
                "start_line": 169,
                "end_line": 175,
                "span_lf_sha256": "c0a978b90506d6522119935bf6437de94bd752df55cfc332dee87d7203c5febc"
              },
              {
                "heading": "Worked conversation lifecycle rule",
                "start_line": 179,
                "end_line": 181,
                "span_lf_sha256": "15c54bf11cada9aa2b74dd577a98478e18792f27a0ba66a58c2ec519ad17528f"
              }
            ],
            "initial_flag_disposition": "repaired-by-actual-packet",
            "reason": "For “Manage active conversation settings”, the current selected text teaches typed context/customer matching, conversation state/consult/transfer, CIF/timeline/attachment and feedback boundaries; nonresponse side/threshold/action/priority/workstream timeout path versus state/modifiedon closure scheduler. For “Manage active conversation settings”: The nonresponse-party/threshold/action/priority/workstream rule path supplies lifecycle configuration and expected transition checks, distinguished from the modifiedon closure scheduler.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [
              "ab250-lifecycle-rule"
            ],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "lifecycle",
              "rule"
            ]
          },
          {
            "wording": "Configure the timeline",
            "objective_wording_sha256": "90b68e7faa9d1b35baf0f83f3d7afad2a340359f416bcd7356d816f154db8203",
            "group": "Configure channel features",
            "group_number": 6,
            "objective_number": 9,
            "evidence_spans": [
              {
                "heading": "Worked representative settings: reply scope and availability",
                "start_line": 185,
                "end_line": 189,
                "span_lf_sha256": "dd4190c86631a20e0ff951b808536ae3d5e0bc75d509cb1f3a9fece76cca6ba5"
              }
            ],
            "initial_flag_disposition": "repaired-by-actual-packet",
            "reason": "For “Configure the timeline”, the current selected text teaches quick-reply locale/workstream/tag and custom-presence base status plus actual IRecordSource web-resource timeline implementation. For “Configure the timeline”: IRecordSource JavaScript resource/constructor→timeline form→publish/solution-dependency path now supplies an actual implementation contract and paging/customer-scope/missing-resource checks.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [
              "ab250-timeline-source"
            ],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "reply"
            ]
          },
          {
            "wording": "Use custom connectors with the timeline control",
            "objective_wording_sha256": "4d4d15f5279b2b8a9ac46768ab09fbd5c9288b6b9ac3d4706e39cce1c017b009",
            "group": "Configure channel features",
            "group_number": 6,
            "objective_number": 10,
            "evidence_spans": [
              {
                "heading": "Worked representative settings: reply scope and availability",
                "start_line": 185,
                "end_line": 189,
                "span_lf_sha256": "dd4190c86631a20e0ff951b808536ae3d5e0bc75d509cb1f3a9fece76cca6ba5"
              }
            ],
            "initial_flag_disposition": "repaired-by-actual-packet",
            "reason": "For “Use custom connectors with the timeline control”, the current selected text teaches quick-reply locale/workstream/tag and custom-presence base status plus actual IRecordSource web-resource timeline implementation. For “Use custom connectors with the timeline control”: IRecordSource JavaScript resource/constructor→timeline form→publish/solution-dependency path now supplies an actual implementation contract and paging/customer-scope/missing-resource checks.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [
              "ab250-timeline-source"
            ],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "reply"
            ]
          },
          {
            "wording": "Configure the channel integration framework",
            "objective_wording_sha256": "a85d9ab087dbcc692bcca20a0ad378822d8062715fc36b1aee92fba9c544ef44",
            "group": "Configure channel features",
            "group_number": 6,
            "objective_number": 11,
            "evidence_spans": [
              {
                "heading": "Configure conversation lifecycle features",
                "start_line": 169,
                "end_line": 175,
                "span_lf_sha256": "c0a978b90506d6522119935bf6437de94bd752df55cfc332dee87d7203c5febc"
              }
            ],
            "initial_flag_disposition": "existing-adequate-for-verb",
            "reason": "For “Configure the channel integration framework”, the current selected text teaches typed context/customer matching, conversation state/consult/transfer, CIF/timeline/attachment and feedback boundaries. CIF is placed in the supported third-party-widget/model-driven host, separated from native voice and external service identity. Host/profile/provider and customer-context tests give its integration boundary without unsupported DOM control.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "lifecycle"
            ]
          },
          {
            "wording": "Manage conversations",
            "objective_wording_sha256": "d96286ccc7eb9042c09d8f9888e97ff835d4293bcfae5e82f79453920afb338a",
            "group": "Configure channel features",
            "group_number": 6,
            "objective_number": 12,
            "evidence_spans": [
              {
                "heading": "Configure conversation lifecycle features",
                "start_line": 169,
                "end_line": 175,
                "span_lf_sha256": "c0a978b90506d6522119935bf6437de94bd752df55cfc332dee87d7203c5febc"
              },
              {
                "heading": "Worked conversation lifecycle rule",
                "start_line": 179,
                "end_line": 181,
                "span_lf_sha256": "15c54bf11cada9aa2b74dd577a98478e18792f27a0ba66a58c2ec519ad17528f"
              }
            ],
            "initial_flag_disposition": "repaired-by-actual-packet",
            "reason": "For “Manage conversations”, the current selected text teaches typed context/customer matching, conversation state/consult/transfer, CIF/timeline/attachment and feedback boundaries; nonresponse side/threshold/action/priority/workstream timeout path versus state/modifiedon closure scheduler. For “Manage conversations”: The nonresponse-party/threshold/action/priority/workstream rule path supplies lifecycle configuration and expected transition checks, distinguished from the modifiedon closure scheduler.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [
              "ab250-lifecycle-rule"
            ],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "lifecycle",
              "rule"
            ]
          },
          {
            "wording": "Configure feedback by using Copilot Studio",
            "objective_wording_sha256": "2c331a129b027b17745f0d74247cdcec8eb1976c4a44be0f5474b3c4477302ee",
            "group": "Configure channel features",
            "group_number": 6,
            "objective_number": 13,
            "evidence_spans": [
              {
                "heading": "Distinguish message masking, voice masking and recording controls",
                "start_line": 193,
                "end_line": 199,
                "span_lf_sha256": "4309e744e9c7f2948c77bf84d47bd22f572984f8d38533b386c855245228422d"
              }
            ],
            "initial_flag_disposition": "repaired-by-actual-packet",
            "reason": "For “Configure feedback by using Copilot Studio”, the current selected text teaches direction/channel-specific digital masking, voice sensitive-variable/pause gaps and complete survey publish/bind/response path. For “Configure feedback by using Copilot Studio”: Survey template/language/Dataverse reference→Copilot Studio publish→channel/workstream binding now teaches feedback configuration and missing publication/binding/target-environment failures.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [
              "ab250-survey"
            ],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "mask"
            ]
          },
          {
            "wording": "Manage file attachments",
            "objective_wording_sha256": "7fae9f9802db152b008b0e41e0b4e8277c787b2c175ff44df89ad7dc1be4e8e3",
            "group": "Configure channel features",
            "group_number": 6,
            "objective_number": 14,
            "evidence_spans": [
              {
                "heading": "Configure conversation lifecycle features",
                "start_line": 169,
                "end_line": 175,
                "span_lf_sha256": "c0a978b90506d6522119935bf6437de94bd752df55cfc332dee87d7203c5febc"
              },
              {
                "heading": "Configure chat and digital engagement",
                "start_line": 126,
                "end_line": 134,
                "span_lf_sha256": "6936d379d80cb739a6f8c6367052748e3e94de74acb0006479385627ea92cc0b"
              }
            ],
            "initial_flag_disposition": "not-flagged-initially",
            "reason": "For “Manage file attachments”, the selected current teaching explains typed context/customer matching, conversation state/consult/transfer, CIF/timeline/attachment and feedback boundaries; channel/workstream/widget/survey/context/authentication/translation/attachment/availability and customer-identity tests. Its purpose, operation/design boundary and checks support this objective; this is editorial teaching coverage, not observed product execution.",
            "initial_depth_result": "substantive",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "lifecycle",
              "chat"
            ]
          },
          {
            "wording": "Manage proactive outbound engagement",
            "objective_wording_sha256": "acc077f8f255ebc0d50078b16556625ab91cd62c5135688138ee099cd35f7596",
            "group": "Configure channel features",
            "group_number": 6,
            "objective_number": 15,
            "evidence_spans": [
              {
                "heading": "Configure proactive outbound engagement",
                "start_line": 203,
                "end_line": 209,
                "span_lf_sha256": "99ca666e505583faa397e0c658332c0e8c9250612ef33dfa2346cea4b95c1b4d"
              },
              {
                "heading": "Worked example 3 — Missing time zone changes quiet-hour decisions",
                "start_line": 213,
                "end_line": 213,
                "span_lf_sha256": "0c94f39d8e49552765a0257e356dfb894c57ad74cb754945067fd3a05d8532ba"
              }
            ],
            "initial_flag_disposition": "not-flagged-initially",
            "reason": "For “Manage proactive outbound engagement”, the selected current teaching explains audience/workstream/trigger/dial-mode/priority/timezone/quiet/retry/suppression/dashboard and queued-cancel behavior; UTC fallback quiet-hour eligibility failure on one explicit customer offset. Its purpose, operation/design boundary and checks support this objective; this is editorial teaching coverage, not observed product execution.",
            "initial_depth_result": "substantive",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "proactive",
              "timezone"
            ]
          },
          {
            "wording": "Configure proactive outbound campaigns, including workstreams and triggers",
            "objective_wording_sha256": "eaffd595688f99797b296192faa102bd9bb9d858a24501f5c7f227a9f76fad69",
            "group": "Configure channel features",
            "group_number": 6,
            "objective_number": 16,
            "evidence_spans": [
              {
                "heading": "Configure proactive outbound engagement",
                "start_line": 203,
                "end_line": 209,
                "span_lf_sha256": "99ca666e505583faa397e0c658332c0e8c9250612ef33dfa2346cea4b95c1b4d"
              },
              {
                "heading": "Worked example 3 — Missing time zone changes quiet-hour decisions",
                "start_line": 213,
                "end_line": 213,
                "span_lf_sha256": "0c94f39d8e49552765a0257e356dfb894c57ad74cb754945067fd3a05d8532ba"
              }
            ],
            "initial_flag_disposition": "existing-adequate-for-verb",
            "reason": "For “Configure proactive outbound campaigns, including workstreams and triggers”, the current selected text teaches audience/workstream/trigger/dial-mode/priority/timezone/quiet/retry/suppression/dashboard and queued-cancel behavior; UTC fallback quiet-hour eligibility failure on one explicit customer offset. Audience/identity→workstream/trigger/dial mode→skill/priority/quiet/retry/suppression configuration is explicit; immediate-upload start, UTC fallback and queued-only cancellation have concrete checks.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "proactive",
              "timezone"
            ]
          },
          {
            "wording": "Configure dialing methods for proactive outbound campaigns",
            "objective_wording_sha256": "8404d808d599c908035f5623c569a7c939725c3fec868e64515ea7d1d36b013c",
            "group": "Configure channel features",
            "group_number": 6,
            "objective_number": 17,
            "evidence_spans": [
              {
                "heading": "Configure proactive outbound engagement",
                "start_line": 203,
                "end_line": 209,
                "span_lf_sha256": "99ca666e505583faa397e0c658332c0e8c9250612ef33dfa2346cea4b95c1b4d"
              },
              {
                "heading": "Worked example 3 — Missing time zone changes quiet-hour decisions",
                "start_line": 213,
                "end_line": 213,
                "span_lf_sha256": "0c94f39d8e49552765a0257e356dfb894c57ad74cb754945067fd3a05d8532ba"
              }
            ],
            "initial_flag_disposition": "not-flagged-initially",
            "reason": "For “Configure dialing methods for proactive outbound campaigns”, the selected current teaching explains audience/workstream/trigger/dial-mode/priority/timezone/quiet/retry/suppression/dashboard and queued-cancel behavior; UTC fallback quiet-hour eligibility failure on one explicit customer offset. Its purpose, operation/design boundary and checks support this objective; this is editorial teaching coverage, not observed product execution.",
            "initial_depth_result": "substantive",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "proactive",
              "timezone"
            ]
          },
          {
            "wording": "Set up the proactive outbound dashboard",
            "objective_wording_sha256": "06eebf6946d3494e8a3c0759872c80b194515bf5d120b578d73e40951e7a0986",
            "group": "Configure channel features",
            "group_number": 6,
            "objective_number": 18,
            "evidence_spans": [
              {
                "heading": "Configure proactive outbound engagement",
                "start_line": 203,
                "end_line": 209,
                "span_lf_sha256": "99ca666e505583faa397e0c658332c0e8c9250612ef33dfa2346cea4b95c1b4d"
              },
              {
                "heading": "Customize reports and telemetry",
                "start_line": 362,
                "end_line": 366,
                "span_lf_sha256": "fca0fec1ba5397358cdba47647fd4e1e2a802e92180812aa173abbd4ed2e400b"
              },
              {
                "heading": "Worked example 6 — Overlapping diagnostics and correct containment",
                "start_line": 370,
                "end_line": 374,
                "span_lf_sha256": "4681779bd65884b77ee5031f9fc4a2918bfe8af2d4e7c114ce38349189d76649"
              }
            ],
            "initial_flag_disposition": "existing-adequate-for-verb",
            "reason": "For “Set up the proactive outbound dashboard”, the current selected text teaches audience/workstream/trigger/dial-mode/priority/timezone/quiet/retry/suppression/dashboard and queued-cancel behavior; embedded versus PowerBI model/report editing and AppInsights connection/correlation/retention/latency/diagnostic controls; overlapping diagnostic set union and correct-containment outcome denominators. The outbound dashboard is defined by delivery/contact/outcome/abandonment/failure/complaint measures and action owners; denominator/containment examples prevent a technically healthy count from implying good business outcome.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "proactive",
              "analytics",
              "analyticsfixture"
            ]
          },
          {
            "wording": "Configure Workforce management (WFM)",
            "objective_wording_sha256": "0b3ee8c0419711f1f814cf2956f3df4ef3573930484a788b9db1410f661d053c",
            "group": "Configure channel features",
            "group_number": 6,
            "objective_number": 19,
            "evidence_spans": [
              {
                "heading": "Configure workforce management",
                "start_line": 217,
                "end_line": 221,
                "span_lf_sha256": "46cc20535554d533b00937e238dde49e4781aaed4a4682a3effdac31886cb07b"
              },
              {
                "heading": "Worked example 4 — Workload arithmetic is only a staffing starting point",
                "start_line": 225,
                "end_line": 231,
                "span_lf_sha256": "939727013673b33f6bb2782294e10f16243169cc2edc738c870bd5b94dd66179"
              }
            ],
            "initial_flag_disposition": "not-flagged-initially",
            "reason": "For “Configure Workforce management (WFM)”, the selected current teaching explains forecast source/channel/queue/timezone/seasonality, shifts/availability/rules/schedule publication and external ownership; workload/occupancy/shrinkage staffing prediction plus actual authorized time-off MCP versus shift-list limitation. Its purpose, operation/design boundary and checks support this objective; this is editorial teaching coverage, not observed product execution.",
            "initial_depth_result": "substantive",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "wfm",
              "staffing"
            ]
          },
          {
            "wording": "Configure shift management and scheduling",
            "objective_wording_sha256": "2017cf5d6621e3e9208452e8ff3fc629747d87d3559275e2135cdde1e35d147c",
            "group": "Configure channel features",
            "group_number": 6,
            "objective_number": 20,
            "evidence_spans": [
              {
                "heading": "Configure workforce management",
                "start_line": 217,
                "end_line": 221,
                "span_lf_sha256": "46cc20535554d533b00937e238dde49e4781aaed4a4682a3effdac31886cb07b"
              },
              {
                "heading": "Worked example 4 — Workload arithmetic is only a staffing starting point",
                "start_line": 225,
                "end_line": 231,
                "span_lf_sha256": "939727013673b33f6bb2782294e10f16243169cc2edc738c870bd5b94dd66179"
              }
            ],
            "initial_flag_disposition": "existing-adequate-for-verb",
            "reason": "For “Configure shift management and scheduling”, the current selected text teaches forecast source/channel/queue/timezone/seasonality, shifts/availability/rules/schedule publication and external ownership; workload/occupancy/shrinkage staffing prediction plus actual authorized time-off MCP versus shift-list limitation. Shift management configures availability/skills, rules and schedule publication against forecast-derived capacity, then validates adherence/fairness and third-party ownership. MCP list versus time-off decision limits prevent invented shift-approval capabilities.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "wfm",
              "staffing"
            ]
          },
          {
            "wording": "Configure forecasting",
            "objective_wording_sha256": "9329fda17d316534a29c18e459a393c23bf22f347254415f88b4a3fdbacf5842",
            "group": "Configure channel features",
            "group_number": 6,
            "objective_number": 21,
            "evidence_spans": [
              {
                "heading": "Configure workforce management",
                "start_line": 217,
                "end_line": 221,
                "span_lf_sha256": "46cc20535554d533b00937e238dde49e4781aaed4a4682a3effdac31886cb07b"
              },
              {
                "heading": "Worked example 4 — Workload arithmetic is only a staffing starting point",
                "start_line": 225,
                "end_line": 231,
                "span_lf_sha256": "939727013673b33f6bb2782294e10f16243169cc2edc738c870bd5b94dd66179"
              }
            ],
            "initial_flag_disposition": "existing-adequate-for-verb",
            "reason": "For “Configure forecasting”, the current selected text teaches forecast source/channel/queue/timezone/seasonality, shifts/availability/rules/schedule publication and external ownership; workload/occupancy/shrinkage staffing prediction plus actual authorized time-off MCP versus shift-list limitation. The forecast scenario path selects source/channel/queue/timezone/seasonality and type/interval, then inspects job history/output snapshots; read-only planning-group fields, immutable choices and no auto-refresh are specific failures.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "wfm",
              "staffing"
            ]
          },
          {
            "wording": "Integrate third-party WFM solutions",
            "objective_wording_sha256": "1e4d1d3e2ea473e5a07b9f989f2645262c3de18fd41ff74532f059feb2bd33a6",
            "group": "Configure channel features",
            "group_number": 6,
            "objective_number": 22,
            "evidence_spans": [
              {
                "heading": "Configure workforce management",
                "start_line": 217,
                "end_line": 221,
                "span_lf_sha256": "46cc20535554d533b00937e238dde49e4781aaed4a4682a3effdac31886cb07b"
              },
              {
                "heading": "Worked example 4 — Workload arithmetic is only a staffing starting point",
                "start_line": 225,
                "end_line": 231,
                "span_lf_sha256": "939727013673b33f6bb2782294e10f16243169cc2edc738c870bd5b94dd66179"
              }
            ],
            "initial_flag_disposition": "not-flagged-initially",
            "reason": "For “Integrate third-party WFM solutions”, the selected current teaching explains forecast source/channel/queue/timezone/seasonality, shifts/availability/rules/schedule publication and external ownership; workload/occupancy/shrinkage staffing prediction plus actual authorized time-off MCP versus shift-list limitation. Its purpose, operation/design boundary and checks support this objective; this is editorial teaching coverage, not observed product execution.",
            "initial_depth_result": "substantive",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "wfm",
              "staffing"
            ]
          },
          {
            "wording": "Design the Dynamics 365 Contact Center setup",
            "objective_wording_sha256": "854296509c8cefd00d52e0ee246ec560fd652aef080aa7e3f32b656c9984001c",
            "group": "Configure channel features",
            "group_number": 6,
            "objective_number": 23,
            "evidence_spans": [
              {
                "heading": "Choose the architecture and deployment mode",
                "start_line": 67,
                "end_line": 77,
                "span_lf_sha256": "96dd0cdc9dc0e16b6fb2ba41c0bd5f08b19434806406e486657e14903148f4cf"
              },
              {
                "heading": "Scenario 1: authenticated digital self-service",
                "start_line": 380,
                "end_line": 380,
                "span_lf_sha256": "631060bee749b91a028501317ac4febc81629d86da37a2101a4b309c7c7be61f"
              },
              {
                "heading": "Scenario 2: regulated multilingual voice",
                "start_line": 384,
                "end_line": 384,
                "span_lf_sha256": "bb2752a36372d4c92ca13a31fc8651d78aa758b370947b7fc0ff7952b38af868"
              },
              {
                "heading": "Scenario 3: proactive service campaign and staffing",
                "start_line": 388,
                "end_line": 390,
                "span_lf_sha256": "2df8c9f0cc77791dc44a1a09d47b8e3347b56949368087a7e21baa0a430d10fd"
              }
            ],
            "initial_flag_disposition": "existing-adequate-for-verb",
            "reason": "For “Design the Dynamics 365 Contact Center setup”, the current selected text teaches standalone/embedded/thirdparty integration choice, actual CRM sync/embed setup and connector/TCO contracts; authenticated scoped digital agent/tool/knowledge interaction, transfer and safe outcomes; consent-compliant multilingual voice/DTMF/handoff with identity/noise/latency/sensitive-media tests; forecast/schedule/proactive consent/workstream/overflow and supervisor/business/technical measurement. The setup path begins from service outcome/CRM/telephony/region/scale/compliance/cost, selects standalone/embedded/CCaaS and follows solutions/identity/channel/routing/agent/monitoring dependencies; three integrated journeys test the design.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "architecture",
              "scenario1",
              "scenario2",
              "scenario3"
            ]
          },
          {
            "wording": "Use best practices when setting up voice",
            "objective_wording_sha256": "1484f285d24fc088734d66088bcfe20f49955d08de89920c0c166aadb8ba8231",
            "group": "Configure channel features",
            "group_number": 6,
            "objective_number": 24,
            "evidence_spans": [
              {
                "heading": "Provision voice",
                "start_line": 144,
                "end_line": 159,
                "span_lf_sha256": "2f13ac624728d828105bdcbf740d3f263d6a65fdd93383d1bc5515a18d064440"
              },
              {
                "heading": "Configure voice agents",
                "start_line": 255,
                "end_line": 259,
                "span_lf_sha256": "c593795b2855c8a3f0fc9fc17c703e6a94c68bc8604d64ea5d91decac5d004c5"
              },
              {
                "heading": "Worked voice binding: keypad trigger and transfer context",
                "start_line": 263,
                "end_line": 273,
                "span_lf_sha256": "445ebbc15b894012da5c49403b88a06f201fff1831cb93d13f7eefe0834fd872"
              },
              {
                "heading": "Scenario 2: regulated multilingual voice",
                "start_line": 384,
                "end_line": 384,
                "span_lf_sha256": "bb2752a36372d4c92ca13a31fc8651d78aa758b370947b7fc0ff7952b38af868"
              }
            ],
            "initial_flag_disposition": "not-flagged-initially",
            "reason": "For “Use best practices when setting up voice”, the selected current teaching explains ACS versus Teams number/resource/workstream path, SBC/carrier/external-IVR metadata and media/quality/recovery tests; classic/generative voice, variables/security/recording/language and safe input/tool/escalation design; Basic voice/channel/publish and DTMF key/trigger precedence, plus DirectRouting SIP parse/schema/global record/transfer-header path and real-time pipeline/auth/transcript/conversion limits; consent-compliant multilingual voice/DTMF/handoff with identity/noise/latency/sensitive-media tests. Its purpose, operation/design boundary and checks support this objective; this is editorial teaching coverage, not observed product execution.",
            "initial_depth_result": "substantive",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "voice",
              "voiceagent",
              "voicebind",
              "scenario2"
            ]
          },
          {
            "wording": "Use best practices for developing AI capabilities",
            "objective_wording_sha256": "afd8eae86a37fca5d084617218a932914d42b761410743db2eafa7b1a3de65ed",
            "group": "Configure channel features",
            "group_number": 6,
            "objective_number": 25,
            "evidence_spans": [
              {
                "heading": "Configure Copilot-assisted guidance",
                "start_line": 237,
                "end_line": 241,
                "span_lf_sha256": "9696f94082949e7988adab80ed404f4e1d686e1b66467a10f5593dc60c16f77d"
              },
              {
                "heading": "Worked representative-assistance setup",
                "start_line": 245,
                "end_line": 251,
                "span_lf_sha256": "f2812710d967ebcaf16a12f3cba01bb935049f6912c06ac0bf60c95a785e5f7b"
              },
              {
                "heading": "Configure voice agents",
                "start_line": 255,
                "end_line": 259,
                "span_lf_sha256": "c593795b2855c8a3f0fc9fc17c703e6a94c68bc8604d64ea5d91decac5d004c5"
              },
              {
                "heading": "Worked voice binding: keypad trigger and transfer context",
                "start_line": 263,
                "end_line": 273,
                "span_lf_sha256": "445ebbc15b894012da5c49403b88a06f201fff1831cb93d13f7eefe0834fd872"
              },
              {
                "heading": "Scenario 1: authenticated digital self-service",
                "start_line": 380,
                "end_line": 380,
                "span_lf_sha256": "631060bee749b91a028501317ac4febc81629d86da37a2101a4b309c7c7be61f"
              },
              {
                "heading": "Scenario 2: regulated multilingual voice",
                "start_line": 384,
                "end_line": 384,
                "span_lf_sha256": "bb2752a36372d4c92ca13a31fc8651d78aa758b370947b7fc0ff7952b38af868"
              }
            ],
            "initial_flag_disposition": "not-flagged-initially",
            "reason": "For “Use best practices for developing AI capabilities”, the selected current teaching explains approved/permissioned knowledge, bounded typed tools, source-context/output verification, voice safety/authentication/recording/latency/language limits and controlled escalation across complete assistance and voice scenarios. Its purpose, operation/design boundary and checks support this objective; this is editorial teaching coverage, not observed product execution.",
            "initial_depth_result": "substantive",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "assist",
              "assistbuild",
              "voiceagent",
              "voicebind",
              "scenario1",
              "scenario2"
            ]
          },
          {
            "wording": "Evaluate the total cost of ownership for a Dynamics 365 Contact Center implementation",
            "objective_wording_sha256": "14b2feac7cceb0b6de24a6b3354792d85511cd11f443a13dce63f7ce7ddc97a0",
            "group": "Configure channel features",
            "group_number": 6,
            "objective_number": 26,
            "evidence_spans": [
              {
                "heading": "Choose the architecture and deployment mode",
                "start_line": 67,
                "end_line": 77,
                "span_lf_sha256": "96dd0cdc9dc0e16b6fb2ba41c0bd5f08b19434806406e486657e14903148f4cf"
              }
            ],
            "initial_flag_disposition": "not-flagged-initially",
            "reason": "For “Evaluate the total cost of ownership for a Dynamics 365 Contact Center implementation”, the selected current teaching explains standalone/embedded/thirdparty integration choice, actual CRM sync/embed setup and connector/TCO contracts. Its purpose, operation/design boundary and checks support this objective; this is editorial teaching coverage, not observed product execution.",
            "initial_depth_result": "substantive",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "architecture"
            ]
          },
          {
            "wording": "Configure Copilot summaries",
            "objective_wording_sha256": "c96cc47f932fd96a72a8b882c43c2d231680c95e690d3e0c79deefed031afecf",
            "group": "Configure agent assist capabilities in Dynamics 365 Contact Center",
            "group_number": 7,
            "objective_number": 1,
            "evidence_spans": [
              {
                "heading": "Configure Copilot-assisted guidance",
                "start_line": 237,
                "end_line": 241,
                "span_lf_sha256": "9696f94082949e7988adab80ed404f4e1d686e1b66467a10f5593dc60c16f77d"
              },
              {
                "heading": "Worked representative-assistance setup",
                "start_line": 245,
                "end_line": 251,
                "span_lf_sha256": "f2812710d967ebcaf16a12f3cba01bb935049f6912c06ac0bf60c95a785e5f7b"
              }
            ],
            "initial_flag_disposition": "repaired-by-actual-packet",
            "reason": "For “Configure Copilot summaries”, the current selected text teaches approved Copilot context/knowledge/tool permission and measured quality/outcome versus invocation; help-pane knowledge filters, summary triggers/format, published preview tools and separate BotService smart-assist registration. For “Configure Copilot summaries”: Experience-profile enablement, help-pane knowledge/filter scope, summary trigger/format and published preview extension paths now teach the actual pilot setup with outside-scope/invented-code/tool-priority failures.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [
              "ab250-copilot-assist-build"
            ],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "assist",
              "assistbuild"
            ]
          },
          {
            "wording": "Configure the Ask a question feature",
            "objective_wording_sha256": "80022e553f676b17ee54577fb5223951da83d3f059ca878fcda5da7dbcbe06ad",
            "group": "Configure agent assist capabilities in Dynamics 365 Contact Center",
            "group_number": 7,
            "objective_number": 2,
            "evidence_spans": [
              {
                "heading": "Configure Copilot-assisted guidance",
                "start_line": 237,
                "end_line": 241,
                "span_lf_sha256": "9696f94082949e7988adab80ed404f4e1d686e1b66467a10f5593dc60c16f77d"
              },
              {
                "heading": "Worked representative-assistance setup",
                "start_line": 245,
                "end_line": 251,
                "span_lf_sha256": "f2812710d967ebcaf16a12f3cba01bb935049f6912c06ac0bf60c95a785e5f7b"
              }
            ],
            "initial_flag_disposition": "repaired-by-actual-packet",
            "reason": "For “Configure the Ask a question feature”, the current selected text teaches approved Copilot context/knowledge/tool permission and measured quality/outcome versus invocation; help-pane knowledge filters, summary triggers/format, published preview tools and separate BotService smart-assist registration. For “Configure the Ask a question feature”: Experience-profile enablement, help-pane knowledge/filter scope, summary trigger/format and published preview extension paths now teach the actual pilot setup with outside-scope/invented-code/tool-priority failures.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [
              "ab250-copilot-assist-build"
            ],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "assist",
              "assistbuild"
            ]
          },
          {
            "wording": "Configure knowledge sources for Copilot in Dynamics 365 Customer Service",
            "objective_wording_sha256": "d4328cd8fe664513a203aeec7e02654e5d4256cb1abe5fd178182e0296335aff",
            "group": "Configure agent assist capabilities in Dynamics 365 Contact Center",
            "group_number": 7,
            "objective_number": 3,
            "evidence_spans": [
              {
                "heading": "Configure Copilot-assisted guidance",
                "start_line": 237,
                "end_line": 241,
                "span_lf_sha256": "9696f94082949e7988adab80ed404f4e1d686e1b66467a10f5593dc60c16f77d"
              },
              {
                "heading": "Worked representative-assistance setup",
                "start_line": 245,
                "end_line": 251,
                "span_lf_sha256": "f2812710d967ebcaf16a12f3cba01bb935049f6912c06ac0bf60c95a785e5f7b"
              }
            ],
            "initial_flag_disposition": "repaired-by-actual-packet",
            "reason": "For “Configure knowledge sources for Copilot in Dynamics 365 Customer Service”, the current selected text teaches approved Copilot context/knowledge/tool permission and measured quality/outcome versus invocation; help-pane knowledge filters, summary triggers/format, published preview tools and separate BotService smart-assist registration. For “Configure knowledge sources for Copilot in Dynamics 365 Customer Service”: Experience-profile enablement, help-pane knowledge/filter scope, summary trigger/format and published preview extension paths now teach the actual pilot setup with outside-scope/invented-code/tool-priority failures.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [
              "ab250-copilot-assist-build"
            ],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "assist",
              "assistbuild"
            ]
          },
          {
            "wording": "Extend Copilot capabilities with prompt plugins and tools",
            "objective_wording_sha256": "3083a7b4aee3ca3e0dc93586a17822a4efb0cd11d30d2a269fb8cf64f2052ecd",
            "group": "Configure agent assist capabilities in Dynamics 365 Contact Center",
            "group_number": 7,
            "objective_number": 4,
            "evidence_spans": [
              {
                "heading": "Configure Copilot-assisted guidance",
                "start_line": 237,
                "end_line": 241,
                "span_lf_sha256": "9696f94082949e7988adab80ed404f4e1d686e1b66467a10f5593dc60c16f77d"
              },
              {
                "heading": "Worked representative-assistance setup",
                "start_line": 245,
                "end_line": 251,
                "span_lf_sha256": "f2812710d967ebcaf16a12f3cba01bb935049f6912c06ac0bf60c95a785e5f7b"
              }
            ],
            "initial_flag_disposition": "repaired-by-actual-packet",
            "reason": "For “Extend Copilot capabilities with prompt plugins and tools”, the current selected text teaches approved Copilot context/knowledge/tool permission and measured quality/outcome versus invocation; help-pane knowledge filters, summary triggers/format, published preview tools and separate BotService smart-assist registration. For “Extend Copilot capabilities with prompt plugins and tools”: Experience-profile enablement, help-pane knowledge/filter scope, summary trigger/format and published preview extension paths now teach the actual pilot setup with outside-scope/invented-code/tool-priority failures.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [
              "ab250-copilot-assist-build"
            ],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "assist",
              "assistbuild"
            ]
          },
          {
            "wording": "Interpret the Copilot analytics report",
            "objective_wording_sha256": "6e94aced0d1ab2ffc47e8131c3537df9fad3164453a3baa41e72994cccdfc587",
            "group": "Configure agent assist capabilities in Dynamics 365 Contact Center",
            "group_number": 7,
            "objective_number": 5,
            "evidence_spans": [
              {
                "heading": "Configure Copilot-assisted guidance",
                "start_line": 237,
                "end_line": 241,
                "span_lf_sha256": "9696f94082949e7988adab80ed404f4e1d686e1b66467a10f5593dc60c16f77d"
              },
              {
                "heading": "Worked example 6 — Overlapping diagnostics and correct containment",
                "start_line": 370,
                "end_line": 374,
                "span_lf_sha256": "4681779bd65884b77ee5031f9fc4a2918bfe8af2d4e7c114ce38349189d76649"
              }
            ],
            "initial_flag_disposition": "existing-adequate-for-verb",
            "reason": "For “Interpret the Copilot analytics report”, the current selected text teaches approved Copilot context/knowledge/tool permission and measured quality/outcome versus invocation; overlapping diagnostic set union and correct-containment outcome denominators. Copilot use is interpreted alongside acceptance/correction, quality, handle time/resolution/escalation/satisfaction; invocation count is explicitly rejected as value proof and the containment fixture supplies denominator checks.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "assist",
              "analyticsfixture"
            ]
          },
          {
            "wording": "Create a smart assist bot",
            "objective_wording_sha256": "28fb5b7f68d0c3bde9d30045b297f3896cd4a0452f51172cfafffe67dff599d8",
            "group": "Configure agent assist capabilities in Dynamics 365 Contact Center",
            "group_number": 7,
            "objective_number": 6,
            "evidence_spans": [
              {
                "heading": "Configure Copilot-assisted guidance",
                "start_line": 237,
                "end_line": 241,
                "span_lf_sha256": "9696f94082949e7988adab80ed404f4e1d686e1b66467a10f5593dc60c16f77d"
              },
              {
                "heading": "Worked representative-assistance setup",
                "start_line": 245,
                "end_line": 251,
                "span_lf_sha256": "f2812710d967ebcaf16a12f3cba01bb935049f6912c06ac0bf60c95a785e5f7b"
              }
            ],
            "initial_flag_disposition": "repaired-by-actual-packet",
            "reason": "For “Create a smart assist bot”, the current selected text teaches approved Copilot context/knowledge/tool permission and measured quality/outcome versus invocation; help-pane knowledge filters, summary triggers/format, published preview tools and separate BotService smart-assist registration. For “Create a smart assist bot”: The Bot Service application-user/app-ID/role→workstream registration and representative-message trigger now supply a bounded supported smart-assist deployment contract; Copilot-agent substitution and retired built-ins are excluded.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [
              "ab250-smart-assist"
            ],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "assist",
              "assistbuild"
            ]
          },
          {
            "wording": "Configure IVR with voice agents by using generative AI or classic orchestration",
            "objective_wording_sha256": "9d541201a31aaa0a5a57066511c424eca5e4eefb88c9e6093d19d2971b0bfe04",
            "group": "Configure voice agents",
            "group_number": 8,
            "objective_number": 1,
            "evidence_spans": [
              {
                "heading": "Configure voice agents",
                "start_line": 255,
                "end_line": 259,
                "span_lf_sha256": "c593795b2855c8a3f0fc9fc17c703e6a94c68bc8604d64ea5d91decac5d004c5"
              },
              {
                "heading": "Worked voice binding: keypad trigger and transfer context",
                "start_line": 263,
                "end_line": 273,
                "span_lf_sha256": "445ebbc15b894012da5c49403b88a06f201fff1831cb93d13f7eefe0834fd872"
              }
            ],
            "initial_flag_disposition": "repaired-by-actual-packet",
            "reason": "For “Configure IVR with voice agents by using generative AI or classic orchestration”, the current selected text teaches classic/generative voice, variables/security/recording/language and safe input/tool/escalation design; Basic voice/channel/publish and DTMF key/trigger precedence, plus DirectRouting SIP parse/schema/global record/transfer-header path and real-time pipeline/auth/transcript/conversion limits. For “Configure IVR with voice agents by using generative AI or classic orchestration”: Basic voice/channel/publish→DTMF trigger/key/Question precedence and SIP parse/schema/global record→external transfer header binding now supply the missing named primitives and wrong-key/schema/receiver checks.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [
              "ab250-voice-bindings"
            ],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "voiceagent",
              "voicebind"
            ]
          },
          {
            "wording": "Manage variables in Copilot Studio",
            "objective_wording_sha256": "a01c0af0ebd12f1cbe7638f9b55855f318bd72a658570cf0de9861be3f544df0",
            "group": "Configure voice agents",
            "group_number": 8,
            "objective_number": 2,
            "evidence_spans": [
              {
                "heading": "Configure voice agents",
                "start_line": 255,
                "end_line": 259,
                "span_lf_sha256": "c593795b2855c8a3f0fc9fc17c703e6a94c68bc8604d64ea5d91decac5d004c5"
              },
              {
                "heading": "Worked voice binding: keypad trigger and transfer context",
                "start_line": 263,
                "end_line": 273,
                "span_lf_sha256": "445ebbc15b894012da5c49403b88a06f201fff1831cb93d13f7eefe0834fd872"
              }
            ],
            "initial_flag_disposition": "repaired-by-actual-packet",
            "reason": "For “Manage variables in Copilot Studio”, the current selected text teaches classic/generative voice, variables/security/recording/language and safe input/tool/escalation design; Basic voice/channel/publish and DTMF key/trigger precedence, plus DirectRouting SIP parse/schema/global record/transfer-header path and real-time pipeline/auth/transcript/conversion limits. For “Manage variables in Copilot Studio”: Basic voice/channel/publish→DTMF trigger/key/Question precedence and SIP parse/schema/global record→external transfer header binding now supply the missing named primitives and wrong-key/schema/receiver checks.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [
              "ab250-voice-bindings"
            ],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "voiceagent",
              "voicebind"
            ]
          },
          {
            "wording": "Secure the Dynamics 365 Contact Center voice channel",
            "objective_wording_sha256": "08f9e999292b424a0399f5b04cf5ddcfd5ca3fc53f9cdea466efe28de3855db2",
            "group": "Configure voice agents",
            "group_number": 8,
            "objective_number": 3,
            "evidence_spans": [
              {
                "heading": "Configure voice agents",
                "start_line": 255,
                "end_line": 259,
                "span_lf_sha256": "c593795b2855c8a3f0fc9fc17c703e6a94c68bc8604d64ea5d91decac5d004c5"
              },
              {
                "heading": "Worked voice binding: keypad trigger and transfer context",
                "start_line": 263,
                "end_line": 273,
                "span_lf_sha256": "445ebbc15b894012da5c49403b88a06f201fff1831cb93d13f7eefe0834fd872"
              },
              {
                "heading": "Configure chat and digital engagement",
                "start_line": 126,
                "end_line": 134,
                "span_lf_sha256": "6936d379d80cb739a6f8c6367052748e3e94de74acb0006479385627ea92cc0b"
              },
              {
                "heading": "Distinguish message masking, voice masking and recording controls",
                "start_line": 193,
                "end_line": 199,
                "span_lf_sha256": "4309e744e9c7f2948c77bf84d47bd22f572984f8d38533b386c855245228422d"
              },
              {
                "heading": "Scenario 2: regulated multilingual voice",
                "start_line": 384,
                "end_line": 384,
                "span_lf_sha256": "bb2752a36372d4c92ca13a31fc8651d78aa758b370947b7fc0ff7952b38af868"
              }
            ],
            "initial_flag_disposition": "existing-adequate-for-verb",
            "reason": "For “Secure the Dynamics 365 Contact Center voice channel”, the current selected text teaches verified channel identity versus agent authentication, least-privilege tools, data/secret protection, guarded transfers and media/destination controls with denied/unauthorized cases. Voice security couples identity, least-privilege tools, protected secrets/data, recording and explicit escalation; unauthenticated real-time digital capability cannot authorize account changes.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "voiceagent",
              "voicebind",
              "chat",
              "mask",
              "scenario2"
            ]
          },
          {
            "wording": "Configure compliant call recording in Copilot Studio",
            "objective_wording_sha256": "1b3c99577a23c5f6cf80543e2d1ab793415010d8a6d172ebcf99216a01524004",
            "group": "Configure voice agents",
            "group_number": 8,
            "objective_number": 4,
            "evidence_spans": [
              {
                "heading": "Configure voice agents",
                "start_line": 255,
                "end_line": 259,
                "span_lf_sha256": "c593795b2855c8a3f0fc9fc17c703e6a94c68bc8604d64ea5d91decac5d004c5"
              },
              {
                "heading": "Distinguish message masking, voice masking and recording controls",
                "start_line": 193,
                "end_line": 199,
                "span_lf_sha256": "4309e744e9c7f2948c77bf84d47bd22f572984f8d38533b386c855245228422d"
              },
              {
                "heading": "Worked CCaaS voice operation: request versus completion",
                "start_line": 163,
                "end_line": 165,
                "span_lf_sha256": "71622bf10a5d919667a91cd3a9fccac154bbb2c9bd32e3ce96b1cb38a29c961f"
              }
            ],
            "initial_flag_disposition": "existing-adequate-for-verb",
            "reason": "For “Configure compliant call recording in Copilot Studio”, the current selected text teaches consent/retention/access plus CopilotStudio sensitive-variable recording/transcription behavior, first-answer/unflagged/downstream gaps and pause request versus confirmed completion. Compliant recording is separated from organizational consent/retention/access and sensitive-variable timing; first-answer and downstream data paths remain unprotected unless separately controlled.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "voiceagent",
              "mask",
              "voicesdk"
            ]
          },
          {
            "wording": "Configure SIP header transfers",
            "objective_wording_sha256": "23c489e2aba4f599ef45d6e15b1f6ba2ef9fc4dae1fa78b3bce90a680c778e55",
            "group": "Configure voice agents",
            "group_number": 8,
            "objective_number": 5,
            "evidence_spans": [
              {
                "heading": "Configure voice agents",
                "start_line": 255,
                "end_line": 259,
                "span_lf_sha256": "c593795b2855c8a3f0fc9fc17c703e6a94c68bc8604d64ea5d91decac5d004c5"
              },
              {
                "heading": "Worked voice binding: keypad trigger and transfer context",
                "start_line": 263,
                "end_line": 273,
                "span_lf_sha256": "445ebbc15b894012da5c49403b88a06f201fff1831cb93d13f7eefe0834fd872"
              }
            ],
            "initial_flag_disposition": "repaired-by-actual-packet",
            "reason": "For “Configure SIP header transfers”, the current selected text teaches classic/generative voice, variables/security/recording/language and safe input/tool/escalation design; Basic voice/channel/publish and DTMF key/trigger precedence, plus DirectRouting SIP parse/schema/global record/transfer-header path and real-time pipeline/auth/transcript/conversion limits. For “Configure SIP header transfers”: Basic voice/channel/publish→DTMF trigger/key/Question precedence and SIP parse/schema/global record→external transfer header binding now supply the missing named primitives and wrong-key/schema/receiver checks.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [
              "ab250-voice-bindings"
            ],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "voiceagent",
              "voicebind"
            ]
          },
          {
            "wording": "Configure the Real-time Speech agent",
            "objective_wording_sha256": "eca7465314dc61f45149cbd3bbb9b8da453ff0f49a184ae1dd57f5ceb2ca46bd",
            "group": "Configure voice agents",
            "group_number": 8,
            "objective_number": 6,
            "evidence_spans": [
              {
                "heading": "Configure voice agents",
                "start_line": 255,
                "end_line": 259,
                "span_lf_sha256": "c593795b2855c8a3f0fc9fc17c703e6a94c68bc8604d64ea5d91decac5d004c5"
              },
              {
                "heading": "Worked voice binding: keypad trigger and transfer context",
                "start_line": 263,
                "end_line": 273,
                "span_lf_sha256": "445ebbc15b894012da5c49403b88a06f201fff1831cb93d13f7eefe0834fd872"
              },
              {
                "heading": "Scenario 2: regulated multilingual voice",
                "start_line": 384,
                "end_line": 384,
                "span_lf_sha256": "bb2752a36372d4c92ca13a31fc8651d78aa758b370947b7fc0ff7952b38af868"
              }
            ],
            "initial_flag_disposition": "existing-adequate-for-verb",
            "reason": "For “Configure the Real-time Speech agent”, the current selected text teaches speech-to-speech versus text-LLM pipeline, model/region/inference geography, auth/duration/transcript limitations, real-time-to-classic conversion and barge-in/noise/tool-failure tests. Real-time setup selects speech-to-speech versus text pipeline, model/region/geography and supported auth/channel/duration, then tests barge-in/noise/tool failure/transcript completeness and conversion-to-classic limits.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "voiceagent",
              "voicebind",
              "scenario2"
            ]
          },
          {
            "wording": "Configure dual-tone multi-frequency (DTMF), natural language understanding (NLU), and speech-based IVR",
            "objective_wording_sha256": "05b464453f5792c039f9235806631bda5db2ea9c1ea4e375203ed55ce9a7ba08",
            "group": "Configure voice agents",
            "group_number": 8,
            "objective_number": 7,
            "evidence_spans": [
              {
                "heading": "Configure voice agents",
                "start_line": 255,
                "end_line": 259,
                "span_lf_sha256": "c593795b2855c8a3f0fc9fc17c703e6a94c68bc8604d64ea5d91decac5d004c5"
              },
              {
                "heading": "Worked voice binding: keypad trigger and transfer context",
                "start_line": 263,
                "end_line": 273,
                "span_lf_sha256": "445ebbc15b894012da5c49403b88a06f201fff1831cb93d13f7eefe0834fd872"
              }
            ],
            "initial_flag_disposition": "repaired-by-actual-packet",
            "reason": "For “Configure dual-tone multi-frequency (DTMF), natural language understanding (NLU), and speech-based IVR”, the current selected text teaches classic/generative voice, variables/security/recording/language and safe input/tool/escalation design; Basic voice/channel/publish and DTMF key/trigger precedence, plus DirectRouting SIP parse/schema/global record/transfer-header path and real-time pipeline/auth/transcript/conversion limits. For “Configure dual-tone multi-frequency (DTMF), natural language understanding (NLU), and speech-based IVR”: Basic voice/channel/publish→DTMF trigger/key/Question precedence and SIP parse/schema/global record→external transfer header binding now supply the missing named primitives and wrong-key/schema/receiver checks.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [
              "ab250-voice-bindings"
            ],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "voiceagent",
              "voicebind"
            ]
          },
          {
            "wording": "Configure Copilot Studio voice triggers",
            "objective_wording_sha256": "528383cf0e61e5306ecc1595be7d46a3df1ad7d38c4c01e4d31e2ef0d58a7ed1",
            "group": "Configure voice agents",
            "group_number": 8,
            "objective_number": 8,
            "evidence_spans": [
              {
                "heading": "Configure voice agents",
                "start_line": 255,
                "end_line": 259,
                "span_lf_sha256": "c593795b2855c8a3f0fc9fc17c703e6a94c68bc8604d64ea5d91decac5d004c5"
              },
              {
                "heading": "Worked voice binding: keypad trigger and transfer context",
                "start_line": 263,
                "end_line": 273,
                "span_lf_sha256": "445ebbc15b894012da5c49403b88a06f201fff1831cb93d13f7eefe0834fd872"
              }
            ],
            "initial_flag_disposition": "repaired-by-actual-packet",
            "reason": "For “Configure Copilot Studio voice triggers”, the current selected text teaches classic/generative voice, variables/security/recording/language and safe input/tool/escalation design; Basic voice/channel/publish and DTMF key/trigger precedence, plus DirectRouting SIP parse/schema/global record/transfer-header path and real-time pipeline/auth/transcript/conversion limits. For “Configure Copilot Studio voice triggers”: Basic voice/channel/publish→DTMF trigger/key/Question precedence and SIP parse/schema/global record→external transfer header binding now supply the missing named primitives and wrong-key/schema/receiver checks.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [
              "ab250-voice-bindings"
            ],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "voiceagent",
              "voicebind"
            ]
          },
          {
            "wording": "Implement best practices for configuring voice agents",
            "objective_wording_sha256": "06867e6d6930768caaffeb4e14c1f8fdd78426ec0bf6d1871d3b1030fd1f4736",
            "group": "Configure voice agents",
            "group_number": 8,
            "objective_number": 9,
            "evidence_spans": [
              {
                "heading": "Configure voice agents",
                "start_line": 255,
                "end_line": 259,
                "span_lf_sha256": "c593795b2855c8a3f0fc9fc17c703e6a94c68bc8604d64ea5d91decac5d004c5"
              },
              {
                "heading": "Worked voice binding: keypad trigger and transfer context",
                "start_line": 263,
                "end_line": 273,
                "span_lf_sha256": "445ebbc15b894012da5c49403b88a06f201fff1831cb93d13f7eefe0834fd872"
              },
              {
                "heading": "Scenario 2: regulated multilingual voice",
                "start_line": 384,
                "end_line": 384,
                "span_lf_sha256": "bb2752a36372d4c92ca13a31fc8651d78aa758b370947b7fc0ff7952b38af868"
              }
            ],
            "initial_flag_disposition": "existing-adequate-for-verb",
            "reason": "For “Implement best practices for configuring voice agents”, the current selected text teaches latency/barge-in/noise/accent, sensitive audio, incomplete transcript, hallucinated commitment, wrong tool/identity and deterministic transfer tests, separated from limited agentic simulation. Voice evaluation includes latency, interruption/noise/accent, wrong tool/identity, hallucinated commitments, sensitive audio and deterministic handoff; product DTMF support is separated from simulation coverage.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "voiceagent",
              "voicebind",
              "scenario2"
            ]
          },
          {
            "wording": "Configure multilingual voice agents",
            "objective_wording_sha256": "e19fcad2e35dc8398eb3c98e54b25ba838f9dfd837d713351edd4ed3fbafadd1",
            "group": "Configure voice agents",
            "group_number": 8,
            "objective_number": 10,
            "evidence_spans": [
              {
                "heading": "Configure voice agents",
                "start_line": 255,
                "end_line": 259,
                "span_lf_sha256": "c593795b2855c8a3f0fc9fc17c703e6a94c68bc8604d64ea5d91decac5d004c5"
              },
              {
                "heading": "Worked voice binding: keypad trigger and transfer context",
                "start_line": 263,
                "end_line": 273,
                "span_lf_sha256": "445ebbc15b894012da5c49403b88a06f201fff1831cb93d13f7eefe0834fd872"
              },
              {
                "heading": "Scenario 2: regulated multilingual voice",
                "start_line": 384,
                "end_line": 384,
                "span_lf_sha256": "bb2752a36372d4c92ca13a31fc8651d78aa758b370947b7fc0ff7952b38af868"
              }
            ],
            "initial_flag_disposition": "existing-adequate-for-verb",
            "reason": "For “Configure multilingual voice agents”, the current selected text teaches per-language prompts/voices/knowledge/notices/routing and evaluation with interpreter/human fallback, not machine translation or model language claims alone. Per-language prompts/voices/knowledge/notices/routing and evaluation are explicit deployment inputs; machine translation and model language ability alone are rejected as readiness evidence.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "voiceagent",
              "voicebind",
              "scenario2"
            ]
          },
          {
            "wording": "Create and manage queues",
            "objective_wording_sha256": "c0ed443e6d9a14f938ecebe22e104f83451cf31f9664bef1700e3327c007949e",
            "group": "Configure queues",
            "group_number": 9,
            "objective_number": 1,
            "evidence_spans": [
              {
                "heading": "Design queues and capacity behavior",
                "start_line": 279,
                "end_line": 287,
                "span_lf_sha256": "bc233a63c8147b7dd7f2e8ba231e2ff1633d1ede9c73b1bc14c945987becec3e"
              }
            ],
            "initial_flag_disposition": "existing-adequate-for-verb",
            "reason": "For “Create and manage queues”, the current selected text teaches compatible queue types/member/priority/hours/capacity and assignment/overflow/fallback evaluation/failure. Compatible queue type/membership/priority/hours/capacity/service target are defined before assignment, overflow and fallback; default24-hour and lower-numeric priority behaviors are specific checks.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "queue"
            ]
          },
          {
            "wording": "Configure queue prioritization",
            "objective_wording_sha256": "73e6fc406257ea23c69c244affe02daf0e84b1acfbf6e2cd9b8e3f529fb53ccb",
            "group": "Configure queues",
            "group_number": 9,
            "objective_number": 2,
            "evidence_spans": [
              {
                "heading": "Design queues and capacity behavior",
                "start_line": 279,
                "end_line": 287,
                "span_lf_sha256": "bc233a63c8147b7dd7f2e8ba231e2ff1633d1ede9c73b1bc14c945987becec3e"
              }
            ],
            "initial_flag_disposition": "not-flagged-initially",
            "reason": "For “Configure queue prioritization”, the selected current teaching explains compatible queue types/member/priority/hours/capacity and assignment/overflow/fallback evaluation/failure. Its purpose, operation/design boundary and checks support this objective; this is editorial teaching coverage, not observed product execution.",
            "initial_depth_result": "substantive",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "queue"
            ]
          },
          {
            "wording": "Configure overflow and fallback",
            "objective_wording_sha256": "a260b7361adeb8c06f5b2b106f45347c6a6b3774bc957d4cbe768acc99c70eeb",
            "group": "Configure queues",
            "group_number": 9,
            "objective_number": 3,
            "evidence_spans": [
              {
                "heading": "Design queues and capacity behavior",
                "start_line": 279,
                "end_line": 287,
                "span_lf_sha256": "bc233a63c8147b7dd7f2e8ba231e2ff1633d1ede9c73b1bc14c945987becec3e"
              }
            ],
            "initial_flag_disposition": "not-flagged-initially",
            "reason": "For “Configure overflow and fallback”, the selected current teaching explains compatible queue types/member/priority/hours/capacity and assignment/overflow/fallback evaluation/failure. Its purpose, operation/design boundary and checks support this objective; this is editorial teaching coverage, not observed product execution.",
            "initial_depth_result": "substantive",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "queue"
            ]
          },
          {
            "wording": "Configure work assignment methods",
            "objective_wording_sha256": "01873c794cfad76412a5e2709389cf4aa27be92939c6e41672e6c5fcdb07e894",
            "group": "Configure queues",
            "group_number": 9,
            "objective_number": 4,
            "evidence_spans": [
              {
                "heading": "Design queues and capacity behavior",
                "start_line": 279,
                "end_line": 287,
                "span_lf_sha256": "bc233a63c8147b7dd7f2e8ba231e2ff1633d1ede9c73b1bc14c945987becec3e"
              }
            ],
            "initial_flag_disposition": "existing-adequate-for-verb",
            "reason": "For “Configure work assignment methods”, the current selected text teaches compatible queue types/member/priority/hours/capacity and assignment/overflow/fallback evaluation/failure. Highest-capacity/round-robin/least-active choice is constrained by member presence/skills/capacity and tested for fairness/starvation/unavailability; membership is not assignment eligibility.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "queue"
            ]
          },
          {
            "wording": "Set up operating hours",
            "objective_wording_sha256": "136fa789ff5c2bf8e0498c5ec953179296a9db4f25caa7d479f8f86fff31708f",
            "group": "Configure queues",
            "group_number": 9,
            "objective_number": 5,
            "evidence_spans": [
              {
                "heading": "Design queues and capacity behavior",
                "start_line": 279,
                "end_line": 287,
                "span_lf_sha256": "bc233a63c8147b7dd7f2e8ba231e2ff1633d1ede9c73b1bc14c945987becec3e"
              },
              {
                "heading": "Apply ALM and environment governance",
                "start_line": 95,
                "end_line": 99,
                "span_lf_sha256": "829f57fcf8c757f4b2fbe159716d885f11d0eb9dab3bc3f098ce7def3754cb45"
              }
            ],
            "initial_flag_disposition": "existing-adequate-for-verb",
            "reason": "For “Set up operating hours”, the current selected text teaches compatible queue types/member/priority/hours/capacity and assignment/overflow/fallback evaluation/failure; solution/reference/environment/dependency versioned deployment and calendar/number/rollback exceptions. Operating hours/timezone/holidays are configured and verified in target because Calendar cannot export/import normally; out-of-hours defaults and overflow engines are explicitly tested.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "queue",
              "alm"
            ]
          },
          {
            "wording": "Configure workstreams, including configuring context variables and associating agents in Copilot Studio",
            "objective_wording_sha256": "3cb11cbde1b09de6bbe7f5e63c9e406f66586cf1bb8d0d045c3613ecaed914f0",
            "group": "Configure basic and unified routing",
            "group_number": 10,
            "objective_number": 1,
            "evidence_spans": [
              {
                "heading": "Build basic and unified routing",
                "start_line": 291,
                "end_line": 306,
                "span_lf_sha256": "e10b3df0e2dd33fe299bf2fc7df4fefd1ea704b13de7b8ecd9ef565479a1bfe6"
              },
              {
                "heading": "Configure conversation lifecycle features",
                "start_line": 169,
                "end_line": 175,
                "span_lf_sha256": "c0a978b90506d6522119935bf6437de94bd752df55cfc332dee87d7203c5febc"
              }
            ],
            "initial_flag_disposition": "existing-adequate-for-verb",
            "reason": "For “Configure workstreams, including configuring context variables and associating agents in Copilot Studio”, the current selected text teaches workstream/context→classification→route/queue→skills/AI/intent/preferred/record/basic assignment with diagnostics; typed context/customer matching, conversation state/consult/transfer, CIF/timeline/attachment and feedback boundaries. Workstream binds channel/record intake, validated context and distribution/agent behavior before classification and routing; line-of-business and actual agent settings must agree.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "routing",
              "lifecycle"
            ]
          },
          {
            "wording": "Configure work classification rules",
            "objective_wording_sha256": "8fdc7bc77d14324bb7fcd01baa713d0b3e091e5f225a88d13186f9ed661b703e",
            "group": "Configure basic and unified routing",
            "group_number": 10,
            "objective_number": 2,
            "evidence_spans": [
              {
                "heading": "Build basic and unified routing",
                "start_line": 291,
                "end_line": 306,
                "span_lf_sha256": "e10b3df0e2dd33fe299bf2fc7df4fefd1ea704b13de7b8ecd9ef565479a1bfe6"
              }
            ],
            "initial_flag_disposition": "existing-adequate-for-verb",
            "reason": "For “Configure work classification rules”, the current selected text teaches workstream/context→classification→route/queue→skills/AI/intent/preferred/record/basic assignment with diagnostics. Classification derives language/intent/priority/skills before one route ruleset; diagnostics preserve applied rules and fallback when no rule or attribute matches.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "routing"
            ]
          },
          {
            "wording": "Configure the engagement agent",
            "objective_wording_sha256": "ba357f832e307481340ac68f152cfac4b1c5136cb2b03fc1503068ca1da3e713",
            "group": "Configure basic and unified routing",
            "group_number": 10,
            "objective_number": 3,
            "evidence_spans": [
              {
                "heading": "Build basic and unified routing",
                "start_line": 291,
                "end_line": 306,
                "span_lf_sha256": "e10b3df0e2dd33fe299bf2fc7df4fefd1ea704b13de7b8ecd9ef565479a1bfe6"
              }
            ],
            "initial_flag_disposition": "existing-adequate-for-verb",
            "reason": "For “Configure the engagement agent”, the current selected text teaches workstream/context→classification→route/queue→skills/AI/intent/preferred/record/basic assignment with diagnostics. Engagement-agent responsibility is placed in workstream/handoff with bounded autonomy/knowledge/actions and fallback; the guide avoids inventing a universal rename for current Customer Assist/Operations features.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "routing"
            ]
          },
          {
            "wording": "Configure skills-based routing",
            "objective_wording_sha256": "0fc19b8fdec8bc1d112fb1172f11039a40a92e54fa1c38d4918bc82f4b6f0fdf",
            "group": "Configure basic and unified routing",
            "group_number": 10,
            "objective_number": 4,
            "evidence_spans": [
              {
                "heading": "Build basic and unified routing",
                "start_line": 291,
                "end_line": 306,
                "span_lf_sha256": "e10b3df0e2dd33fe299bf2fc7df4fefd1ea704b13de7b8ecd9ef565479a1bfe6"
              }
            ],
            "initial_flag_disposition": "existing-adequate-for-verb",
            "reason": "For “Configure skills-based routing”, the current selected text teaches workstream/context→classification→route/queue→skills/AI/intent/preferred/record/basic assignment with diagnostics. Required skills/proficiency are matched against eligible representatives, then capacity/presence/fallback diagnostics verify the result; staffing remains a separate WFM constraint.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "routing"
            ]
          },
          {
            "wording": "Configure AI-enabled skills-based routing",
            "objective_wording_sha256": "53580a136d16d54fd71a584eb787354c3813024b1e63bd6fb4d3137a4105fc9e",
            "group": "Configure basic and unified routing",
            "group_number": 10,
            "objective_number": 5,
            "evidence_spans": [
              {
                "heading": "Build basic and unified routing",
                "start_line": 291,
                "end_line": 306,
                "span_lf_sha256": "e10b3df0e2dd33fe299bf2fc7df4fefd1ea704b13de7b8ecd9ef565479a1bfe6"
              }
            ],
            "initial_flag_disposition": "existing-adequate-for-verb",
            "reason": "For “Configure AI-enabled skills-based routing”, the current selected text teaches workstream/context→classification→route/queue→skills/AI/intent/preferred/record/basic assignment with diagnostics. AI-inferred skills are explicitly validated as suggestions before assignment and tested for misclassification/fallback rather than assumed authoritative.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "routing"
            ]
          },
          {
            "wording": "Configure intent-based routing",
            "objective_wording_sha256": "b9b5021cd6c0055371a4c83c524e48846c34afb010857ff827a5e94887bad3ac",
            "group": "Configure basic and unified routing",
            "group_number": 10,
            "objective_number": 6,
            "evidence_spans": [
              {
                "heading": "Build basic and unified routing",
                "start_line": 291,
                "end_line": 306,
                "span_lf_sha256": "e10b3df0e2dd33fe299bf2fc7df4fefd1ea704b13de7b8ecd9ef565479a1bfe6"
              }
            ],
            "initial_flag_disposition": "existing-adequate-for-verb",
            "reason": "For “Configure intent-based routing”, the current selected text teaches workstream/context→classification→route/queue→skills/AI/intent/preferred/record/basic assignment with diagnostics. Customer Intent line-of-business scopes intent/users/workstreams/queues, and chat-workstream binding plus discovered-intent/knowledge review supplies a concrete setup boundary.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "routing"
            ]
          },
          {
            "wording": "Configure preferred representative routing",
            "objective_wording_sha256": "3f97f90b66b57563124bebc43c6c73bc3e4a532a6d79dc9e95f45e5129cd3218",
            "group": "Configure basic and unified routing",
            "group_number": 10,
            "objective_number": 7,
            "evidence_spans": [
              {
                "heading": "Build basic and unified routing",
                "start_line": 291,
                "end_line": 306,
                "span_lf_sha256": "e10b3df0e2dd33fe299bf2fc7df4fefd1ea704b13de7b8ecd9ef565479a1bfe6"
              }
            ],
            "initial_flag_disposition": "existing-adequate-for-verb",
            "reason": "For “Configure preferred representative routing”, the current selected text teaches workstream/context→classification→route/queue→skills/AI/intent/preferred/record/basic assignment with diagnostics. Preferred representative routing selects continuity only under availability/policy, with fallback/eligibility tests; the preference cannot override capacity or rights.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "routing"
            ]
          },
          {
            "wording": "Configure routing for records",
            "objective_wording_sha256": "e058572a8d13bb9f0f2cab53036e0ec67f7a24c31ab8af269c0bee8c8e35f208",
            "group": "Configure basic and unified routing",
            "group_number": 10,
            "objective_number": 8,
            "evidence_spans": [
              {
                "heading": "Build basic and unified routing",
                "start_line": 291,
                "end_line": 306,
                "span_lf_sha256": "e10b3df0e2dd33fe299bf2fc7df4fefd1ea704b13de7b8ecd9ef565479a1bfe6"
              }
            ],
            "initial_flag_disposition": "existing-adequate-for-verb",
            "reason": "For “Configure routing for records”, the current selected text teaches workstream/context→classification→route/queue→skills/AI/intent/preferred/record/basic assignment with diagnostics. Nonconversation Dataverse record intake uses record-compatible queues and its own routing/capacity-release behavior rather than a messaging workstream assumption.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "routing"
            ]
          },
          {
            "wording": "Configure basic routing rule sets",
            "objective_wording_sha256": "28acb8aa050ec5d82bd1a18e7f1ff525674080b855210755cb08f23b22cbaa19",
            "group": "Configure basic and unified routing",
            "group_number": 10,
            "objective_number": 9,
            "evidence_spans": [
              {
                "heading": "Build basic and unified routing",
                "start_line": 291,
                "end_line": 306,
                "span_lf_sha256": "e10b3df0e2dd33fe299bf2fc7df4fefd1ea704b13de7b8ecd9ef565479a1bfe6"
              }
            ],
            "initial_flag_disposition": "existing-adequate-for-verb",
            "reason": "For “Configure basic routing rule sets”, the current selected text teaches workstream/context→classification→route/queue→skills/AI/intent/preferred/record/basic assignment with diagnostics. Basic rule sets classify/select destination in ordered deterministic processing with fallback; hit-all/hit-first/percentage examples explain routing outcome and small-sample deviation.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "routing"
            ]
          },
          {
            "wording": "Diagnose unified routing by using conversation diagnostics",
            "objective_wording_sha256": "2ef1d5da06a0d3afa7e873aa1868b4acfa2a1cccc49d4994e30484c439aa6237",
            "group": "Configure basic and unified routing",
            "group_number": 10,
            "objective_number": 10,
            "evidence_spans": [
              {
                "heading": "Build basic and unified routing",
                "start_line": 291,
                "end_line": 306,
                "span_lf_sha256": "e10b3df0e2dd33fe299bf2fc7df4fefd1ea704b13de7b8ecd9ef565479a1bfe6"
              }
            ],
            "initial_flag_disposition": "not-flagged-initially",
            "reason": "For “Diagnose unified routing by using conversation diagnostics”, the selected current teaching explains workstream/context→classification→route/queue→skills/AI/intent/preferred/record/basic assignment with diagnostics. Its purpose, operation/design boundary and checks support this objective; this is editorial teaching coverage, not observed product execution.",
            "initial_depth_result": "substantive",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "routing"
            ]
          },
          {
            "wording": "Create experience profiles",
            "objective_wording_sha256": "a233fb1aca6a431d64dfaac028473277e3c96ac4a8c2dc93ae234328b6648ac8",
            "group": "Configure experience profiles",
            "group_number": 11,
            "objective_number": 1,
            "evidence_spans": [
              {
                "heading": "Tailor profiles, sessions and inbox",
                "start_line": 312,
                "end_line": 314,
                "span_lf_sha256": "c0b339968f4e8e729c8592eb58bcf8526d0a93ffb7d8b11a107e0af8cd0b39a3"
              },
              {
                "heading": "Configure productivity tools",
                "start_line": 318,
                "end_line": 324,
                "span_lf_sha256": "f7e8a3dc5654c661d03a34a4fb9e22027fd7798ba174c8a5c18fbb48e22e3bed"
              }
            ],
            "initial_flag_disposition": "repaired-by-actual-packet",
            "reason": "For “Create experience profiles”, the current selected text teaches app/session/notification/inbox persona responsibilities and session/reconnect/acceptance/accessibility checks; tools/panel/collaboration/context boundaries, actual persona setup and server-to-server messaging create/header/webhook contract. For “Create experience profiles”: The custom persona users/template/tools/inbox setup and separate server-to-server POST conversation/create/header/webhook sequence now give real configuration/invocation paths rather than API labels.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [
              "ab250-profile-api-path"
            ],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "profile",
              "productivity"
            ]
          },
          {
            "wording": "Configure application tab templates",
            "objective_wording_sha256": "60dcf65a3ed714a925336a31b2bc7d62d0d140c746ae568cf64d8926a198960f",
            "group": "Configure experience profiles",
            "group_number": 11,
            "objective_number": 2,
            "evidence_spans": [
              {
                "heading": "Tailor profiles, sessions and inbox",
                "start_line": 312,
                "end_line": 314,
                "span_lf_sha256": "c0b339968f4e8e729c8592eb58bcf8526d0a93ffb7d8b11a107e0af8cd0b39a3"
              },
              {
                "heading": "Configure productivity tools",
                "start_line": 318,
                "end_line": 324,
                "span_lf_sha256": "f7e8a3dc5654c661d03a34a4fb9e22027fd7798ba174c8a5c18fbb48e22e3bed"
              }
            ],
            "initial_flag_disposition": "existing-adequate-for-verb",
            "reason": "For “Configure application tab templates”, the current selected text teaches app/session/notification/inbox persona responsibilities and session/reconnect/acceptance/accessibility checks; tools/panel/collaboration/context boundaries, actual persona setup and server-to-server messaging create/header/webhook contract. Application tabs define session content distinct from the session context structure; the persona path binds actual templates and tests multiple tabs/reconnect/customer identity.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "profile",
              "productivity"
            ]
          },
          {
            "wording": "Configure the agent inbox, including creating custom views",
            "objective_wording_sha256": "4e6efaa7bb031bc4403b49a5fe7785d8936f9a4cf52f6d28d251c3071ac3fa99",
            "group": "Configure experience profiles",
            "group_number": 11,
            "objective_number": 3,
            "evidence_spans": [
              {
                "heading": "Tailor profiles, sessions and inbox",
                "start_line": 312,
                "end_line": 314,
                "span_lf_sha256": "c0b339968f4e8e729c8592eb58bcf8526d0a93ffb7d8b11a107e0af8cd0b39a3"
              },
              {
                "heading": "Configure productivity tools",
                "start_line": 318,
                "end_line": 324,
                "span_lf_sha256": "f7e8a3dc5654c661d03a34a4fb9e22027fd7798ba174c8a5c18fbb48e22e3bed"
              }
            ],
            "initial_flag_disposition": "repaired-by-actual-packet",
            "reason": "For “Configure the agent inbox, including creating custom views”, the current selected text teaches app/session/notification/inbox persona responsibilities and session/reconnect/acceptance/accessibility checks; tools/panel/collaboration/context boundaries, actual persona setup and server-to-server messaging create/header/webhook contract. For “Configure the agent inbox, including creating custom views”: The custom persona users/template/tools/inbox setup and separate server-to-server POST conversation/create/header/webhook sequence now give real configuration/invocation paths rather than API labels.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [
              "ab250-profile-api-path"
            ],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "profile",
              "productivity"
            ]
          },
          {
            "wording": "Configure session templates",
            "objective_wording_sha256": "1bf450be35a39f401a7629cc7985177d0e38af71e59979b12962e7f771d46fd5",
            "group": "Configure experience profiles",
            "group_number": 11,
            "objective_number": 4,
            "evidence_spans": [
              {
                "heading": "Tailor profiles, sessions and inbox",
                "start_line": 312,
                "end_line": 314,
                "span_lf_sha256": "c0b339968f4e8e729c8592eb58bcf8526d0a93ffb7d8b11a107e0af8cd0b39a3"
              },
              {
                "heading": "Configure productivity tools",
                "start_line": 318,
                "end_line": 324,
                "span_lf_sha256": "f7e8a3dc5654c661d03a34a4fb9e22027fd7798ba174c8a5c18fbb48e22e3bed"
              },
              {
                "heading": "Worked script and macro",
                "start_line": 328,
                "end_line": 332,
                "span_lf_sha256": "17079cd527c7bc66a61f67e368403f195f1de7f33dc0e42a558062fcbb06652a"
              }
            ],
            "initial_flag_disposition": "existing-adequate-for-verb",
            "reason": "For “Configure session templates”, the current selected text teaches app/session/notification/inbox persona responsibilities and session/reconnect/acceptance/accessibility checks; tools/panel/collaboration/context boundaries, actual persona setup and server-to-server messaging create/header/webhook contract; ordered script→template→macro/form/save→slug and actual APM/Omnichannel session/conversation ID invocation/replay/focus checks. Session templates define workspace context and are linked to the profile and scripts; switch/reconnect/wrap-up tests detect wrong context rather than treating tabs as independent sessions.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "profile",
              "productivity",
              "script"
            ]
          },
          {
            "wording": "Configure notification template",
            "objective_wording_sha256": "3ab310ebc78fdb96c0e02593204457bb72844e4985770dc8e3a614e95fe3cd66",
            "group": "Configure experience profiles",
            "group_number": 11,
            "objective_number": 5,
            "evidence_spans": [
              {
                "heading": "Tailor profiles, sessions and inbox",
                "start_line": 312,
                "end_line": 314,
                "span_lf_sha256": "c0b339968f4e8e729c8592eb58bcf8526d0a93ffb7d8b11a107e0af8cd0b39a3"
              },
              {
                "heading": "Configure productivity tools",
                "start_line": 318,
                "end_line": 324,
                "span_lf_sha256": "f7e8a3dc5654c661d03a34a4fb9e22027fd7798ba174c8a5c18fbb48e22e3bed"
              }
            ],
            "initial_flag_disposition": "existing-adequate-for-verb",
            "reason": "For “Configure notification template”, the current selected text teaches app/session/notification/inbox persona responsibilities and session/reconnect/acceptance/accessibility checks; tools/panel/collaboration/context boundaries, actual persona setup and server-to-server messaging create/header/webhook contract. Notification templates control offered-work prompts and acceptance/decline behavior; availability/capacity and accessible state tests distinguish notification UX from assignment authorization.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "profile",
              "productivity"
            ]
          },
          {
            "wording": "Enable custom productivity panels",
            "objective_wording_sha256": "249d751548f76d5c00189f726196e58584874bb4e3c525af7787fd9dace004e7",
            "group": "Configure productivity tools",
            "group_number": 12,
            "objective_number": 1,
            "evidence_spans": [
              {
                "heading": "Configure productivity tools",
                "start_line": 318,
                "end_line": 324,
                "span_lf_sha256": "f7e8a3dc5654c661d03a34a4fb9e22027fd7798ba174c8a5c18fbb48e22e3bed"
              },
              {
                "heading": "Worked script and macro",
                "start_line": 328,
                "end_line": 332,
                "span_lf_sha256": "17079cd527c7bc66a61f67e368403f195f1de7f33dc0e42a558062fcbb06652a"
              }
            ],
            "initial_flag_disposition": "repaired-by-actual-packet",
            "reason": "For “Enable custom productivity panels”, the current selected text teaches tools/panel/collaboration/context boundaries, actual persona setup and server-to-server messaging create/header/webhook contract; ordered script→template→macro/form/save→slug and actual APM/Omnichannel session/conversation ID invocation/replay/focus checks. For “Enable custom productivity panels”: The custom persona users/template/tools/inbox setup and separate server-to-server POST conversation/create/header/webhook sequence now give real configuration/invocation paths rather than API labels.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [
              "ab250-profile-api-path"
            ],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "productivity",
              "script"
            ]
          },
          {
            "wording": "Configure scripts, including slugs",
            "objective_wording_sha256": "8e2268232ed1fd303666d8968e867eec94c301ab625e6b1ec1f9c0fe8dbac216",
            "group": "Configure productivity tools",
            "group_number": 12,
            "objective_number": 2,
            "evidence_spans": [
              {
                "heading": "Configure productivity tools",
                "start_line": 318,
                "end_line": 324,
                "span_lf_sha256": "f7e8a3dc5654c661d03a34a4fb9e22027fd7798ba174c8a5c18fbb48e22e3bed"
              },
              {
                "heading": "Worked script and macro",
                "start_line": 328,
                "end_line": 332,
                "span_lf_sha256": "17079cd527c7bc66a61f67e368403f195f1de7f33dc0e42a558062fcbb06652a"
              }
            ],
            "initial_flag_disposition": "repaired-by-actual-packet",
            "reason": "For “Configure scripts, including slugs”, the current selected text teaches tools/panel/collaboration/context boundaries, actual persona setup and server-to-server messaging create/header/webhook contract; ordered script→template→macro/form/save→slug and actual APM/Omnichannel session/conversation ID invocation/replay/focus checks. For “Configure scripts, including slugs”: Ordered script step types→session-template binding→Task form/save macro→resolved context now supplies creation and invocation with missing/wrong/repeated-context failures.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [
              "ab250-script-macro"
            ],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "productivity",
              "script"
            ]
          },
          {
            "wording": "Create macros",
            "objective_wording_sha256": "dbfb4c332e28ff59c08d3079b9d8da17d17b39596e13d6985c15adfa6dde19a2",
            "group": "Configure productivity tools",
            "group_number": 12,
            "objective_number": 3,
            "evidence_spans": [
              {
                "heading": "Configure productivity tools",
                "start_line": 318,
                "end_line": 324,
                "span_lf_sha256": "f7e8a3dc5654c661d03a34a4fb9e22027fd7798ba174c8a5c18fbb48e22e3bed"
              },
              {
                "heading": "Worked script and macro",
                "start_line": 328,
                "end_line": 332,
                "span_lf_sha256": "17079cd527c7bc66a61f67e368403f195f1de7f33dc0e42a558062fcbb06652a"
              }
            ],
            "initial_flag_disposition": "repaired-by-actual-packet",
            "reason": "For “Create macros”, the current selected text teaches tools/panel/collaboration/context boundaries, actual persona setup and server-to-server messaging create/header/webhook contract; ordered script→template→macro/form/save→slug and actual APM/Omnichannel session/conversation ID invocation/replay/focus checks. For “Create macros”: Ordered script step types→session-template binding→Task form/save macro→resolved context now supplies creation and invocation with missing/wrong/repeated-context failures.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [
              "ab250-script-macro"
            ],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "productivity",
              "script"
            ]
          },
          {
            "wording": "Enable Teams collaboration",
            "objective_wording_sha256": "10c62110903625a8a634846a07561e8aeecc56b2b95ecc064679842e9d046595",
            "group": "Configure productivity tools",
            "group_number": 12,
            "objective_number": 4,
            "evidence_spans": [
              {
                "heading": "Configure productivity tools",
                "start_line": 318,
                "end_line": 324,
                "span_lf_sha256": "f7e8a3dc5654c661d03a34a4fb9e22027fd7798ba174c8a5c18fbb48e22e3bed"
              },
              {
                "heading": "Worked script and macro",
                "start_line": 328,
                "end_line": 332,
                "span_lf_sha256": "17079cd527c7bc66a61f67e368403f195f1de7f33dc0e42a558062fcbb06652a"
              }
            ],
            "initial_flag_disposition": "existing-adequate-for-verb",
            "reason": "For “Enable Teams collaboration”, the current selected text teaches tools/panel/collaboration/context boundaries, actual persona setup and server-to-server messaging create/header/webhook contract; ordered script→template→macro/form/save→slug and actual APM/Omnichannel session/conversation ID invocation/replay/focus checks. Teams collaboration is scoped to expert consultation under customer-data policy and persona/productivity settings, with session/customer context and authorized recipient checks. A complete tenant deployment recipe remains thinner.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [
              "ab250-profile-api-path"
            ],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "productivity",
              "script"
            ]
          },
          {
            "wording": "Extend the productivity panel by using the app profile manager JavaScript API reference",
            "objective_wording_sha256": "0a77d3640c243d3b38239eb07dbfabf554a6115f18a9bda57505164569d9816e",
            "group": "Configure productivity tools",
            "group_number": 12,
            "objective_number": 5,
            "evidence_spans": [
              {
                "heading": "Configure productivity tools",
                "start_line": 318,
                "end_line": 324,
                "span_lf_sha256": "f7e8a3dc5654c661d03a34a4fb9e22027fd7798ba174c8a5c18fbb48e22e3bed"
              },
              {
                "heading": "Worked script and macro",
                "start_line": 328,
                "end_line": 332,
                "span_lf_sha256": "17079cd527c7bc66a61f67e368403f195f1de7f33dc0e42a558062fcbb06652a"
              }
            ],
            "initial_flag_disposition": "repaired-by-actual-packet",
            "reason": "For “Extend the productivity panel by using the app profile manager JavaScript API reference”, the current selected text teaches tools/panel/collaboration/context boundaries, actual persona setup and server-to-server messaging create/header/webhook contract; ordered script→template→macro/form/save→slug and actual APM/Omnichannel session/conversation ID invocation/replay/focus checks. For “Extend the productivity panel by using the app profile manager JavaScript API reference”: Microsoft.Apm.getFocusedSession and awaited Microsoft.Omnichannel.getConversationId now supply real session/conversation invocation contracts with focus-change, rejection and rights checks.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [
              "ab250-js-context"
            ],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "productivity",
              "script"
            ]
          },
          {
            "wording": "Extend the customer service representative experience by using the Omnichannel JavaScript API",
            "objective_wording_sha256": "4c6964b603717dfa3afbfbfabe0acb5c07c24c5b80711effd7da473592864604",
            "group": "Configure productivity tools",
            "group_number": 12,
            "objective_number": 6,
            "evidence_spans": [
              {
                "heading": "Configure productivity tools",
                "start_line": 318,
                "end_line": 324,
                "span_lf_sha256": "f7e8a3dc5654c661d03a34a4fb9e22027fd7798ba174c8a5c18fbb48e22e3bed"
              },
              {
                "heading": "Worked script and macro",
                "start_line": 328,
                "end_line": 332,
                "span_lf_sha256": "17079cd527c7bc66a61f67e368403f195f1de7f33dc0e42a558062fcbb06652a"
              }
            ],
            "initial_flag_disposition": "repaired-by-actual-packet",
            "reason": "For “Extend the customer service representative experience by using the Omnichannel JavaScript API”, the current selected text teaches tools/panel/collaboration/context boundaries, actual persona setup and server-to-server messaging create/header/webhook contract; ordered script→template→macro/form/save→slug and actual APM/Omnichannel session/conversation ID invocation/replay/focus checks. For “Extend the customer service representative experience by using the Omnichannel JavaScript API”: Microsoft.Apm.getFocusedSession and awaited Microsoft.Omnichannel.getConversationId now supply real session/conversation invocation contracts with focus-change, rejection and rights checks.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [
              "ab250-js-context"
            ],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "productivity",
              "script"
            ]
          },
          {
            "wording": "Configure internal knowledge search capabilities",
            "objective_wording_sha256": "925844b397d659319d7fee7f72dff189b8e341398b1e10c6a3a023e403e6d595",
            "group": "Create and administer knowledge management",
            "group_number": 13,
            "objective_number": 1,
            "evidence_spans": [
              {
                "heading": "Govern knowledge",
                "start_line": 336,
                "end_line": 342,
                "span_lf_sha256": "55780eee632390ef3bd640ddf72353015ccefad0fe68cdc64b37690e62c6cbd6"
              }
            ],
            "initial_flag_disposition": "repaired-by-actual-packet",
            "reason": "For “Configure internal knowledge search capabilities”, the current selected text teaches internal/external/provider/table/portal knowledge configuration, audience rights/freshness and article-agent lifecycle. For “Configure internal knowledge search capabilities”: Knowledge record-type/side-pane search/provider/portal URL setup now separates search configuration, KnowledgeArticle privileges and external publication with allowed/denied article checks.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [
              "ab250-knowledge-setup"
            ],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "knowledge"
            ]
          },
          {
            "wording": "Integrate and search external knowledge sources",
            "objective_wording_sha256": "c44efd57df0ef7700b25be1ab169015b76e4d2661b48f8edecf4a17991edeaa8",
            "group": "Create and administer knowledge management",
            "group_number": 13,
            "objective_number": 2,
            "evidence_spans": [
              {
                "heading": "Govern knowledge",
                "start_line": 336,
                "end_line": 342,
                "span_lf_sha256": "55780eee632390ef3bd640ddf72353015ccefad0fe68cdc64b37690e62c6cbd6"
              }
            ],
            "initial_flag_disposition": "repaired-by-actual-packet",
            "reason": "For “Integrate and search external knowledge sources”, the current selected text teaches internal/external/provider/table/portal knowledge configuration, audience rights/freshness and article-agent lifecycle. For “Integrate and search external knowledge sources”: Knowledge record-type/side-pane search/provider/portal URL setup now separates search configuration, KnowledgeArticle privileges and external publication with allowed/denied article checks.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [
              "ab250-knowledge-setup"
            ],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "knowledge"
            ]
          },
          {
            "wording": "Configure tables for knowledge management",
            "objective_wording_sha256": "802ec44ea5d2f689c5a7abbd76fda1f4fb05658caf5c8e72408d48d75d3954c3",
            "group": "Create and administer knowledge management",
            "group_number": 13,
            "objective_number": 3,
            "evidence_spans": [
              {
                "heading": "Govern knowledge",
                "start_line": 336,
                "end_line": 342,
                "span_lf_sha256": "55780eee632390ef3bd640ddf72353015ccefad0fe68cdc64b37690e62c6cbd6"
              }
            ],
            "initial_flag_disposition": "repaired-by-actual-packet",
            "reason": "For “Configure tables for knowledge management”, the current selected text teaches internal/external/provider/table/portal knowledge configuration, audience rights/freshness and article-agent lifecycle. For “Configure tables for knowledge management”: Knowledge record-type/side-pane search/provider/portal URL setup now separates search configuration, KnowledgeArticle privileges and external publication with allowed/denied article checks.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [
              "ab250-knowledge-setup"
            ],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "knowledge"
            ]
          },
          {
            "wording": "Configure the Customer Knowledge Management agent",
            "objective_wording_sha256": "f7c13a9bf72a3d5cbd9c66563f3191493b4e21cd9da4df180319e52ad770c3c5",
            "group": "Create and administer knowledge management",
            "group_number": 13,
            "objective_number": 4,
            "evidence_spans": [
              {
                "heading": "Govern knowledge",
                "start_line": 336,
                "end_line": 342,
                "span_lf_sha256": "55780eee632390ef3bd640ddf72353015ccefad0fe68cdc64b37690e62c6cbd6"
              }
            ],
            "initial_flag_disposition": "not-flagged-initially",
            "reason": "For “Configure the Customer Knowledge Management agent”, the selected current teaching explains internal/external/provider/table/portal knowledge configuration, audience rights/freshness and article-agent lifecycle. Its purpose, operation/design boundary and checks support this objective; this is editorial teaching coverage, not observed product execution.",
            "initial_depth_result": "substantive",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "knowledge"
            ]
          },
          {
            "wording": "Integrate knowledge into portals",
            "objective_wording_sha256": "9a6d9b50c5ecb5f8f120765e7296f321f89d0632a775428648464af55243016d",
            "group": "Create and administer knowledge management",
            "group_number": 13,
            "objective_number": 5,
            "evidence_spans": [
              {
                "heading": "Govern knowledge",
                "start_line": 336,
                "end_line": 342,
                "span_lf_sha256": "55780eee632390ef3bd640ddf72353015ccefad0fe68cdc64b37690e62c6cbd6"
              }
            ],
            "initial_flag_disposition": "repaired-by-actual-packet",
            "reason": "For “Integrate knowledge into portals”, the current selected text teaches internal/external/provider/table/portal knowledge configuration, audience rights/freshness and article-agent lifecycle. For “Integrate knowledge into portals”: Knowledge record-type/side-pane search/provider/portal URL setup now separates search configuration, KnowledgeArticle privileges and external publication with allowed/denied article checks.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [
              "ab250-knowledge-setup"
            ],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "knowledge"
            ]
          },
          {
            "wording": "Configure supervisor settings",
            "objective_wording_sha256": "afb96e1b4786ed2df491957290832214e8a79383f3be6225b3b5135900072c08",
            "group": "Configure the Dynamics 365 Contact Center supervisor experience",
            "group_number": 14,
            "objective_number": 1,
            "evidence_spans": [
              {
                "heading": "Configure supervisors and quality",
                "start_line": 348,
                "end_line": 354,
                "span_lf_sha256": "d8a0298a4106d7223a1e8a6add39b073d01c14f823af3988fc975f2845c15a70"
              },
              {
                "heading": "Focused reading and evidence route",
                "start_line": 532,
                "end_line": 546,
                "span_lf_sha256": "2dd1ba914204d2032a10ee12e7277a3d4e986f903c498684a657e2102d4b7627"
              }
            ],
            "initial_flag_disposition": "existing-adequate-for-verb",
            "reason": "For “Configure supervisor settings”, the current selected text teaches supervisor access/action/privacy, quality roles/connection/flow/published-agent/criteria/plan readiness and product-use limits; specific monitor/assign/transfer/force-close control and allowed/denied persona evidence worksheet. Supervisor role/privacy controls are supplemented by a concrete four-action enablement/allowed-denied worksheet, including a dashboard viewer without intervention rights.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "supervisor",
              "supervisorroute"
            ]
          },
          {
            "wording": "Configure the Quality Evaluation agent",
            "objective_wording_sha256": "35598d3e7542eae552f346f8af6d7f5dcb37212b49eb851ff58b9594a22df37b",
            "group": "Configure the Dynamics 365 Contact Center supervisor experience",
            "group_number": 14,
            "objective_number": 2,
            "evidence_spans": [
              {
                "heading": "Configure supervisors and quality",
                "start_line": 348,
                "end_line": 354,
                "span_lf_sha256": "d8a0298a4106d7223a1e8a6add39b073d01c14f823af3988fc975f2845c15a70"
              },
              {
                "heading": "Focused reading and evidence route",
                "start_line": 532,
                "end_line": 546,
                "span_lf_sha256": "2dd1ba914204d2032a10ee12e7277a3d4e986f903c498684a657e2102d4b7627"
              }
            ],
            "initial_flag_disposition": "not-flagged-initially",
            "reason": "For “Configure the Quality Evaluation agent”, the selected current teaching explains supervisor access/action/privacy, quality roles/connection/flow/published-agent/criteria/plan readiness and product-use limits; specific monitor/assign/transfer/force-close control and allowed/denied persona evidence worksheet. Its purpose, operation/design boundary and checks support this objective; this is editorial teaching coverage, not observed product execution.",
            "initial_depth_result": "substantive",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "supervisor",
              "supervisorroute"
            ]
          },
          {
            "wording": "Configure access to analytics and dashboards",
            "objective_wording_sha256": "828ad4e8fd53c30f143d1686e046fe2d1a72bfd96499094ea77f3c64067b7d85",
            "group": "Configure the Dynamics 365 Contact Center supervisor experience",
            "group_number": 14,
            "objective_number": 3,
            "evidence_spans": [
              {
                "heading": "Configure supervisors and quality",
                "start_line": 348,
                "end_line": 354,
                "span_lf_sha256": "d8a0298a4106d7223a1e8a6add39b073d01c14f823af3988fc975f2845c15a70"
              },
              {
                "heading": "Focused reading and evidence route",
                "start_line": 532,
                "end_line": 546,
                "span_lf_sha256": "2dd1ba914204d2032a10ee12e7277a3d4e986f903c498684a657e2102d4b7627"
              }
            ],
            "initial_flag_disposition": "existing-adequate-for-verb",
            "reason": "For “Configure access to analytics and dashboards”, the current selected text teaches supervisor access/action/privacy, quality roles/connection/flow/published-agent/criteria/plan readiness and product-use limits; specific monitor/assign/transfer/force-close control and allowed/denied persona evidence worksheet. Dashboards/reports, monitoring and sensitive recordings have separate persona permissions; supervisor action tests distinguish viewing analytics from intervening in conversations.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "supervisor",
              "supervisorroute"
            ]
          },
          {
            "wording": "Perform supervisor actions for conversations",
            "objective_wording_sha256": "3c2c69c05121f5c5ebdac44457e986517d733feacb858576aec36ebefa502347",
            "group": "Configure the Dynamics 365 Contact Center supervisor experience",
            "group_number": 14,
            "objective_number": 4,
            "evidence_spans": [
              {
                "heading": "Configure supervisors and quality",
                "start_line": 348,
                "end_line": 354,
                "span_lf_sha256": "d8a0298a4106d7223a1e8a6add39b073d01c14f823af3988fc975f2845c15a70"
              },
              {
                "heading": "Focused reading and evidence route",
                "start_line": 532,
                "end_line": 546,
                "span_lf_sha256": "2dd1ba914204d2032a10ee12e7277a3d4e986f903c498684a657e2102d4b7627"
              }
            ],
            "initial_flag_disposition": "existing-adequate-for-verb",
            "reason": "For “Perform supervisor actions for conversations”, the current selected text teaches supervisor access/action/privacy, quality roles/connection/flow/published-agent/criteria/plan readiness and product-use limits; specific monitor/assign/transfer/force-close control and allowed/denied persona evidence worksheet. Monitor/assign/transfer/force-close each receive needed-control and allowed/denied evidence in the focused route; live conversation actions are explicitly unexecuted.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "supervisor",
              "supervisorroute"
            ]
          },
          {
            "wording": "Configure the supervisor app",
            "objective_wording_sha256": "12f4f149fb48214567563d5bbc20daff42137facb888767dc13cbe67d7fe1ff5",
            "group": "Configure the Dynamics 365 Contact Center supervisor experience",
            "group_number": 14,
            "objective_number": 5,
            "evidence_spans": [
              {
                "heading": "Configure supervisors and quality",
                "start_line": 348,
                "end_line": 354,
                "span_lf_sha256": "d8a0298a4106d7223a1e8a6add39b073d01c14f823af3988fc975f2845c15a70"
              },
              {
                "heading": "Focused reading and evidence route",
                "start_line": 532,
                "end_line": 546,
                "span_lf_sha256": "2dd1ba914204d2032a10ee12e7277a3d4e986f903c498684a657e2102d4b7627"
              }
            ],
            "initial_flag_disposition": "existing-adequate-for-verb",
            "reason": "For “Configure the supervisor app”, the current selected text teaches supervisor access/action/privacy, quality roles/connection/flow/published-agent/criteria/plan readiness and product-use limits; specific monitor/assign/transfer/force-close control and allowed/denied persona evidence worksheet. The supervisor app is configured around role/persona, quality criteria, sampling/calibration/appeal and source access, with distinct QualityAdmin/Manager/Evaluator privileges and activation/readiness checks.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "supervisor",
              "supervisorroute"
            ]
          },
          {
            "wording": "Customize the key performance indicators (KPIs) in the analytics reports by using the embedded Power BI editor",
            "objective_wording_sha256": "87d503290371a3df535db344d0375327daf84c27dea511b39fcfbcf1bfa32174",
            "group": "Customize analytics and reporting",
            "group_number": 15,
            "objective_number": 1,
            "evidence_spans": [
              {
                "heading": "Customize reports and telemetry",
                "start_line": 362,
                "end_line": 366,
                "span_lf_sha256": "fca0fec1ba5397358cdba47647fd4e1e2a802e92180812aa173abbd4ed2e400b"
              },
              {
                "heading": "Worked example 6 — Overlapping diagnostics and correct containment",
                "start_line": 370,
                "end_line": 374,
                "span_lf_sha256": "4681779bd65884b77ee5031f9fc4a2918bfe8af2d4e7c114ce38349189d76649"
              }
            ],
            "initial_flag_disposition": "existing-adequate-for-verb",
            "reason": "For “Customize the key performance indicators (KPIs) in the analytics reports by using the embedded Power BI editor”, the current selected text teaches embedded versus PowerBI model/report editing and AppInsights connection/correlation/retention/latency/diagnostic controls; overlapping diagnostic set union and correct-containment outcome denominators. KPI editing starts from a defined metric/denominator and supported embedded editor scope; weighting/containment/overlap fixtures expose wrong metric definitions before presentation changes.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "analytics",
              "analyticsfixture"
            ]
          },
          {
            "wording": "Embed out-of-the-box reports in the Copilot Service workspace app",
            "objective_wording_sha256": "b1e666b2de3307b94ebbf7cba08bd9cd34f9ac7f893a48e2114ff0cc56c96680",
            "group": "Customize analytics and reporting",
            "group_number": 15,
            "objective_number": 2,
            "evidence_spans": [
              {
                "heading": "Customize reports and telemetry",
                "start_line": 362,
                "end_line": 366,
                "span_lf_sha256": "fca0fec1ba5397358cdba47647fd4e1e2a802e92180812aa173abbd4ed2e400b"
              },
              {
                "heading": "Worked example 6 — Overlapping diagnostics and correct containment",
                "start_line": 370,
                "end_line": 374,
                "span_lf_sha256": "4681779bd65884b77ee5031f9fc4a2918bfe8af2d4e7c114ce38349189d76649"
              }
            ],
            "initial_flag_disposition": "existing-adequate-for-verb",
            "reason": "For “Embed out-of-the-box reports in the Copilot Service workspace app”, the current selected text teaches embedded versus PowerBI model/report editing and AppInsights connection/correlation/retention/latency/diagnostic controls; overlapping diagnostic set union and correct-containment outcome denominators. Built-in reporting is embedded for the approved workspace persona after data/role/refresh checks; viewing content does not grant source-model access.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "analytics",
              "analyticsfixture"
            ]
          },
          {
            "wording": "Customize historical and real-time analytics reports by using Power BI",
            "objective_wording_sha256": "dca6f2f1e2f86a4327c535f36b659d5e06e44936821bcc0df39206acaadc01ba",
            "group": "Customize analytics and reporting",
            "group_number": 15,
            "objective_number": 3,
            "evidence_spans": [
              {
                "heading": "Customize reports and telemetry",
                "start_line": 362,
                "end_line": 366,
                "span_lf_sha256": "fca0fec1ba5397358cdba47647fd4e1e2a802e92180812aa173abbd4ed2e400b"
              },
              {
                "heading": "Worked example 6 — Overlapping diagnostics and correct containment",
                "start_line": 370,
                "end_line": 374,
                "span_lf_sha256": "4681779bd65884b77ee5031f9fc4a2918bfe8af2d4e7c114ce38349189d76649"
              }
            ],
            "initial_flag_disposition": "existing-adequate-for-verb",
            "reason": "For “Customize historical and real-time analytics reports by using Power BI”, the current selected text teaches embedded versus PowerBI model/report editing and AppInsights connection/correlation/retention/latency/diagnostic controls; overlapping diagnostic set union and correct-containment outcome denominators. Real-time versus historical reporting is chosen by freshness and operational decision, retaining governed model definitions, RLS and performance; diagnostics latency is explicitly bounded.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "analytics",
              "analyticsfixture"
            ]
          },
          {
            "wording": "Extend historical and real-time analytics reports by using Power BI Desktop",
            "objective_wording_sha256": "0e01fa72f8c6eb571cf8331896083daa9d8eb63a75329867797444ed9426558b",
            "group": "Customize analytics and reporting",
            "group_number": 15,
            "objective_number": 4,
            "evidence_spans": [
              {
                "heading": "Customize reports and telemetry",
                "start_line": 362,
                "end_line": 366,
                "span_lf_sha256": "fca0fec1ba5397358cdba47647fd4e1e2a802e92180812aa173abbd4ed2e400b"
              },
              {
                "heading": "Worked example 6 — Overlapping diagnostics and correct containment",
                "start_line": 370,
                "end_line": 374,
                "span_lf_sha256": "4681779bd65884b77ee5031f9fc4a2918bfe8af2d4e7c114ce38349189d76649"
              }
            ],
            "initial_flag_disposition": "existing-adequate-for-verb",
            "reason": "For “Extend historical and real-time analytics reports by using Power BI Desktop”, the current selected text teaches embedded versus PowerBI model/report editing and AppInsights connection/correlation/retention/latency/diagnostic controls; overlapping diagnostic set union and correct-containment outcome denominators. Desktop/model extension is used when additional governed data/calculations are required, preserving keys/metric definitions/refresh/security rather than treating an embedded cosmetic edit as model extension.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "analytics",
              "analyticsfixture"
            ]
          },
          {
            "wording": "Configure conversation diagnostics in Application Insights",
            "objective_wording_sha256": "b021d38bb4eb2a83fee0893ae234274e5b29a86e9a40ec7ec3d27567a606c0e9",
            "group": "Customize analytics and reporting",
            "group_number": 15,
            "objective_number": 5,
            "evidence_spans": [
              {
                "heading": "Customize reports and telemetry",
                "start_line": 362,
                "end_line": 366,
                "span_lf_sha256": "fca0fec1ba5397358cdba47647fd4e1e2a802e92180812aa173abbd4ed2e400b"
              },
              {
                "heading": "Worked example 6 — Overlapping diagnostics and correct containment",
                "start_line": 370,
                "end_line": 374,
                "span_lf_sha256": "4681779bd65884b77ee5031f9fc4a2918bfe8af2d4e7c114ce38349189d76649"
              }
            ],
            "initial_flag_disposition": "existing-adequate-for-verb",
            "reason": "For “Configure conversation diagnostics in Application Insights”, the current selected text teaches embedded versus PowerBI model/report editing and AppInsights connection/correlation/retention/latency/diagnostic controls; overlapping diagnostic set union and correct-containment outcome denominators. ApplicationInsights connection/correlation/retention/sampling/access are configured, then conversationID/event-time/source stages diagnose routing with24-hour sync and15-minute tab lag limits.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "analytics",
              "analyticsfixture"
            ]
          },
          {
            "wording": "Configure and embed telemetry and analytics from Application Insights",
            "objective_wording_sha256": "c14cc1e91b9e92e80b801d6ff1b198103a314e66467a70f5412ab6508a7c7dec",
            "group": "Customize analytics and reporting",
            "group_number": 15,
            "objective_number": 6,
            "evidence_spans": [
              {
                "heading": "Customize reports and telemetry",
                "start_line": 362,
                "end_line": 366,
                "span_lf_sha256": "fca0fec1ba5397358cdba47647fd4e1e2a802e92180812aa173abbd4ed2e400b"
              },
              {
                "heading": "Worked example 6 — Overlapping diagnostics and correct containment",
                "start_line": 370,
                "end_line": 374,
                "span_lf_sha256": "4681779bd65884b77ee5031f9fc4a2918bfe8af2d4e7c114ce38349189d76649"
              }
            ],
            "initial_flag_disposition": "existing-adequate-for-verb",
            "reason": "For “Configure and embed telemetry and analytics from Application Insights”, the current selected text teaches embedded versus PowerBI model/report editing and AppInsights connection/correlation/retention/latency/diagnostic controls; overlapping diagnostic set union and correct-containment outcome denominators. Embedded telemetry is tied to stage/status/timing/correlation and an operational action, with overlap deduplication and content-minimization/retention tests; a green telemetry stream is not verified containment.",
            "initial_depth_result": "partial-named-workflow",
            "repair_packet_ids": [],
            "related_improvement_packet_ids": [],
            "semantic_binding_review": "Rechecked against actual current section bodies, including adjacent worked teaching; initial conservative flag history retained separately.",
            "selected_section_keys": [
              "analytics",
              "analyticsfixture"
            ]
          }
        ],
        "disposition_counts": {
          "existing-adequate-for-verb": 65,
          "not-flagged-initially": 20,
          "repaired-by-actual-packet": 34
        }
      }
    ],
    "subset_a_semantic_review": {
      "reviewed_on": "2026-10-28",
      "review_type": "same-team follow-up after independent findings; initial full semantic reread plus exact four-change verification and all-row rebinding",
      "inputs": [
        {
          "exam_code": "DP-900",
          "complete_guide_read": {
            "path": "C:\\src\\certification-study-library\\.maintenance\\2026-10-28-remaining-refresh\\group-04\\review-inputs\\DP-900-microsoft-azure-data-fundamentals.md",
            "start_line": 1,
            "end_line": 798,
            "guide_lf_sha256": "1c618b776923450c7bbf59aac51ce2bf3b64cfb5dcc214e6b4b388a718332991"
          },
          "complete_diff_read": {
            "path": "C:\\src\\certification-study-library\\.maintenance\\2026-10-28-remaining-refresh\\group-04\\review-inputs\\DP-900.diff",
            "raw_sha256": "96f0e5f4d5b4747857560da42cffd32d79ae58a2ce66ebbfdf3d1fc9e206e814"
          },
          "read_parts": [
            "frontmatter/disclosure and contract",
            "all substantive teaching and cited new workflows",
            "all worked code/arithmetic examples",
            "all integrated scenarios",
            "all proposed labs and feasibility/failure boundaries",
            "all questions and answers",
            "readiness and source notes",
            "complete Places to learn and focused resource route"
          ],
          "semantic_observation": "New workflows are integrated with existing explanations and failure/verification models; proposed lab work remains unexecuted. The review did not infer teaching from headings, URLs or hashes."
        },
        {
          "exam_code": "MB-230",
          "complete_guide_read": {
            "path": "C:\\src\\certification-study-library\\.maintenance\\2026-10-28-remaining-refresh\\group-04\\review-inputs\\MB-230-microsoft-dynamics-365-customer-service-functional-consultant.md",
            "start_line": 1,
            "end_line": 557,
            "guide_lf_sha256": "f77caba6a0b5798ef90debb933287369323188d4dc567bbc11cdf9b4b875b743"
          },
          "complete_diff_read": {
            "path": "C:\\src\\certification-study-library\\.maintenance\\2026-10-28-remaining-refresh\\group-04\\review-inputs\\MB-230.diff",
            "raw_sha256": "bf1aabdfc6b6a3f71289cccdbb208db6e4a4e94773af6f13a3a8b62c1bab4317"
          },
          "read_parts": [
            "frontmatter/disclosure and contract",
            "all substantive teaching and cited new workflows",
            "all worked code/arithmetic examples",
            "all integrated scenarios",
            "all proposed labs and feasibility/failure boundaries",
            "all questions and answers",
            "readiness and source notes",
            "complete Places to learn and focused resource route"
          ],
          "semantic_observation": "New workflows are integrated with existing explanations and failure/verification models; proposed lab work remains unexecuted. The review did not infer teaching from headings, URLs or hashes."
        },
        {
          "exam_code": "MB-310",
          "complete_guide_read": {
            "path": "C:\\src\\certification-study-library\\.maintenance\\2026-10-28-remaining-refresh\\group-04\\review-inputs\\MB-310-microsoft-dynamics-365-finance-functional-consultant.md",
            "start_line": 1,
            "end_line": 439,
            "guide_lf_sha256": "a6f7f12e80a6131d1b9a58df4f8e0d8ed553f96f5d316dd2a7593a05c02f9f3b"
          },
          "complete_diff_read": {
            "path": "C:\\src\\certification-study-library\\.maintenance\\2026-10-28-remaining-refresh\\group-04\\review-inputs\\MB-310.diff",
            "raw_sha256": "58a81d834e569fe31ef53f908ca865ec4fc1159a388fe5096510469666e808cf"
          },
          "read_parts": [
            "frontmatter/disclosure and contract",
            "all substantive teaching and cited new workflows",
            "all worked code/arithmetic examples",
            "all integrated scenarios",
            "all proposed labs and feasibility/failure boundaries",
            "all questions and answers",
            "readiness and source notes",
            "complete Places to learn and focused resource route"
          ],
          "semantic_observation": "New workflows are integrated with existing explanations and failure/verification models; proposed lab work remains unexecuted. The review did not infer teaching from headings, URLs or hashes."
        },
        {
          "exam_code": "MB-500",
          "complete_guide_read": {
            "path": "C:\\src\\certification-study-library\\.maintenance\\2026-10-28-remaining-refresh\\group-04\\review-inputs\\MB-500-microsoft-dynamics-365-finance-operations-apps-developer.md",
            "start_line": 1,
            "end_line": 514,
            "guide_lf_sha256": "e894c995a3376609e18a35286d6f962371f7eff79ff55e6f2c6f74ca72f1132f"
          },
          "complete_diff_read": {
            "path": "C:\\src\\certification-study-library\\.maintenance\\2026-10-28-remaining-refresh\\group-04\\review-inputs\\MB-500.diff",
            "raw_sha256": "42fbf36f5a89cc47bf8d9618ad10abf7b49804123ddef17c093580a1119002e2"
          },
          "read_parts": [
            "frontmatter/disclosure and contract",
            "all substantive teaching and cited new workflows",
            "all worked code/arithmetic examples",
            "all integrated scenarios",
            "all proposed labs and feasibility/failure boundaries",
            "all questions and answers",
            "readiness and source notes",
            "complete Places to learn and focused resource route"
          ],
          "semantic_observation": "New workflows are integrated with existing explanations and failure/verification models; proposed lab work remains unexecuted. The review did not infer teaching from headings, URLs or hashes."
        },
        {
          "exam_code": "MB-800",
          "complete_guide_read": {
            "path": "C:\\src\\certification-study-library\\.maintenance\\2026-10-28-remaining-refresh\\group-04\\review-inputs\\MB-800-microsoft-dynamics-365-business-central-functional-consultant.md",
            "start_line": 1,
            "end_line": 494,
            "guide_lf_sha256": "9a328507ddf796c5a0c5bbd6665ef4957a7a9bc307e9f93dafc3c276cc907a5a"
          },
          "complete_diff_read": {
            "path": "C:\\src\\certification-study-library\\.maintenance\\2026-10-28-remaining-refresh\\group-04\\review-inputs\\MB-800.diff",
            "raw_sha256": "5237ea005a1a013242f26cb160e4d3bc471236f1d0a5bf485f2f3126a374161a"
          },
          "read_parts": [
            "frontmatter/disclosure and contract",
            "all substantive teaching and cited new workflows",
            "all worked code/arithmetic examples",
            "all integrated scenarios",
            "all proposed labs and feasibility/failure boundaries",
            "all questions and answers",
            "readiness and source notes",
            "complete Places to learn and focused resource route"
          ],
          "semantic_observation": "New workflows are integrated with existing explanations and failure/verification models; proposed lab work remains unexecuted. The review did not infer teaching from headings, URLs or hashes."
        }
      ],
      "objective_count": 388,
      "initial_flag_dispositions": {
        "resolved": 69,
        "still-open-material": 0
      },
      "remaining_material_findings": [],
      "low_editorial_notes": "The coordinator corrected the MB230 September-restoration/October-unchanged wording and the MB500 generic serializer sentence before this binding; the replacements were reread against the original findings.",
      "checks": [
        "Complete five captures/diffs read; truncated output windows reread explicitly.",
        "All final live guide LF hashes equal captures/manifest.",
        "All five objective raw hashes remain the accepted originals.",
        "Every one of388 objective wordings has exact normalized SHA, group numbering and substantive line/span evidence.",
        "Every initial flagged objective maps to its actual integrated workflow, explanation/failure/check and a specific repair rationale.",
        "All69 repair-body spans and retained teaching spans checked against current LF bytes.",
        "Initial mapping and frozen proposal bytes preserved.",
        "All388 current rows and every span validated after four independent repairs; 69 historical dispositions unchanged.",
        "Current reason text describes current teaching; original reasons retained in initial_reason.",
        "Every live guide equals updated capture; current full-diff raw and objective hashes checked by builder.",
        "Preserved captures plus exact four replacements reconstruct all five current guides byte-for-byte after LF normalization."
      ],
      "assurance_limits": [
        "Operational coverage is substantive teaching/configuration-design reasoning and bounded examples, not a complete click-by-click manual for every product surface.",
        "No X++ compilation, SysTest run, tenant UI/API, cloud provisioning, paid lesson, message/survey/notification, agent, journal or lab was executed in this pass.",
        "Historic local-model execution statements in unchanged guide content are not new execution claims by this reviewer.",
        "Current link health/source gates are coordinator-owned; MB-230 remains blocked regardless of this objective-depth result.",
        "Fresh-context review and human review are separate subsequent assurance states.",
        "This follow-up belongs to the same research team; it does not replace the independent reviewer acceptance pass."
      ],
      "previous_complete_semantic_review": "pre-independent-repairs/exam-a-final-semantic-review.json",
      "followup_read_scope": {
        "proposal_path": "reviewer-a-repair-proposals.json",
        "applied_path": "independent-repairs-applied.json",
        "complete_changed_regions_and_context_read": {
          "MB-500": [
            [
              108,
              199
            ],
            [
              275,
              303
            ]
          ],
          "MB-800": [
            [
              98,
              193
            ],
            [
              209,
              275
            ]
          ],
          "MB-310": [
            [
              74,
              103
            ],
            [
              146,
              214
            ]
          ]
        },
        "updated_diff_verification": "Current complete diffs/captures were verified against manifest/live bytes; semantic change from the previously completely read captures consists exactly of four reviewed replacements. This is incremental follow-up, not a second claim to reading every unchanged line."
      },
      "independent_repairs": {
        "count": 4,
        "resolved": 4,
        "separate_from_initial_flags": true,
        "dispositions": [
          {
            "finding_id": "g04-a-01",
            "exam_code": "MB-500",
            "objective_id": "4.2.2",
            "disposition": "resolved at substantive teaching/design depth",
            "reason": "A single-superclass extends contract, abstract-method implementation, base-typed dispatch and fixed-5 versus 10-percent policies teach inheritance/abstraction; invalid base instantiation and omitted implementations are proposed compile-failure checks.",
            "evidence_spans": [
              {
                "heading": "4. Develop and test code",
                "start_line": 140,
                "end_line": 142,
                "span_lf_sha256": "bf77993e96e48f7b9422f554226819ebeba2a7767c16571d2c89aed746182d9c"
              }
            ]
          },
          {
            "finding_id": "g04-a-02",
            "exam_code": "MB-500",
            "objective_id": "7.2.3",
            "disposition": "resolved at substantive teaching/design depth",
            "reason": "The reconciliation-preview design creates an AOT temporary table, chooses TableType and index, compares InMemory/TempDB joins and transaction behavior, and checks setTmpData versus linkPhysicalTableInstance, isolation and measured cost.",
            "evidence_spans": [
              {
                "heading": "7. Implement security and optimize performance",
                "start_line": 277,
                "end_line": 279,
                "span_lf_sha256": "5fcaf9274df0c5653d00ae8bbd7f5e10fb373a0589b5f41da880c76896c5312e"
              }
            ]
          },
          {
            "finding_id": "g04-a-03",
            "exam_code": "MB-800",
            "objective_id": "1.4.5",
            "disposition": "resolved at substantive teaching/design depth",
            "reason": "Account Type Default Dim. sets a type/value/Value Posting rule; SERVICE versus account-specific REPAIRS illustrates override, Code Mandatory permits required entry without a default, and source-code priorities remain a separate control.",
            "evidence_spans": [
              {
                "heading": "Set up dimensions",
                "start_line": 111,
                "end_line": 113,
                "span_lf_sha256": "536b7d3afdd1eb31f14640e4f171929189b79a6bbec9b25ed68e663b76fc98c9"
              }
            ]
          },
          {
            "finding_id": "g04-a-04",
            "exam_code": "MB-800",
            "objective_id": "2.7.2",
            "disposition": "resolved at substantive teaching/design depth",
            "reason": "Separate line/motor asset cards receive books, Main Asset Components links the motor FA No., Allow Posting to Main Assets is deliberately chosen, and changes are checked against each asset ledger without assuming grouping transfers value.",
            "evidence_spans": [
              {
                "heading": "Fixed assets",
                "start_line": 165,
                "end_line": 167,
                "span_lf_sha256": "9f4c60f89bbee0934844a60e9edc4ed16aac0a59aa302b8734e4d6737ad67730"
              }
            ]
          }
        ]
      },
      "mapping_accuracy_corrections": {
        "initial_reasons_preserved_for_all_rows": 388,
        "stale_group_reasons_replaced": 154,
        "precise_evidence": [
          "MB-310 1.3.4 current intercompany paragraph",
          "MB-500 4.2.5 current Classes and extensibility/CoC rules",
          "four independently repaired operations",
          "MB-800 4.7.4 cost adjustment/posting controls"
        ]
      }
    },
    "subset_b_semantic_review": {
      "date": "2026-10-28",
      "review_type": "same-context full semantic reread; not fresh-context/human/live validation",
      "read_scopes": [
        {
          "exam_code": "MB-820",
          "guide_path": "guides/MB-820-microsoft-dynamics-365-business-central-developer.md",
          "guide_lf_sha256": "0be7abf3d006029e0009c97001c77e79025bc8a507b47333c403abb5ff0c4d55",
          "objective_raw_sha256": "1e1a344d7da21661343df954d830f847f10aa2e3742893e8fab5381666dca108",
          "guide_read_scope": "Complete final guide lines1–514: frontmatter, explanation, worked examples, scenarios, labs, answers, readiness and every resource",
          "diff_read_scope": "Complete frozen diff, including later final packet/correction additions",
          "diff_raw_sha256": "be10003930cd64b0d33b0aa5386b6972095f68876297581055f8e5c543c92412",
          "objective_count": 75,
          "disposition_counts": {
            "not-flagged-initially": 33,
            "existing-adequate-for-verb": 13,
            "repaired-by-actual-packet": 29
          },
          "binding_correction_read_scope": "All detailed objective wordings reconsidered against complete relevant authored teaching sections and supporting worked paths, not inherited line offsets."
        },
        {
          "exam_code": "PL-300",
          "guide_path": "guides/PL-300-microsoft-power-bi-data-analyst.md",
          "guide_lf_sha256": "a8d85b7c0cc3756a49c5b9885f9462f98bfc5e3ce429986817cafff4bf6dc185",
          "objective_raw_sha256": "c1c6a25ab5e6285ba4cce3603f6e2624f482ff1d6f237d68e6fa79da93d9e8d9",
          "guide_read_scope": "Complete final guide lines1–438: frontmatter, explanation, worked examples, scenarios, labs, answers, readiness and every resource",
          "diff_read_scope": "Complete frozen diff, including later final packet/correction additions",
          "diff_raw_sha256": "3ea242d325110425f9c9e889c603f0784e62842662e0768c15d623bab8bd6186",
          "objective_count": 78,
          "disposition_counts": {
            "not-flagged-initially": 45,
            "existing-adequate-for-verb": 22,
            "repaired-by-actual-packet": 11
          },
          "binding_correction_read_scope": "All detailed objective wordings reconsidered against complete relevant authored teaching sections and supporting worked paths, not inherited line offsets."
        },
        {
          "exam_code": "PL-900",
          "guide_path": "guides/PL-900-microsoft-power-platform-fundamentals.md",
          "guide_lf_sha256": "d111dba01cb12e5fb753260ef6f19967ca34bcac282fd54f1bd8e5b8db253c77",
          "objective_raw_sha256": "959c63326efa3e74735cd2abc1cb28246d816506296b218428802240f9f99bd0",
          "guide_read_scope": "Complete final guide lines1–565: frontmatter, explanation, worked examples, scenarios, labs, answers, readiness and every resource",
          "diff_read_scope": "Complete frozen diff, including later final packet/correction additions",
          "diff_raw_sha256": "c994e2c169a084174d7a3b65a7412e42f239203bec54d5954757a0c574d169bc",
          "objective_count": 37,
          "disposition_counts": {
            "not-flagged-initially": 32,
            "repaired-by-actual-packet": 5
          },
          "binding_correction_read_scope": "All detailed objective wordings reconsidered against complete relevant authored teaching sections and supporting worked paths, not inherited line offsets."
        },
        {
          "exam_code": "SC-500",
          "guide_path": "guides/SC-500-microsoft-cloud-ai-security-engineer.md",
          "guide_lf_sha256": "f9f604b2bf2b694b08f9da07b87fd918e26fc6713fa1b35deadc60c0122895a2",
          "objective_raw_sha256": "9f832db799678f547b3272c902e5529c77077e2cd4272326cf8ad94ef50cf7c6",
          "guide_read_scope": "Complete final guide lines1–598: frontmatter, explanation, worked examples, scenarios, labs, answers, readiness and every resource",
          "diff_read_scope": "Complete frozen diff, including later final packet/correction additions",
          "diff_raw_sha256": "9d173ea0feba7b0a3dbd62e11b07cf9b8dabbe811e23eee327bcf41ec13a706d",
          "objective_count": 87,
          "disposition_counts": {
            "not-flagged-initially": 33,
            "existing-adequate-for-verb": 52,
            "repaired-by-actual-packet": 2
          },
          "binding_correction_read_scope": "All detailed objective wordings reconsidered against complete relevant authored teaching sections and supporting worked paths, not inherited line offsets."
        },
        {
          "exam_code": "AB-250",
          "guide_path": "guides/AB-250-transforming-contact-center-experiences-ai-dynamics-365.md",
          "guide_lf_sha256": "4d10c415eb14245dd8dc4d38fee8f2ad3f69f332ed32ff791e40114c3855947f",
          "objective_raw_sha256": "852f325868be15013f6b67d2fe5e0152744d4e1d8c1f86a82874b2eecaca5e11",
          "guide_read_scope": "Complete final guide lines1–553: frontmatter, explanation, worked examples, scenarios, labs, answers, readiness and every resource",
          "diff_read_scope": "Complete frozen diff, including later final packet/correction additions",
          "diff_raw_sha256": "2ad3b1d330ac7848c322f5e9725145c380fd11c8723316e14f7036947865c57e",
          "objective_count": 119,
          "disposition_counts": {
            "existing-adequate-for-verb": 65,
            "not-flagged-initially": 20,
            "repaired-by-actual-packet": 34
          },
          "binding_correction_read_scope": "All detailed objective wordings reconsidered against complete relevant authored teaching sections and supporting worked paths, not inherited line offsets."
        }
      ],
      "total_objectives": 396,
      "initial_conservative_flags": 233,
      "dispositions": {
        "not-flagged-initially": 163,
        "existing-adequate-for-verb": 152,
        "repaired-by-actual-packet": 81
      },
      "remaining_material_teaching_gaps": [],
      "source_gates": {
        "MB-820": "pass",
        "PL-300": "pass",
        "PL-900": "pass",
        "SC-500": "blocked: earlier Foundational CSPM opt-in announcement absent current release body; omission is neither rollout nor cancellation",
        "AB-250": "blocked: September23/30 acquisition versus October23 resource/service and existing-number eligibility conflict"
      },
      "retained_thinner_limits": [
        "Not every feature has its own UI walkthrough or complete code implementation. Shared workflows, specification/decision paths and negative/evidence checks are adequate where they teach the measured verb.",
        "MB820 interface, permission-set and OData action declarations receive architecture/test-contract treatment with exact syntax deferred to cited product references.",
        "PL300 Analyze/group/bin/cluster/AI/forecast/anomaly routes have a shared analytical procedure and checks, rather than individual feature fixtures. Semiadditive expressions and source-parameter dialogs remain less detailed than the added DAX artifact examples.",
        "AB250 SDK examples cover confirmed minimal invocation subsets, not every voice-call operation. Smart assist registration assumes a developed BotService agent; arbitrary Copilot agents are unsupported.",
        "AB250 voice and digital configuration remains deployment/provider/region/version dependent. The explicit supported workflow and test design do not establish tenant eligibility or rollout."
      ],
      "execution_limits": [
        "No tenant, cloud, call, message, SDK/mobile build, AL compiler, PowerBI engine, Copilot, assessment or paid course execution by this review. Earlier local offline arithmetic checks are guide claims retained with their limits.",
        "Public primary source body review is distinct from reachability and does not establish entitlement, account access or successful lab execution."
      ],
      "initial_mapping_note": "Initial396-row mapping and233 conservative partial flags remain immutable; AB250group6 span errata is applied explicitly. Packet credit is narrowed to actual teaching, so233 is not a count of repaired gaps.",
      "final_binding_note": "All spans have inclusive1-based final line numbers and exact LF SHA256; wording SHA binds normalized objective text. Hashes establish artifact identity, not substantive coverage.",
      "artifact_validation": {
        "status": "pass after binding correction",
        "objectives": 396,
        "initial_flags_adjudicated": 233,
        "evidence_spans_verified": 666,
        "frontmatter_or_empty_spans": 0,
        "checks": [
          "live/capture/manifest LF identities",
          "raw objective snapshot identity",
          "normalized objective wording SHA",
          "exact current selected-body span LF hashes and line bounds",
          "missing/ambiguous/empty heading failures",
          "all396 objective-to-authored-body semantic selections and current reasons",
          "initial233 flag history unchanged"
        ],
        "product_execution": false
      },
      "preserved_initial_artifacts": [
        {
          "path": "exam-b-initial-mapping.json",
          "raw_sha256": "be8bf88886aaafec368d30054fc33262c8fc301caed2386c81a9e73e9934050c"
        },
        {
          "path": "exam-b-initial-mapping-errata.json",
          "raw_sha256": "b70676dc53b973abd85845ef6e074b42570e37818b47ee3759eb926fa6577466"
        }
      ],
      "proposal_files_in_review": [
        "exam-b-all-proposals.json (original29 consolidated packets)",
        "exam-b-pl300-final-proposals.json (2 later creation packets)",
        "exam-b-voice-final-proposal.json (1 later voice binding packet)"
      ],
      "binding_correction": {
        "finding": "G04-B-R1",
        "status": "corrected by original researcher; independent reviewer verification pending",
        "prior_matrix_sha256": "ae0a3ae0ea52535281200752d32b8d3d5a97d33a374a682cdc24fbb0989a14cf",
        "prior_review_sha256": "0e35cb0f8991d60ef7c30446026cffa9ade92e8d459618b4714799ad9fd1a8ca",
        "cause": "The earlier relocation accepted empty original evidence text, whose substring lookup bound line1; coarse inherited spans also omitted substantive continuation/adjacent worked teaching. The mechanical nonheading test accepted frontmatter delimiters and did not prove semantic relevance.",
        "correction": "Discarded all prior evidence spans and rebuilt396 current bindings from editorially selected exact authored sections and two explicit supporting paragraphs. Missing/ambiguous/empty headings or paragraphs raise errors; code-fence comments are excluded from heading parsing. There is no relocation/default-line fallback. Current reasons describe actual selected teaching. All233 initial conservative flags remain historical; one current attribution is corrected separately.",
        "reviewer_minimum23_rows_rechecked": true,
        "all396_semantic_rows_rechecked": true,
        "preservation_directory": "pre-binding-correction/",
        "attribution_correction": "SC50011.4 now existing-adequate-for-verb: Azure diagnostic-setting teaching predates the Windows AMA/WEF packet; removed its repair credit. Initial partial flag remains preserved. Final totals81repair/152adequate/163initiallysubstantive."
      }
    },
    "independent_teaching_repairs": {
      "changes": [
        {
          "finding_id": "g04-a-01",
          "exam_code": "MB-500",
          "guide_path": "guides/MB-500-microsoft-dynamics-365-finance-operations-apps-developer.md",
          "affected_objective_ids": [
            "4.2.2"
          ],
          "affected_wording": [
            "Implement inheritance and abstraction concept"
          ],
          "old_text": "Inheritance and abstract classes define stable polymorphic contracts.",
          "replacement_markdown": "Inheritance reuses and specializes a base-class contract; abstraction exposes the required behavior while leaving a concrete subclass to supply its implementation. In X++, a derived class uses `extends` and can have one superclass. An abstract class cannot be instantiated; a concrete subclass must implement its abstract methods. An overridden instance method keeps the inherited signature, and dispatch follows the actual object even when a variable has the base type. See [X++ inheritance](https://learn.microsoft.com/en-us/dynamics365/fin-ops-core/dev-itpro/dev-ref/xpp-inheritance) and the [abstract modifier](https://learn.microsoft.com/en-us/dynamics365/fin-ops-core/dev-itpro/dev-ref/xpp-syntax).\n\nFor an original adjustment-policy design, let an abstract policy require a calculation and let two concrete policies provide distinct rules. For a synthetic base amount of 100, let one policy return a fixed 5 and the other 10 percent (10). Pass each through the same base-typed consumer and predict those distinct results without branching on concrete class names. In a developer environment, implement and test both variants, then confirm that instantiating the abstract base or omitting a required implementation fails compilation. This is an uncompiled design exercise; inheritance is distinct from wrapping an existing method with CoC. ",
          "execution": "proposed original design/learner check only; no compilation or tenant execution"
        },
        {
          "finding_id": "g04-a-02",
          "exam_code": "MB-500",
          "guide_path": "guides/MB-500-microsoft-dynamics-365-finance-operations-apps-developer.md",
          "affected_objective_ids": [
            "7.2.3"
          ],
          "affected_wording": [
            "Create and modify temporary tables for optimization purposes"
          ],
          "old_text": "InMemory and TempDB tables have different scale/join/lifecycle behavior.",
          "replacement_markdown": "Choose temporary-table storage from the workload. `InMemory` is an indexed temporary dataset outside SQL Server; it can suit a small working set, while joining it is not a server-side SQL join. `TempDB` stores temporary data in SQL Server and supports joins to regular tables, indexes and TTS transaction scope. See [temporary-table choices](https://learn.microsoft.com/en-us/training/modules/apply-basic-performance-optimization-finance-operations/3-table).\n\nFor an original reconciliation preview, create a temporary AOT table with company, reference and amount fields, choose its `TableType`, and add an index for the measured lookup. Compare a small local working set with a larger dataset joined to application records. Populate and query each using identical filters/totals; verify the buffer instance reaches the consumer. Microsoft documents `setTmpData` for InMemory and `linkPhysicalTableInstance` for TempDB, so substituting one linking mechanism for the other is a failure case. See [temporary-table construction](https://learn.microsoft.com/en-us/training/modules/apply-basic-performance-optimization-finance-operations/temporary-tables). Record company isolation, cleanup and measured cost; neither type is durable business storage or automatically faster. No table was built or benchmarked here. ",
          "execution": "proposed original design/learner check only; no compilation or tenant execution"
        },
        {
          "finding_id": "g04-a-03",
          "exam_code": "MB-800",
          "guide_path": "guides/MB-800-microsoft-dynamics-365-business-central-functional-consultant.md",
          "affected_objective_ids": [
            "1.4.5"
          ],
          "affected_wording": [
            "Set up default dimensions for account types"
          ],
          "old_text": "Default-dimension priorities resolve competing defaults.",
          "replacement_markdown": "An account-type default applies across a category of accounts; an individual account default can replace that type default. On Dimensions, select the dimension and open **Account Type Default Dim.** to configure the relevant type, value and Value Posting rule. For an original example, suggest department SERVICE for the chosen account type, give one specific account a REPAIRS default and compare the resulting journal lines. Use Code Mandatory with a blank value when a value is required without choosing one automatically; check documented batch-job restrictions before enforcing such rules. See [default dimensions and priorities](https://learn.microsoft.com/en-us/dynamics365/business-central/finance-dimensions).\n\nPriorities resolve competing sources per source code, rather than changing the account-versus-type override. Configure the source code and source priorities, then test customer/item/location conflicts and both header-first and line-first entry. Inspect actual line dimensions and any overwrite prompt before posting. This is a proposed sandbox check, not an executed configuration.\n\nDefault-dimension priorities resolve competing defaults.",
          "execution": "proposed original design/learner check only; no compilation or tenant execution"
        },
        {
          "finding_id": "g04-a-04",
          "exam_code": "MB-800",
          "guide_path": "guides/MB-800-microsoft-dynamics-365-business-central-functional-consultant.md",
          "affected_objective_ids": [
            "2.7.2"
          ],
          "affected_wording": [
            "Create and modify fixed assets, main assets, and components"
          ],
          "old_text": "A fixed asset may be a main asset with components, but component behavior and disposal/acquisition must be tested explicitly.",
          "replacement_markdown": "A main asset groups separately created component assets; it is different from assigning a class/subclass for classification or a depreciation book for valuation. For an original production-line example, create separate fixed-asset cards for the line and its motor, assign the appropriate books before acquisition, then open **Main Asset Components** on the line and select the motor's FA No. Inspect the resulting main/component fields, and deliberately configure **Allow Posting to Main Assets** in Fixed Asset Setup for the intended posting design. See [asset cards and component setup](https://learn.microsoft.com/en-us/dynamics365/business-central/fa-how-acquire).\n\nTest adding an existing component and changing the component list in a disposable company. Reconcile each card's acquisition, depreciation and ledger history; grouping does not by itself establish that costs were acquired, transferred or depreciated. Compare this component relationship with an ordinary shared asset class. No asset or component transaction was posted here.",
          "execution": "proposed original design/learner check only; no compilation or tenant execution"
        }
      ],
      "new_source_ids": [
        "g04-review-a-xpp-inheritance",
        "g04-review-a-xpp-syntax",
        "g04-review-a-temporary-choice",
        "g04-review-a-temporary-build",
        "g04-review-a-bc-dimensions",
        "g04-review-a-bc-acquire"
      ],
      "original_final_mapping_preserved": "pre-independent-repairs/exam-a-final-mapping.json",
      "schema_normalization": "Source catalog uses schema-defined fields; original proposal metadata retained separately.",
      "formatting_followup": "Normalized spaces in the inheritance example before final author hash binding."
    },
    "source_gates": {
      "passed": [
        "DP-900",
        "MB-310",
        "MB-500",
        "MB-800",
        "MB-820",
        "PL-300",
        "PL-900"
      ],
      "blocked": {
        "MB-230": [
          "Require-confirmation setup and semi-autonomous runtime-table send wording remain imprecise; preserve configured approval and require authorized runtime evidence."
        ],
        "SC-500": [
          "Earlier October27 Foundational CSPM opt-in announcement absent from current release body; actual default behavior unconfirmed. Omission proves neither rollout nor cancellation."
        ],
        "AB-250": [
          "Contact Center plan/ledger number-acquisition dates and ACS resource-versus-existing-number eligibility statements differ; specific-tenant acquisition/port-in eligibility still needs Microsoft confirmation."
        ]
      },
      "boundary": "Provisional coordinated source gates remain subject to fresh-context review. Product/Office/cloud/lab execution not performed."
    },
    "immutable_initial_matrices": {
      "exam-a-mapping.json": "8436a53fadd6c30f465ea5d707721a399284fc0bad60f149739544292ded1821",
      "exam-b-initial-mapping.json": "be8bf88886aaafec368d30054fc33262c8fc301caed2386c81a9e73e9934050c",
      "exam-b-initial-mapping-errata.json": "b70676dc53b973abd85845ef6e074b42570e37818b47ee3759eb926fa6577466"
    },
    "method": "Two same-team complete-guide/diff semantic rereads, independent teaching/evidence corrections and current exact bindings. Independent final checks recorded separately; no human/fullrubric2/service execution implied."
  },
  "snapshot_acceptance": {
    "accepted_on": "2026-10-28",
    "changes": {},
    "unchanged_objective_files": 10,
    "unchanged_status_files": 10,
    "historical_preservation": "All prior objective/status bytes, source/deep/audit values and objective paths unchanged; no archive/date migration required."
  },
  "exam_research": {
    "subset_a": {
      "report_type": "Read-only official-exam/objective research plus original grouped workflow proposals; same-context research, not independent review or completed AI audit",
      "research_date": "2026-10-28",
      "scope": [
        "DP-900",
        "MB-230",
        "MB-310",
        "MB-500",
        "MB-800"
      ],
      "exclusive_write_scope": "group-04/exam-a-* only; shared guides/catalogs/snapshots/review ledgers not edited",
      "policies_read": [
        "AGENTS.md",
        "CONTRIBUTING.md",
        "docs/CONTENT-POLICY.md",
        "docs/SOURCE-QUALITY.md",
        "docs/GUIDE-QUALITY-STANDARD.md",
        "docs/AI-AUDIT.md"
      ],
      "complete_guide_read_scope": "Complete five immutable guides including introductory contract, substantive teaching, worked examples/code, integrated scenarios, proposed labs, answers, readiness, resource tables and source notes. Resource links/lab imperatives alone were not counted as substantive coverage.",
      "input_guides": [
        {
          "exam_code": "DP-900",
          "guide_path": "guides/DP-900-microsoft-azure-data-fundamentals.md",
          "guide_lf_sha256": "3ab634df7d0d9db86be9f2d23da1014ac5ef05e6b701d7a5e494202774474a6e",
          "guide_lines": 792,
          "snapshot_path": "data/objective-snapshots/dp-900-official-objectives.txt",
          "snapshot_raw_sha256": "7cef780d1a9e8e88b587fba89acb994985c4aedbd491710e814686ce5dc6559f"
        },
        {
          "exam_code": "MB-230",
          "guide_path": "guides/MB-230-microsoft-dynamics-365-customer-service-functional-consultant.md",
          "guide_lf_sha256": "fc595c40de2aa905feb11a2e68914673f7443ab59204b5c7658c29f1b21daae2",
          "guide_lines": 511,
          "snapshot_path": "data/objective-snapshots/mb-230-official-objectives.txt",
          "snapshot_raw_sha256": "e5925c65c9de7fad2e0d1d921564490a83ce02092b95ad95382775abd6352b38"
        },
        {
          "exam_code": "MB-310",
          "guide_path": "guides/MB-310-microsoft-dynamics-365-finance-functional-consultant.md",
          "guide_lf_sha256": "ecba021e209cf66f5221a50c341c490f30dd92ab8579ff4d95b61216ddb47f48",
          "guide_lines": 373,
          "snapshot_path": "data/objective-snapshots/mb-310-official-objectives.txt",
          "snapshot_raw_sha256": "d5bbe85cad214566f2ba0cc7b266af0ff612664ba199a5c8ed948e28474d2284"
        },
        {
          "exam_code": "MB-500",
          "guide_path": "guides/MB-500-microsoft-dynamics-365-finance-operations-apps-developer.md",
          "guide_lf_sha256": "823c2995491919379df843836a8675e38691f6933484515be1abc50365248d80",
          "guide_lines": 433,
          "snapshot_path": "data/objective-snapshots/mb-500-official-objectives.txt",
          "snapshot_raw_sha256": "30b2b8913d63724b60099adcd9090a67bf818e3b0b42e7e57382a5ab240134cd"
        },
        {
          "exam_code": "MB-800",
          "guide_path": "guides/MB-800-microsoft-dynamics-365-business-central-functional-consultant.md",
          "guide_lf_sha256": "2031a157af330803a99956115b1a9f2402d1cd6c122bc2d74773a959b5370583",
          "guide_lines": 440,
          "snapshot_path": "data/objective-snapshots/mb-800-official-objectives.txt",
          "snapshot_raw_sha256": "36a7035403d51e3f1558e097e03f5cd4da0949d205420aeb46a8bd2b4ff30a9d"
        }
      ],
      "objective_mapping": "exam-a-mapping.json (immutable initial evaluation)",
      "observations": [
        {
          "exam_code": "DP-900",
          "guide_path": "guides/DP-900-microsoft-azure-data-fundamentals.md",
          "baseline": "Skills measured as of July 21, 2026",
          "detailed_objective_count": 30,
          "depth_summary": {
            "substantive": 30
          },
          "study_guide_url": "https://learn.microsoft.com/en-us/credentials/certifications/resources/study-guides/dp-900",
          "credential_url": "https://learn.microsoft.com/en-us/credentials/certifications/azure-data-fundamentals/",
          "identity_observation": "Current credential title/role/product and schedule surface remain consistent with repository identity. No rename, replacement or retirement notice observed in these primary pages.",
          "prerequisites_observation": "Study-guide and credential audience profiles describe expected familiarity/applied experience. No additional prerequisite certification gate is displayed; do not convert experience recommendations into a formal prerequisite. Existing catalog study_prerequisites remains appropriate.",
          "upcoming_change_observation": "No later/future-effective Skills measured section observed as of October28,2026. Page LastUpdated is not used as an objective effective date.",
          "logistics_observation": "45-minute current page;13 languages;PearsonVUE and student/educator Certiport scheduling surfaces. Fundamentals nonexpiry policy applies.",
          "practice_observation": "Current credential page points to signed-in AI Skills Navigator practice route. No assessment questions or signed-in launch inspected; technical/learning researcher owns the overlapping resource repair.",
          "discrepancy": null,
          "confidence": "high for opened public scope/identity pages; no independent scheduling/tenant execution",
          "unresolved_questions": [
            "Tenant/version-specific feature behavior remains learner validation work.",
            "Future retirements/localized exam synchronization may change; recheck official pages before booking."
          ]
        },
        {
          "exam_code": "MB-230",
          "guide_path": "guides/MB-230-microsoft-dynamics-365-customer-service-functional-consultant.md",
          "baseline": "Skills measured as of March 11, 2026",
          "detailed_objective_count": 50,
          "depth_summary": {
            "substantive": 35,
            "partial-named-workflow": 15
          },
          "study_guide_url": "https://learn.microsoft.com/en-us/credentials/certifications/resources/study-guides/mb-230",
          "credential_url": "https://learn.microsoft.com/en-us/credentials/certifications/d365-functional-consultant-customer-service-v3/",
          "identity_observation": "Current credential title/role/product and schedule surface remain consistent with repository identity. No rename, replacement or retirement notice observed in these primary pages.",
          "prerequisites_observation": "Study-guide and credential audience profiles describe expected familiarity/applied experience. No additional prerequisite certification gate is displayed; do not convert experience recommendations into a formal prerequisite. Existing catalog study_prerequisites remains appropriate.",
          "upcoming_change_observation": "No later/future-effective Skills measured section observed as of October28,2026. Page LastUpdated is not used as an objective effective date.",
          "logistics_observation": "100-minute current page;7 languages;PearsonVUE scheduling;12-month renewal displayed. These are volatile current observations, not permanent promises.",
          "practice_observation": "Current credential page points to signed-in AI Skills Navigator practice route. No assessment questions or signed-in launch inspected; technical/learning researcher owns the overlapping resource repair.",
          "discrepancy": "Credential retains October3,2025 LastUpdated and future-tense March11,2026 banner; study guide explicitly states current March11,2026 baseline. Retain visible discrepancy and use study guide for scope.",
          "confidence": "high for opened public scope/identity pages; no independent scheduling/tenant execution",
          "unresolved_questions": [
            "Tenant/version-specific feature behavior remains learner validation work.",
            "Future retirements/localized exam synchronization may change; recheck official pages before booking."
          ]
        },
        {
          "exam_code": "MB-310",
          "guide_path": "guides/MB-310-microsoft-dynamics-365-finance-functional-consultant.md",
          "baseline": "Skills measured as of August 14, 2026",
          "detailed_objective_count": 96,
          "depth_summary": {
            "substantive": 75,
            "partial-named-workflow": 21
          },
          "study_guide_url": "https://learn.microsoft.com/en-us/credentials/certifications/resources/study-guides/mb-310",
          "credential_url": "https://learn.microsoft.com/en-us/credentials/certifications/d365-functional-consultant-financials/",
          "identity_observation": "Current credential title/role/product and schedule surface remain consistent with repository identity. No rename, replacement or retirement notice observed in these primary pages.",
          "prerequisites_observation": "Study-guide and credential audience profiles describe expected familiarity/applied experience. No additional prerequisite certification gate is displayed; do not convert experience recommendations into a formal prerequisite. Existing catalog study_prerequisites remains appropriate.",
          "upcoming_change_observation": "No later/future-effective Skills measured section observed as of October28,2026. Page LastUpdated is not used as an objective effective date.",
          "logistics_observation": "100-minute current page;2 languages;PearsonVUE scheduling;12-month renewal displayed. These are volatile current observations, not permanent promises.",
          "practice_observation": "Current credential page points to signed-in AI Skills Navigator practice route. No assessment questions or signed-in launch inspected; technical/learning researcher owns the overlapping resource repair.",
          "discrepancy": null,
          "confidence": "high for opened public scope/identity pages; no independent scheduling/tenant execution",
          "unresolved_questions": [
            "Tenant/version-specific feature behavior remains learner validation work.",
            "Future retirements/localized exam synchronization may change; recheck official pages before booking."
          ]
        },
        {
          "exam_code": "MB-500",
          "guide_path": "guides/MB-500-microsoft-dynamics-365-finance-operations-apps-developer.md",
          "baseline": "Skills measured as of January 30, 2026",
          "detailed_objective_count": 89,
          "depth_summary": {
            "substantive": 72,
            "partial-named-workflow": 17
          },
          "study_guide_url": "https://learn.microsoft.com/en-us/credentials/certifications/resources/study-guides/mb-500",
          "credential_url": "https://learn.microsoft.com/en-us/credentials/certifications/d365-finance-and-operations-apps-developer-associate/",
          "identity_observation": "Current credential title/role/product and schedule surface remain consistent with repository identity. No rename, replacement or retirement notice observed in these primary pages.",
          "prerequisites_observation": "Study-guide and credential audience profiles describe expected familiarity/applied experience. No additional prerequisite certification gate is displayed; do not convert experience recommendations into a formal prerequisite. Existing catalog study_prerequisites remains appropriate.",
          "upcoming_change_observation": "No later/future-effective Skills measured section observed as of October28,2026. Page LastUpdated is not used as an objective effective date.",
          "logistics_observation": "100-minute current page;2 languages;PearsonVUE scheduling;12-month renewal displayed. These are volatile current observations, not permanent promises.",
          "practice_observation": "Current credential page points to signed-in AI Skills Navigator practice route. No assessment questions or signed-in launch inspected; technical/learning researcher owns the overlapping resource repair.",
          "discrepancy": null,
          "confidence": "high for opened public scope/identity pages; no independent scheduling/tenant execution",
          "unresolved_questions": [
            "Tenant/version-specific feature behavior remains learner validation work.",
            "Future retirements/localized exam synchronization may change; recheck official pages before booking."
          ]
        },
        {
          "exam_code": "MB-800",
          "guide_path": "guides/MB-800-microsoft-dynamics-365-business-central-functional-consultant.md",
          "baseline": "Skills measured as of June 30, 2026",
          "detailed_objective_count": 123,
          "depth_summary": {
            "substantive": 107,
            "partial-named-workflow": 16
          },
          "study_guide_url": "https://learn.microsoft.com/en-us/credentials/certifications/resources/study-guides/mb-800",
          "credential_url": "https://learn.microsoft.com/en-us/credentials/certifications/d365-business-central-functional-consultant-associate/",
          "identity_observation": "Current credential title/role/product and schedule surface remain consistent with repository identity. No rename, replacement or retirement notice observed in these primary pages.",
          "prerequisites_observation": "Study-guide and credential audience profiles describe expected familiarity/applied experience. No additional prerequisite certification gate is displayed; do not convert experience recommendations into a formal prerequisite. Existing catalog study_prerequisites remains appropriate.",
          "upcoming_change_observation": "No later/future-effective Skills measured section observed as of October28,2026. Page LastUpdated is not used as an objective effective date.",
          "logistics_observation": "100-minute current page;8 languages;PearsonVUE scheduling;12-month renewal displayed. These are volatile current observations, not permanent promises.",
          "practice_observation": "Current credential page points to signed-in AI Skills Navigator practice route. No assessment questions or signed-in launch inspected; technical/learning researcher owns the overlapping resource repair.",
          "discrepancy": null,
          "confidence": "high for opened public scope/identity pages; no independent scheduling/tenant execution",
          "unresolved_questions": [
            "Tenant/version-specific feature behavior remains learner validation work.",
            "Future retirements/localized exam synchronization may change; recheck official pages before booking."
          ]
        }
      ],
      "opened_exam_sources": [
        {
          "exam_code": "DP-900",
          "kind": "study",
          "url": "https://learn.microsoft.com/en-us/credentials/certifications/resources/study-guides/dp-900",
          "final_url": "https://learn.microsoft.com/en-us/credentials/certifications/resources/study-guides/dp-900",
          "status": 200,
          "read_scope": "complete main article; HTML navigation excluded",
          "text_path": "exam-a-live-DP-900-study.txt",
          "source_catalog_matches": [
            "dp-900-blueprint"
          ],
          "frozen_candidate_matches": [],
          "confidence": "confirmed first-party readable main body",
          "limits": "Read public credential/study body; no authenticated exam scheduling, practice launch or assessment questions."
        },
        {
          "exam_code": "DP-900",
          "kind": "credential",
          "url": "https://learn.microsoft.com/en-us/credentials/certifications/azure-data-fundamentals/",
          "final_url": "https://learn.microsoft.com/en-us/credentials/certifications/azure-data-fundamentals/",
          "status": 200,
          "read_scope": "complete main article; HTML navigation excluded",
          "text_path": "exam-a-live-DP-900-credential.txt",
          "source_catalog_matches": [
            "microsoft-azure-data-fundamentals-credential"
          ],
          "frozen_candidate_matches": [],
          "confidence": "confirmed first-party readable main body",
          "limits": "Read public credential/study body; no authenticated exam scheduling, practice launch or assessment questions."
        },
        {
          "exam_code": "MB-230",
          "kind": "study",
          "url": "https://learn.microsoft.com/en-us/credentials/certifications/resources/study-guides/mb-230",
          "final_url": "https://learn.microsoft.com/en-us/credentials/certifications/resources/study-guides/mb-230",
          "status": 200,
          "read_scope": "complete main article; HTML navigation excluded",
          "text_path": "exam-a-live-MB-230-study.txt",
          "source_catalog_matches": [
            "mb-230-blueprint"
          ],
          "frozen_candidate_matches": [],
          "confidence": "confirmed first-party readable main body",
          "limits": "Read public credential/study body; no authenticated exam scheduling, practice launch or assessment questions."
        },
        {
          "exam_code": "MB-230",
          "kind": "credential",
          "url": "https://learn.microsoft.com/en-us/credentials/certifications/d365-functional-consultant-customer-service-v3/",
          "final_url": "https://learn.microsoft.com/en-us/credentials/certifications/d365-functional-consultant-customer-service-v3/",
          "status": 200,
          "read_scope": "complete main article; HTML navigation excluded",
          "text_path": "exam-a-live-MB-230-credential.txt",
          "source_catalog_matches": [
            "mb-230-credential"
          ],
          "frozen_candidate_matches": [],
          "confidence": "confirmed first-party readable main body",
          "limits": "Read public credential/study body; no authenticated exam scheduling, practice launch or assessment questions."
        },
        {
          "exam_code": "MB-310",
          "kind": "study",
          "url": "https://learn.microsoft.com/en-us/credentials/certifications/resources/study-guides/mb-310",
          "final_url": "https://learn.microsoft.com/en-us/credentials/certifications/resources/study-guides/mb-310",
          "status": 200,
          "read_scope": "complete main article; HTML navigation excluded",
          "text_path": "exam-a-live-MB-310-study.txt",
          "source_catalog_matches": [
            "mb-310-blueprint"
          ],
          "frozen_candidate_matches": [],
          "confidence": "confirmed first-party readable main body",
          "limits": "Read public credential/study body; no authenticated exam scheduling, practice launch or assessment questions."
        },
        {
          "exam_code": "MB-310",
          "kind": "credential",
          "url": "https://learn.microsoft.com/en-us/credentials/certifications/d365-functional-consultant-financials/",
          "final_url": "https://learn.microsoft.com/en-us/credentials/certifications/d365-functional-consultant-financials/",
          "status": 200,
          "read_scope": "complete main article; HTML navigation excluded",
          "text_path": "exam-a-live-MB-310-credential.txt",
          "source_catalog_matches": [
            "mb-310-credential"
          ],
          "frozen_candidate_matches": [],
          "confidence": "confirmed first-party readable main body",
          "limits": "Read public credential/study body; no authenticated exam scheduling, practice launch or assessment questions."
        },
        {
          "exam_code": "MB-500",
          "kind": "study",
          "url": "https://learn.microsoft.com/en-us/credentials/certifications/resources/study-guides/mb-500",
          "final_url": "https://learn.microsoft.com/en-us/credentials/certifications/resources/study-guides/mb-500",
          "status": 200,
          "read_scope": "complete main article; HTML navigation excluded",
          "text_path": "exam-a-live-MB-500-study.txt",
          "source_catalog_matches": [
            "mb-500-blueprint"
          ],
          "frozen_candidate_matches": [],
          "confidence": "confirmed first-party readable main body",
          "limits": "Read public credential/study body; no authenticated exam scheduling, practice launch or assessment questions."
        },
        {
          "exam_code": "MB-500",
          "kind": "credential",
          "url": "https://learn.microsoft.com/en-us/credentials/certifications/d365-finance-and-operations-apps-developer-associate/",
          "final_url": "https://learn.microsoft.com/en-us/credentials/certifications/d365-finance-and-operations-apps-developer-associate/",
          "status": 200,
          "read_scope": "complete main article; HTML navigation excluded",
          "text_path": "exam-a-live-MB-500-credential.txt",
          "source_catalog_matches": [
            "mb-500-credential"
          ],
          "frozen_candidate_matches": [],
          "confidence": "confirmed first-party readable main body",
          "limits": "Read public credential/study body; no authenticated exam scheduling, practice launch or assessment questions."
        },
        {
          "exam_code": "MB-800",
          "kind": "study",
          "url": "https://learn.microsoft.com/en-us/credentials/certifications/resources/study-guides/mb-800",
          "final_url": "https://learn.microsoft.com/en-us/credentials/certifications/resources/study-guides/mb-800",
          "status": 200,
          "read_scope": "complete main article; HTML navigation excluded",
          "text_path": "exam-a-live-MB-800-study.txt",
          "source_catalog_matches": [
            "mb-800-blueprint"
          ],
          "frozen_candidate_matches": [],
          "confidence": "confirmed first-party readable main body",
          "limits": "Read public credential/study body; no authenticated exam scheduling, practice launch or assessment questions."
        },
        {
          "exam_code": "MB-800",
          "kind": "credential",
          "url": "https://learn.microsoft.com/en-us/credentials/certifications/d365-business-central-functional-consultant-associate/",
          "final_url": "https://learn.microsoft.com/en-us/credentials/certifications/d365-business-central-functional-consultant-associate/",
          "status": 200,
          "read_scope": "complete main article; HTML navigation excluded",
          "text_path": "exam-a-live-MB-800-credential.txt",
          "source_catalog_matches": [
            "mb-800-credential"
          ],
          "frozen_candidate_matches": [],
          "confidence": "confirmed first-party readable main body",
          "limits": "Read public credential/study body; no authenticated exam scheduling, practice launch or assessment questions."
        }
      ],
      "opened_lifecycle_release_sources": [
        {
          "url": "https://learn.microsoft.com/en-us/credentials/support/retired-certification-exams",
          "final_url": "https://learn.microsoft.com/en-us/credentials/support/retired-certification-exams",
          "read_scope": "complete main article body",
          "observation": "No scheduled retirement for DP-900, MB-230, MB-310, MB-500 or MB-800 observed in the current list. Absence is bounded evidence, not a promise of future availability.",
          "confidence": "confirmed first-party page; absence/tenant limits stated",
          "text_sha256": "c84e6c35cb46ff6d0a4d58fd48710152d480a8cf6196b449833619468e07f3fb",
          "affected_exams": [
            "DP-900",
            "MB-230",
            "MB-310",
            "MB-500",
            "MB-800"
          ]
        },
        {
          "url": "https://learn.microsoft.com/en-us/credentials/support/credential-expiration-policy",
          "final_url": "https://learn.microsoft.com/en-us/credentials/support/credential-expiration-policy",
          "read_scope": "complete main article body",
          "observation": "Fundamentals certifications do not expire; role-based associate/expert and specialty certifications are valid one year and require renewal before expiration.",
          "confidence": "confirmed first-party page; absence/tenant limits stated",
          "text_sha256": "aaafe25e5f3f6a91b0f6f789a68a40be3b5039526df33675735f660030f12bbf",
          "affected_exams": [
            "DP-900",
            "MB-230",
            "MB-310",
            "MB-500",
            "MB-800"
          ]
        },
        {
          "url": "https://learn.microsoft.com/en-us/dynamics365/finance/get-started/whats-new-changed-10-0-49",
          "final_url": "https://learn.microsoft.com/en-us/dynamics365/finance/get-started/whats-new-changed-10-0-49",
          "read_scope": "complete main article body",
          "observation": "Finance10.0.49 build10.0.2790 lists July preview, September2026 self-update GA and October2026 auto-update GA. Release schedule does not prove every feature enabled; line-level customer prepayment and budget-date advancement have parameter/feature controls.",
          "confidence": "confirmed first-party page; absence/tenant limits stated",
          "text_sha256": "df1c13c2d62d2fad9d6c1a3915e0e8c4033b84c2257268679361319596523f78",
          "affected_exams": [
            "MB-310",
            "MB-500"
          ]
        },
        {
          "url": "https://learn.microsoft.com/en-us/dynamics365/business-central/dev-itpro/whatsnew/overview",
          "final_url": "https://learn.microsoft.com/en-us/dynamics365/business-central/dev-itpro/whatsnew/overview",
          "read_scope": "complete main article body",
          "observation": "Current page lists29.0 available October2026, monthly minor updates and move of new disclosures to AIatWork roadmap from September2026. Historical release plans remain; roadmap entries are not tenant-availability guarantees.",
          "confidence": "confirmed first-party page; absence/tenant limits stated",
          "text_sha256": "f18ea8843e2746d2b381026bae3ba682977942788eb254dbc35279afbcf3e647",
          "affected_exams": [
            "MB-800"
          ]
        }
      ],
      "opened_workflow_sources": [
        {
          "key": "sandbox",
          "url": "https://learn.microsoft.com/en-us/training/modules/explore-extensions-framework-finance-operations/sysoperationsandbox-framework",
          "final_url": "https://learn.microsoft.com/en-us/training/modules/explore-extensions-framework-finance-operations/sysoperationsandbox-framework",
          "status": 200,
          "read_scope": "complete main article body",
          "title": "Implement the SysOperationSandbox framework - Training | Microsoft Learn",
          "source_catalog_matches": [],
          "frozen_candidate_matches": [],
          "affected_exams": [
            "MB-500"
          ],
          "confidence": "confirmed first-party source with readable body; implementation unexecuted",
          "limits": "Selected workflow body, not linked pages unless separately recorded. Public official training/lab used for original synthesis, not republished instructions/code or a claim of execution."
        },
        {
          "key": "workflow",
          "url": "https://learn.microsoft.com/en-us/training/modules/explore-extensions-framework-finance-operations/workflow-framework",
          "final_url": "https://learn.microsoft.com/en-us/training/modules/explore-extensions-framework-finance-operations/workflow-framework",
          "status": 200,
          "read_scope": "complete main article body",
          "title": "Implement the workflow framework - Training | Microsoft Learn",
          "source_catalog_matches": [],
          "frozen_candidate_matches": [],
          "affected_exams": [
            "MB-500"
          ],
          "confidence": "confirmed first-party source with readable body; implementation unexecuted",
          "limits": "Selected workflow body, not linked pages unless separately recorded. Public official training/lab used for original synthesis, not republished instructions/code or a claim of execution."
        },
        {
          "key": "serializer",
          "url": "https://microsoftlearning.github.io/MB-500-Microsoft-Dynamics-365-Finance-and-Operations-Apps-Developer/Instructions/Labs/Lab%20-%203%20-%20Implement%20the%20SysExtensionSerializer%20framework.html",
          "final_url": "https://microsoftlearning.github.io/MB-500-Microsoft-Dynamics-365-Finance-and-Operations-Apps-Developer/Instructions/Labs/Lab%20-%203%20-%20Implement%20the%20SysExtensionSerializer%20framework.html",
          "status": 200,
          "read_scope": "complete main article body",
          "title": "\n             | \n            MB-500-Microsoft-Dynamics-365-Finance-and-Operations-Apps-Developer\n        ",
          "source_catalog_matches": [],
          "frozen_candidate_matches": [],
          "affected_exams": [
            "MB-500"
          ],
          "confidence": "confirmed first-party source with readable body; implementation unexecuted",
          "limits": "Selected workflow body, not linked pages unless separately recorded. Public official training/lab used for original synthesis, not republished instructions/code or a claim of execution."
        },
        {
          "key": "cache",
          "url": "https://learn.microsoft.com/en-us/dotnet/api/microsoft.dynamics.ax.xpp.sysglobalobjectcache?view=dyn-finops-dotnet",
          "final_url": "https://learn.microsoft.com/en-us/dotnet/api/microsoft.dynamics.ax.xpp.sysglobalobjectcache?view=dyn-finops-dotnet",
          "status": 200,
          "read_scope": "complete main article body",
          "title": "SysGlobalObjectCache Class (Microsoft.Dynamics.Ax.Xpp) | Microsoft Learn",
          "source_catalog_matches": [],
          "frozen_candidate_matches": [],
          "affected_exams": [
            "MB-500"
          ],
          "confidence": "confirmed first-party source with readable body; implementation unexecuted",
          "limits": "Selected workflow body, not linked pages unless separately recorded. Public official training/lab used for original synthesis, not republished instructions/code or a claim of execution."
        },
        {
          "key": "costing",
          "url": "https://learn.microsoft.com/en-us/dynamics365/business-central/design-details-costing-methods",
          "final_url": "https://learn.microsoft.com/en-us/dynamics365/business-central/design-details-costing-methods",
          "status": 200,
          "read_scope": "complete main article body",
          "title": "Design details - Costing methods - Business Central | Microsoft Learn",
          "source_catalog_matches": [],
          "frozen_candidate_matches": [],
          "affected_exams": [
            "MB-800"
          ],
          "confidence": "confirmed first-party source with readable body; implementation unexecuted",
          "limits": "Selected workflow body, not linked pages unless separately recorded. Public official training/lab used for original synthesis, not republished instructions/code or a claim of execution."
        },
        {
          "key": "recurring",
          "url": "https://learn.microsoft.com/en-us/dynamics365/business-central/purchasing-how-work-recurring-purchase-lines",
          "final_url": "https://learn.microsoft.com/en-us/dynamics365/business-central/purchasing-how-work-recurring-purchase-lines",
          "status": 200,
          "read_scope": "complete main article body",
          "title": "Standard recurring purchase lines - Business Central | Microsoft Learn",
          "source_catalog_matches": [],
          "frozen_candidate_matches": [],
          "affected_exams": [
            "MB-800"
          ],
          "confidence": "confirmed first-party source with readable body; implementation unexecuted",
          "limits": "Selected workflow body, not linked pages unless separately recorded. Public official training/lab used for original synthesis, not republished instructions/code or a claim of execution."
        },
        {
          "key": "alias",
          "url": "https://learn.microsoft.com/en-us/dynamics365/finance/general-ledger/tasks/set-up-ledger-account-alias",
          "final_url": "https://learn.microsoft.com/en-us/dynamics365/finance/general-ledger/tasks/set-up-ledger-account-alias",
          "status": 200,
          "read_scope": "complete main article body",
          "title": "Set up a ledger account alias - Finance | Dynamics 365 | Microsoft Learn",
          "source_catalog_matches": [],
          "frozen_candidate_matches": [],
          "affected_exams": [
            "MB-310"
          ],
          "confidence": "confirmed first-party source with readable body; implementation unexecuted",
          "limits": "Selected workflow body, not linked pages unless separately recorded. Public official training/lab used for original synthesis, not republished instructions/code or a claim of execution."
        },
        {
          "key": "budget-integration",
          "url": "https://learn.microsoft.com/en-us/dynamics365/finance/budgeting/budget-planning-integration-other-modules",
          "final_url": "https://learn.microsoft.com/en-us/dynamics365/finance/budgeting/budget-planning-integration-other-modules",
          "status": 200,
          "read_scope": "complete main article body",
          "title": "Budget planning integration with other modules - Finance | Dynamics 365 | Microsoft Learn",
          "source_catalog_matches": [],
          "frozen_candidate_matches": [],
          "affected_exams": [],
          "confidence": "confirmed first-party source with readable body; implementation unexecuted",
          "limits": "Selected workflow body, not linked pages unless separately recorded. Public official training/lab used for original synthesis, not republished instructions/code or a claim of execution."
        },
        {
          "key": "mb230-resolution",
          "url": "https://learn.microsoft.com/en-us/dynamics365/customer-service/administer/modify-case-resolution-dialog",
          "final_url": "https://learn.microsoft.com/en-us/dynamics365/customer-service/administer/modify-case-resolution-dialog",
          "status": 200,
          "title": "Customize the case resolution dialog | Microsoft Learn",
          "read_scope": "main article body, selected workflow sections; no assessment questions or paid content",
          "text_sha256": "71934b481b131aae6c73bd69c8a45eb2f7f029702b9ae9f1ebaa02f8a97403d0",
          "length": 5007,
          "source_catalog_matches": [],
          "frozen_candidate_matches": [],
          "affected_exams": [
            "MB-230"
          ],
          "confidence": "confirmed first-party source with readable body; implementation unexecuted",
          "limits": "Selected workflow body, not linked pages unless separately recorded. Public official training/lab used for original synthesis, not republished instructions/code or a claim of execution."
        },
        {
          "key": "mb230-contacts",
          "url": "https://learn.microsoft.com/en-us/dynamics365/customer-service/administer/configure-rules-based-suggested-contacts",
          "final_url": "https://learn.microsoft.com/en-us/dynamics365/customer-service/administer/configure-rules-based-suggested-contacts",
          "status": 200,
          "title": "Configure rules-based suggestions for contacts in Microsoft Teams | Microsoft Learn",
          "read_scope": "main article body, selected workflow sections; no assessment questions or paid content",
          "text_sha256": "096024cdff39b79e0deb090f7c8abe2d86c455e83e926e59cc82750c4f10b541",
          "length": 5414,
          "source_catalog_matches": [],
          "frozen_candidate_matches": [],
          "affected_exams": [
            "MB-230"
          ],
          "confidence": "confirmed first-party source with readable body; implementation unexecuted",
          "limits": "Selected workflow body, not linked pages unless separately recorded. Public official training/lab used for original synthesis, not republished instructions/code or a claim of execution."
        },
        {
          "key": "mb230-skills",
          "url": "https://learn.microsoft.com/en-us/dynamics365/customer-service/administer/set-up-isf-model",
          "final_url": "https://learn.microsoft.com/en-us/dynamics365/customer-service/administer/set-up-isf-model",
          "status": 200,
          "title": "Set up intelligent skill finder model in unified routing | Microsoft Learn",
          "read_scope": "main article body, selected workflow sections; no assessment questions or paid content",
          "text_sha256": "64d4bbca55265287eba8c1e47e36ec73b9aced537ce2ce57b9eefbd0c7a5fcc8",
          "length": 8614,
          "source_catalog_matches": [],
          "frozen_candidate_matches": [],
          "affected_exams": [
            "MB-230"
          ],
          "confidence": "confirmed first-party source with readable body; implementation unexecuted",
          "limits": "Selected workflow body, not linked pages unless separately recorded. Public official training/lab used for original synthesis, not republished instructions/code or a claim of execution."
        },
        {
          "key": "mb230-maker",
          "url": "https://learn.microsoft.com/en-us/power-apps/maker/model-driven-apps/app-properties",
          "final_url": "https://learn.microsoft.com/en-us/power-apps/maker/model-driven-apps/app-properties",
          "status": 200,
          "title": "Manage model-driven app settings in the Power Apps app designer - Power Apps | Microsoft Learn",
          "read_scope": "main article body, selected workflow sections; no assessment questions or paid content",
          "text_sha256": "8140645c89981c37ffdf889325c4aa21f9514172bc95ebac631a8fd392321c8e",
          "length": 6723,
          "source_catalog_matches": [],
          "frozen_candidate_matches": [],
          "affected_exams": [
            "MB-230"
          ],
          "confidence": "confirmed first-party source with readable body; implementation unexecuted",
          "limits": "Selected workflow body, not linked pages unless separately recorded. Public official training/lab used for original synthesis, not republished instructions/code or a claim of execution."
        },
        {
          "key": "mb230-search",
          "url": "https://learn.microsoft.com/en-us/power-platform/admin/configure-relevance-search-organization",
          "final_url": "https://learn.microsoft.com/en-us/power-platform/admin/configure-relevance-search-organization",
          "status": 200,
          "title": "Configure Dataverse search for your environment - Power Platform | Microsoft Learn",
          "read_scope": "main article body, selected workflow sections; no assessment questions or paid content",
          "text_sha256": "78a0e2d5294395e3c67743e003576363d52562a68c1496201938d93b2a918210",
          "length": 22998,
          "source_catalog_matches": [],
          "frozen_candidate_matches": [],
          "affected_exams": [
            "MB-230"
          ],
          "confidence": "confirmed first-party source with readable body; implementation unexecuted",
          "limits": "Selected workflow body, not linked pages unless separately recorded. Public official training/lab used for original synthesis, not republished instructions/code or a claim of execution."
        },
        {
          "key": "mb230-notify",
          "url": "https://learn.microsoft.com/en-us/power-apps/developer/model-driven-apps/clientapi/send-in-app-notifications",
          "final_url": "https://learn.microsoft.com/en-us/power-apps/developer/model-driven-apps/clientapi/send-in-app-notifications",
          "status": 200,
          "title": "Send In-App Notifications Within Model-Driven Apps - Power Apps | Microsoft Learn",
          "read_scope": "main article body, selected workflow sections; no assessment questions or paid content",
          "text_sha256": "673047edd92e7c4f05c5a42143c44369d4df0459d3cb781e45cce359e4b4b1b5",
          "length": 46875,
          "source_catalog_matches": [],
          "frozen_candidate_matches": [],
          "affected_exams": [
            "MB-230"
          ],
          "confidence": "confirmed first-party source with readable body; implementation unexecuted",
          "limits": "Selected workflow body, not linked pages unless separately recorded. Public official training/lab used for original synthesis, not republished instructions/code or a claim of execution."
        },
        {
          "key": "mb230-email",
          "url": "https://learn.microsoft.com/en-us/power-platform/admin/create-templates-email",
          "final_url": "https://learn.microsoft.com/en-us/power-platform/admin/create-templates-email",
          "status": 200,
          "title": "Create templates for email - Power Platform | Microsoft Learn",
          "read_scope": "main article body, selected workflow sections; no assessment questions or paid content",
          "text_sha256": "74f560100f22dd57c33d2c89cc7b26cdc0ddc2e942e85bbfdff65e1f7dffa061",
          "length": 5560,
          "source_catalog_matches": [],
          "frozen_candidate_matches": [],
          "affected_exams": [
            "MB-230"
          ],
          "confidence": "confirmed first-party source with readable body; implementation unexecuted",
          "limits": "Selected workflow body, not linked pages unless separately recorded. Public official training/lab used for original synthesis, not republished instructions/code or a claim of execution."
        },
        {
          "key": "mb230-knowledge",
          "url": "https://learn.microsoft.com/en-us/dynamics365/customer-service/administer/set-up-knowledge-management-embedded-knowledge-search",
          "final_url": "https://learn.microsoft.com/en-us/dynamics365/customer-service/administer/set-up-knowledge-management-embedded-knowledge-search",
          "status": 200,
          "title": "Configure knowledge management | Microsoft Learn",
          "read_scope": "main article body, selected workflow sections; no assessment questions or paid content",
          "text_sha256": "f376d34565f537f8e60d2b7d08c0371e1abc4899830dacf8d15af170fdc4dea0",
          "length": 13782,
          "source_catalog_matches": [
            "mb230-knowledge"
          ],
          "frozen_candidate_matches": [],
          "affected_exams": [
            "MB-230"
          ],
          "confidence": "confirmed first-party source with readable body; implementation unexecuted",
          "limits": "Selected workflow body, not linked pages unless separately recorded. Public official training/lab used for original synthesis, not republished instructions/code or a claim of execution."
        },
        {
          "key": "mb230-inbox",
          "url": "https://learn.microsoft.com/en-us/dynamics365/customer-service/administer/configure-inbox",
          "final_url": "https://learn.microsoft.com/en-us/dynamics365/customer-service/administer/configure-inbox",
          "status": 200,
          "title": "Configure the inbox | Microsoft Learn",
          "read_scope": "main article body, selected workflow sections; no assessment questions or paid content",
          "text_sha256": "07f34045f52615c90ba0374707b3293ae133a792f681dda74855d3a6f02f4103",
          "length": 10293,
          "source_catalog_matches": [
            "mb230-inbox"
          ],
          "frozen_candidate_matches": [],
          "affected_exams": [
            "MB-230"
          ],
          "confidence": "confirmed first-party source with readable body; implementation unexecuted",
          "limits": "Selected workflow body, not linked pages unless separately recorded. Public official training/lab used for original synthesis, not republished instructions/code or a claim of execution."
        },
        {
          "key": "mb310-periodic",
          "url": "https://learn.microsoft.com/en-us/dynamics365/finance/general-ledger/tasks/post-periodic-journals",
          "final_url": "https://learn.microsoft.com/en-us/dynamics365/finance/general-ledger/tasks/post-periodic-journals",
          "status": 200,
          "title": "Post periodic journals - Finance | Dynamics 365 | Microsoft Learn",
          "read_scope": "main article body, selected workflow sections; no assessment questions or paid content",
          "text_sha256": "4726da09d9b6aec83c18193d20cecfd86fdab5a28ab17f7c2a6973f42cdb2e1c",
          "length": 3432,
          "source_catalog_matches": [],
          "frozen_candidate_matches": [],
          "affected_exams": [
            "MB-310"
          ],
          "confidence": "confirmed first-party source with readable body; implementation unexecuted",
          "limits": "Selected workflow body, not linked pages unless separately recorded. Public official training/lab used for original synthesis, not republished instructions/code or a claim of execution."
        },
        {
          "key": "mb310-excel",
          "url": "https://learn.microsoft.com/en-us/dynamics365/finance/general-ledger/open-lines-excel-journals-documents",
          "final_url": "https://learn.microsoft.com/en-us/dynamics365/finance/general-ledger/open-lines-excel-journals-documents",
          "status": 200,
          "title": "Publish journal lines and documents from Excel - Finance | Dynamics 365 | Microsoft Learn",
          "read_scope": "main article body, selected workflow sections; no assessment questions or paid content",
          "text_sha256": "f94e006bcaebff5b2e49f4ae997014de080567b32b6305530c92c3e1e9e8d161",
          "length": 2982,
          "source_catalog_matches": [],
          "frozen_candidate_matches": [],
          "affected_exams": [
            "MB-310"
          ],
          "confidence": "confirmed first-party source with readable body; implementation unexecuted",
          "limits": "Selected workflow body, not linked pages unless separately recorded. Public official training/lab used for original synthesis, not republished instructions/code or a claim of execution."
        },
        {
          "key": "mb310-excel-design",
          "url": "https://learn.microsoft.com/en-us/dynamics365/fin-ops-core/dev-itpro/user-interface/add-templates-open-lines-excel-menu",
          "final_url": "https://learn.microsoft.com/en-us/dynamics365/fin-ops-core/dev-itpro/user-interface/add-templates-open-lines-excel-menu",
          "status": 200,
          "title": "Add templates to the Open lines in Excel menu - Finance & Operations | Dynamics 365 | Microsoft Learn",
          "read_scope": "main article body, selected workflow sections; no assessment questions or paid content",
          "text_sha256": "bc924ca70b96a2fadba4470cd603cea975ccc4fe60c9b56fd84c9b4298383fd5",
          "length": 8108,
          "source_catalog_matches": [],
          "frozen_candidate_matches": [],
          "affected_exams": [
            "MB-310"
          ],
          "confidence": "confirmed first-party source with readable body; implementation unexecuted",
          "limits": "Selected workflow body, not linked pages unless separately recorded. Public official training/lab used for original synthesis, not republished instructions/code or a claim of execution."
        },
        {
          "key": "mb310-forecast",
          "url": "https://learn.microsoft.com/en-us/dynamics365/finance/cash-bank-management/cash-flow-forecasting",
          "final_url": "https://learn.microsoft.com/en-us/dynamics365/finance/cash-bank-management/cash-flow-forecasting",
          "status": 200,
          "title": "Cash flow forecasting - Finance | Dynamics 365 | Microsoft Learn",
          "read_scope": "main article body, selected workflow sections; no assessment questions or paid content",
          "text_sha256": "8aa107a9247977e6dd22e22bc47d8a81e525c8b88bcf7f79792be5ac6d556b68",
          "length": 18887,
          "source_catalog_matches": [],
          "frozen_candidate_matches": [],
          "affected_exams": [
            "MB-310"
          ],
          "confidence": "confirmed first-party source with readable body; implementation unexecuted",
          "limits": "Selected workflow body, not linked pages unless separately recorded. Public official training/lab used for original synthesis, not republished instructions/code or a claim of execution."
        },
        {
          "key": "mb310-centralized",
          "url": "https://learn.microsoft.com/en-us/dynamics365/finance/cash-bank-management/set-up-centralized-payments",
          "final_url": "https://learn.microsoft.com/en-us/dynamics365/finance/cash-bank-management/set-up-centralized-payments",
          "status": 200,
          "title": "Set up centralized payments - Finance | Dynamics 365 | Microsoft Learn",
          "read_scope": "main article body, selected workflow sections; no assessment questions or paid content",
          "text_sha256": "c32fd2c3c0de39fa847615a8e18db7cf067db9ad522317462c68ae6a06745692",
          "length": 5415,
          "source_catalog_matches": [],
          "frozen_candidate_matches": [],
          "affected_exams": [
            "MB-310"
          ],
          "confidence": "confirmed first-party source with readable body; implementation unexecuted",
          "limits": "Selected workflow body, not linked pages unless separately recorded. Public official training/lab used for original synthesis, not republished instructions/code or a claim of execution."
        },
        {
          "key": "mb310-company",
          "url": "https://learn.microsoft.com/en-us/dynamics365/finance/general-ledger/prepare-company-for-consolidation",
          "final_url": "https://learn.microsoft.com/en-us/dynamics365/finance/general-ledger/prepare-company-for-consolidation",
          "status": 200,
          "title": "Prepare a legal entity for the consolidation process - Finance | Dynamics 365 | Microsoft Learn",
          "read_scope": "main article body, selected workflow sections; no assessment questions or paid content",
          "text_sha256": "59842f637aff19d009fa279da204cc976ff953c852c0c4ab5bba221b42c2de6a",
          "length": 4585,
          "source_catalog_matches": [],
          "frozen_candidate_matches": [],
          "affected_exams": [
            "MB-310"
          ],
          "confidence": "confirmed first-party source with readable body; implementation unexecuted",
          "limits": "Selected workflow body, not linked pages unless separately recorded. Public official training/lab used for original synthesis, not republished instructions/code or a claim of execution."
        },
        {
          "key": "mb310-withholding",
          "url": "https://learn.microsoft.com/en-us/dynamics365/finance/general-ledger/set-up-global-withholding-tax",
          "final_url": "https://learn.microsoft.com/en-us/dynamics365/finance/general-ledger/set-up-global-withholding-tax",
          "status": 200,
          "title": "Set up global withholding tax - Finance | Dynamics 365 | Microsoft Learn",
          "read_scope": "main article body, selected workflow sections; no assessment questions or paid content",
          "text_sha256": "8dc62437235c466cb80943be26949227a50ef5bbed7160e93db30b6d3ff6d937",
          "length": 1727,
          "source_catalog_matches": [],
          "frozen_candidate_matches": [],
          "affected_exams": [
            "MB-310"
          ],
          "confidence": "confirmed first-party source with readable body; implementation unexecuted",
          "limits": "Selected workflow body, not linked pages unless separately recorded. Public official training/lab used for original synthesis, not republished instructions/code or a claim of execution."
        },
        {
          "key": "mb310-tax-payment",
          "url": "https://learn.microsoft.com/en-us/dynamics365/finance/general-ledger/tasks/create-sales-tax-payment",
          "final_url": "https://learn.microsoft.com/en-us/dynamics365/finance/general-ledger/tasks/create-sales-tax-payment",
          "status": 200,
          "title": "Create a sales tax payment - Finance | Dynamics 365 | Microsoft Learn",
          "read_scope": "main article body, selected workflow sections; no assessment questions or paid content",
          "text_sha256": "a242febb990b8d9daff4c048bc70aac1df45ad70e291731d1111ceb39af994c4",
          "length": 5018,
          "source_catalog_matches": [],
          "frozen_candidate_matches": [],
          "affected_exams": [
            "MB-310"
          ],
          "confidence": "confirmed first-party source with readable body; implementation unexecuted",
          "limits": "Selected workflow body, not linked pages unless separately recorded. Public official training/lab used for original synthesis, not republished instructions/code or a claim of execution."
        },
        {
          "key": "mb310-recurring",
          "url": "https://learn.microsoft.com/en-us/dynamics365/finance/accounts-receivable/set-up-process-recurring-invoices",
          "final_url": "https://learn.microsoft.com/en-us/dynamics365/finance/accounts-receivable/set-up-process-recurring-invoices",
          "status": 200,
          "title": "Set up and process recurring invoices - Finance | Dynamics 365 | Microsoft Learn",
          "read_scope": "main article body, selected workflow sections; no assessment questions or paid content",
          "text_sha256": "6948462172cdeb18fa76372c28fd5225b465028f0c64299662fc86a542fa6915",
          "length": 3247,
          "source_catalog_matches": [],
          "frozen_candidate_matches": [],
          "affected_exams": [
            "MB-310"
          ],
          "confidence": "confirmed first-party source with readable body; implementation unexecuted",
          "limits": "Selected workflow body, not linked pages unless separately recorded. Public official training/lab used for original synthesis, not republished instructions/code or a claim of execution."
        },
        {
          "key": "mb310-vendor-recurring",
          "url": "https://learn.microsoft.com/en-us/dynamics365/finance/accounts-payable/recurring-invoice",
          "final_url": "https://learn.microsoft.com/en-us/dynamics365/finance/accounts-payable/recurring-invoice",
          "status": 200,
          "title": "Recurring vendor invoices - Finance | Dynamics 365 | Microsoft Learn",
          "read_scope": "main article body, selected workflow sections; no assessment questions or paid content",
          "text_sha256": "32ced600b97e542fbb64eefc9da3c160a9e61656904a6fe0bb6778a503b2a038",
          "length": 3070,
          "source_catalog_matches": [],
          "frozen_candidate_matches": [],
          "affected_exams": [
            "MB-310"
          ],
          "confidence": "confirmed first-party source with readable body; implementation unexecuted",
          "limits": "Selected workflow body, not linked pages unless separately recorded. Public official training/lab used for original synthesis, not republished instructions/code or a claim of execution."
        },
        {
          "key": "mb310-billing",
          "url": "https://learn.microsoft.com/en-us/dynamics365/finance/public-sector/tasks/create-billing-classification-public-sector",
          "final_url": "https://learn.microsoft.com/en-us/dynamics365/finance/public-sector/tasks/create-billing-classification-public-sector",
          "status": 200,
          "title": "Create a billing classification in the public sector - Finance | Dynamics 365 | Microsoft Learn",
          "read_scope": "main article body, selected workflow sections; no assessment questions or paid content",
          "text_sha256": "0cfb34701f34631c62b7cea70e32a592db2025803e148ef8fd003b4c253e926c",
          "length": 1877,
          "source_catalog_matches": [],
          "frozen_candidate_matches": [],
          "affected_exams": [
            "MB-310"
          ],
          "confidence": "confirmed first-party source with readable body; implementation unexecuted",
          "limits": "Selected workflow body, not linked pages unless separately recorded. Public official training/lab used for original synthesis, not republished instructions/code or a claim of execution."
        },
        {
          "key": "mb310-letters",
          "url": "https://learn.microsoft.com/en-us/dynamics365/finance/accounts-receivable/tasks/process-collection-letters",
          "final_url": "https://learn.microsoft.com/en-us/dynamics365/finance/accounts-receivable/tasks/process-collection-letters",
          "status": 200,
          "title": "Process collection letters - Finance | Dynamics 365 | Microsoft Learn",
          "read_scope": "main article body, selected workflow sections; no assessment questions or paid content",
          "text_sha256": "3c43cfabd4dcae54cec303b10bb104c33d10c6586ea46418803390b6e9e6fd2b",
          "length": 5605,
          "source_catalog_matches": [],
          "frozen_candidate_matches": [],
          "affected_exams": [
            "MB-310"
          ],
          "confidence": "confirmed first-party source with readable body; implementation unexecuted",
          "limits": "Selected workflow body, not linked pages unless separately recorded. Public official training/lab used for original synthesis, not republished instructions/code or a claim of execution."
        },
        {
          "key": "mb310-interest",
          "url": "https://learn.microsoft.com/en-us/dynamics365/finance/accounts-receivable/tasks/process-interest",
          "final_url": "https://learn.microsoft.com/en-us/dynamics365/finance/accounts-receivable/tasks/process-interest",
          "status": 200,
          "title": "Process interest - Finance | Dynamics 365 | Microsoft Learn",
          "read_scope": "main article body, selected workflow sections; no assessment questions or paid content",
          "text_sha256": "83a438166a5470d3c3e1b949969f782686c78d273af0935da957392189248fda",
          "length": 3633,
          "source_catalog_matches": [],
          "frozen_candidate_matches": [],
          "affected_exams": [
            "MB-310"
          ],
          "confidence": "confirmed first-party source with readable body; implementation unexecuted",
          "limits": "Selected workflow body, not linked pages unless separately recorded. Public official training/lab used for original synthesis, not republished instructions/code or a claim of execution."
        },
        {
          "key": "mb310-asset-budget",
          "url": "https://learn.microsoft.com/en-us/training/modules/manage-fixed-assets-finance/asset-budgeting",
          "final_url": "https://learn.microsoft.com/en-us/training/modules/manage-fixed-assets-finance/asset-budgeting",
          "status": 200,
          "title": "Asset budgeting - Training | Microsoft Learn",
          "read_scope": "main article body, selected workflow sections; no assessment questions or paid content",
          "text_sha256": "c4e7604dd59d99293a01e9caa5fb6ecb2b71c447c7123575d39b0d47bd5b65a6",
          "length": 2450,
          "source_catalog_matches": [],
          "frozen_candidate_matches": [],
          "affected_exams": [
            "MB-310"
          ],
          "confidence": "confirmed first-party source with readable body; implementation unexecuted",
          "limits": "Selected workflow body, not linked pages unless separately recorded. Public official training/lab used for original synthesis, not republished instructions/code or a claim of execution."
        },
        {
          "key": "mb310-split",
          "url": "https://learn.microsoft.com/en-us/dynamics365/finance/fixed-assets/tasks/split-fixed-asset",
          "final_url": "https://learn.microsoft.com/en-us/dynamics365/finance/fixed-assets/tasks/split-fixed-asset",
          "status": 200,
          "title": "Split a fixed asset - Finance | Dynamics 365 | Microsoft Learn",
          "read_scope": "main article body, selected workflow sections; no assessment questions or paid content",
          "text_sha256": "73a2bd2ee7e52e2b7a9f12fdc3f7cd680ab64af22bad3a5069ed0abb7aef0f4e",
          "length": 2418,
          "source_catalog_matches": [],
          "frozen_candidate_matches": [],
          "affected_exams": [
            "MB-310"
          ],
          "confidence": "confirmed first-party source with readable body; implementation unexecuted",
          "limits": "Selected workflow body, not linked pages unless separately recorded. Public official training/lab used for original synthesis, not republished instructions/code or a claim of execution."
        },
        {
          "key": "mb310-budget-register",
          "url": "https://learn.microsoft.com/en-us/dynamics365/finance/budgeting/budget-register-entries",
          "final_url": "https://learn.microsoft.com/en-us/dynamics365/finance/budgeting/budget-register-entries",
          "status": 200,
          "title": "Create budget register entries - Finance | Dynamics 365 | Microsoft Learn",
          "read_scope": "main article body, selected workflow sections; no assessment questions or paid content",
          "text_sha256": "20838294fea77298665e33a09625256cf907c68eaaae027b57ef26301f6c7832",
          "length": 5604,
          "source_catalog_matches": [],
          "frozen_candidate_matches": [],
          "affected_exams": [
            "MB-310"
          ],
          "confidence": "confirmed first-party source with readable body; implementation unexecuted",
          "limits": "Selected workflow body, not linked pages unless separately recorded. Public official training/lab used for original synthesis, not republished instructions/code or a claim of execution."
        },
        {
          "key": "mb500-query",
          "url": "https://learn.microsoft.com/en-us/dynamics365/fin-ops-core/dev-itpro/dev-ref/xpp-library-objects",
          "final_url": "https://learn.microsoft.com/en-us/dynamics365/fin-ops-core/dev-itpro/dev-ref/xpp-library-objects",
          "status": 200,
          "title": "X++ class library - Finance & Operations | Dynamics 365 | Microsoft Learn",
          "read_scope": "main article body, selected workflow sections; no assessment questions or paid content",
          "text_sha256": "dd5c00aa4e871c875152ccdf9302e7550aecbf246258b7e1d6228aa2c52c103c",
          "length": 11754,
          "source_catalog_matches": [],
          "frozen_candidate_matches": [],
          "affected_exams": [
            "MB-500"
          ],
          "confidence": "confirmed first-party source with readable body; implementation unexecuted",
          "limits": "Selected workflow body, not linked pages unless separately recorded. Public official training/lab used for original synthesis, not republished instructions/code or a claim of execution."
        },
        {
          "key": "mb500-change",
          "url": "https://learn.microsoft.com/en-us/dynamics365/fin-ops-core/dev-itpro/data-entities/entity-change-track",
          "final_url": "https://learn.microsoft.com/en-us/dynamics365/fin-ops-core/dev-itpro/data-entities/entity-change-track",
          "status": 200,
          "title": "Enable SQL change tracking for data entities - Finance & Operations | Dynamics 365 | Microsoft Learn",
          "read_scope": "main article body, selected workflow sections; no assessment questions or paid content",
          "text_sha256": "e0d067c91589471e65c926cd73aba08e1507308186dc4d36ca3a556fd393ca46",
          "length": 5465,
          "source_catalog_matches": [],
          "frozen_candidate_matches": [],
          "affected_exams": [
            "MB-500"
          ],
          "confidence": "confirmed first-party source with readable body; implementation unexecuted",
          "limits": "Selected workflow body, not linked pages unless separately recorded. Public official training/lab used for original synthesis, not republished instructions/code or a claim of execution."
        },
        {
          "key": "mb500-rowversion",
          "url": "https://learn.microsoft.com/en-us/dynamics365/fin-ops-core/dev-itpro/data-entities/rowversion-change-track",
          "final_url": "https://learn.microsoft.com/en-us/dynamics365/fin-ops-core/dev-itpro/data-entities/rowversion-change-track",
          "status": 200,
          "title": "Row version change tracking for tables and data entities - Finance & Operations | Dynamics 365 | Microsoft Learn",
          "read_scope": "main article body, selected workflow sections; no assessment questions or paid content",
          "text_sha256": "387d72c3cf91b9c360cda051c82a1d6e518b71d12890c9f9373301c130bdbdba",
          "length": 11959,
          "source_catalog_matches": [],
          "frozen_candidate_matches": [],
          "affected_exams": [
            "MB-500"
          ],
          "confidence": "confirmed first-party source with readable body; implementation unexecuted",
          "limits": "Selected workflow body, not linked pages unless separately recorded. Public official training/lab used for original synthesis, not republished instructions/code or a claim of execution."
        },
        {
          "key": "mb500-keyvault",
          "url": "https://learn.microsoft.com/en-us/dynamics365/finance/localizations/global/setting-up-azure-key-vault-client",
          "final_url": "https://learn.microsoft.com/en-us/dynamics365/finance/localizations/global/setting-up-azure-key-vault-client",
          "status": 200,
          "title": "Set up the Azure Key Vault client - Finance | Dynamics 365 | Microsoft Learn",
          "read_scope": "main article body, selected workflow sections; no assessment questions or paid content",
          "text_sha256": "e88a284c13347587671ef871c8288892b352088ece79397643179be830ac2124",
          "length": 4076,
          "source_catalog_matches": [],
          "frozen_candidate_matches": [],
          "affected_exams": [
            "MB-500"
          ],
          "confidence": "confirmed first-party source with readable body; implementation unexecuted",
          "limits": "Selected workflow body, not linked pages unless separately recorded. Public official training/lab used for original synthesis, not republished instructions/code or a claim of execution."
        },
        {
          "key": "mb500-store",
          "url": "https://learn.microsoft.com/en-us/dynamics365/fin-ops-core/dev-itpro/analytics/power-bi-integration-entity-store",
          "final_url": "https://learn.microsoft.com/en-us/dynamics365/fin-ops-core/dev-itpro/analytics/power-bi-integration-entity-store",
          "status": 200,
          "title": "Power BI integration with Entity store - Finance & Operations | Dynamics 365 | Microsoft Learn",
          "read_scope": "main article body, selected workflow sections; no assessment questions or paid content",
          "text_sha256": "cb929a2b279a6ea7af9fe2e0911790d76b324209487f38e27bcc8848d2180fe8",
          "length": 6548,
          "source_catalog_matches": [],
          "frozen_candidate_matches": [],
          "affected_exams": [
            "MB-500"
          ],
          "confidence": "confirmed first-party source with readable body; implementation unexecuted",
          "limits": "Selected workflow body, not linked pages unless separately recorded. Public official training/lab used for original synthesis, not republished instructions/code or a claim of execution."
        },
        {
          "key": "mb800-log",
          "url": "https://learn.microsoft.com/en-us/dynamics365/business-central/across-log-changes",
          "final_url": "https://learn.microsoft.com/en-us/dynamics365/business-central/across-log-changes",
          "status": 200,
          "title": "Auditing changes - Business Central | Microsoft Learn",
          "read_scope": "main article body, selected workflow sections; no assessment questions or paid content",
          "text_sha256": "1368ac08687571db480c19de19189e7ba1305cbe38fadb316e0927210570180e",
          "length": 11242,
          "source_catalog_matches": [],
          "frozen_candidate_matches": [],
          "affected_exams": [
            "MB-800"
          ],
          "confidence": "confirmed first-party source with readable body; implementation unexecuted",
          "limits": "Selected workflow body, not linked pages unless separately recorded. Public official training/lab used for original synthesis, not republished instructions/code or a claim of execution."
        },
        {
          "key": "mb800-depreciation",
          "url": "https://learn.microsoft.com/en-us/dynamics365/business-central/fa-depreciation-methods",
          "final_url": "https://learn.microsoft.com/en-us/dynamics365/business-central/fa-depreciation-methods",
          "status": 200,
          "title": "Depreciation methods for fixed assets - Business Central | Microsoft Learn",
          "read_scope": "main article body, selected workflow sections; no assessment questions or paid content",
          "text_sha256": "e6b735f86fce772846276de4e598eb8c776f39ce1e1be7e328d6f66f5351db83",
          "length": 17128,
          "source_catalog_matches": [],
          "frozen_candidate_matches": [],
          "affected_exams": [
            "MB-800"
          ],
          "confidence": "confirmed first-party source with readable body; implementation unexecuted",
          "limits": "Selected workflow body, not linked pages unless separately recorded. Public official training/lab used for original synthesis, not republished instructions/code or a claim of execution."
        },
        {
          "key": "mb800-inventory-ops",
          "url": "https://learn.microsoft.com/en-us/dynamics365/business-central/inventory-how-count-adjust-reclassify",
          "final_url": "https://learn.microsoft.com/en-us/dynamics365/business-central/inventory-how-count-adjust-reclassify",
          "status": 200,
          "title": "Count, adjust, and reclassify inventory - Business Central | Microsoft Learn",
          "read_scope": "main article body, selected workflow sections; no assessment questions or paid content",
          "text_sha256": "9cf77575a05b2217e55c079b1d6da0de1c43516c206133949d5fe62dd4cf2382",
          "length": 16411,
          "source_catalog_matches": [],
          "frozen_candidate_matches": [],
          "affected_exams": [
            "MB-800"
          ],
          "confidence": "confirmed first-party source with readable body; implementation unexecuted",
          "limits": "Selected workflow body, not linked pages unless separately recorded. Public official training/lab used for original synthesis, not republished instructions/code or a claim of execution."
        },
        {
          "key": "mb800-transfer",
          "url": "https://learn.microsoft.com/en-us/dynamics365/business-central/inventory-how-transfer-between-locations",
          "final_url": "https://learn.microsoft.com/en-us/dynamics365/business-central/inventory-how-transfer-between-locations",
          "status": 200,
          "title": "Transfer items between locations - Business Central | Microsoft Learn",
          "read_scope": "main article body, selected workflow sections; no assessment questions or paid content",
          "text_sha256": "fa913a52be2ec34ef2465a7259eafba948d1a29d707260b2c709f81c7db17fb6",
          "length": 12387,
          "source_catalog_matches": [],
          "frozen_candidate_matches": [],
          "affected_exams": [
            "MB-800"
          ],
          "confidence": "confirmed first-party source with readable body; implementation unexecuted",
          "limits": "Selected workflow body, not linked pages unless separately recorded. Public official training/lab used for original synthesis, not republished instructions/code or a claim of execution."
        },
        {
          "key": "mb800-combine",
          "url": "https://learn.microsoft.com/en-us/dynamics365/business-central/sales-how-to-combine-shipments-on-a-single-invoice",
          "final_url": "https://learn.microsoft.com/en-us/dynamics365/business-central/sales-how-to-combine-shipments-on-a-single-invoice",
          "status": 200,
          "title": "How to combine shipments on a single invoice - Business Central | Microsoft Learn",
          "read_scope": "main article body, selected workflow sections; no assessment questions or paid content",
          "text_sha256": "a7def0d32595d3dbec2008593b43664cdc566875c6b2b0fe72eb7f1288d6aa3f",
          "length": 3849,
          "source_catalog_matches": [],
          "frozen_candidate_matches": [],
          "affected_exams": [
            "MB-800"
          ],
          "confidence": "confirmed first-party source with readable body; implementation unexecuted",
          "limits": "Selected workflow body, not linked pages unless separately recorded. Public official training/lab used for original synthesis, not republished instructions/code or a claim of execution."
        },
        {
          "key": "mb800-prepayment",
          "url": "https://learn.microsoft.com/en-us/dynamics365/business-central/finance-invoice-prepayments",
          "final_url": "https://learn.microsoft.com/en-us/dynamics365/business-central/finance-invoice-prepayments",
          "status": 200,
          "title": "Invoice prepayments - Business Central | Microsoft Learn",
          "read_scope": "main article body, selected workflow sections; no assessment questions or paid content",
          "text_sha256": "aa47fbe32c06b6ec0a3cd2997db599e6fbad200ba88c77bf908bddb79f461592",
          "length": 2636,
          "source_catalog_matches": [],
          "frozen_candidate_matches": [],
          "affected_exams": [
            "MB-800"
          ],
          "confidence": "confirmed first-party source with readable body; implementation unexecuted",
          "limits": "Selected workflow body, not linked pages unless separately recorded. Public official training/lab used for original synthesis, not republished instructions/code or a claim of execution."
        },
        {
          "key": "mb800-purchase-module",
          "url": "https://learn.microsoft.com/en-us/training/modules/create-purchase-documents-dynamics-365-business-central/",
          "final_url": "https://learn.microsoft.com/en-us/training/modules/create-purchase-documents-dynamics-365-business-central/",
          "status": 200,
          "title": "Create purchase documents in Dynamics 365 Business Central - Training | Microsoft Learn",
          "read_scope": "main article body, selected workflow sections; no assessment questions or paid content",
          "text_sha256": "e689f64a5d78e2c91faeba5612824c075cafa446f7be2a7c51781ef3ccb50edc",
          "length": 1656,
          "source_catalog_matches": [],
          "frozen_candidate_matches": [],
          "affected_exams": [],
          "confidence": "confirmed first-party source with readable body; implementation unexecuted",
          "limits": "Selected workflow body, not linked pages unless separately recorded. Public official training/lab used for original synthesis, not republished instructions/code or a claim of execution."
        },
        {
          "key": "mb230-translate",
          "url": "https://learn.microsoft.com/en-us/dynamics365/customer-service/use/translate-ka",
          "final_url": "https://learn.microsoft.com/en-us/dynamics365/customer-service/use/translate-ka",
          "status": 200,
          "title": "Translate knowledge articles | Microsoft Learn",
          "read_scope": "selected main article workflow sections",
          "length": 2683,
          "source_catalog_matches": [],
          "frozen_candidate_matches": [],
          "affected_exams": [
            "MB-230"
          ],
          "confidence": "confirmed first-party source with readable body; implementation unexecuted",
          "limits": "Selected workflow body, not linked pages unless separately recorded. Public official training/lab used for original synthesis, not republished instructions/code or a claim of execution."
        },
        {
          "key": "mb230-table-example",
          "url": "https://learn.microsoft.com/en-us/power-apps/maker/data-platform/create-custom-entity",
          "final_url": "https://learn.microsoft.com/en-us/power-apps/maker/data-platform/create-custom-entity",
          "status": 200,
          "title": "Create a custom table that has components with Power Apps - Power Apps | Microsoft Learn",
          "read_scope": "selected main article workflow sections",
          "length": 5796,
          "source_catalog_matches": [],
          "frozen_candidate_matches": [],
          "affected_exams": [
            "MB-230"
          ],
          "confidence": "confirmed first-party source with readable body; implementation unexecuted",
          "limits": "Selected workflow body, not linked pages unless separately recorded. Public official training/lab used for original synthesis, not republished instructions/code or a claim of execution."
        },
        {
          "key": "mb230-form",
          "url": "https://learn.microsoft.com/en-us/power-apps/maker/model-driven-apps/create-edit-main-forms",
          "final_url": "https://learn.microsoft.com/en-us/power-apps/maker/model-driven-apps/create-edit-main-forms",
          "status": 200,
          "title": "Create or edit model-driven app main forms in Power Apps - Power Apps | Microsoft Learn",
          "read_scope": "selected main article workflow sections",
          "length": 2497,
          "source_catalog_matches": [],
          "frozen_candidate_matches": [],
          "affected_exams": [
            "MB-230"
          ],
          "confidence": "confirmed first-party source with readable body; implementation unexecuted",
          "limits": "Selected workflow body, not linked pages unless separately recorded. Public official training/lab used for original synthesis, not republished instructions/code or a claim of execution."
        },
        {
          "key": "mb310-tax",
          "url": "https://learn.microsoft.com/en-us/dynamics365/finance/general-ledger/indirect-taxes-overview",
          "final_url": "https://learn.microsoft.com/en-us/dynamics365/finance/general-ledger/indirect-taxes-overview",
          "status": 200,
          "title": "Sales tax overview - Finance | Dynamics 365 | Microsoft Learn",
          "read_scope": "selected main article workflow sections",
          "length": 8738,
          "source_catalog_matches": [],
          "frozen_candidate_matches": [],
          "affected_exams": [
            "MB-310"
          ],
          "confidence": "confirmed first-party source with readable body; implementation unexecuted",
          "limits": "Selected workflow body, not linked pages unless separately recorded. Public official training/lab used for original synthesis, not republished instructions/code or a claim of execution."
        },
        {
          "key": "mb310-expenses",
          "url": "https://learn.microsoft.com/en-us/dynamics365/project-operations/expense/set-up-expense-categories",
          "final_url": "https://learn.microsoft.com/en-us/dynamics365/project-operations/expense/set-up-expense-categories",
          "status": 200,
          "title": "Set up expense categories | Microsoft Learn",
          "read_scope": "selected main article workflow sections",
          "length": 2733,
          "source_catalog_matches": [],
          "frozen_candidate_matches": [],
          "affected_exams": [
            "MB-310"
          ],
          "confidence": "confirmed first-party source with readable body; implementation unexecuted",
          "limits": "Selected workflow body, not linked pages unless separately recorded. Public official training/lab used for original synthesis, not republished instructions/code or a claim of execution."
        },
        {
          "key": "mb310-mileage",
          "url": "https://learn.microsoft.com/en-us/dynamics365/project-operations/expense/set-up-mileage",
          "final_url": "https://learn.microsoft.com/en-us/dynamics365/project-operations/expense/set-up-mileage",
          "status": 200,
          "title": "Set up mileage using mileage rate tiers | Microsoft Learn",
          "read_scope": "selected main article workflow sections",
          "length": 4780,
          "source_catalog_matches": [],
          "frozen_candidate_matches": [],
          "affected_exams": [
            "MB-310"
          ],
          "confidence": "confirmed first-party source with readable body; implementation unexecuted",
          "limits": "Selected workflow body, not linked pages unless separately recorded. Public official training/lab used for original synthesis, not republished instructions/code or a claim of execution."
        },
        {
          "key": "mb310-perdiem",
          "url": "https://learn.microsoft.com/en-us/dynamics365/project-operations/expense/mobile-app-manage-perdiem",
          "final_url": "https://learn.microsoft.com/en-us/dynamics365/project-operations/expense/mobile-app-manage-perdiem",
          "status": 200,
          "title": "Manage per diems by using the Expense management mobile app | Microsoft Learn",
          "read_scope": "selected main article workflow sections",
          "length": 6353,
          "source_catalog_matches": [],
          "frozen_candidate_matches": [],
          "affected_exams": [
            "MB-310"
          ],
          "confidence": "confirmed first-party source with readable body; implementation unexecuted",
          "limits": "Selected workflow body, not linked pages unless separately recorded. Public official training/lab used for original synthesis, not republished instructions/code or a claim of execution."
        },
        {
          "key": "mb500-xpp",
          "url": "https://learn.microsoft.com/en-us/dynamics365/fin-ops-core/dev-itpro/dev-ref/xpp-language-reference",
          "final_url": "https://learn.microsoft.com/en-us/dynamics365/fin-ops-core/dev-itpro/dev-ref/xpp-language-reference",
          "status": 200,
          "title": "X++ language reference - Finance & Operations | Dynamics 365 | Microsoft Learn",
          "read_scope": "selected main article workflow sections",
          "length": 3997,
          "source_catalog_matches": [],
          "frozen_candidate_matches": [],
          "affected_exams": [
            "MB-500"
          ],
          "confidence": "confirmed first-party source with readable body; implementation unexecuted",
          "limits": "Selected workflow body, not linked pages unless separately recorded. Public official training/lab used for original synthesis, not republished instructions/code or a claim of execution."
        },
        {
          "key": "mb500-attributes",
          "url": "https://learn.microsoft.com/en-us/dynamics365/fin-ops-core/dev-itpro/dev-ref/xpp-attribute-classes",
          "final_url": "https://learn.microsoft.com/en-us/dynamics365/fin-ops-core/dev-itpro/dev-ref/xpp-attribute-classes",
          "status": 200,
          "title": "X++ attribute classes - Finance & Operations | Dynamics 365 | Microsoft Learn",
          "read_scope": "selected main article workflow sections",
          "length": 7506,
          "source_catalog_matches": [],
          "frozen_candidate_matches": [],
          "affected_exams": [
            "MB-500"
          ],
          "confidence": "confirmed first-party source with readable body; implementation unexecuted",
          "limits": "Selected workflow body, not linked pages unless separately recorded. Public official training/lab used for original synthesis, not republished instructions/code or a claim of execution."
        },
        {
          "key": "mb500-global",
          "url": "https://learn.microsoft.com/en-us/dynamics365/fin-ops-core/dev-itpro/extensibility/class-extensions",
          "final_url": "https://learn.microsoft.com/en-us/dynamics365/fin-ops-core/dev-itpro/extensibility/class-extensions",
          "status": 200,
          "title": "Class extension model in X++ - Finance & Operations | Dynamics 365 | Microsoft Learn",
          "read_scope": "selected main article workflow sections",
          "length": 9812,
          "source_catalog_matches": [],
          "frozen_candidate_matches": [],
          "affected_exams": [
            "MB-500"
          ],
          "confidence": "confirmed first-party source with readable body; implementation unexecuted",
          "limits": "Selected workflow body, not linked pages unless separately recorded. Public official training/lab used for original synthesis, not republished instructions/code or a claim of execution."
        },
        {
          "key": "mb500-er",
          "url": "https://learn.microsoft.com/en-us/dynamics365/fin-ops-core/dev-itpro/analytics/er-overview-components",
          "final_url": "https://learn.microsoft.com/en-us/dynamics365/fin-ops-core/dev-itpro/analytics/er-overview-components",
          "status": 200,
          "title": "Electronic reporting components - Finance & Operations | Dynamics 365 | Microsoft Learn",
          "read_scope": "selected main article workflow sections",
          "length": 11477,
          "source_catalog_matches": [],
          "frozen_candidate_matches": [],
          "affected_exams": [
            "MB-500"
          ],
          "confidence": "confirmed first-party source with readable body; implementation unexecuted",
          "limits": "Selected workflow body, not linked pages unless separately recorded. Public official training/lab used for original synthesis, not republished instructions/code or a claim of execution."
        },
        {
          "key": "mb800-recurring-sales",
          "url": "https://learn.microsoft.com/en-us/dynamics365/business-central/sales-how-work-standard-lines",
          "final_url": "https://learn.microsoft.com/en-us/dynamics365/business-central/sales-how-work-standard-lines",
          "status": 200,
          "title": "Standard recurring sales lines - Business Central | Microsoft Learn",
          "read_scope": "selected main article workflow sections",
          "length": 5621,
          "source_catalog_matches": [],
          "frozen_candidate_matches": [],
          "affected_exams": [
            "MB-800"
          ],
          "confidence": "confirmed first-party source with readable body; implementation unexecuted",
          "limits": "Selected workflow body, not linked pages unless separately recorded. Public official training/lab used for original synthesis, not republished instructions/code or a claim of execution."
        },
        {
          "key": "mb800-blanket",
          "url": "https://learn.microsoft.com/en-us/dynamics365/business-central/sales-how-to-create-blanket-sales-orders",
          "final_url": "https://learn.microsoft.com/en-us/dynamics365/business-central/sales-how-to-create-blanket-sales-orders",
          "status": 200,
          "title": "Work with blanket sales orders or purchase orders - Business Central | Microsoft Learn",
          "read_scope": "selected main article workflow sections",
          "length": 7502,
          "source_catalog_matches": [],
          "frozen_candidate_matches": [],
          "affected_exams": [
            "MB-800"
          ],
          "confidence": "confirmed first-party source with readable body; implementation unexecuted",
          "limits": "Selected workflow body, not linked pages unless separately recorded. Public official training/lab used for original synthesis, not republished instructions/code or a claim of execution."
        },
        {
          "key": "mb800-depreciate",
          "url": "https://learn.microsoft.com/en-us/dynamics365/business-central/fa-how-depreciate-amortize",
          "final_url": "https://learn.microsoft.com/en-us/dynamics365/business-central/fa-how-depreciate-amortize",
          "status": 200,
          "title": "Depreciate or amortize FA - Business Central | Microsoft Learn",
          "read_scope": "selected main article workflow sections",
          "length": 8552,
          "source_catalog_matches": [],
          "frozen_candidate_matches": [],
          "affected_exams": [
            "MB-800"
          ],
          "confidence": "confirmed first-party source with readable body; implementation unexecuted",
          "limits": "Selected workflow body, not linked pages unless separately recorded. Public official training/lab used for original synthesis, not republished instructions/code or a claim of execution."
        },
        {
          "key": "mb500-ssrs",
          "url": "https://learn.microsoft.com/en-us/dynamics365/fin-ops-core/dev-itpro/analytics/expand-app-suite-report-data-sets",
          "final_url": "https://learn.microsoft.com/en-us/dynamics365/fin-ops-core/dev-itpro/analytics/expand-app-suite-report-data-sets",
          "status": 200,
          "title": "Expand Application Suite report data sets - Finance & Operations | Dynamics 365 | Microsoft Learn",
          "read_scope": "selected main article workflow body",
          "length": 8082,
          "source_catalog_matches": [],
          "frozen_candidate_matches": [],
          "affected_exams": [
            "MB-500"
          ],
          "confidence": "confirmed first-party source with readable body; implementation unexecuted",
          "limits": "Selected workflow body, not linked pages unless separately recorded. Public official training/lab used for original synthesis, not republished instructions/code or a claim of execution."
        },
        {
          "key": "mb500-issue",
          "url": "https://learn.microsoft.com/en-us/dynamics365/fin-ops-core/dev-itpro/lifecycle-services/issue-search-lcs",
          "final_url": "https://learn.microsoft.com/en-us/dynamics365/fin-ops-core/dev-itpro/lifecycle-services/issue-search-lcs",
          "status": 200,
          "title": "Issue search in Lifecycle Services - Finance & Operations | Dynamics 365 | Microsoft Learn",
          "read_scope": "selected main article workflow body",
          "length": 5295,
          "source_catalog_matches": [],
          "frozen_candidate_matches": [],
          "affected_exams": [
            "MB-500"
          ],
          "confidence": "confirmed first-party source with readable body; implementation unexecuted",
          "limits": "Selected workflow body, not linked pages unless separately recorded. Public official training/lab used for original synthesis, not republished instructions/code or a claim of execution."
        },
        {
          "key": "mb500-composite",
          "url": "https://learn.microsoft.com/en-us/dynamics365/fin-ops-core/dev-itpro/data-entities/develop-composite-data-entities",
          "final_url": "https://learn.microsoft.com/en-us/dynamics365/fin-ops-core/dev-itpro/data-entities/develop-composite-data-entities",
          "status": 200,
          "title": "Develop composite data entities - Finance & Operations | Dynamics 365 | Microsoft Learn",
          "read_scope": "selected main article workflow body",
          "length": 6865,
          "source_catalog_matches": [],
          "frozen_candidate_matches": [],
          "affected_exams": [
            "MB-500"
          ],
          "confidence": "confirmed first-party source with readable body; implementation unexecuted",
          "limits": "Selected workflow body, not linked pages unless separately recorded. Public official training/lab used for original synthesis, not republished instructions/code or a claim of execution."
        },
        {
          "key": "mb500-outbound",
          "url": "https://learn.microsoft.com/en-us/dynamics365/fin-ops-core/dev-itpro/data-entities/consume-external-web-service",
          "final_url": "https://learn.microsoft.com/en-us/dynamics365/fin-ops-core/dev-itpro/data-entities/consume-external-web-service",
          "status": 200,
          "title": "Consume external web services - Finance & Operations | Dynamics 365 | Microsoft Learn",
          "read_scope": "selected main article workflow body",
          "length": 2370,
          "source_catalog_matches": [],
          "frozen_candidate_matches": [],
          "affected_exams": [
            "MB-500"
          ],
          "confidence": "confirmed first-party source with readable body; implementation unexecuted",
          "limits": "Selected workflow body, not linked pages unless separately recorded. Public official training/lab used for original synthesis, not republished instructions/code or a claim of execution."
        },
        {
          "key": "mb500-integration",
          "url": "https://learn.microsoft.com/en-us/dynamics365/fin-ops-core/dev-itpro/data-entities/integration-overview",
          "final_url": "https://learn.microsoft.com/en-us/dynamics365/fin-ops-core/dev-itpro/data-entities/integration-overview",
          "status": 200,
          "title": "Integration between finance and operations apps and third-party services - Finance & Operations | Dynamics 365 | Microsoft Learn",
          "read_scope": "selected main article workflow body",
          "length": 12942,
          "source_catalog_matches": [],
          "frozen_candidate_matches": [],
          "affected_exams": [
            "MB-500"
          ],
          "confidence": "confirmed first-party source with readable body; implementation unexecuted",
          "limits": "Selected workflow body, not linked pages unless separately recorded. Public official training/lab used for original synthesis, not republished instructions/code or a claim of execution."
        },
        {
          "key": "mb800-combine-purchase",
          "url": "https://learn.microsoft.com/en-us/dynamics365/business-central/purchasing-how-to-combine-receipts",
          "final_url": "https://learn.microsoft.com/en-us/dynamics365/business-central/purchasing-how-to-combine-receipts",
          "status": 200,
          "title": "Combine Receipts or PO Lines on a Single Invoice - Business Central | Microsoft Learn",
          "read_scope": "selected main article workflow body",
          "length": 6095,
          "source_catalog_matches": [],
          "frozen_candidate_matches": [],
          "affected_exams": [
            "MB-800"
          ],
          "confidence": "confirmed first-party source with readable body; implementation unexecuted",
          "limits": "Selected workflow body, not linked pages unless separately recorded. Public official training/lab used for original synthesis, not republished instructions/code or a claim of execution."
        },
        {
          "key": "mb310-prepayment",
          "url": "https://learn.microsoft.com/en-us/dynamics365/finance/accounts-receivable/customer-prepayment-invoice",
          "final_url": "https://learn.microsoft.com/en-us/dynamics365/finance/accounts-receivable/customer-prepayment-invoice",
          "status": 200,
          "title": "Create customer prepayment invoices - Finance | Dynamics 365 | Microsoft Learn",
          "read_scope": "selected main article workflow body",
          "length": 12163,
          "source_catalog_matches": [],
          "frozen_candidate_matches": [],
          "affected_exams": [
            "MB-310"
          ],
          "confidence": "confirmed first-party source with readable body; implementation unexecuted",
          "limits": "Selected workflow body, not linked pages unless separately recorded. Public official training/lab used for original synthesis, not republished instructions/code or a claim of execution."
        },
        {
          "key": "mb500-async-migration",
          "url": "https://learn.microsoft.com/en-us/dynamics365/fin-ops-core/dev-itpro/migration-upgrade/deprecated-apis",
          "final_url": "https://learn.microsoft.com/en-us/dynamics365/fin-ops-core/dev-itpro/migration-upgrade/deprecated-apis",
          "status": 200,
          "title": "Deprecated APIs - Finance & Operations | Dynamics 365 | Microsoft Learn",
          "read_scope": "xApplication runAsync migration row",
          "length": 22026,
          "source_catalog_matches": [],
          "frozen_candidate_matches": [],
          "affected_exams": [
            "MB-500"
          ],
          "confidence": "confirmed first-party source with readable body; implementation unexecuted",
          "limits": "Selected workflow body, not linked pages unless separately recorded. Public official training/lab used for original synthesis, not republished instructions/code or a claim of execution."
        },
        {
          "key": "mb310-intercompany-expense",
          "url": "https://learn.microsoft.com/en-us/dynamics365/project-operations/prod-exp/intercompany-expense",
          "final_url": "https://learn.microsoft.com/en-us/dynamics365/project-operations/prod-exp/intercompany-expense",
          "status": 200,
          "title": "Intercompany expenses | Microsoft Learn",
          "read_scope": "main article setup and policy body",
          "length": 3636,
          "source_catalog_matches": [],
          "frozen_candidate_matches": [],
          "affected_exams": [
            "MB-310"
          ],
          "confidence": "confirmed first-party source with readable body; implementation unexecuted",
          "limits": "Selected workflow body, not linked pages unless separately recorded. Public official training/lab used for original synthesis, not republished instructions/code or a claim of execution."
        },
        {
          "key": "mb310-personal-expense",
          "url": "https://learn.microsoft.com/en-us/dynamics365/project-operations/expense/personal-expenses-expense-report",
          "final_url": "https://learn.microsoft.com/en-us/dynamics365/project-operations/expense/personal-expenses-expense-report",
          "status": 200,
          "title": "Work with personal expenses on an expense report | Microsoft Learn",
          "read_scope": "main article setup and policy body",
          "length": 2247,
          "source_catalog_matches": [],
          "frozen_candidate_matches": [],
          "affected_exams": [
            "MB-310"
          ],
          "confidence": "confirmed first-party source with readable body; implementation unexecuted",
          "limits": "Selected workflow body, not linked pages unless separately recorded. Public official training/lab used for original synthesis, not republished instructions/code or a claim of execution."
        }
      ],
      "proposed_changes": [
        {
          "packet_id": "exam-a-case-resolution",
          "exam_code": "MB-230",
          "guide_path": "guides/MB-230-microsoft-dynamics-365-customer-service-functional-consultant.md",
          "input_guide_content_sha256": "fc595c40de2aa905feb11a2e68914673f7443ab59204b5c7658c29f1b21daae2",
          "old_text": "### Secure records and shape the timeline",
          "replacement_markdown": "#### A resolution dialog is configuration plus permissions\n\nFor an original repair-code requirement, first select the customizable resolution dialog in Case Settings. Edit the **Case Resolution** form in Power Apps, add the required repair information, save and publish, then resolve a synthetic case as the representative. Test a custom role as well as the standard role: the environment-variable definition privileges differ between the configuring manager and the representative. If adding a new resolution choice, keep the numeric values aligned between Case status reason and Case Resolution resolution type. A label alone does not establish that relationship. Do not add Regarding to this dialog; Microsoft documents that as unsupported. See [resolution-dialog configuration](https://learn.microsoft.com/en-us/dynamics365/customer-service/administer/modify-case-resolution-dialog).\n\nEvidence should include the saved form, role assignment, displayed choices and resulting resolution record. An absent choice can be a value mismatch or publishing issue; a permission failure needs a role correction, not broader access to customer records.\n\n### Secure records and shape the timeline",
          "affected_objective_ids": [
            "1.1.2"
          ],
          "reason": "Close the initial detailed-objective mapping gaps with independently authored configuration/implementation reasoning, expected evidence and a negative case. These are proposed learner workflows; none were executed in a tenant.",
          "sources": [
            "https://learn.microsoft.com/en-us/dynamics365/customer-service/administer/modify-case-resolution-dialog"
          ],
          "confidence": "confirmed-source-backed design workflow; product execution unperformed"
        },
        {
          "packet_id": "exam-a-knowledge-workflow",
          "exam_code": "MB-230",
          "guide_path": "guides/MB-230-microsoft-dynamics-365-customer-service-functional-consultant.md",
          "input_guide_content_sha256": "fc595c40de2aa905feb11a2e68914673f7443ab59204b5c7658c29f1b21daae2",
          "old_text": "### Configure Teams collaboration",
          "replacement_markdown": "#### Enable a record type and maintain a translation\n\nIn the admin center's Knowledge settings, use **Record types** to enable the supported table and configure its side-pane knowledge-search experience; Case and Conversation are enabled by default. Configure article-table privileges separately. For a synthetic equipment-service record, verify that its context opens search, that the expected language/status filters work, and that the same user cannot gain unrelated record privileges through the search surface. See [knowledge setup](https://learn.microsoft.com/en-us/dynamics365/customer-service/administer/set-up-knowledge-management-embedded-knowledge-search).\n\nTo maintain a translated repair article, open the source article, choose Translate, select a supported language and a major/minor version, then supply the translated title, keywords, description and content. Review and publish deliberately; creating the translation is not publication. Use Related Translations on the article to find and maintain the language/version set. Test a source revision with an intentionally stale translation and assign a reviewer rather than assuming text is translated automatically. See [article translation workflow](https://learn.microsoft.com/en-us/dynamics365/customer-service/use/translate-ka).\n\n### Configure Teams collaboration",
          "affected_objective_ids": [
            "1.2.2",
            "1.2.3"
          ],
          "reason": "Close the initial detailed-objective mapping gaps with independently authored configuration/implementation reasoning, expected evidence and a negative case. These are proposed learner workflows; none were executed in a tenant.",
          "sources": [
            "https://learn.microsoft.com/en-us/dynamics365/customer-service/administer/set-up-knowledge-management-embedded-knowledge-search",
            "https://learn.microsoft.com/en-us/dynamics365/customer-service/use/translate-ka"
          ],
          "confidence": "confirmed-source-backed design workflow; product execution unperformed"
        },
        {
          "packet_id": "exam-a-teams-contacts",
          "exam_code": "MB-230",
          "guide_path": "guides/MB-230-microsoft-dynamics-365-customer-service-functional-consultant.md",
          "input_guide_content_sha256": "fc595c40de2aa905feb11a2e68914673f7443ab59204b5c7658c29f1b21daae2",
          "old_text": "### Configure Copilot and service agents",
          "replacement_markdown": "#### Work a suggested-contact rule\n\nFor a warranty case, suggest the customer's account manager through a relational rule. Enable connected Teams chat for the record type, enable rules-based suggestions, add the relationship path to the relevant user and order the rule before a general escalation rule. A custom rule instead needs an existing custom action with the documented input/output contract. Case supports both AI and rules-based suggestions; the latter follows configured relationships rather than inferring expertise from similar resolved cases. See [rules-based suggested-contact setup](https://learn.microsoft.com/en-us/dynamics365/customer-service/administer/configure-rules-based-suggested-contacts).\n\nTest an account with a manager, one with no manager and a manager who lacks record access. Compare the displayed suggestion with the rule path; a suggestion is neither availability nor authorization. Keep manual expert search as the recovery path. **VERIFY CURRENT:** enabled record types, suggestion availability and collaboration UI.\n\n### Configure Copilot and service agents",
          "affected_objective_ids": [
            "1.3.3"
          ],
          "reason": "Close the initial detailed-objective mapping gaps with independently authored configuration/implementation reasoning, expected evidence and a negative case. These are proposed learner workflows; none were executed in a tenant.",
          "sources": [
            "https://learn.microsoft.com/en-us/dynamics365/customer-service/administer/configure-rules-based-suggested-contacts"
          ],
          "confidence": "confirmed-source-backed design workflow; product execution unperformed"
        },
        {
          "packet_id": "exam-a-routing-inbox",
          "exam_code": "MB-230",
          "guide_path": "guides/MB-230-microsoft-dynamics-365-customer-service-functional-consultant.md",
          "input_guide_content_sha256": "fc595c40de2aa905feb11a2e68914673f7443ab59204b5c7658c29f1b21daae2",
          "old_text": "### Configure scripts, slugs and macros",
          "replacement_markdown": "#### Train a skill model before using its classification\n\nChoose representative text attributes and a labeled skill set, load the selected training records, review/correct labels and approve the dataset before training. The current setup requires at least 50 approved records and AI Builder availability with its documented preview-model prerequisite. Train and publish the model, test unseen examples and inspect confidence/metrics, then use the model in the supported machine-learning skill-classification rule. The downstream queue and representative still need matching skills, proficiency, presence and capacity. See [intelligent skill finder setup](https://learn.microsoft.com/en-us/dynamics365/customer-service/administer/set-up-isf-model).\n\nFor a paper example, separate “damaged enclosure” from “electrical fault” and include ambiguous text requiring manual classification. Keep a held-out set and record wrong/missing skills. The setup page limits model transport to environments of the same type; do not assume a trained test model can be imported directly into production. No training job was started here.\n\n### Configure scripts, slugs and macros",
          "affected_objective_ids": [
            "2.1.6"
          ],
          "reason": "Close the initial detailed-objective mapping gaps with independently authored configuration/implementation reasoning, expected evidence and a negative case. These are proposed learner workflows; none were executed in a tenant.",
          "sources": [
            "https://learn.microsoft.com/en-us/dynamics365/customer-service/administer/set-up-isf-model"
          ],
          "confidence": "confirmed-source-backed design workflow; product execution unperformed"
        },
        {
          "packet_id": "exam-a-inbox-view",
          "exam_code": "MB-230",
          "guide_path": "guides/MB-230-microsoft-dynamics-365-customer-service-functional-consultant.md",
          "input_guide_content_sha256": "fc595c40de2aa905feb11a2e68914673f7443ab59204b5c7658c29f1b21daae2",
          "old_text": "## 3. Extend Customer Service",
          "replacement_markdown": "#### Build one Inbox view for a persona\n\nEdit a custom experience profile, enable its Inbox and add a view named “My service follow-up.” Select the required Case and Email record types; choose the simple assigned-to-me settings or supported advanced conditions for each type, then set representative visibility and save. Sorting and card fields are additional configurations. Confirm the profile assignment with two representatives whose assigned cases differ. A visible view changes presentation; it does not authorize another user's cases. See [custom Inbox views](https://learn.microsoft.com/en-us/dynamics365/customer-service/administer/configure-inbox).\n\nTest a record that falls outside the condition and one reassigned during the session. Record refresh time before concluding that assignment failed. Voice items continue to open new sessions under the documented voice behavior. **VERIFY CURRENT:** record-type options and workspace UI.\n\n## 3. Extend Customer Service",
          "affected_objective_ids": [
            "2.3.3"
          ],
          "reason": "Close the initial detailed-objective mapping gaps with independently authored configuration/implementation reasoning, expected evidence and a negative case. These are proposed learner workflows; none were executed in a tenant.",
          "sources": [
            "https://learn.microsoft.com/en-us/dynamics365/customer-service/administer/configure-inbox"
          ],
          "confidence": "confirmed-source-backed design workflow; product execution unperformed"
        },
        {
          "packet_id": "exam-a-maker-notification",
          "exam_code": "MB-230",
          "guide_path": "guides/MB-230-microsoft-dynamics-365-customer-service-functional-consultant.md",
          "input_guide_content_sha256": "fc595c40de2aa905feb11a2e68914673f7443ab59204b5c7658c29f1b21daae2",
          "old_text": "### Close the loop with Customer Voice",
          "replacement_markdown": "#### Build an original repair-authorization extension\n\nCreate a solution-owned Repair Authorization table only if a separate authorization record is justified. Add a text reference, decision choice and expiry date; create a many-to-one Case lookup so one case can have several authorization records. Decide ownership and cascading before loading data. Configure an “Awaiting decision” view with decision/expiry conditions and useful case/reference columns. Add the fields and a related-record subgrid to the appropriate form, then save and publish. Test two authorizations against one case and an unauthorized reader. Microsoft's [table/column/relationship/view/form example](https://learn.microsoft.com/en-us/power-apps/maker/data-platform/create-custom-entity) explains these maker components; the [main-form procedure](https://learn.microsoft.com/en-us/power-apps/maker/model-driven-apps/create-edit-main-forms) separates form editing from publication. These are original service requirements, not a reproduction of that tutorial.\n\nInclude the required table pages/forms/views in the service app and publish the app; verify actual role-based access after deployment. In app settings, enable in-app notifications and publish. Use **SendAppNotification** from a supported API/flow path for the specific approver, with a case link and expiry. Notifications target individual users, so a team needs one notification per intended user. Test sender and recipient privileges, duplicate triggering and the denied case link. The Power Apps Notification connector's mobile push is a different mechanism. See [app settings](https://learn.microsoft.com/en-us/power-apps/maker/model-driven-apps/app-properties) and [in-app notification implementation](https://learn.microsoft.com/en-us/power-apps/developer/model-driven-apps/clientapi/send-in-app-notifications).\n\nFor search, select the supported searchable tables, include them in the app and configure the table's Quick Find find/view/filter columns according to the Dataverse-search rules. Publish, allow indexing and test a unique synthetic reference plus a denied record. A newly added form field is not automatically a searchable field. See [Dataverse-search configuration](https://learn.microsoft.com/en-us/power-platform/admin/configure-relevance-search-organization).\n\nCreate a **case-type email template** for a repair acknowledgment; choose organizational versus personal availability, supply subject/body and insert supported dynamic values with fallback text. Insert it into a case-related draft and test a missing customer name before sending anything. A global template has a different record-type scope; changing the template type later is not the intended maintenance route. See [email-template creation](https://learn.microsoft.com/en-us/power-platform/admin/create-templates-email). Keep solution dependencies and owner/approval evidence with the extension. **VERIFY CURRENT:** maker UI, notification privileges and indexing behavior. No app, notification or email was deployed or sent here.\n\n### Close the loop with Customer Voice",
          "affected_objective_ids": [
            "3.1.1",
            "3.1.2",
            "3.1.3",
            "3.1.4",
            "3.1.5",
            "3.1.6",
            "3.1.7",
            "3.1.8",
            "3.1.9"
          ],
          "reason": "Close the initial detailed-objective mapping gaps with independently authored configuration/implementation reasoning, expected evidence and a negative case. These are proposed learner workflows; none were executed in a tenant.",
          "sources": [
            "https://learn.microsoft.com/en-us/power-apps/maker/data-platform/create-custom-entity",
            "https://learn.microsoft.com/en-us/power-apps/maker/model-driven-apps/create-edit-main-forms",
            "https://learn.microsoft.com/en-us/power-apps/maker/model-driven-apps/app-properties",
            "https://learn.microsoft.com/en-us/power-apps/developer/model-driven-apps/clientapi/send-in-app-notifications",
            "https://learn.microsoft.com/en-us/power-platform/admin/configure-relevance-search-organization",
            "https://learn.microsoft.com/en-us/power-platform/admin/create-templates-email"
          ],
          "confidence": "confirmed-source-backed design workflow; product execution unperformed"
        },
        {
          "packet_id": "exam-a-alias",
          "exam_code": "MB-310",
          "guide_path": "guides/MB-310-microsoft-dynamics-365-finance-functional-consultant.md",
          "input_guide_content_sha256": "ecba021e209cf66f5221a50c341c490f30dd92ab8579ff4d95b61216ddb47f48",
          "old_text": "### Configure ledgers, fiscal time and currency",
          "replacement_markdown": "#### Turn a shortcut into a controlled account combination\n\nFor a synthetic maintenance expense, define an alias against the correct account structure and company, specify its main-account/dimension combination and choose which dimension receives initial focus. Enter the alias in a test journal and inspect the expanded segments before validating. An alias accelerates entry; it does not bypass account-structure rules or establish a user's posting permission. Compare this with a main-account category used for reporting and a balance expectation used for validation. See [ledger-account alias setup](https://learn.microsoft.com/en-us/dynamics365/finance/general-ledger/tasks/set-up-ledger-account-alias). Change one dimension to an invalid value and retain the expected rejection as evidence.\n\n### Configure ledgers, fiscal time and currency",
          "affected_objective_ids": [
            "1.1.3"
          ],
          "reason": "Close the initial detailed-objective mapping gaps with independently authored configuration/implementation reasoning, expected evidence and a negative case. These are proposed learner workflows; none were executed in a tenant.",
          "sources": [
            "https://learn.microsoft.com/en-us/dynamics365/finance/general-ledger/tasks/set-up-ledger-account-alias"
          ],
          "confidence": "confirmed-source-backed design workflow; product execution unperformed"
        },
        {
          "packet_id": "exam-a-periodic-excel",
          "exam_code": "MB-310",
          "guide_path": "guides/MB-310-microsoft-dynamics-365-finance-functional-consultant.md",
          "input_guide_content_sha256": "ecba021e209cf66f5221a50c341c490f30dd92ab8579ff4d95b61216ddb47f48",
          "old_text": "### Manage cash, banks and payments",
          "replacement_markdown": "#### Retrieve a recurring entry, then validate the actual journal\n\nFor a monthly 600 expense, create a periodic-journal line with account/offset/dimensions, next date, a one-month interval and the correct last retrieval date. Retrieve it into a general journal using a deliberate cutoff; inspect how many occurrences were generated before approving/posting. A cutoff spanning several due dates can create the line several times. Retain the periodic definition and the generated journal/voucher separately. See [periodic-journal retrieval](https://learn.microsoft.com/en-us/dynamics365/finance/general-ledger/tasks/post-periodic-journals).\n\nFor an Excel journal template, choose an entity/template supporting the account types, retain journal/company keys and mandatory fields, then add the needed dimensions through the supported entity/designer configuration. Refresh the journal context, enter synthetic lines, publish and inspect validation errors in Finance before posting. Publishing is not posting. A custom workbook's presence on disk does not make it a journal-menu template: promotion has a registration/resource path and journal-type/account-type filtering. See [journal template support](https://learn.microsoft.com/en-us/dynamics365/finance/general-ledger/open-lines-excel-journals-documents) and [custom template promotion](https://learn.microsoft.com/en-us/dynamics365/fin-ops-core/dev-itpro/user-interface/add-templates-open-lines-excel-menu). Test an unsupported offset type and an invalid dimension rather than weakening validation. Developer registration is implementation context; the functional objective is to create/modify a usable, correctly bound template.\n\n### Manage cash, banks and payments",
          "affected_objective_ids": [
            "1.3.3",
            "1.3.5"
          ],
          "reason": "Close the initial detailed-objective mapping gaps with independently authored configuration/implementation reasoning, expected evidence and a negative case. These are proposed learner workflows; none were executed in a tenant.",
          "sources": [
            "https://learn.microsoft.com/en-us/dynamics365/finance/general-ledger/tasks/post-periodic-journals",
            "https://learn.microsoft.com/en-us/dynamics365/finance/general-ledger/open-lines-excel-journals-documents",
            "https://learn.microsoft.com/en-us/dynamics365/fin-ops-core/dev-itpro/user-interface/add-templates-open-lines-excel-menu"
          ],
          "confidence": "confirmed-source-backed design workflow; product execution unperformed"
        },
        {
          "packet_id": "exam-a-forecast-shared",
          "exam_code": "MB-310",
          "guide_path": "guides/MB-310-microsoft-dynamics-365-finance-functional-consultant.md",
          "input_guide_content_sha256": "ecba021e209cf66f5221a50c341c490f30dd92ab8579ff4d95b61216ddb47f48",
          "old_text": "### Perform close, consolidation and tax work",
          "replacement_markdown": "#### Schedule forecast data and configure cross-company settlement\n\nFor forecasting, identify liquidity accounts first, then select source areas and timing assumptions on Cash flow forecast setup. Calculate a baseline and inspect its last-run date. If using cash-flow process automation, resolve competing legacy batch schedules, create the supported schedule **for each company**, and inspect pending/completed runs. Refresh the relevant analytical measurement as required; a calculation timestamp and report timestamp can differ. Test an omitted bank account and an unpaid invoice with an unrealistic expected date. See [cash-flow setup and automation](https://learn.microsoft.com/en-us/dynamics365/finance/cash-bank-management/cash-flow-forecasting).\n\nFor shared payments, configure a hierarchy with purpose **Centralized payments**, intercompany due-to/due-from accounts and the chosen company treatment for discounts/realized currency differences. Corresponding customer/vendor accounts need the same address-book identity; payment-method and posting-profile **IDs** must match across the involved entities, although their account settings can differ. Any included entity can pay for another; this is not restricted to a parent paying children. See [centralized-payment setup](https://learn.microsoft.com/en-us/dynamics365/finance/cash-bank-management/set-up-centralized-payments). In an original test, pay a 900 invoice in company B from company A, then reconcile B's settled liability, A's cash and reciprocal balances. Test a missing party mapping and a mismatched payment-method ID before generating a bank file.\n\n### Perform close, consolidation and tax work",
          "affected_objective_ids": [
            "1.4.4",
            "1.4.7"
          ],
          "reason": "Close the initial detailed-objective mapping gaps with independently authored configuration/implementation reasoning, expected evidence and a negative case. These are proposed learner workflows; none were executed in a tenant.",
          "sources": [
            "https://learn.microsoft.com/en-us/dynamics365/finance/cash-bank-management/cash-flow-forecasting",
            "https://learn.microsoft.com/en-us/dynamics365/finance/cash-bank-management/set-up-centralized-payments"
          ],
          "confidence": "confirmed-source-backed design workflow; product execution unperformed"
        },
        {
          "packet_id": "exam-a-consolidation-tax",
          "exam_code": "MB-310",
          "guide_path": "guides/MB-310-microsoft-dynamics-365-finance-functional-consultant.md",
          "input_guide_content_sha256": "ecba021e209cf66f5221a50c341c490f30dd92ab8579ff4d95b61216ddb47f48",
          "old_text": "## 2. Implement receivables, credit, collections, and subscription billing",
          "replacement_markdown": "#### Configure the consolidation company before running it\n\nCreate the target legal entity with the financial-consolidation designation, configure its chart, fiscal calendar, accounting/reporting currencies, rate type and exchange rates, then prepare subsidiary account mapping. Choose an elimination company/control design deliberately. A consolidation entity is not a daily operational company. In a synthetic two-subsidiary run, record source dates, account mapping, translation accounts and consolidation history; reconcile source balances before eliminating reciprocals. See [consolidation-company preparation](https://learn.microsoft.com/en-us/dynamics365/finance/general-ledger/prepare-company-for-consolidation). **VERIFY CURRENT:** Consolidate online template and preview behavior; a source balance change requires a deliberate rerun/review, not an unexplained plug.\n\n#### Work a tax intersection through settlement\n\nSet up tax main accounts/posting group, authority and settlement period before linking a code to the period and posting group. Put the appropriate codes in the party sales-tax group and item sales-tax group, then test their intersection on a document. For an invented exclusive-price line of 800, a common 5% code produces 40; an additional code present in only one group does not apply merely because it exists. Review the transaction's calculated tax and any supported documented adjustment, including the configured exemption treatment. See [sales-tax components and calculation](https://learn.microsoft.com/en-us/dynamics365/finance/general-ledger/indirect-taxes-overview).\n\nFor settlement, select the settlement period/date interval and correct original/correction processing, review the calculated liability, then run Settle and post sales tax and reconcile the clearing/settlement account. A later tax payment is a separate cash transaction. Test a late invoice after the original settlement and use the documented correction process rather than settling the original interval twice. See [sales-tax settlement procedure](https://learn.microsoft.com/en-us/dynamics365/finance/general-ledger/tasks/create-sales-tax-payment).\n\nWithholding has its own setup. For the **global withholding** mechanism, configure authority, settlement period, ledger posting group/accounts, codes, party groups and item withholding groups before testing the applicable threshold and transaction. Do not assume ordinary vendor-payment withholding and global/localized withholding share every field or calculation trigger. See [global-withholding setup](https://learn.microsoft.com/en-us/dynamics365/finance/general-ledger/set-up-global-withholding-tax). For an original paper test, an explicitly applicable 2% withholding on a 1,000 base gives 20 withheld and 980 paid; confirm the actual jurisdiction, taxable base, recognition event and payable/withholding vouchers in an authorized sandbox. This arithmetic does not establish a real tax rate or policy. **VERIFY CURRENT:** localization, tax-engine selection, account requirements, rounding and feature state.\n\n## 2. Implement receivables, credit, collections, and subscription billing",
          "affected_objective_ids": [
            "1.5.4",
            "1.6.1",
            "1.6.2",
            "1.6.3",
            "1.6.4",
            "1.6.5"
          ],
          "reason": "Close the initial detailed-objective mapping gaps with independently authored configuration/implementation reasoning, expected evidence and a negative case. These are proposed learner workflows; none were executed in a tenant.",
          "sources": [
            "https://learn.microsoft.com/en-us/dynamics365/finance/general-ledger/prepare-company-for-consolidation",
            "https://learn.microsoft.com/en-us/dynamics365/finance/general-ledger/indirect-taxes-overview",
            "https://learn.microsoft.com/en-us/dynamics365/finance/general-ledger/tasks/create-sales-tax-payment",
            "https://learn.microsoft.com/en-us/dynamics365/finance/general-ledger/set-up-global-withholding-tax"
          ],
          "confidence": "confirmed-source-backed design workflow; product execution unperformed"
        },
        {
          "packet_id": "exam-a-receivable-collection",
          "exam_code": "MB-310",
          "guide_path": "guides/MB-310-microsoft-dynamics-365-finance-functional-consultant.md",
          "input_guide_content_sha256": "ecba021e209cf66f5221a50c341c490f30dd92ab8579ff4d95b61216ddb47f48",
          "old_text": "### Configure subscription billing and deferrals",
          "replacement_markdown": "#### Generate recurring invoices and process collection evidence\n\nCreate a free-text invoice template containing the service/revenue account, amount, tax/charges, terms and dimensions; assign it to the customer with start/end, frequency and any maximum amount. Generate for a chosen invoice date, inspect the recurrence ID and individual documents, submit workflow when required, validate and post. A generated recurrence group is not a posted receivable. Test a customer with two schedules and a failed document; reconcile already-posted members before regenerating. See [recurring free-text invoice setup](https://learn.microsoft.com/en-us/dynamics365/finance/accounts-receivable/set-up-process-recurring-invoices).\n\nFor a prepayment scenario, configure the prepayment posting account/feature and applicable parameters, create/confirm the proposal and post the deposit invoice, then settle it through the customer payment journal. Select the received prepayment for application to the final sales invoice and verify synchronous settlement or successful background application under the configured option. For a 5,000 sale with an agreed 1,000 deposit, reconcile a 4,000 remaining receivable, then test reversal/credit. See [customer prepayment setup and application](https://learn.microsoft.com/en-us/dynamics365/finance/accounts-receivable/customer-prepayment-invoice). **VERIFY CURRENT:** line-level versus header-level prepayment and settlement feature/parameter state. A payment journal marked as a prepayment is not automatically the same contract as a sales-order prepayment invoice.\n\nBilling classification has public-sector applicability: create the classification with terms, associate existing billing codes and explicitly decide interest/collection-letter settings; the documented defaults suppress those activities for that classification. Apply it to an appropriate free-text invoice and verify grouping and due date. See [billing classification setup](https://learn.microsoft.com/en-us/dynamics365/finance/public-sector/tasks/create-billing-classification-public-sector). Do not treat it as a universal customer-payment category.\n\nFor letters, assign the collection sequence and permission on the customer posting profile, generate the selected transaction/date/customer population, review the created letter, then print/post under the intended process. Customer-level versus transaction-level handling changes how letters group and advance. See [collection-letter processing](https://learn.microsoft.com/en-us/dynamics365/finance/accounts-receivable/tasks/process-collection-letters). For interest, assign the interest code to the applicable posting profile, select the calculation population/date range, review created notes and post with the intended per-transaction versus grouped posting behavior. See [interest-note processing](https://learn.microsoft.com/en-us/dynamics365/finance/accounts-receivable/tasks/process-interest). In both cases, test a payment or credit arriving before posting; stale selection must not produce an unjustified demand. Retain source open items, calculation parameters, note/letter ID and voucher.\n\n### Configure subscription billing and deferrals",
          "affected_objective_ids": [
            "2.1.2",
            "2.1.3",
            "2.1.9",
            "2.2.4",
            "2.2.8"
          ],
          "reason": "Close the initial detailed-objective mapping gaps with independently authored configuration/implementation reasoning, expected evidence and a negative case. These are proposed learner workflows; none were executed in a tenant.",
          "sources": [
            "https://learn.microsoft.com/en-us/dynamics365/finance/accounts-receivable/set-up-process-recurring-invoices",
            "https://learn.microsoft.com/en-us/dynamics365/finance/accounts-receivable/customer-prepayment-invoice",
            "https://learn.microsoft.com/en-us/dynamics365/finance/public-sector/tasks/create-billing-classification-public-sector",
            "https://learn.microsoft.com/en-us/dynamics365/finance/accounts-receivable/tasks/process-collection-letters",
            "https://learn.microsoft.com/en-us/dynamics365/finance/accounts-receivable/tasks/process-interest"
          ],
          "confidence": "confirmed-source-backed design workflow; product execution unperformed"
        },
        {
          "packet_id": "exam-a-payables-expenses",
          "exam_code": "MB-310",
          "guide_path": "guides/MB-310-microsoft-dynamics-365-finance-functional-consultant.md",
          "input_guide_content_sha256": "ecba021e209cf66f5221a50c341c490f30dd92ab8579ff4d95b61216ddb47f48",
          "old_text": "## 4. Implement budgeting",
          "replacement_markdown": "#### Build recurring payables and an expense-control worksheet\n\nWith the recurring-invoice feature enabled, save a suitable pending vendor invoice as a template, including distributions, tax, charges and dimensions. Assign it to the vendor with dates/frequency/limits, generate the selected recurrence and inspect each pending invoice. Submit workflow before posting when required. A recurrence ID groups generated documents; it does not prove all posted. See [recurring vendor invoice workflow](https://learn.microsoft.com/en-us/dynamics365/finance/accounts-payable/recurring-invoice). For a monthly 250 maintenance service, test an intentionally changed vendor tax/default account and a failed invoice before allowing the next run.\n\nExpense categories require a shared category, expense type, default payment method, main account, item-tax group and any itemization/subcategory decisions. Configure those first, then create an original report containing mileage, a location/date-based per diem, a personal portion and an intercompany line. See [expense-category setup](https://learn.microsoft.com/en-us/dynamics365/project-operations/expense/set-up-expense-categories).\n\nFor mileage, configure the rate/tiers and test quantities immediately below/at/above a tier boundary and the fiscal-versus-calendar accumulation setting. For per diem, confirm the intended interface/feature, travel dates/location and included-meal reduction method before calculating. See [mileage tier configuration](https://learn.microsoft.com/en-us/dynamics365/project-operations/expense/set-up-mileage) and [per-diem entry prerequisites](https://learn.microsoft.com/en-us/dynamics365/project-operations/expense/mobile-app-manage-perdiem). An invented 80-distance-unit trip at a single 0.50 rate is 40, but it is not a published reimbursement rate.\n\nEnable **Allow intercompany expense lines** before entering a line for work performed for a borrowing company. Configure project-intercompany default categories where applicable, and explicitly select the supported source/destination tax treatment before reconciling both entities. See [intercompany expense configuration](https://learn.microsoft.com/en-us/dynamics365/project-operations/prod-exp/intercompany-expense). For corporate-card personal spend, select Paid by employee or Paid by company in Expense management parameters: the latter pays the card bill and debits the worker account. A 100 card line split into 75 business and 25 personal must preserve that 25 recovery/employee obligation under the chosen method. See [personal expense treatment](https://learn.microsoft.com/en-us/dynamics365/project-operations/expense/personal-expenses-expense-report). These references are under Project Operations Integrated with ERP; verify the Finance-integrated deployment rather than using older Project Service instructions. **VERIFY CURRENT:** deployment, feature state, currency, policy and statutory requirements. No expense report was submitted here.\n\n## 4. Implement budgeting",
          "affected_objective_ids": [
            "3.1.9",
            "3.2.1"
          ],
          "reason": "Close the initial detailed-objective mapping gaps with independently authored configuration/implementation reasoning, expected evidence and a negative case. These are proposed learner workflows; none were executed in a tenant.",
          "sources": [
            "https://learn.microsoft.com/en-us/dynamics365/finance/accounts-payable/recurring-invoice",
            "https://learn.microsoft.com/en-us/dynamics365/project-operations/expense/set-up-expense-categories",
            "https://learn.microsoft.com/en-us/dynamics365/project-operations/expense/set-up-mileage",
            "https://learn.microsoft.com/en-us/dynamics365/project-operations/expense/mobile-app-manage-perdiem",
            "https://learn.microsoft.com/en-us/dynamics365/project-operations/prod-exp/intercompany-expense",
            "https://learn.microsoft.com/en-us/dynamics365/project-operations/expense/personal-expenses-expense-report"
          ],
          "confidence": "confirmed-source-backed design workflow; product execution unperformed"
        },
        {
          "packet_id": "exam-a-budget-register",
          "exam_code": "MB-310",
          "guide_path": "guides/MB-310-microsoft-dynamics-365-finance-functional-consultant.md",
          "input_guide_content_sha256": "ecba021e209cf66f5221a50c341c490f30dd92ab8579ff4d95b61216ddb47f48",
          "old_text": "## 5. Manage fixed assets",
          "replacement_markdown": "#### A budget entry becomes usable through its lifecycle\n\nPrepare Budgeting dimensions, model, code, number sequence and rates; attach any workflow to the code and configure budget control before loading its starting amounts. Create the register header with model/code and lines with date, account structure, dimension values, amount/type and currency. Submit/complete the required workflow and **Update budget balances**; a saved draft does not establish available budget. See [budget-register entry lifecycle](https://learn.microsoft.com/en-us/dynamics365/finance/budgeting/budget-register-entries).\n\nFor an original transfer, move 1,200 from department A to B with a Transfer budget code: A −1,200, B +1,200. Confirm both dimensions and dates, workflow and transfer rules, then reconcile model totals and budget-versus-actual at the same grain. Allocation creates reversal and destination entries; inspect them before updating balances. An overall zero transfer can still be wrong when it moves money from an unauthorized source.\n\n## 5. Manage fixed assets",
          "affected_objective_ids": [
            "4.1.2"
          ],
          "reason": "Close the initial detailed-objective mapping gaps with independently authored configuration/implementation reasoning, expected evidence and a negative case. These are proposed learner workflows; none were executed in a tenant.",
          "sources": [
            "https://learn.microsoft.com/en-us/dynamics365/finance/budgeting/budget-register-entries"
          ],
          "confidence": "confirmed-source-backed design workflow; product execution unperformed"
        },
        {
          "packet_id": "exam-a-asset-budget-split",
          "exam_code": "MB-310",
          "guide_path": "guides/MB-310-microsoft-dynamics-365-finance-functional-consultant.md",
          "input_guide_content_sha256": "ecba021e209cf66f5221a50c341c490f30dd92ab8579ff4d95b61216ddb47f48",
          "old_text": "## Integrated scenarios",
          "replacement_markdown": "#### Keep asset budgets and actual asset value separate\n\nCreate a **Fixed asset budget journal** with the appropriate journal name/model, transaction type, date, asset/book and amount. Inspect the posting-profile defaults. Choose asset-budget-only transfer or asset-and-ledger-budget transfer according to the requirement, and reconcile the destination budget entries. The Delete existing entries option replaces existing budget records; inspect scope and retain a before/after export before using it. See [asset budgeting workflow](https://learn.microsoft.com/en-us/training/modules/manage-fixed-assets-finance/asset-budgeting). A 30,000 planned acquisition must remain a budget until an actual acquisition is posted; transferring it to budgeting does not create a supplier liability or depreciable asset balance.\n\nFor a split, create the destination asset/book, invoke the source book's split function with date, percentage and journal, then review/post the generated adjustments. A 25% split of an assumed 20,000 acquisition basis moves 5,000 to the new asset and leaves 15,000 on the original under this simple model; reconcile associated history and accumulated depreciation under the actual book rules. See [asset split and journal review](https://learn.microsoft.com/en-us/dynamics365/finance/fixed-assets/tasks/split-fixed-asset). A department transfer changes the supported ownership/dimension context; reclassification changes group/classification and can affect accounts/defaults. Neither should be substituted for a split merely to move a percentage of value. Test book status, dates and voucher rules before posting. **VERIFY CURRENT:** cross-company split/transfer is a separate preview capability with additional mappings and must not be assumed from the ordinary within-company example.\n\n## Integrated scenarios",
          "affected_objective_ids": [
            "5.2.3",
            "5.2.5"
          ],
          "reason": "Close the initial detailed-objective mapping gaps with independently authored configuration/implementation reasoning, expected evidence and a negative case. These are proposed learner workflows; none were executed in a tenant.",
          "sources": [
            "https://learn.microsoft.com/en-us/training/modules/manage-fixed-assets-finance/asset-budgeting",
            "https://learn.microsoft.com/en-us/dynamics365/finance/fixed-assets/tasks/split-fixed-asset"
          ],
          "confidence": "confirmed-source-backed design workflow; product execution unperformed"
        },
        {
          "packet_id": "exam-a-issue-search",
          "exam_code": "MB-500",
          "guide_path": "guides/MB-500-microsoft-dynamics-365-finance-operations-apps-developer.md",
          "input_guide_content_sha256": "823c2995491919379df843836a8675e38691f6933484515be1abc50365248d80",
          "old_text": "## 2. Apply developer tools",
          "replacement_markdown": "### Search an issue with a reproducible context\n\nRecord application/platform version, environment type, failing operation, exact public error and minimal synthetic reproduction before opening Issue Search. Compare the returned issue's affected versions, status, KB/workaround and prerequisites; a matching phrase is only a lead. For an original package-deployment failure, inspect the failed step's logs, identify a dependency/customization versus servicing problem, and validate the proposed repair in the sandbox before rebuilding/promoting the package. See [Issue Search support workflow](https://learn.microsoft.com/en-us/dynamics365/fin-ops-core/dev-itpro/lifecycle-services/issue-search-lcs). Keep the issue identifier, source, applied change and regression evidence; do not publish credentials or customer attachments. **VERIFY CURRENT:** portal ownership and support entitlement.\n\n## 2. Apply developer tools",
          "affected_objective_ids": [
            "1.2.2"
          ],
          "reason": "Close the initial detailed-objective mapping gaps with independently authored configuration/implementation reasoning, expected evidence and a negative case. These are proposed learner workflows; none were executed in a tenant.",
          "sources": [
            "https://learn.microsoft.com/en-us/dynamics365/fin-ops-core/dev-itpro/lifecycle-services/issue-search-lcs"
          ],
          "confidence": "confirmed-source-backed design workflow; product execution unperformed"
        },
        {
          "packet_id": "exam-a-map-model",
          "exam_code": "MB-500",
          "guide_path": "guides/MB-500-microsoft-dynamics-365-finance-operations-apps-developer.md",
          "input_guide_content_sha256": "823c2995491919379df843836a8675e38691f6933484515be1abc50365248d80",
          "old_text": "### Classes and extensibility",
          "replacement_markdown": "#### Model one common field without merging table identities\n\nFor an original pair of custom import staging tables, define a map field ExternalReference. Map InboundOrder.ExternalOrderRef and InboundReturn.SourceRef to that common field, after confirming compatible types and semantics. Keep each table's keys, company scope and validation distinct; the shared shape does not create a database copy or security union. Shared logic can now inspect ExternalReference without assuming that both tables physically use the same field name. Test a missing reference and a row from each source table. Contrast a **map** with a query joining data sources and a view exposing a read shape. The [X++ class-library reference](https://learn.microsoft.com/en-us/dynamics365/fin-ops-core/dev-itpro/dev-ref/xpp-library-objects) describes table/map/view buffers and query-object responsibilities. Build and inspect the actual effective metadata in the developer environment before treating the model as runnable.\n\n### Classes and extensibility",
          "affected_objective_ids": [
            "3.2.2"
          ],
          "reason": "Close the initial detailed-objective mapping gaps with independently authored configuration/implementation reasoning, expected evidence and a negative case. These are proposed learner workflows; none were executed in a tenant.",
          "sources": [
            "https://learn.microsoft.com/en-us/dynamics365/fin-ops-core/dev-itpro/dev-ref/xpp-library-objects"
          ],
          "confidence": "confirmed-source-backed design workflow; product execution unperformed"
        },
        {
          "packet_id": "exam-a-xpp-workflow",
          "exam_code": "MB-500",
          "guide_path": "guides/MB-500-microsoft-dynamics-365-finance-operations-apps-developer.md",
          "input_guide_content_sha256": "823c2995491919379df843836a8675e38691f6933484515be1abc50365248d80",
          "old_text": "### Transaction and retry failures to rehearse",
          "replacement_markdown": "### Build three small X++ contracts\n\nFor control flow, this original proposed static class method accepts synthetic nonnegative amounts, loops over the container and rejects a negative input before returning the total. It performs no database write and has not been compiled:\n\n```xpp\npublic static real nonnegativeTotal(container _amounts)\n{\n    real total = 0;\n    for (int i = 1; i <= conLen(_amounts); i++)\n    {\n        real amount = conPeek(_amounts, i);\n        if (amount < 0)\n        {\n            throw Exception::Error;\n        }\n        total += amount;\n    }\n    return total;\n}\n```\n\nExpected cases are an empty container → 0, `[10, 0, 5]` → 15 and a negative value → an error path. Validate input types and add an appropriate label-based diagnostic before real use. Choose a class method for domain-specific behavior; a public static extension method on **Global** becomes available as an unprefixed language function, so use that broad surface only for a suitably general helper. See [X++ language reference](https://learn.microsoft.com/en-us/dynamics365/fin-ops-core/dev-itpro/dev-ref/xpp-language-reference) and [Global extension behavior](https://learn.microsoft.com/en-us/dynamics365/fin-ops-core/dev-itpro/extensibility/class-extensions).\n\nFor a dynamic customer query, create a Query, add the customer data source, add the intended field range with a typed/query-value representation, select required fields, then execute through QueryRun and read its current buffer while iterating. A child data source represents a join; a peer source does not automatically mean that join. Test an empty match and cross-company leakage, and inspect the generated shape before optimizing it. See [query-object model](https://learn.microsoft.com/en-us/dynamics365/fin-ops-core/dev-itpro/dev-ref/xpp-library-objects).\n\nFor an attribute, create a nonabstract class derived from SysAttribute, store a literal policy identifier through its constructor and expose a getter. Decorate the intended class/method, then retrieve that metadata with DictClass/DictMethod as applicable. The compiler stores the attribute name and literal arguments; it does not execute the constructor at decoration time. An attribute supplies metadata, not an automatic authorization rule. Test a missing attribute and invalid metadata consumption. See [X++ attribute implementation](https://learn.microsoft.com/en-us/dynamics365/fin-ops-core/dev-itpro/dev-ref/xpp-attribute-classes).\n\n### Transaction and retry failures to rehearse",
          "affected_objective_ids": [
            "4.1.1",
            "4.1.3",
            "4.2.3",
            "4.2.4"
          ],
          "reason": "Close the initial detailed-objective mapping gaps with independently authored configuration/implementation reasoning, expected evidence and a negative case. These are proposed learner workflows; none were executed in a tenant.",
          "sources": [
            "https://learn.microsoft.com/en-us/dynamics365/fin-ops-core/dev-itpro/dev-ref/xpp-language-reference",
            "https://learn.microsoft.com/en-us/dynamics365/fin-ops-core/dev-itpro/extensibility/class-extensions",
            "https://learn.microsoft.com/en-us/dynamics365/fin-ops-core/dev-itpro/dev-ref/xpp-library-objects",
            "https://learn.microsoft.com/en-us/dynamics365/fin-ops-core/dev-itpro/dev-ref/xpp-attribute-classes"
          ],
          "confidence": "confirmed-source-backed design workflow; product execution unperformed"
        },
        {
          "packet_id": "exam-a-frameworks",
          "exam_code": "MB-500",
          "guide_path": "guides/MB-500-microsoft-dynamics-365-finance-operations-apps-developer.md",
          "input_guide_content_sha256": "823c2995491919379df843836a8675e38691f6933484515be1abc50365248d80",
          "old_text": "## 5. Implement reporting",
          "replacement_markdown": "### Implement a workflow and a linked-table extension deliberately\n\nFor an original approval on a custom adjustment, identify the document table/query, status field and submit/cancel entry points; create the appropriate workflow category/type and approval/task elements, implement document and lifecycle handlers, then configure and activate a workflow version. The business code must validate eligibility, submit the record and respond to approval/rejection/cancellation without allowing an invalid direct state change. Test resubmission and cancellation as separate transitions, with a nonadministrator submitter and approver. See [workflow framework training](https://learn.microsoft.com/en-us/training/modules/explore-extensions-framework-finance-operations/workflow-framework). The generated artifacts are a starting point; complete the business-state and security contract before deployment.\n\n**SysExtensionSerializer is not merely a JSON serializer.** The [official serializer lab](https://microsoftlearning.github.io/MB-500-Microsoft-Dynamics-365-Finance-and-Operations-Apps-Developer/Instructions/Labs/Lab%20-%203%20-%20Implement%20the%20SysExtensionSerializer%20framework.html) demonstrates a supported base-table extension using a related custom table, a base-record reference and **SysExtensionSerializerExtensionMap**, then form and data-entity/staging integration. For an original optional compliance-reference requirement, inspect whether the base table supports the framework, design a unique related record and lifecycle relation, map the base record ID, expose only justified fields and verify both form and import/export paths. A value saved in a form is not proof the staging/entity path preserves it. Test no extension row, changed value, base-record deletion and round trip. Follow the linked lab independently rather than copying its protected instructions/code; its VM/Visual Studio setup is historical and must be reconciled with current UDE documentation. No performance improvement is established merely by selecting this framework.\n\n## 5. Implement reporting",
          "affected_objective_ids": [
            "4.3.2",
            "4.3.3"
          ],
          "reason": "Close the initial detailed-objective mapping gaps with independently authored configuration/implementation reasoning, expected evidence and a negative case. These are proposed learner workflows; none were executed in a tenant.",
          "sources": [
            "https://learn.microsoft.com/en-us/training/modules/explore-extensions-framework-finance-operations/workflow-framework",
            "https://microsoftlearning.github.io/MB-500-Microsoft-Dynamics-365-Finance-and-Operations-Apps-Developer/Instructions/Labs/Lab%20-%203%20-%20Implement%20the%20SysExtensionSerializer%20framework.html"
          ],
          "confidence": "confirmed-source-backed design workflow; product execution unperformed"
        },
        {
          "packet_id": "exam-a-reporting-implementation",
          "exam_code": "MB-500",
          "guide_path": "guides/MB-500-microsoft-dynamics-365-finance-operations-apps-developer.md",
          "input_guide_content_sha256": "823c2995491919379df843836a8675e38691f6933484515be1abc50365248d80",
          "old_text": "## 6. Integrate and manage data solutions",
          "replacement_markdown": "### Trace a report from source to deployed output\n\nThe operational application database serves transactions; **Entity store** stages aggregate measurements in a reporting-optimized store. A DirectQuery report over Entity store can still be stale when the measurement refresh is stale. An exported analytics copy has its own synchronization/security boundary; a data entity is an integration contract rather than a name for every reporting datastore. See [Entity store and refresh boundaries](https://learn.microsoft.com/en-us/dynamics365/fin-ops-core/dev-itpro/analytics/power-bi-integration-entity-store).\n\nFor an original paginated adjustment report, select a supported query/RDP path, define parameters/contract and any temporary dataset, build the report design, deploy the report and route the output menu item/controller to that design. Extend a standard dataset through supported table/business-logic extension points when possible. Rebuild/refresh dataset metadata after adding fields, then verify the report called by the app is the deployed custom design. Test an empty company, a denied user and a large parameter range. See [report dataset extension](https://learn.microsoft.com/en-us/dynamics365/fin-ops-core/dev-itpro/analytics/expand-app-suite-report-data-sets). Rendering successfully as administrator is not security validation.\n\nFor an original ER payment file, model the business fields, map them to authorized application data and bind a format's elements to that model. Add a validation that rejects a missing bank identifier, select the supported output destination and test structure/control totals before enabling the format in a payment method. Model, mapping and format versions/dependencies must travel together; importing a format alone does not prove the mapping is correct. See [ER components](https://learn.microsoft.com/en-us/dynamics365/fin-ops-core/dev-itpro/analytics/er-overview-components). The same separation supports incoming-file integration through its documented updatable mapping targets. **VERIFY CURRENT:** report deployment tools, supported stores and ER destinations.\n\n## 6. Integrate and manage data solutions",
          "affected_objective_ids": [
            "5.1.3",
            "5.2.2",
            "5.2.5"
          ],
          "reason": "Close the initial detailed-objective mapping gaps with independently authored configuration/implementation reasoning, expected evidence and a negative case. These are proposed learner workflows; none were executed in a tenant.",
          "sources": [
            "https://learn.microsoft.com/en-us/dynamics365/fin-ops-core/dev-itpro/analytics/power-bi-integration-entity-store",
            "https://learn.microsoft.com/en-us/dynamics365/fin-ops-core/dev-itpro/analytics/expand-app-suite-report-data-sets",
            "https://learn.microsoft.com/en-us/dynamics365/fin-ops-core/dev-itpro/analytics/er-overview-components"
          ],
          "confidence": "confirmed-source-backed design workflow; product execution unperformed"
        },
        {
          "packet_id": "exam-a-integration-deltas",
          "exam_code": "MB-500",
          "guide_path": "guides/MB-500-microsoft-dynamics-365-finance-operations-apps-developer.md",
          "input_guide_content_sha256": "823c2995491919379df843836a8675e38691f6933484515be1abc50365248d80",
          "old_text": "### Connect the ecosystem",
          "replacement_markdown": "#### Work outbound calls and entity shapes separately\n\nFor a proposed outbound shipping-rate lookup, generate/use the appropriate supported REST or SOAP client contract, configure endpoint/authentication and secret references, serialize only approved fields, then classify response status or SOAP faults before deserializing. Test timeout, malformed response, denied credentials and rate change. Keep a slow external call outside database locks; record a correlation ID and bound retry only where the remote operation is safe to repeat. The [external-service procedure](https://learn.microsoft.com/en-us/dynamics365/fin-ops-core/dev-itpro/data-entities/consume-external-web-service) uses a referenced class library/service proxy and a fictional SOAP URL; adapt the contract rather than invoking that sample URL. A WSDL-generated proxy does not remove authorization, certificate or error-handling work. See also [integration-pattern guidance](https://learn.microsoft.com/en-us/dynamics365/fin-ops-core/dev-itpro/data-entities/integration-overview); no endpoint was invoked here.\n\nA composite entity packages related parent/child entities such as an order and its lines through Data management XML import/export; it is not a synchronous OData entity or a directly programmable X++ composite API. Build the component entities/relations and composite root, build/synchronize as required and test the data-project mapping/sequence. See [composite entity implementation](https://learn.microsoft.com/en-us/dynamics365/fin-ops-core/dev-itpro/data-entities/develop-composite-data-entities). An aggregate entity represents grouped analytical results, such as sales by customer/month; it is not a bulk-import synonym for that parent/child package. For an original test, a missing parent must produce an explainable reject, while the analytical output must reconcile to source totals at the chosen grain.\n\nFor **SQL change tracking** in Data management, select the published BYOD entity or Data entities list and enable primary-table, entire-entity or supported custom-query tracking according to which changes must trigger export. Exported rows contain the entity fields, not just changed fields. Non-BYOD exports do not track deletions; BYOD deletion tracking is limited to the root source. See [SQL change-tracking configuration](https://learn.microsoft.com/en-us/dynamics365/fin-ops-core/dev-itpro/data-entities/entity-change-track). **Row version tracking** is a separate mechanism with table/entity metadata, configuration and build-time eligibility rules; enabling one does not enable the other. See [row-version prerequisites](https://learn.microsoft.com/en-us/dynamics365/fin-ops-core/dev-itpro/data-entities/rowversion-change-track). Test an initial full load, a parent edit, a related-table edit and a deletion before claiming complete incremental synchronization. **VERIFY CURRENT:** mechanism, eligible tables and consuming feature.\n\n### Connect the ecosystem",
          "affected_objective_ids": [
            "6.2.1",
            "6.3.2",
            "6.3.4"
          ],
          "reason": "Close the initial detailed-objective mapping gaps with independently authored configuration/implementation reasoning, expected evidence and a negative case. These are proposed learner workflows; none were executed in a tenant.",
          "sources": [
            "https://learn.microsoft.com/en-us/dynamics365/fin-ops-core/dev-itpro/data-entities/consume-external-web-service",
            "https://learn.microsoft.com/en-us/dynamics365/fin-ops-core/dev-itpro/data-entities/integration-overview",
            "https://learn.microsoft.com/en-us/dynamics365/fin-ops-core/dev-itpro/data-entities/develop-composite-data-entities",
            "https://learn.microsoft.com/en-us/dynamics365/fin-ops-core/dev-itpro/data-entities/entity-change-track",
            "https://learn.microsoft.com/en-us/dynamics365/fin-ops-core/dev-itpro/data-entities/rowversion-change-track"
          ],
          "confidence": "confirmed-source-backed design workflow; product execution unperformed"
        },
        {
          "packet_id": "exam-a-keyvault",
          "exam_code": "MB-500",
          "guide_path": "guides/MB-500-microsoft-dynamics-365-finance-operations-apps-developer.md",
          "input_guide_content_sha256": "823c2995491919379df843836a8675e38691f6933484515be1abc50365248d80",
          "old_text": "## 7. Implement security and optimize performance",
          "replacement_markdown": "#### Configure a vault reference and test failure\n\nFor the supported certificate-storage client, provision the vault item and permitted application identity, then create the Finance Key Vault parameters with vault URL/client authentication and a named certificate secret reference. Use the documented Validate action to check reference and certificate validity. The client can reference a specific version; unversioned selection has documented expiration-based behavior and caching, so rotation needs an explicit validation/cache plan. See [Finance Key Vault client setup](https://learn.microsoft.com/en-us/dynamics365/finance/localizations/global/setting-up-azure-key-vault-client). Do not generalize this certificate-client configuration to every Azure connector's identity model.\n\nAn original sandbox test should distinguish a denied vault identity, wrong secret name, expired certificate and a valid rotated version. Record identifiers and validation outcomes without exporting secrets. A successful vault validation does not prove the downstream service accepts that certificate. **VERIFY CURRENT:** authentication method, certificate cache and rotation behavior. No vault, secret or application was created here.\n\n## 7. Implement security and optimize performance",
          "affected_objective_ids": [
            "6.4.6"
          ],
          "reason": "Close the initial detailed-objective mapping gaps with independently authored configuration/implementation reasoning, expected evidence and a negative case. These are proposed learner workflows; none were executed in a tenant.",
          "sources": [
            "https://learn.microsoft.com/en-us/dynamics365/finance/localizations/global/setting-up-azure-key-vault-client"
          ],
          "confidence": "confirmed-source-backed design workflow; product execution unperformed"
        },
        {
          "packet_id": "exam-a-cache-sandbox",
          "exam_code": "MB-500",
          "guide_path": "guides/MB-500-microsoft-dynamics-365-finance-operations-apps-developer.md",
          "input_guide_content_sha256": "823c2995491919379df843836a8675e38691f6933484515be1abc50365248d80",
          "old_text": "## Integrated scenarios",
          "replacement_markdown": "### Distinguish cache lifetime from asynchronous execution\n\nImplement a singleton as a class that controls access to its instance through an accessor; define the intended runtime/session lifetime rather than assuming a global distributed singleton. For an original currency-lookup cache, choose a namespace plus company/currency/date keys, check **find**, compute on miss and **insert**, and remove/clear the appropriate cached entry after a configuration change. The [SysGlobalObjectCache reference](https://learn.microsoft.com/en-us/dotnet/api/microsoft.dynamics.ax.xpp.sysglobalobjectcache?view=dyn-finops-dotnet) exposes these operations but does not establish a universal cross-process consistency guarantee. Test two companies, an authorization-sensitive lookup and an invalidated rate; never let a cached record bypass current access checks. **VERIFY CURRENT:** effective cache/session lifetime in the deployed runtime.\n\nThe [SysOperationSandbox training](https://learn.microsoft.com/en-us/training/modules/explore-extensions-framework-finance-operations/sysoperationsandbox-framework) describes a separate asynchronous session for time-consuming client-initiated work, keeping the UI responsive through a waiting/cancel experience. Its static business entry and serializable input/output must not rely on the caller's live form buffer. For instance-state patterns, pack/unpack must preserve the required state. This is distinct from a scheduled SysOperation batch and from a Power Platform sandbox environment.\n\nFor an original read-only reconciliation preview, pass company/date/filter values, calculate in the worker and return the result, then validate that the form still represents the same request before displaying it. Test cancellation, timeout and a form closed while work runs. A Cancel control is not a universal database rollback contract; do not infer that an already committed external effect disappears. Use the Global/FormRun async APIs rather than the deprecated xApplication runAsync path; see the [async API migration guidance](https://learn.microsoft.com/en-us/dynamics365/fin-ops-core/dev-itpro/migration-upgrade/deprecated-apis). No asynchronous or sandbox task was run here.\n\n## Integrated scenarios",
          "affected_objective_ids": [
            "7.2.2",
            "7.3.3"
          ],
          "reason": "Close the initial detailed-objective mapping gaps with independently authored configuration/implementation reasoning, expected evidence and a negative case. These are proposed learner workflows; none were executed in a tenant.",
          "sources": [
            "https://learn.microsoft.com/en-us/dotnet/api/microsoft.dynamics.ax.xpp.sysglobalobjectcache?view=dyn-finops-dotnet",
            "https://learn.microsoft.com/en-us/training/modules/explore-extensions-framework-finance-operations/sysoperationsandbox-framework",
            "https://learn.microsoft.com/en-us/dynamics365/fin-ops-core/dev-itpro/migration-upgrade/deprecated-apis"
          ],
          "confidence": "confirmed-source-backed design workflow; product execution unperformed"
        },
        {
          "packet_id": "exam-a-audit",
          "exam_code": "MB-800",
          "guide_path": "guides/MB-800-microsoft-dynamics-365-business-central-functional-consultant.md",
          "input_guide_content_sha256": "2031a157af330803a99956115b1a9f2402d1cd6c122bc2d74773a959b5370583",
          "old_text": "### Configure core functionality",
          "replacement_markdown": "#### Configure evidence before testing a permission change\n\nIn Change Log Setup, select the relevant tables/fields and insert/modify/delete events, then enable logging. With a test user, make one authorized synthetic permission/setup change and inspect Change Log Entries using the correct company/user/time filters. Session refresh/restart can affect when the entries appear. Field monitoring and Change Log have overlapping-control restrictions; choose the documented mechanism for a sensitive field. See [Change Log configuration](https://learn.microsoft.com/en-us/dynamics365/business-central/across-log-changes).\n\nTest a denied change separately: the lack of a change-log row does not prove an attempted unauthorized write was recorded. Protect log access, retain a review owner and configure retention deliberately. Logging every field indefinitely adds noise and storage, while enabling logging after an incident cannot recover earlier unrecorded changes.\n\n### Configure core functionality",
          "affected_objective_ids": [
            "1.2.6"
          ],
          "reason": "Close the initial detailed-objective mapping gaps with independently authored configuration/implementation reasoning, expected evidence and a negative case. These are proposed learner workflows; none were executed in a tenant.",
          "sources": [
            "https://learn.microsoft.com/en-us/dynamics365/business-central/across-log-changes"
          ],
          "confidence": "confirmed-source-backed design workflow; product execution unperformed"
        },
        {
          "packet_id": "exam-a-costing",
          "exam_code": "MB-800",
          "guide_path": "guides/MB-800-microsoft-dynamics-365-business-central-functional-consultant.md",
          "input_guide_content_sha256": "2031a157af330803a99956115b1a9f2402d1cd6c122bc2d74773a959b5370583",
          "old_text": "### Customer and vendor master data",
          "replacement_markdown": "#### Compare the cost assumption before choosing the item method\n\n| Method | Cost assignment to distinguish |\n|---|---|\n| FIFO | Uses the eligible earliest receipt cost flow |\n| Average | Calculates a weighted cost under configured period and item/location/variant scope |\n| Specific | Follows the individually identified receipt through fixed application/item tracking |\n| Standard | Uses maintained standard cost and records actual differences through variances |\n| LIFO | Uses the latest-receipt assumption; policy/localization restrictions require verification |\n\nSee [Business Central costing methods](https://learn.microsoft.com/en-us/dynamics365/business-central/design-details-costing-methods). A serial number does not by itself select Specific costing. Do not change the costing method casually once item ledger entries exist.\n\nFor an original simplified example, receive one unit at 40 and another at 60, then sell one after both receipts. FIFO assigns 40, an assumed single average-cost bucket assigns 50 and Specific assigns the cost of the identified unit; a preset standard of 45 assigns 45 with separate variance treatment. Remaining quantity is one in every case. Dates, applications, average-cost period and later adjustment can change actual results, so test the configured method and reconcile value entries rather than treating this paper model as a posted result.\n\n### Customer and vendor master data",
          "affected_objective_ids": [
            "3.1.5"
          ],
          "reason": "Close the initial detailed-objective mapping gaps with independently authored configuration/implementation reasoning, expected evidence and a negative case. These are proposed learner workflows; none were executed in a tenant.",
          "sources": [
            "https://learn.microsoft.com/en-us/dynamics365/business-central/design-details-costing-methods"
          ],
          "confidence": "confirmed-source-backed design workflow; product execution unperformed"
        },
        {
          "packet_id": "exam-a-recurring-blanket",
          "exam_code": "MB-800",
          "guide_path": "guides/MB-800-microsoft-dynamics-365-business-central-functional-consultant.md",
          "input_guide_content_sha256": "2031a157af330803a99956115b1a9f2402d1cd6c122bc2d74773a959b5370583",
          "old_text": "### Financial documents, journals and payments",
          "replacement_markdown": "#### Reuse lines or release a blanket quantity\n\nFor recurring purchases, create a recurring-line code with the standard items/accounts/quantities, assign it to the vendor and choose manual/automatic/ask behavior per document type. Insert it with Get Recurring Purchase Lines on a new document and inspect calculated prices/discounts there; the recurring definition does not fix those prices. See [recurring purchase lines](https://learn.microsoft.com/en-us/dynamics365/business-central/purchasing-how-work-recurring-purchase-lines). Repeat the pattern for a customer with Recurring Sales Lines. The batch Create Recurring Sales Invoices uses assigned codes and valid dates, then creates invoices for review/posting. See [recurring sales workflow](https://learn.microsoft.com/en-us/dynamics365/business-central/sales-how-work-standard-lines). Test two eligible codes and a changed price so insertion does not silently select the wrong agreement.\n\nA blanket order records the larger agreement. Create dated quantity lines, specify the quantity to release for the next order and use Make Order; keep the blanket reference and inspect quantities shipped/received and invoiced as the child orders progress. Blanket quantities do not themselves affect availability. See [blanket sales and purchase workflow](https://learn.microsoft.com/en-us/dynamics365/business-central/sales-how-to-create-blanket-sales-orders). For a synthetic 120-unit agreement released as 30, then 40, reconcile 70 released with the remaining agreement and actual fulfillment; an order number is not shipment evidence. Use purchase receipt quantities for the purchasing counterpart. Test an attempted child quantity above its blanket quantity. A recurring-line template is neither a blanket commitment nor automatic posting.\n\n### Financial documents, journals and payments",
          "affected_objective_ids": [
            "4.2.7",
            "4.2.8",
            "4.3.7",
            "4.3.8"
          ],
          "reason": "Close the initial detailed-objective mapping gaps with independently authored configuration/implementation reasoning, expected evidence and a negative case. These are proposed learner workflows; none were executed in a tenant.",
          "sources": [
            "https://learn.microsoft.com/en-us/dynamics365/business-central/purchasing-how-work-recurring-purchase-lines",
            "https://learn.microsoft.com/en-us/dynamics365/business-central/sales-how-work-standard-lines",
            "https://learn.microsoft.com/en-us/dynamics365/business-central/sales-how-to-create-blanket-sales-orders"
          ],
          "confidence": "confirmed-source-backed design workflow; product execution unperformed"
        },
        {
          "packet_id": "exam-a-combine-prepayment",
          "exam_code": "MB-800",
          "guide_path": "guides/MB-800-microsoft-dynamics-365-business-central-functional-consultant.md",
          "input_guide_content_sha256": "2031a157af330803a99956115b1a9f2402d1cd6c122bc2d74773a959b5370583",
          "old_text": "### Fixed-asset and inventory operations",
          "replacement_markdown": "#### Combine fulfilled lines and account for deposits\n\nFor a combined sales invoice, start with posted, uninvoiced shipments for the compatible customer/currency, create the invoice header, use Get Shipment Lines, select the intended remaining quantities and review/post. The invoice updates the originating orders' invoiced quantities but does not automatically remove every completed order. See [combined-shipment invoicing](https://learn.microsoft.com/en-us/dynamics365/business-central/sales-how-to-combine-shipments-on-a-single-invoice). For purchasing, use the corresponding purchase invoice and Get Receipt Lines to select posted, uninvoiced receipts for the same vendor/currency; reconcile the selected receipt/order references and remaining quantities before posting. A receipt already invoiced is not a second billable receipt. See [combined-receipt workflow](https://learn.microsoft.com/en-us/dynamics365/business-central/purchasing-how-to-combine-receipts). Test a wrong-party or already-invoiced selection rather than copying freehand lines that lose the source link.\n\nFor a prepayment, set the appropriate posting accounts/number series and customer/vendor/item defaults, create the order, review the calculated deposit and post the prepayment invoice. Post/apply the payment through the appropriate receipt/payment process, then reconcile prepayment deduction on the final invoice. For an assumed 2,000 order with a 25% deposit, the deposit is 500 and the later remaining amount is 1,500 before tax/rounding and other changes. A prepayment credit memo is required before deleting a line whose prepayment was invoiced; do not just reduce its quantity. See [prepayment invoice lifecycle](https://learn.microsoft.com/en-us/dynamics365/business-central/finance-invoice-prepayments). **VERIFY CURRENT:** posting setup, tax, blocking-unpaid-prepayment behavior and correction eligibility. No invoice/payment was posted here.\n\n### Fixed-asset and inventory operations",
          "affected_objective_ids": [
            "4.4.5",
            "4.4.6",
            "4.4.10"
          ],
          "reason": "Close the initial detailed-objective mapping gaps with independently authored configuration/implementation reasoning, expected evidence and a negative case. These are proposed learner workflows; none were executed in a tenant.",
          "sources": [
            "https://learn.microsoft.com/en-us/dynamics365/business-central/sales-how-to-combine-shipments-on-a-single-invoice",
            "https://learn.microsoft.com/en-us/dynamics365/business-central/purchasing-how-to-combine-receipts",
            "https://learn.microsoft.com/en-us/dynamics365/business-central/finance-invoice-prepayments"
          ],
          "confidence": "confirmed-source-backed design workflow; product execution unperformed"
        },
        {
          "packet_id": "exam-a-asset-inventory-workflows",
          "exam_code": "MB-800",
          "guide_path": "guides/MB-800-microsoft-dynamics-365-business-central-functional-consultant.md",
          "input_guide_content_sha256": "2031a157af330803a99956115b1a9f2402d1cd6c122bc2d74773a959b5370583",
          "old_text": "## Worked examples",
          "replacement_markdown": "### Prove depreciation and inventory changes through entries\n\nStraight-line allocates the depreciable amount across its configured life; declining-balance front-loads expense using a declining basis. Combined DB/SL methods switch according to their rules, Manual requires deliberate entries and a user-defined method requires the configured depreciation table. For an original full-year paper model with cost 18,000 and no salvage, three-year straight-line gives 6,000 per year; a 30% declining assumption gives 5,400 then 3,780. This is a conceptual comparison, not a prediction for every Business Central day convention. See [depreciation methods](https://learn.microsoft.com/en-us/dynamics365/business-central/fa-depreciation-methods).\n\nTo exercise the actual book, verify acquisition, starting date/method/life and G/L integration, run Calculate Depreciation for the chosen book/date/filter, review the proposed journal lines and post, then reconcile FA and G/L entries. A calculation job proposing lines does not itself establish posted depreciation. Test a Manual book and a previously posted period. See [depreciation proposal and posting](https://learn.microsoft.com/en-us/dynamics365/business-central/fa-how-depreciate-amortize).\n\nFor a simple location without directed warehouse handling, use an Item Journal positive adjustment for a justified nonpurchase receipt and negative adjustment for a justified nonsales issue. Specify item, date, location, quantity and tracking/cost context; preview/post and inspect item/value/G/L entries. For a physical count, calculate the expected quantity in the Physical Inventory Journal, control movements while counting, enter the observed quantity and review/post only the difference. If expected is 25 and observed 23, the adjustment is −2, not a new receipt of 23. Advanced warehouse locations require their warehouse count/register and item-ledger synchronization path. See [counting and quantity-adjustment workflow](https://learn.microsoft.com/en-us/dynamics365/business-central/inventory-how-count-adjust-reclassify).\n\nFor a location transfer, configure locations/routes, create the transfer and choose the supported direct or in-transit mode. Ship then receive for an in-transit transfer; goods in transit are not destination stock yet. For supported direct reclassification, use the Item Reclassification Journal with old/new location, bin or tracking fields and inspect paired entries. Changing classification does not create a sale/purchase. See [transfers and reclassification](https://learn.microsoft.com/en-us/dynamics365/business-central/inventory-how-transfer-between-locations). Test missing destination setup and tracking mismatch; reconcile total company quantity before/after, location quantities, cost and any in-transit remainder. **VERIFY CURRENT:** warehouse/direct-transfer combinations. No journal or transfer was posted here.\n\n## Worked examples",
          "affected_objective_ids": [
            "2.7.3",
            "4.6.2",
            "4.7.1",
            "4.7.2",
            "4.7.3",
            "4.7.5",
            "4.7.6"
          ],
          "reason": "Close the initial detailed-objective mapping gaps with independently authored configuration/implementation reasoning, expected evidence and a negative case. These are proposed learner workflows; none were executed in a tenant.",
          "sources": [
            "https://learn.microsoft.com/en-us/dynamics365/business-central/fa-depreciation-methods",
            "https://learn.microsoft.com/en-us/dynamics365/business-central/fa-how-depreciate-amortize",
            "https://learn.microsoft.com/en-us/dynamics365/business-central/inventory-how-count-adjust-reclassify",
            "https://learn.microsoft.com/en-us/dynamics365/business-central/inventory-how-transfer-between-locations"
          ],
          "confidence": "confirmed-source-backed design workflow; product execution unperformed"
        }
      ],
      "proposed_catalog_changes": [],
      "source_catalog_objects_file": "exam-a-proposals.json:new_source_catalog_objects/source_updates",
      "checks": {
        "frozen_manifest_base_commit": "546feb3caf5fa38f9ab368a06e76da088f497bbb",
        "frozen_before_hash_match": [
          "DP-900",
          "MB-230",
          "MB-310",
          "MB-500",
          "MB-800"
        ],
        "initial_mapping_sha256": "8436a53fadd6c30f465ea5d707721a399284fc0bad60f149739544292ded1821",
        "initial_mapping_count": 388,
        "unique_objective_ids": 388,
        "proposed_anchor_counts_in_current_guides": {
          "exam-a-case-resolution": 1,
          "exam-a-knowledge-workflow": 1,
          "exam-a-teams-contacts": 1,
          "exam-a-routing-inbox": 1,
          "exam-a-inbox-view": 1,
          "exam-a-maker-notification": 1,
          "exam-a-alias": 1,
          "exam-a-periodic-excel": 1,
          "exam-a-forecast-shared": 1,
          "exam-a-consolidation-tax": 1,
          "exam-a-receivable-collection": 1,
          "exam-a-payables-expenses": 1,
          "exam-a-budget-register": 1,
          "exam-a-asset-budget-split": 1,
          "exam-a-issue-search": 1,
          "exam-a-map-model": 1,
          "exam-a-xpp-workflow": 1,
          "exam-a-frameworks": 1,
          "exam-a-reporting-implementation": 1,
          "exam-a-integration-deltas": 1,
          "exam-a-keyvault": 1,
          "exam-a-cache-sandbox": 1,
          "exam-a-audit": 1,
          "exam-a-costing": 1,
          "exam-a-recurring-blanket": 1,
          "exam-a-combine-prepayment": 1,
          "exam-a-asset-inventory-workflows": 1
        },
        "raw_snapshots_preserved": [
          {
            "exam_code": "DP-900",
            "accepted_snapshot_path": "data/objective-snapshots/dp-900-official-objectives.txt",
            "accepted_snapshot_raw_sha256": "7cef780d1a9e8e88b587fba89acb994985c4aedbd491710e814686ce5dc6559f",
            "scratch_byte_copy": "C:/src/certification-study-library/.maintenance/2026-10-28-remaining-refresh/group-04/exam-a-accepted-DP-900.txt",
            "all_current_detailed_wordings_present_after_whitespace_normalization": true,
            "missing_ids": [],
            "acceptance_recommendation": "retain exact current accepted bytes; no objective wording/version change observed"
          },
          {
            "exam_code": "MB-230",
            "accepted_snapshot_path": "data/objective-snapshots/mb-230-official-objectives.txt",
            "accepted_snapshot_raw_sha256": "e5925c65c9de7fad2e0d1d921564490a83ce02092b95ad95382775abd6352b38",
            "scratch_byte_copy": "C:/src/certification-study-library/.maintenance/2026-10-28-remaining-refresh/group-04/exam-a-accepted-MB-230.txt",
            "all_current_detailed_wordings_present_after_whitespace_normalization": true,
            "missing_ids": [],
            "acceptance_recommendation": "retain exact current accepted bytes; no objective wording/version change observed"
          },
          {
            "exam_code": "MB-310",
            "accepted_snapshot_path": "data/objective-snapshots/mb-310-official-objectives.txt",
            "accepted_snapshot_raw_sha256": "d5bbe85cad214566f2ba0cc7b266af0ff612664ba199a5c8ed948e28474d2284",
            "scratch_byte_copy": "C:/src/certification-study-library/.maintenance/2026-10-28-remaining-refresh/group-04/exam-a-accepted-MB-310.txt",
            "all_current_detailed_wordings_present_after_whitespace_normalization": true,
            "missing_ids": [],
            "acceptance_recommendation": "retain exact current accepted bytes; no objective wording/version change observed"
          },
          {
            "exam_code": "MB-500",
            "accepted_snapshot_path": "data/objective-snapshots/mb-500-official-objectives.txt",
            "accepted_snapshot_raw_sha256": "30b2b8913d63724b60099adcd9090a67bf818e3b0b42e7e57382a5ab240134cd",
            "scratch_byte_copy": "C:/src/certification-study-library/.maintenance/2026-10-28-remaining-refresh/group-04/exam-a-accepted-MB-500.txt",
            "all_current_detailed_wordings_present_after_whitespace_normalization": true,
            "missing_ids": [],
            "acceptance_recommendation": "retain exact current accepted bytes; no objective wording/version change observed"
          },
          {
            "exam_code": "MB-800",
            "accepted_snapshot_path": "data/objective-snapshots/mb-800-official-objectives.txt",
            "accepted_snapshot_raw_sha256": "36a7035403d51e3f1558e097e03f5cd4da0949d205420aeb46a8bd2b4ff30a9d",
            "scratch_byte_copy": "C:/src/certification-study-library/.maintenance/2026-10-28-remaining-refresh/group-04/exam-a-accepted-MB-800.txt",
            "all_current_detailed_wordings_present_after_whitespace_normalization": true,
            "missing_ids": [],
            "acceptance_recommendation": "retain exact current accepted bytes; no objective wording/version change observed"
          }
        ]
      },
      "bounded_recommendation": "Retain all five objective snapshots and current credential identities; reconcile/apply the27 original workflow packets against current technical/learning changes, catalog their exact sources, then fully reread the integrated guides and write a separate final mapping with actual content hashes. Keep initial mapping immutable. Route any remaining scope/behavior conflict to explicit finding rather than claiming a pass.",
      "limits": [
        "No tenant UI, X++ compilation, API request, cloud resource, paid course lesson, survey/email/notification, agent, scheduled job or lab execution performed.",
        "No whole-library maintenance collector or shared-file mutation launched.",
        "Research source availability and prose review are distinct from product verification.",
        "Final integrated-guide semantic reread/rebinding and separate fresh-context review remain coordinator follow-up work."
      ]
    },
    "subset_b": {
      "research_date": "2026-10-28",
      "scope": [
        "MB-820",
        "PL-300",
        "PL-900",
        "SC-500",
        "AB-250"
      ],
      "base_commit": "546feb3caf5fa38f9ab368a06e76da088f497bbb",
      "read_only": true,
      "exclusive_scratch_prefix": "group-04/exam-b-*",
      "policy_read": [
        "AGENTS.md",
        "CONTRIBUTING.md",
        "docs/CONTENT-POLICY.md",
        "docs/SOURCE-QUALITY.md",
        "docs/GUIDE-QUALITY-STANDARD.md",
        "docs/AI-AUDIT.md"
      ],
      "input_verification": [
        {
          "exam_code": "MB-820",
          "preliminary_matches_frozen_guide": true,
          "guide_lf_sha256": "2e6fe4344ecc6c46b33b04960cdb8f597932f536acd7b6b5ec76cba89cb84b2b",
          "snapshot_raw_sha256": "1e1a344d7da21661343df954d830f847f10aa2e3742893e8fab5381666dca108"
        },
        {
          "exam_code": "PL-300",
          "preliminary_matches_frozen_guide": true,
          "guide_lf_sha256": "b6d4a0f04fd84f156294799c1c07eec99e61b438c121737cfee4c1c33655c5bc",
          "snapshot_raw_sha256": "c1c6a25ab5e6285ba4cce3603f6e2624f482ff1d6f237d68e6fa79da93d9e8d9"
        },
        {
          "exam_code": "PL-900",
          "preliminary_matches_frozen_guide": true,
          "guide_lf_sha256": "60180df612865c9cba379ffa3e6dfae25b7a6e84ce9ec0ef6481f77b9fbf31a5",
          "snapshot_raw_sha256": "959c63326efa3e74735cd2abc1cb28246d816506296b218428802240f9f99bd0"
        },
        {
          "exam_code": "SC-500",
          "preliminary_matches_frozen_guide": true,
          "guide_lf_sha256": "dd9b0133a6cae3fc6ce9bb3df39de6ac7e298a56c86d83b5bfeadf72eb1d67e4",
          "snapshot_raw_sha256": "9f832db799678f547b3272c902e5529c77077e2cd4272326cf8ad94ef50cf7c6"
        },
        {
          "exam_code": "AB-250",
          "preliminary_matches_frozen_guide": true,
          "guide_lf_sha256": "ecee8b47d8f7920425965d57834283e0bcbe52afdf7eca4ba7c9645f35855762",
          "snapshot_raw_sha256": "852f325868be15013f6b67d2fe5e0152744d4e1d8c1f86a82874b2eecaca5e11"
        }
      ],
      "initial_mapping_path": ".maintenance/2026-10-28-remaining-refresh/group-04/exam-b-initial-mapping.json",
      "mapping_errata_path": ".maintenance/2026-10-28-remaining-refresh/group-04/exam-b-initial-mapping-errata.json",
      "objective_comparison": {
        "method": "Complete live detailed objective parsing; 396 normalized wording hashes compared independently with retained per-objective September operation mapping, zero differences. Accepted snapshots retained raw. No latest metadata substituted for effective date.",
        "counts": {
          "MB-820": 75,
          "PL-300": 78,
          "PL-900": 37,
          "SC-500": 87,
          "AB-250": 119
        },
        "future_effective_blueprint": "None newly observed for these five study-guide pages; bounded check, no guarantee of future absence."
      },
      "opened_sources": [
        {
          "url": "https://learn.microsoft.com/en-us/credentials/certifications/resources/study-guides/mb-820",
          "affected_exams": [
            "MB-820"
          ],
          "read_scope": "Study-guide audience, current detailed objectives/groups/weights; local captured live HTML parsed and all objective hashes compared with retained September operation mapping.",
          "observations": {
            "scope": "All normalized detailed-objective wording hashes match the prior detailed mapping. No new future-effective objective set was observed. Page metadata is not a skills-effective date.",
            "baseline": "June10 2025 explicit skills-effective date"
          },
          "confidence": "high for the exact first-party statement; bounded to observed page and October28 cutoff",
          "limitations": "Selected text only; no authenticated access, product/tenant execution, screenshots or linked tutorials tested.",
          "source_matches": [
            "mb-820-blueprint"
          ],
          "candidate_matches": []
        },
        {
          "url": "https://learn.microsoft.com/en-us/credentials/certifications/d365-business-central-developer-associate/",
          "affected_exams": [
            "MB-820"
          ],
          "read_scope": "Credential identity, audience/experience, exam time/languages, scheduling and practice sections.",
          "observations": {
            "identity": "Credential active; no retirement notice observed on this page. This is bounded evidence, not a guarantee of no future retirement.",
            "experience": "Applied Business Central/AL, tools, installation/upgrade and ALM knowledge expected; no separate prerequisite certification shown.",
            "practice": "Practice Assessment now on AI Skills Navigator; sign-in required. Linked shell opened; assessment content not launched.",
            "exam_time_minutes": 100
          },
          "confidence": "high for the exact first-party statement; bounded to observed page and October28 cutoff",
          "limitations": "Selected text only; no authenticated access, product/tenant execution, screenshots or linked tutorials tested.",
          "source_matches": [
            "mb-820-credential"
          ],
          "candidate_matches": []
        },
        {
          "url": "https://learn.microsoft.com/en-us/credentials/certifications/resources/study-guides/pl-300",
          "affected_exams": [
            "PL-300"
          ],
          "read_scope": "Study-guide audience, current detailed objectives/groups/weights; local captured live HTML parsed and all objective hashes compared with retained September operation mapping.",
          "observations": {
            "scope": "All normalized detailed-objective wording hashes match the prior detailed mapping. No new future-effective objective set was observed. Page metadata is not a skills-effective date.",
            "baseline": "April20 2026 explicit skills-effective date"
          },
          "confidence": "high for the exact first-party statement; bounded to observed page and October28 cutoff",
          "limitations": "Selected text only; no authenticated access, product/tenant execution, screenshots or linked tutorials tested.",
          "source_matches": [
            "pl-300-blueprint"
          ],
          "candidate_matches": []
        },
        {
          "url": "https://learn.microsoft.com/en-us/credentials/certifications/data-analyst-associate/",
          "affected_exams": [
            "PL-300"
          ],
          "read_scope": "Credential identity, audience/experience, exam time/languages, scheduling and practice sections.",
          "observations": {
            "identity": "Credential active; no retirement notice observed on this page. This is bounded evidence, not a guarantee of no future retirement.",
            "experience": "Power Query and DAX proficiency expected; no prerequisite certification shown.",
            "practice": "Practice Assessment now on AI Skills Navigator; sign-in required. Linked shell opened; assessment content not launched.",
            "exam_time_minutes": 100
          },
          "confidence": "high for the exact first-party statement; bounded to observed page and October28 cutoff",
          "limitations": "Selected text only; no authenticated access, product/tenant execution, screenshots or linked tutorials tested.",
          "source_matches": [
            "pl-300-credential"
          ],
          "candidate_matches": []
        },
        {
          "url": "https://learn.microsoft.com/en-us/credentials/certifications/resources/study-guides/pl-900",
          "affected_exams": [
            "PL-900"
          ],
          "read_scope": "Study-guide audience, current detailed objectives/groups/weights; local captured live HTML parsed and all objective hashes compared with retained September operation mapping.",
          "observations": {
            "scope": "All normalized detailed-objective wording hashes match the prior detailed mapping. No new future-effective objective set was observed. Page metadata is not a skills-effective date.",
            "baseline": "July24 2026 explicit skills-effective date"
          },
          "confidence": "high for the exact first-party statement; bounded to observed page and October28 cutoff",
          "limitations": "Selected text only; no authenticated access, product/tenant execution, screenshots or linked tutorials tested.",
          "source_matches": [
            "pl-900-blueprint"
          ],
          "candidate_matches": []
        },
        {
          "url": "https://learn.microsoft.com/en-us/credentials/certifications/power-platform-fundamentals/",
          "affected_exams": [
            "PL-900"
          ],
          "read_scope": "Credential identity, audience/experience, exam time/languages, scheduling and practice sections.",
          "observations": {
            "identity": "Credential active; no retirement notice observed on this page. This is bounded evidence, not a guarantee of no future retirement.",
            "experience": "Fundamentals; explicitly not prerequisite to role-based certifications.",
            "practice": "Practice Assessment now on AI Skills Navigator; sign-in required. Linked shell opened; assessment content not launched.",
            "exam_time_minutes": 45
          },
          "confidence": "high for the exact first-party statement; bounded to observed page and October28 cutoff",
          "limitations": "Selected text only; no authenticated access, product/tenant execution, screenshots or linked tutorials tested.",
          "source_matches": [
            "pl900-certification-page"
          ],
          "candidate_matches": []
        },
        {
          "url": "https://learn.microsoft.com/en-us/credentials/certifications/resources/study-guides/sc-500",
          "affected_exams": [
            "SC-500"
          ],
          "read_scope": "Study-guide audience, current detailed objectives/groups/weights; local captured live HTML parsed and all objective hashes compared with retained September operation mapping.",
          "observations": {
            "scope": "All normalized detailed-objective wording hashes match the prior detailed mapping. No new future-effective objective set was observed. Page metadata is not a skills-effective date.",
            "baseline": "Skills measured without separately stated effective date; current page title Implementing End-to-End Security Controls for Cloud and AI Workloads"
          },
          "confidence": "high for the exact first-party statement; bounded to observed page and October28 cutoff",
          "limitations": "Selected text only; no authenticated access, product/tenant execution, screenshots or linked tutorials tested.",
          "source_matches": [
            "sc-500-blueprint"
          ],
          "candidate_matches": []
        },
        {
          "url": "https://learn.microsoft.com/en-us/credentials/certifications/cloud-and-ai-security-engineer-associate/",
          "affected_exams": [
            "SC-500"
          ],
          "read_scope": "Credential identity, audience/experience, exam time/languages, scheduling and practice sections.",
          "observations": {
            "identity": "Credential active; no retirement notice observed on this page. This is bounded evidence, not a guarantee of no future retirement.",
            "experience": "Practical Azure/hybrid administration, strong Entra familiarity and M365 familiarity; not proof of a formal prerequisite exam.",
            "practice": "Explicitly not currently available; usual eight-week statement is a general expectation, not release promise.",
            "exam_time_minutes": 120
          },
          "confidence": "high for the exact first-party statement; bounded to observed page and October28 cutoff",
          "limitations": "Selected text only; no authenticated access, product/tenant execution, screenshots or linked tutorials tested.",
          "source_matches": [
            "sc-500-credential"
          ],
          "candidate_matches": []
        },
        {
          "url": "https://learn.microsoft.com/en-us/credentials/certifications/resources/study-guides/ab-250",
          "affected_exams": [
            "AB-250"
          ],
          "read_scope": "Study-guide audience, current detailed objectives/groups/weights; local captured live HTML parsed and all objective hashes compared with retained September operation mapping.",
          "observations": {
            "scope": "All normalized detailed-objective wording hashes match the prior detailed mapping. No new future-effective objective set was observed. Page metadata is not a skills-effective date.",
            "baseline": "Skills measured without separately stated effective date; Practice Assessment now advertised in a tip"
          },
          "confidence": "high for the exact first-party statement; bounded to observed page and October28 cutoff",
          "limitations": "Selected text only; no authenticated access, product/tenant execution, screenshots or linked tutorials tested.",
          "source_matches": [
            "ab-250-blueprint"
          ],
          "candidate_matches": []
        },
        {
          "url": "https://learn.microsoft.com/en-us/credentials/certifications/d365-contact-center-ai-engineer-associate/",
          "affected_exams": [
            "AB-250"
          ],
          "read_scope": "Credential identity, audience/experience, exam time/languages, scheduling and practice sections.",
          "observations": {
            "identity": "Credential active; no retirement notice observed on this page. This is bounded evidence, not a guarantee of no future retirement.",
            "experience": "CCaaS/channel/persona experience plus Power Platform, Copilot Studio, Power BI, Teams and Foundry familiarity; no formal prerequisite exam shown.",
            "practice": "Practice Assessment now on AI Skills Navigator; sign-in required. Linked shell opened; assessment content not launched.",
            "exam_time_minutes": 120
          },
          "confidence": "high for the exact first-party statement; bounded to observed page and October28 cutoff",
          "limitations": "Selected text only; no authenticated access, product/tenant execution, screenshots or linked tutorials tested.",
          "source_matches": [
            "ab-250-credential"
          ],
          "candidate_matches": []
        },
        {
          "url": "https://learn.microsoft.com/en-us/credentials/support/retired-certification-exams",
          "affected_exams": [
            "MB-820",
            "PL-300",
            "PL-900",
            "SC-500",
            "AB-250"
          ],
          "read_scope": "Scheduled retirement list and recent role-based retirement table.",
          "observations": {
            "selected_current_exams": "None of these five appeared in the current scheduled-retirement table.",
            "AZ-500": "Listed retired August31 2026.",
            "MB-240": "Listed retired June30 2026.",
            "limitation": "Absence from a bounded current list is no lifetime guarantee; LastUpdated footer is not an objective baseline."
          },
          "confidence": "high for the exact first-party statement; bounded to observed page and October28 cutoff",
          "limitations": "Selected text only; no authenticated access, product/tenant execution, screenshots or linked tutorials tested.",
          "source_matches": [
            "az-800-official-retirement-list"
          ],
          "candidate_matches": []
        },
        {
          "url": "https://learn.microsoft.com/en-us/partner-center/announcements/2026-july",
          "affected_exams": [
            "SC-500",
            "AB-250"
          ],
          "read_scope": "Specialization skilling updates section, July30.",
          "observations": {
            "SC-500": "Listed replacement for AZ500, available July21 2026.",
            "AB-250": "Explicitly not a direct replacement for MB240 despite partner-skilling addition."
          },
          "confidence": "high for the exact first-party statement; bounded to observed page and October28 cutoff",
          "limitations": "Selected text only; no authenticated access, product/tenant execution, screenshots or linked tutorials tested.",
          "source_matches": [
            "ab-250-partner-transition"
          ],
          "candidate_matches": []
        },
        {
          "url": "https://learn.microsoft.com/en-us/partner-center/announcements/2026-may",
          "affected_exams": [
            "SC-500"
          ],
          "read_scope": "Page opened as a transition cross-check; selected SC500 transition reference only, not all monthly announcements.",
          "observations": "July30 specialization announcement and current retirement register are the stronger observed transition anchors; no new proposal depends on unread May sections.",
          "confidence": "high for the exact first-party statement; bounded to observed page and October28 cutoff",
          "limitations": "Selected text only; no authenticated access, product/tenant execution, screenshots or linked tutorials tested.",
          "source_matches": [],
          "candidate_matches": []
        },
        {
          "url": "https://aiskillsnavigator.microsoft.com/en-us/credentials/cert-31f6b8b4b59192e7bf63ccc85f9a553acf1518d13ffca2f6d8d69fa11a1d38ba",
          "affected_exams": [
            "MB-820"
          ],
          "read_scope": "Exact link followed from official credential page; zero-line application shell.",
          "observations": "First-party credential page establishes the offered sign-in route. Shell does not establish assessment question count, duration, accessible session, or successful launch.",
          "confidence": "high for the exact first-party statement; bounded to observed page and October28 cutoff",
          "limitations": "Sign-in unavailable/not performed; no questions accessed.",
          "source_matches": [],
          "candidate_matches": []
        },
        {
          "url": "https://aiskillsnavigator.microsoft.com/credentials/cert-7ae676ea8b80d2b4eb3dded90f9ae3f956b1027e09eade134c38bba6dbf78235",
          "affected_exams": [
            "PL-300"
          ],
          "read_scope": "Exact link followed from official credential page; zero-line application shell.",
          "observations": "First-party credential page establishes the offered sign-in route. Shell does not establish assessment question count, duration, accessible session, or successful launch.",
          "confidence": "high for the exact first-party statement; bounded to observed page and October28 cutoff",
          "limitations": "Sign-in unavailable/not performed; no questions accessed.",
          "source_matches": [],
          "candidate_matches": []
        },
        {
          "url": "https://aiskillsnavigator.microsoft.com/credentials/cert-53b884bcc4fd8f5b0dc05d42e91f667f6dcd9b5a8fa46206f28409879ffc8dec",
          "affected_exams": [
            "PL-900"
          ],
          "read_scope": "Exact link followed from official credential page; zero-line application shell.",
          "observations": "First-party credential page establishes the offered sign-in route. Shell does not establish assessment question count, duration, accessible session, or successful launch.",
          "confidence": "high for the exact first-party statement; bounded to observed page and October28 cutoff",
          "limitations": "Sign-in unavailable/not performed; no questions accessed.",
          "source_matches": [],
          "candidate_matches": []
        },
        {
          "url": "https://aiskillsnavigator.microsoft.com/en-us/credentials/cert-58f18fddea3dd8122cc00b70ecfc61de1fdeb977c9d871e564a4bb6b3c9e3caf",
          "affected_exams": [
            "AB-250"
          ],
          "read_scope": "Exact link followed from official credential page; zero-line application shell.",
          "observations": "First-party credential page establishes the offered sign-in route. Shell does not establish assessment question count, duration, accessible session, or successful launch.",
          "confidence": "high for the exact first-party statement; bounded to observed page and October28 cutoff",
          "limitations": "Sign-in unavailable/not performed; no questions accessed.",
          "source_matches": [],
          "candidate_matches": []
        },
        {
          "url": "https://learn.microsoft.com/en-us/dynamics365/business-central/dev-itpro/developer/devenv-xmlport-object",
          "affected_exams": [
            "MB-820"
          ],
          "read_scope": "XMLport introduction, invocation and schema example.",
          "observations": "Object is invoked from page/codeunit; schema uses text/table/field elements or attributes. Example was read, not copied as a ready-to-run lab.",
          "confidence": "high for the exact first-party statement; bounded to observed page and October28 cutoff",
          "limitations": "Selected text only; no authenticated access, product/tenant execution, screenshots or linked tutorials tested.",
          "source_matches": [],
          "candidate_matches": []
        },
        {
          "url": "https://learn.microsoft.com/en-us/dynamics365/business-central/dev-itpro/developer/devenv-query-object",
          "affected_exams": [
            "MB-820"
          ],
          "read_scope": "Creation steps, nested dataitems/columns, links/joins and query example.",
          "observations": "DataItemLink and SqlJoinType belong on the lower dataitem; normal and API queries are distinct.",
          "confidence": "high for the exact first-party statement; bounded to observed page and October28 cutoff",
          "limitations": "Selected text only; no authenticated access, product/tenant execution, screenshots or linked tutorials tested.",
          "source_matches": [],
          "candidate_matches": []
        },
        {
          "url": "https://learn.microsoft.com/en-us/dynamics365/business-central/dev-itpro/developer/devenv-report-dataset",
          "affected_exams": [
            "MB-820"
          ],
          "read_scope": "Dataset dataitems/columns and query-as-report-source sections.",
          "observations": "Report consumes a shaped dataset; join and grain need reconciliation independently of visual layout.",
          "confidence": "high for the exact first-party statement; bounded to observed page and October28 cutoff",
          "limitations": "Selected text only; no authenticated access, product/tenant execution, screenshots or linked tutorials tested.",
          "source_matches": [],
          "candidate_matches": []
        },
        {
          "url": "https://learn.microsoft.com/en-us/dynamics365/business-central/dev-itpro/developer/devenv-report-object",
          "affected_exams": [
            "MB-820"
          ],
          "read_scope": "Report object scenarios, syntax order, dataset/layout/extension sections.",
          "observations": "Analytical/document/processing-only distinction and dataset→requestpage→rendering→code arrangement support the original workflow.",
          "confidence": "high for the exact first-party statement; bounded to observed page and October28 cutoff",
          "limitations": "Selected text only; no authenticated access, product/tenant execution, screenshots or linked tutorials tested.",
          "source_matches": [],
          "candidate_matches": []
        },
        {
          "url": "https://learn.microsoft.com/en-us/dynamics365/business-central/dev-itpro/developer/devenv-al-variables",
          "affected_exams": [
            "MB-820"
          ],
          "read_scope": "Variable scope, initialization, assignment and conversion.",
          "observations": "Local versus object-global scope and typed assignments support the paper trace. No AL compilation claimed.",
          "confidence": "high for the exact first-party statement; bounded to observed page and October28 cutoff",
          "limitations": "Selected text only; no authenticated access, product/tenant execution, screenshots or linked tutorials tested.",
          "source_matches": [],
          "candidate_matches": []
        },
        {
          "url": "https://learn.microsoft.com/en-us/dynamics365/business-central/dev-itpro/upgrade/deprecated-features-platform",
          "affected_exams": [
            "MB-820"
          ],
          "read_scope": "v30 and v29 sections, PTE deployment, PowerShell7, SOAP/OData, permission boundary.",
          "observations": "v29 tooling uses PowerShell7 script modules, Microsoft.BusinessCentral prefix. v30 changes remain future; installed tenant version matters.",
          "confidence": "high for the exact first-party statement; bounded to observed page and October28 cutoff",
          "limitations": "Selected text only; no authenticated access, product/tenant execution, screenshots or linked tutorials tested.",
          "source_matches": [
            "mb820-deprecated"
          ],
          "candidate_matches": []
        },
        {
          "url": "https://learn.microsoft.com/en-us/power-bi/transform-model/desktop-quick-measures",
          "affected_exams": [
            "PL-300"
          ],
          "read_scope": "Create quick measure and generated DAX sections.",
          "observations": "Dialog selects calculation/fields and exposes generated DAX; creates a model measure, not verified business semantics.",
          "confidence": "high for the exact first-party statement; bounded to observed page and October28 cutoff",
          "limitations": "Selected text only; no authenticated access, product/tenant execution, screenshots or linked tutorials tested.",
          "source_matches": [],
          "candidate_matches": []
        },
        {
          "url": "https://learn.microsoft.com/en-us/power-bi/transform-model/calculation-groups",
          "affected_exams": [
            "PL-300"
          ],
          "read_scope": "Model view creation, discourage implicit measures, selected measure and time-intelligence example.",
          "observations": "Calculation items operate on explicit measures; implicit-measure behavior and selected measure placeholder support the workflow.",
          "confidence": "high for the exact first-party statement; bounded to observed page and October28 cutoff",
          "limitations": "Selected text only; no authenticated access, product/tenant execution, screenshots or linked tutorials tested.",
          "source_matches": [],
          "candidate_matches": []
        },
        {
          "url": "https://learn.microsoft.com/en-us/power-bi/create-reports/desktop-drillthrough",
          "affected_exams": [
            "PL-300"
          ],
          "read_scope": "Concepts, create target page, use visual, button and troubleshooting.",
          "observations": "Same field links source visual to target drillthrough filter; filtered page navigation differs from hierarchy drill-down.",
          "confidence": "high for the exact first-party statement; bounded to observed page and October28 cutoff",
          "limitations": "Selected text only; no authenticated access, product/tenant execution, screenshots or linked tutorials tested.",
          "source_matches": [],
          "candidate_matches": []
        },
        {
          "url": "https://learn.microsoft.com/en-us/power-bi/create-reports/desktop-tooltips",
          "affected_exams": [
            "PL-300"
          ],
          "read_scope": "Create/register tooltip page, field association, manual selection and limitations.",
          "observations": "Tooltips are not interactive; screen-reader access to shown tooltip content is unsupported, so essential content needs an accessible path.",
          "confidence": "high for the exact first-party statement; bounded to observed page and October28 cutoff",
          "limitations": "Selected text only; no authenticated access, product/tenant execution, screenshots or linked tutorials tested.",
          "source_matches": [],
          "candidate_matches": []
        },
        {
          "url": "https://learn.microsoft.com/en-us/power-apps/maker/canvas-apps/ai-conversations-create-app",
          "affected_exams": [
            "PL-900"
          ],
          "read_scope": "Prerequisites, table workspace, review and changes.",
          "observations": "Dataverse access/role prerequisites; prompt→table/relationship review→app route supports fundamentals authoring.",
          "confidence": "high for the exact first-party statement; bounded to observed page and October28 cutoff",
          "limitations": "Selected text only; no authenticated access, product/tenant execution, screenshots or linked tutorials tested.",
          "source_matches": [],
          "candidate_matches": []
        },
        {
          "url": "https://learn.microsoft.com/en-us/power-apps/maker/plan-designer/build-solution",
          "affected_exams": [
            "PL-900"
          ],
          "read_scope": "Create objects and use existing apps.",
          "observations": "Canvas and model-driven tiles open different designers; save/publish remains separate. Existing apps added to a plan are not automatically in a new solution.",
          "confidence": "high for the exact first-party statement; bounded to observed page and October28 cutoff",
          "limitations": "Selected text only; no authenticated access, product/tenant execution, screenshots or linked tutorials tested.",
          "source_matches": [],
          "candidate_matches": []
        },
        {
          "url": "https://learn.microsoft.com/en-us/ai-builder/form-processing-model-in-flow",
          "affected_exams": [
            "PL-900"
          ],
          "read_scope": "Initial cloud-flow procedure, inputs/outputs and conversion sections.",
          "observations": "Process documents takes File Content and a trained/published model; values/confidence and string conversion matter.",
          "confidence": "high for the exact first-party statement; bounded to observed page and October28 cutoff",
          "limitations": "Selected text only; no authenticated access, product/tenant execution, screenshots or linked tutorials tested.",
          "source_matches": [],
          "candidate_matches": []
        },
        {
          "url": "https://learn.microsoft.com/en-us/power-automate/desktop-flows/copilot-in-power-automate-for-desktop",
          "affected_exams": [
            "PL-900"
          ],
          "read_scope": "Prerequisites, create/add actions, recorder placeholder, limits.",
          "observations": "Natural-language flow creation is preview; UI/browser recording placeholders require author work and produce design-time errors until handled.",
          "confidence": "high for the exact first-party statement; bounded to observed page and October28 cutoff",
          "limitations": "Selected text only; no authenticated access, product/tenant execution, screenshots or linked tutorials tested.",
          "source_matches": [],
          "candidate_matches": []
        },
        {
          "url": "https://learn.microsoft.com/en-us/microsoft-copilot-studio/authoring-create-edit-topics",
          "affected_exams": [
            "PL-900"
          ],
          "read_scope": "Standard-harness applicability, orchestration, node list and create custom topic.",
          "observations": "Question/condition/tool nodes support a concrete conversation path. The article contains inconsistent legacy system-topic disable claims; no proposal relies on those claims.",
          "confidence": "high for the exact first-party statement; bounded to observed page and October28 cutoff",
          "limitations": "Selected text only; no authenticated access, product/tenant execution, screenshots or linked tutorials tested.",
          "source_matches": [],
          "candidate_matches": []
        },
        {
          "url": "https://learn.microsoft.com/en-us/power-platform/important-changes-coming",
          "affected_exams": [
            "PL-900"
          ],
          "read_scope": "Dataverse for Teams deprecation timeline, affected/unaffected assets and action steps.",
          "observations": "New environment creation ends Nov15 2026; suspension Sep15 2027 and decommission Oct30 2027 for nonupgraded environments. Full Dataverse/Teams itself distinguished.",
          "confidence": "high for the exact first-party statement; bounded to observed page and October28 cutoff",
          "limitations": "Selected text only; no authenticated access, product/tenant execution, screenshots or linked tutorials tested.",
          "source_matches": [
            "power-platform-important-changes"
          ],
          "candidate_matches": []
        },
        {
          "url": "https://learn.microsoft.com/en-us/azure/sentinel/connect-services-windows-based",
          "affected_exams": [
            "SC-500"
          ],
          "read_scope": "Prerequisites, Windows Forwarded Events, DCR GUI creation and query/table warning.",
          "observations": "Arc needed for eligible non-Azure collection, WEC+AMA collector for WEF; WindowsEvent is distinct from SecurityEvent.",
          "confidence": "high for the exact first-party statement; bounded to observed page and October28 cutoff",
          "limitations": "Selected text only; no authenticated access, product/tenant execution, screenshots or linked tutorials tested.",
          "source_matches": [],
          "candidate_matches": []
        },
        {
          "url": "https://learn.microsoft.com/en-us/azure/sentinel/windows-security-event-id-reference",
          "affected_exams": [
            "SC-500"
          ],
          "read_scope": "Event-set definitions and direct-versus-forwarded table destination.",
          "observations": "Common/Minimal/All/Custom differ; Minimal is not full audit trail and All is not every Windows log.",
          "confidence": "high for the exact first-party statement; bounded to observed page and October28 cutoff",
          "limitations": "Selected text only; no authenticated access, product/tenant execution, screenshots or linked tutorials tested.",
          "source_matches": [],
          "candidate_matches": []
        },
        {
          "url": "https://learn.microsoft.com/en-us/dynamics365/customer-service/administer/configure-time-out-rules",
          "affected_exams": [
            "AB-250"
          ],
          "read_scope": "Support/prerequisites, trigger/condition/action and priority configuration.",
          "observations": "Messaging timeout rules exclude voice and AI-only conversations; last-speaker semantics determine response timeout.",
          "confidence": "high for the exact first-party statement; bounded to observed page and October28 cutoff",
          "limitations": "Selected text only; no authenticated access, product/tenant execution, screenshots or linked tutorials tested.",
          "source_matches": [],
          "candidate_matches": []
        },
        {
          "url": "https://learn.microsoft.com/en-us/dynamics365/customer-service/administer/auto-close-conversation-powerapps",
          "affected_exams": [
            "AB-250"
          ],
          "read_scope": "Scheduler, modifiedon, per-channel/state defaults and warnings.",
          "observations": "Separate service scheduler; consult/transfer can recalculate closure; do not manually change Dataverse conversation state/status to fix timing.",
          "confidence": "high for the exact first-party statement; bounded to observed page and October28 cutoff",
          "limitations": "Selected text only; no authenticated access, product/tenant execution, screenshots or linked tutorials tested.",
          "source_matches": [],
          "candidate_matches": []
        },
        {
          "url": "https://learn.microsoft.com/en-us/dynamics365/contact-center/administer/copilot-enable-help-pane",
          "affected_exams": [
            "AB-250"
          ],
          "read_scope": "Applicability, prerequisites, enable experiences and knowledge-filter configuration.",
          "observations": "Ask a question plus preset/representative/automatic filters; filters do not grant record access.",
          "confidence": "high for the exact first-party statement; bounded to observed page and October28 cutoff",
          "limitations": "Selected text only; no authenticated access, product/tenant execution, screenshots or linked tutorials tested.",
          "source_matches": [],
          "candidate_matches": []
        },
        {
          "url": "https://learn.microsoft.com/en-us/dynamics365/contact-center/administer/copilot-enable-summary",
          "affected_exams": [
            "AB-250"
          ],
          "read_scope": "Case/conversation applicability and trigger configuration.",
          "observations": "Case summaries Customer Service only; conversation feature documented standalone/Customer Service. Join/end/on-demand options distinct.",
          "confidence": "high for the exact first-party statement; bounded to observed page and October28 cutoff",
          "limitations": "Selected text only; no authenticated access, product/tenant execution, screenshots or linked tutorials tested.",
          "source_matches": [],
          "candidate_matches": []
        },
        {
          "url": "https://learn.microsoft.com/en-us/dynamics365/contact-center/administer/customize-copilot-conv-summary",
          "affected_exams": [
            "AB-250"
          ],
          "read_scope": "Full substantive format/custom-section/omit-missing configuration.",
          "observations": "Structured sections and omit-missing option support a transcript-without-error-code negative test.",
          "confidence": "high for the exact first-party statement; bounded to observed page and October28 cutoff",
          "limitations": "Selected text only; no authenticated access, product/tenant execution, screenshots or linked tutorials tested.",
          "source_matches": [],
          "candidate_matches": []
        },
        {
          "url": "https://learn.microsoft.com/en-us/dynamics365/customer-service/administer/extend-copilot-with-copilot-studio",
          "affected_exams": [
            "AB-250"
          ],
          "read_scope": "Prerequisites, existing-plugin migration, enablement, context and request precedence.",
          "observations": "Preview; primarily managed in Copilot Studio from Apr2026; basic summarization takes priority, context requires review.",
          "confidence": "high for the exact first-party statement; bounded to observed page and October28 cutoff",
          "limitations": "Selected text only; no authenticated access, product/tenant execution, screenshots or linked tutorials tested.",
          "source_matches": [],
          "candidate_matches": []
        },
        {
          "url": "https://learn.microsoft.com/en-us/power-bi/fundamentals/whats-new",
          "affected_exams": [
            "PL-300"
          ],
          "read_scope": "August2026 summary and older OneDrive/SharePoint file-picker notice.",
          "observations": "Still August summary when opened October28; no inference that missing September/October summary means no new functionality. Older Desktop path notice is not retirement of PBIX authoring.",
          "confidence": "high for the exact first-party statement; bounded to observed page and October28 cutoff",
          "limitations": "Selected text only; no authenticated access, product/tenant execution, screenshots or linked tutorials tested.",
          "source_matches": [
            "pl300-desktop-updates"
          ],
          "candidate_matches": []
        },
        {
          "url": "https://learn.microsoft.com/en-us/azure/defender-for-cloud/release-notes",
          "affected_exams": [
            "SC-500"
          ],
          "read_scope": "October2026 entries and current change discovery.",
          "observations": "Current body has Oct20 public-preview server onboarding and cloud-plan management, Oct6 preview server experience, Oct5 GA KSPM controller-scope recommendations and targeted malware scans. Technical researcher owns removal/ambiguity of older Oct27 CSPM default notice; omission is not cancellation.",
          "confidence": "high for the exact first-party statement; bounded to observed page and October28 cutoff",
          "limitations": "Selected text only; no authenticated access, product/tenant execution, screenshots or linked tutorials tested.",
          "source_matches": [
            "sc100-cloud-release"
          ],
          "candidate_matches": []
        },
        {
          "url": "https://learn.microsoft.com/en-us/dynamics365/contact-center/implement/deprecations-contact-center",
          "affected_exams": [
            "AB-250"
          ],
          "read_scope": "ACS WhatsApp/SMS, forecasting, Apple messages and post-call survey entries.",
          "observations": "Sep23 versus Sep30 phone-acquisition conflict remains for technical report reconciliation. Oct30 forecasting removal is still future as of Oct28. Existing channels continue until stated removal, distinct from acquisition restrictions.",
          "confidence": "high for the exact first-party statement; bounded to observed page and October28 cutoff",
          "limitations": "Selected text only; no authenticated access, product/tenant execution, screenshots or linked tutorials tested.",
          "source_matches": [
            "ab250-deprecations"
          ],
          "candidate_matches": []
        },
        {
          "url": "https://learn.microsoft.com/en-us/azure/sentinel/connect-windows-security-events",
          "affected_exams": [
            "SC-500"
          ],
          "read_scope": "Redirect followed to data-connectors-reference introductory connector/prerequisite sections.",
          "observations": "Legacy URL is a very large connector index; it is not a focused Windows-event tutorial. Final proposal uses the exact Windows AMA procedure instead.",
          "confidence": "high for the exact first-party statement; bounded to observed page and October28 cutoff",
          "limitations": "Selected text only; no authenticated access, product/tenant execution, screenshots or linked tutorials tested.",
          "source_matches": [],
          "candidate_matches": []
        },
        {
          "url": "https://learn.microsoft.com/en-us/azure/sentinel/create-custom-connector",
          "affected_exams": [
            "SC-500"
          ],
          "read_scope": "Method comparison and AMA/file-ingestion sections.",
          "observations": "CCF/AMA/LogIngestionAPI/LogicApps/Functions have differing use/cost/complexity. Not promoted as one generic custom-log recipe.",
          "confidence": "high for the exact first-party statement; bounded to observed page and October28 cutoff",
          "limitations": "Selected text only; no authenticated access, product/tenant execution, screenshots or linked tutorials tested.",
          "source_matches": [],
          "candidate_matches": []
        },
        {
          "url": "https://learn.microsoft.com/en-us/power-apps/maker/canvas-apps/ai-overview",
          "affected_exams": [
            "PL-900"
          ],
          "read_scope": "Prerequisites and feature-specific region/preview control sections.",
          "observations": "Feature-specific requirements; generic overview does not prove every creation surface shares one preview/availability state.",
          "confidence": "high for the exact first-party statement; bounded to observed page and October28 cutoff",
          "limitations": "Selected text only; no authenticated access, product/tenant execution, screenshots or linked tutorials tested.",
          "source_matches": [],
          "candidate_matches": []
        },
        {
          "url": "https://learn.microsoft.com/en-us/power-automate/document-automation",
          "affected_exams": [
            "PL-900"
          ],
          "read_scope": "Attempted exact URL open; web tool internal error.",
          "observations": "Unavailable route; replaced research lead with opened AI Builder Process documents procedure.",
          "confidence": "high for the exact first-party statement; bounded to observed page and October28 cutoff",
          "limitations": "No article content available from this attempted URL; not used as evidence.",
          "source_matches": [],
          "candidate_matches": []
        },
        {
          "url": "https://learn.microsoft.com/en-us/dynamics365/customer-service/administer/cs-enable-ai-generated-summary",
          "affected_exams": [
            "AB-250"
          ],
          "read_scope": "Redirect followed to contact-center/administer/copilot-enable-summary.",
          "observations": "Use final canonical destination in proposed text/source catalog.",
          "confidence": "high for the exact first-party statement; bounded to observed page and October28 cutoff",
          "limitations": "Selected text only; no authenticated access, product/tenant execution, screenshots or linked tutorials tested.",
          "source_matches": [],
          "candidate_matches": []
        },
        {
          "url": "https://learn.microsoft.com/en-us/dynamics365/customer-service/administer/enable-ask-summarize-cases",
          "affected_exams": [
            "AB-250"
          ],
          "read_scope": "Redirect followed to customer-service/administer/extend-copilot-with-copilot-studio.",
          "observations": "Use final canonical destination in proposed text/source catalog.",
          "confidence": "high for the exact first-party statement; bounded to observed page and October28 cutoff",
          "limitations": "Selected text only; no authenticated access, product/tenant execution, screenshots or linked tutorials tested.",
          "source_matches": [],
          "candidate_matches": []
        }
      ],
      "proposed_changes": [
        {
          "id": "mb820-object-data-path",
          "exam_code": "MB-820",
          "guide_path": "guides/MB-820-microsoft-dynamics-365-business-central-developer.md",
          "severity": "medium",
          "insertion": "before exact anchor",
          "old_text": "### Codeunits, events and interfaces",
          "replacement_markdown": "### Worked object path: import, query and report\n\nFor a synthetic compliance register, keep imported staging data separate from posted business records. In an [XMLport](https://learn.microsoft.com/en-us/dynamics365/business-central/dev-itpro/developer/devenv-xmlport-object), declare the format/direction and a root text element containing a table element. Put record fields in field elements or attributes according to the external schema. Set the table view and linking properties deliberately; call the XMLport from a page action or codeunit, with the chosen import/export direction and request-page behavior. Inspect the exported structure, then reject a missing required identifier in an import test. Parsing a file successfully does not prove that its business records are valid. Keep this worksheet on synthetic staging data and preserve the existing transaction/error rules.\n\nFor a [query object](https://learn.microsoft.com/en-us/dynamics365/business-central/dev-itpro/developer/devenv-query-object), nest the child dataitem beneath its parent, set `DataItemLink` and `SqlJoinType` on the lower item, and select only needed columns. Declare the intended output grain before adding aggregation. In calling AL, set runtime filters, open the query, read each result and close it. A changed join can remove unmatched parents or multiply rows; reconcile the fan-out example before replacing record loops.\n\nBuild a [report dataset](https://learn.microsoft.com/en-us/dynamics365/business-central/dev-itpro/developer/devenv-report-dataset) from dataitems/columns, with child links, request filters and labels. If a query supplies the rows, iterate it into the report's dataset rather than assuming the layout can directly consume an arbitrary query. Design the [report object](https://learn.microsoft.com/en-us/dynamics365/business-central/dev-itpro/developer/devenv-report-object) in dataset → request page → rendering → code order; bind Word/RDL/Excel layout fields to that dataset. Test a document header with zero, one and several lines, translated labels, request filters and totals. A processing-only report omits rendered output but still needs observable results. **Answer check:** correct layout with duplicated dataset amounts remains incorrect. These are implementation design steps, not compiled or server-tested AL; verify current syntax/runtime before building.\n\n### Codeunits, events and interfaces",
          "body_markdown": "### Worked object path: import, query and report\n\nFor a synthetic compliance register, keep imported staging data separate from posted business records. In an [XMLport](https://learn.microsoft.com/en-us/dynamics365/business-central/dev-itpro/developer/devenv-xmlport-object), declare the format/direction and a root text element containing a table element. Put record fields in field elements or attributes according to the external schema. Set the table view and linking properties deliberately; call the XMLport from a page action or codeunit, with the chosen import/export direction and request-page behavior. Inspect the exported structure, then reject a missing required identifier in an import test. Parsing a file successfully does not prove that its business records are valid. Keep this worksheet on synthetic staging data and preserve the existing transaction/error rules.\n\nFor a [query object](https://learn.microsoft.com/en-us/dynamics365/business-central/dev-itpro/developer/devenv-query-object), nest the child dataitem beneath its parent, set `DataItemLink` and `SqlJoinType` on the lower item, and select only needed columns. Declare the intended output grain before adding aggregation. In calling AL, set runtime filters, open the query, read each result and close it. A changed join can remove unmatched parents or multiply rows; reconcile the fan-out example before replacing record loops.\n\nBuild a [report dataset](https://learn.microsoft.com/en-us/dynamics365/business-central/dev-itpro/developer/devenv-report-dataset) from dataitems/columns, with child links, request filters and labels. If a query supplies the rows, iterate it into the report's dataset rather than assuming the layout can directly consume an arbitrary query. Design the [report object](https://learn.microsoft.com/en-us/dynamics365/business-central/dev-itpro/developer/devenv-report-object) in dataset → request page → rendering → code order; bind Word/RDL/Excel layout fields to that dataset. Test a document header with zero, one and several lines, translated labels, request filters and totals. A processing-only report omits rendered output but still needs observable results. **Answer check:** correct layout with duplicated dataset amounts remains incorrect. These are implementation design steps, not compiled or server-tested AL; verify current syntax/runtime before building.\n\n",
          "affected_objectives": [
            "6.2",
            "6.3",
            "6.4",
            "6.5",
            "6.6",
            "6.7",
            "7.1",
            "7.2",
            "7.3",
            "10.1",
            "10.2",
            "10.4",
            "10.5"
          ],
          "source_urls": [
            "https://learn.microsoft.com/en-us/dynamics365/business-central/dev-itpro/developer/devenv-xmlport-object",
            "https://learn.microsoft.com/en-us/dynamics365/business-central/dev-itpro/developer/devenv-query-object",
            "https://learn.microsoft.com/en-us/dynamics365/business-central/dev-itpro/developer/devenv-report-dataset",
            "https://learn.microsoft.com/en-us/dynamics365/business-central/dev-itpro/developer/devenv-report-object"
          ],
          "reason": "Replace lists of object names with one traceable import/read-model/output workflow, preserving failure and transaction guidance.",
          "confidence": "confirmed product documentation; independently authored exercise unexecuted",
          "live_execution": false,
          "source_catalog_matches": [
            {
              "url": "https://learn.microsoft.com/en-us/dynamics365/business-central/dev-itpro/developer/devenv-xmlport-object",
              "source_id": "g04-examb-devenv-xmlport-object",
              "status": "new evaluated source object supplied"
            },
            {
              "url": "https://learn.microsoft.com/en-us/dynamics365/business-central/dev-itpro/developer/devenv-query-object",
              "source_id": "g04-examb-devenv-query-object",
              "status": "new evaluated source object supplied"
            },
            {
              "url": "https://learn.microsoft.com/en-us/dynamics365/business-central/dev-itpro/developer/devenv-report-dataset",
              "source_id": "g04-examb-devenv-report-dataset",
              "status": "new evaluated source object supplied"
            },
            {
              "url": "https://learn.microsoft.com/en-us/dynamics365/business-central/dev-itpro/developer/devenv-report-object",
              "source_id": "g04-examb-devenv-report-object",
              "status": "new evaluated source object supplied"
            }
          ]
        },
        {
          "id": "mb820-language-trace",
          "exam_code": "MB-820",
          "guide_path": "guides/MB-820-microsoft-dynamics-365-business-central-developer.md",
          "severity": "medium",
          "insertion": "before exact anchor",
          "old_text": "## 5. Work with development tools",
          "replacement_markdown": "### Worked AL reasoning: values, variables and record effects\n\nTrace a procedure before running it: define two `Decimal` inputs for quantity and unit price, a local `Decimal` subtotal and a Boolean validity result. Initialize the subtotal, reject a negative quantity with an `if` branch, calculate quantity times price with an arithmetic expression, and return the result. A caller passing an ordinary value does not receive a mutation to its variable; use a `var` parameter only when changing the caller's value is part of the contract. Local variables belong to the method; object-global variables belong to the object. [AL variables](https://learn.microsoft.com/en-us/dynamics365/business-central/dev-itpro/developer/devenv-al-variables) have typed initialization and assignment/conversion rules. Text that looks numeric still needs a supported conversion, and overflow remains an error.\n\nNow separate a scalar calculation from record work. A record variable represents a table and current filters/state; set the filter, retrieve the intended record set, then decide whether a field needs `Validate` before `Modify`. A loop that changes persisted records needs a transaction and concurrency decision; it is not equivalent to updating the local subtotal. Predict zero quantity, a negative input, a failed conversion and a missing record, and inspect which state can change in each case. This is an original paper trace, not a compiled AL sample; use the earlier error/commit model when adding persistence.\n\n## 5. Work with development tools",
          "body_markdown": "### Worked AL reasoning: values, variables and record effects\n\nTrace a procedure before running it: define two `Decimal` inputs for quantity and unit price, a local `Decimal` subtotal and a Boolean validity result. Initialize the subtotal, reject a negative quantity with an `if` branch, calculate quantity times price with an arithmetic expression, and return the result. A caller passing an ordinary value does not receive a mutation to its variable; use a `var` parameter only when changing the caller's value is part of the contract. Local variables belong to the method; object-global variables belong to the object. [AL variables](https://learn.microsoft.com/en-us/dynamics365/business-central/dev-itpro/developer/devenv-al-variables) have typed initialization and assignment/conversion rules. Text that looks numeric still needs a supported conversion, and overflow remains an error.\n\nNow separate a scalar calculation from record work. A record variable represents a table and current filters/state; set the filter, retrieve the intended record set, then decide whether a field needs `Validate` before `Modify`. A loop that changes persisted records needs a transaction and concurrency decision; it is not equivalent to updating the local subtotal. Predict zero quantity, a negative input, a failed conversion and a missing record, and inspect which state can change in each case. This is an original paper trace, not a compiled AL sample; use the earlier error/commit model when adding persistence.\n\n",
          "affected_objectives": [
            "13.1",
            "13.2",
            "13.4",
            "13.5",
            "13.6",
            "13.7",
            "13.8"
          ],
          "source_urls": [
            "https://learn.microsoft.com/en-us/dynamics365/business-central/dev-itpro/developer/devenv-al-variables"
          ],
          "reason": "Give the language objectives an actual value/scope/branch/record trace instead of an inventory of language terms. Coordinator should retain existing supported Validate/record sources for the second paragraph.",
          "confidence": "confirmed product documentation; independently authored exercise unexecuted",
          "live_execution": false,
          "source_catalog_matches": [
            {
              "url": "https://learn.microsoft.com/en-us/dynamics365/business-central/dev-itpro/developer/devenv-al-variables",
              "source_id": "g04-examb-devenv-al-variables",
              "status": "new evaluated source object supplied"
            }
          ]
        },
        {
          "id": "mb820-powershell-version",
          "exam_code": "MB-820",
          "guide_path": "guides/MB-820-microsoft-dynamics-365-business-central-developer.md",
          "severity": "medium",
          "insertion": "before exact anchor",
          "old_text": "## 2. Install, develop and deploy for Business Central",
          "replacement_markdown": "**VERIFY CURRENT — v29 administration tooling:** the [platform deprecation register](https://learn.microsoft.com/en-us/dynamics365/business-central/dev-itpro/upgrade/deprecated-features-platform) moves the administration modules to PowerShell 7 script modules with the `Microsoft.BusinessCentral` prefix in the server installation's Admin folder. This concerns on-premises/container administration. Match scripts to the installed version and module names; an older Windows PowerShell script still running does not establish a supported configuration. SaaS PTE deployment keeps its separate Admin Center/API path. The v30 OData boundary remains future as of October 28, 2026.\n\n## 2. Install, develop and deploy for Business Central",
          "body_markdown": "**VERIFY CURRENT — v29 administration tooling:** the [platform deprecation register](https://learn.microsoft.com/en-us/dynamics365/business-central/dev-itpro/upgrade/deprecated-features-platform) moves the administration modules to PowerShell 7 script modules with the `Microsoft.BusinessCentral` prefix in the server installation's Admin folder. This concerns on-premises/container administration. Match scripts to the installed version and module names; an older Windows PowerShell script still running does not establish a supported configuration. SaaS PTE deployment keeps its separate Admin Center/API path. The v30 OData boundary remains future as of October 28, 2026.\n\n",
          "affected_objectives": [
            "3.2",
            "4.2",
            "4.5"
          ],
          "source_urls": [
            "https://learn.microsoft.com/en-us/dynamics365/business-central/dev-itpro/upgrade/deprecated-features-platform"
          ],
          "reason": "Add the current v29 tooling boundary without treating a release-wave date as the tenant version.",
          "confidence": "confirmed product documentation; independently authored exercise unexecuted",
          "live_execution": false,
          "source_catalog_matches": [
            {
              "url": "https://learn.microsoft.com/en-us/dynamics365/business-central/dev-itpro/upgrade/deprecated-features-platform",
              "source_id": "mb820-deprecated",
              "status": "existing exact catalog match"
            }
          ]
        },
        {
          "id": "pl300-calculation-build",
          "exam_code": "PL-300",
          "guide_path": "guides/PL-300-microsoft-power-bi-data-analyst.md",
          "severity": "medium",
          "insertion": "before exact anchor",
          "old_text": "### Optimize from evidence",
          "replacement_markdown": "### Worked calculation build: explicit measure, quick measure and group\n\nFor a tiny Import fact table, create explicit `[Sales] = SUM(Sales[Amount])` and `[Average Sale] = AVERAGE(Sales[Amount])` measures. With amounts 100 and 50, the expected values are 150 and 75; distinguish the average transaction from a weighted business rate. Add a contiguous Date table and the correct active relationship before introducing a calendar year-to-date calculation. Check one day, a missing-sales day and a year boundary; a date column with gaps is a different contract from an incomplete fact table.\n\nUse [New quick measure](https://learn.microsoft.com/en-us/power-bi/transform-model/desktop-quick-measures), select a calculation such as running total, supply its base measure and date field, then inspect the generated DAX. Change the visual's date filter and compare the result with a hand calculation. The dialog produces a model measure; it is not evidence that the selected business definition is right.\n\nIn Model view, create a [calculation group](https://learn.microsoft.com/en-us/power-bi/transform-model/calculation-groups), enable Discourage implicit measures when prompted, and add a Current item using `SELECTEDMEASURE()`. Add a YTD item that applies the intended date calculation to that selected measure, then put the group's column on a slicer. Compare Sales and Average Sale under each item; decide which measures should be excluded and how format strings/precedence should behave. Calculation items apply to explicit measures, not implicit visual aggregations. **Answer check:** a group apparently doing nothing to a dragged numeric column may be an implicit-measure issue, not a broken relationship. These formulas are illustrative and were not executed in a Power BI engine. **VERIFY CURRENT:** authoring surface and storage-mode limitations.\n\n### Optimize from evidence",
          "body_markdown": "### Worked calculation build: explicit measure, quick measure and group\n\nFor a tiny Import fact table, create explicit `[Sales] = SUM(Sales[Amount])` and `[Average Sale] = AVERAGE(Sales[Amount])` measures. With amounts 100 and 50, the expected values are 150 and 75; distinguish the average transaction from a weighted business rate. Add a contiguous Date table and the correct active relationship before introducing a calendar year-to-date calculation. Check one day, a missing-sales day and a year boundary; a date column with gaps is a different contract from an incomplete fact table.\n\nUse [New quick measure](https://learn.microsoft.com/en-us/power-bi/transform-model/desktop-quick-measures), select a calculation such as running total, supply its base measure and date field, then inspect the generated DAX. Change the visual's date filter and compare the result with a hand calculation. The dialog produces a model measure; it is not evidence that the selected business definition is right.\n\nIn Model view, create a [calculation group](https://learn.microsoft.com/en-us/power-bi/transform-model/calculation-groups), enable Discourage implicit measures when prompted, and add a Current item using `SELECTEDMEASURE()`. Add a YTD item that applies the intended date calculation to that selected measure, then put the group's column on a slicer. Compare Sales and Average Sale under each item; decide which measures should be excluded and how format strings/precedence should behave. Calculation items apply to explicit measures, not implicit visual aggregations. **Answer check:** a group apparently doing nothing to a dragged numeric column may be an implicit-measure issue, not a broken relationship. These formulas are illustrative and were not executed in a Power BI engine. **VERIFY CURRENT:** authoring surface and storage-mode limitations.\n\n",
          "affected_objectives": [
            "5.1",
            "5.3",
            "5.4",
            "5.6",
            "5.8"
          ],
          "source_urls": [
            "https://learn.microsoft.com/en-us/power-bi/transform-model/desktop-quick-measures",
            "https://learn.microsoft.com/en-us/power-bi/transform-model/calculation-groups"
          ],
          "reason": "Teach the measured creation operations and one explicit expected result without adding a separate recipe for every DAX objective. Retain existing calculation/date references for general DAX behavior.",
          "confidence": "confirmed product documentation; independently authored exercise unexecuted",
          "live_execution": false,
          "source_catalog_matches": [
            {
              "url": "https://learn.microsoft.com/en-us/power-bi/transform-model/desktop-quick-measures",
              "source_id": "g04-examb-desktop-quick-measures",
              "status": "new evaluated source object supplied"
            },
            {
              "url": "https://learn.microsoft.com/en-us/power-bi/transform-model/calculation-groups",
              "source_id": "g04-examb-calculation-groups",
              "status": "new evaluated source object supplied"
            }
          ]
        },
        {
          "id": "pl300-navigation-build",
          "exam_code": "PL-300",
          "guide_path": "guides/PL-300-microsoft-power-bi-data-analyst.md",
          "severity": "medium",
          "insertion": "before exact anchor",
          "old_text": "### Analyze patterns without overclaiming",
          "replacement_markdown": "### Worked navigation: product details and tooltip context\n\nCreate a Product Details page and put the product key/name field in its [drillthrough filter well](https://learn.microsoft.com/en-us/power-bi/create-reports/desktop-drillthrough). Add a product label, transaction table and Back button. On a source visual containing that same field, select one product and drill through; verify both the selected identity and totals. For a dedicated navigation button, set its action to Drillthrough and choose the target page, then test its unavailable-selection state. Drillthrough opens a filtered page; drill-down changes hierarchy level inside a visual. If the destination is absent, inspect the source field and target filter before adding another button.\n\nFor a [report tooltip](https://learn.microsoft.com/en-us/power-bi/create-reports/desktop-tooltips), create a small page, enable Tooltip in page information, add the relevant tooltip field and a compact measure visual, then associate it with the source visual automatically by field or explicitly in its Tooltip setting. Hover two products and reconcile each result. Tooltips are not interactive, and screen readers cannot read the displayed tooltip content; put essential details on the accessible report or drillthrough page. A visually attractive tooltip is insufficient if users cannot reach required information. **VERIFY CURRENT:** pane locations and mobile support. These are proposed local report exercises, not observed execution.\n\n### Analyze patterns without overclaiming",
          "body_markdown": "### Worked navigation: product details and tooltip context\n\nCreate a Product Details page and put the product key/name field in its [drillthrough filter well](https://learn.microsoft.com/en-us/power-bi/create-reports/desktop-drillthrough). Add a product label, transaction table and Back button. On a source visual containing that same field, select one product and drill through; verify both the selected identity and totals. For a dedicated navigation button, set its action to Drillthrough and choose the target page, then test its unavailable-selection state. Drillthrough opens a filtered page; drill-down changes hierarchy level inside a visual. If the destination is absent, inspect the source field and target filter before adding another button.\n\nFor a [report tooltip](https://learn.microsoft.com/en-us/power-bi/create-reports/desktop-tooltips), create a small page, enable Tooltip in page information, add the relevant tooltip field and a compact measure visual, then associate it with the source visual automatically by field or explicitly in its Tooltip setting. Hover two products and reconcile each result. Tooltips are not interactive, and screen readers cannot read the displayed tooltip content; put essential details on the accessible report or drillthrough page. A visually attractive tooltip is insufficient if users cannot reach required information. **VERIFY CURRENT:** pane locations and mobile support. These are proposed local report exercises, not observed execution.\n\n",
          "affected_objectives": [
            "8.2",
            "8.4",
            "8.8",
            "8.12"
          ],
          "source_urls": [
            "https://learn.microsoft.com/en-us/power-bi/create-reports/desktop-drillthrough",
            "https://learn.microsoft.com/en-us/power-bi/create-reports/desktop-tooltips"
          ],
          "reason": "Replace terse tooltip/navigation terms with one complete source-selection→target-filter→return path and an accessibility failure.",
          "confidence": "confirmed product documentation; independently authored exercise unexecuted",
          "live_execution": false,
          "source_catalog_matches": [
            {
              "url": "https://learn.microsoft.com/en-us/power-bi/create-reports/desktop-drillthrough",
              "source_id": "g04-examb-desktop-drillthrough",
              "status": "new evaluated source object supplied"
            },
            {
              "url": "https://learn.microsoft.com/en-us/power-bi/create-reports/desktop-tooltips",
              "source_id": "g04-examb-desktop-tooltips",
              "status": "new evaluated source object supplied"
            }
          ]
        },
        {
          "id": "pl900-ai-build",
          "exam_code": "PL-900",
          "guide_path": "guides/PL-900-microsoft-power-platform-fundamentals.md",
          "severity": "medium",
          "insertion": "before exact anchor",
          "old_text": "### Current app-building boundaries",
          "replacement_markdown": "### Worked creation path: one model, two app experiences\n\nDescribe an equipment request with Employee, Item and Request records. In the documented [Copilot canvas route](https://learn.microsoft.com/en-us/power-apps/maker/canvas-apps/ai-conversations-create-app), Start with data → Create new data opens the table workspace. Ask for those entities and their relationships, inspect the proposal, then ask for a required request date. Compare the resulting types and lookup direction with your original model before saving/opening the app. The route requires Dataverse access and the appropriate environment role; a generated gallery does not prove ordinary users can access its records.\n\nFor a [saved plan](https://learn.microsoft.com/en-us/power-apps/maker/plan-designer/build-solution), create the proposed canvas or model-driven app from its tile. Canvas opens a data-connected app in Studio; model-driven opens the modern designer with its tables. Review screens/formulas in the first and navigation/forms/views in the second, then save, publish and test as the intended user. Reuse an existing app when appropriate, but note that adding it to a plan does not automatically include it in a new solution. **Answer check:** an operations queue over reviewed Dataverse tables can favor the model-driven app while the mobile request screen favors canvas. AI planning, generated app artifacts and publication are separate steps. **VERIFY CURRENT:** entry-point names, feature availability and regional prerequisites. This is a design exercise; no app was generated or published here.\n\n### Current app-building boundaries",
          "body_markdown": "### Worked creation path: one model, two app experiences\n\nDescribe an equipment request with Employee, Item and Request records. In the documented [Copilot canvas route](https://learn.microsoft.com/en-us/power-apps/maker/canvas-apps/ai-conversations-create-app), Start with data → Create new data opens the table workspace. Ask for those entities and their relationships, inspect the proposal, then ask for a required request date. Compare the resulting types and lookup direction with your original model before saving/opening the app. The route requires Dataverse access and the appropriate environment role; a generated gallery does not prove ordinary users can access its records.\n\nFor a [saved plan](https://learn.microsoft.com/en-us/power-apps/maker/plan-designer/build-solution), create the proposed canvas or model-driven app from its tile. Canvas opens a data-connected app in Studio; model-driven opens the modern designer with its tables. Review screens/formulas in the first and navigation/forms/views in the second, then save, publish and test as the intended user. Reuse an existing app when appropriate, but note that adding it to a plan does not automatically include it in a new solution. **Answer check:** an operations queue over reviewed Dataverse tables can favor the model-driven app while the mobile request screen favors canvas. AI planning, generated app artifacts and publication are separate steps. **VERIFY CURRENT:** entry-point names, feature availability and regional prerequisites. This is a design exercise; no app was generated or published here.\n\n",
          "affected_objectives": [
            "2.5",
            "4.3",
            "5.1",
            "5.2"
          ],
          "source_urls": [
            "https://learn.microsoft.com/en-us/power-apps/maker/canvas-apps/ai-conversations-create-app",
            "https://learn.microsoft.com/en-us/power-apps/maker/plan-designer/build-solution"
          ],
          "reason": "Teach what the AI creation routes actually produce and the review→save→publish→user-test chain at fundamentals depth.",
          "confidence": "confirmed product documentation; independently authored exercise unexecuted",
          "live_execution": false,
          "source_catalog_matches": [
            {
              "url": "https://learn.microsoft.com/en-us/power-apps/maker/canvas-apps/ai-conversations-create-app",
              "source_id": "g04-examb-ai-conversations-create-app",
              "status": "new evaluated source object supplied"
            },
            {
              "url": "https://learn.microsoft.com/en-us/power-apps/maker/plan-designer/build-solution",
              "source_id": "g04-examb-build-solution",
              "status": "new evaluated source object supplied"
            }
          ]
        },
        {
          "id": "pl900-document-desktop",
          "exam_code": "PL-900",
          "guide_path": "guides/PL-900-microsoft-power-platform-fundamentals.md",
          "severity": "medium",
          "insertion": "before exact anchor",
          "old_text": "### Reliability and desktop automation",
          "replacement_markdown": "### Worked automation choices: a document and a desktop draft\n\nFor document automation, an instant cloud flow can accept a synthetic file, pass File Content to AI Builder's [Process documents](https://learn.microsoft.com/en-us/ai-builder/form-processing-model-in-flow) action using a trained/published model, and pass extracted values to a review or storage step. Retain both a field's value and confidence score; extracted amounts are strings and need validated conversion before numeric use. A low-confidence or inconsistent total should enter a review branch rather than authorize payment. This is API/cloud document processing even though the input began as a scanned document. **VERIFY CURRENT:** AI Builder capacity, model and file support; do not submit private documents for practice.\n\nFor a legacy UI task, [desktop Copilot](https://learn.microsoft.com/en-us/power-automate/desktop-flows/copilot-in-power-automate-for-desktop) can draft a flow or add steps to an existing one. Describe the input file, intended local action and output; review generated action groups and supply missing mandatory inputs. UI/browser work can produce a recorder placeholder that must be replaced with actual recorded or manually authored actions. A design-time error there does not mean a finished browser automation exists. Test on synthetic local data and inspect selectors, error handling and output before connecting any side effect. **VERIFY CURRENT:** natural-language flow creation remains preview and has a narrower region/account matrix than product-question assistance. These exercises were not executed.\n\n### Reliability and desktop automation",
          "body_markdown": "### Worked automation choices: a document and a desktop draft\n\nFor document automation, an instant cloud flow can accept a synthetic file, pass File Content to AI Builder's [Process documents](https://learn.microsoft.com/en-us/ai-builder/form-processing-model-in-flow) action using a trained/published model, and pass extracted values to a review or storage step. Retain both a field's value and confidence score; extracted amounts are strings and need validated conversion before numeric use. A low-confidence or inconsistent total should enter a review branch rather than authorize payment. This is API/cloud document processing even though the input began as a scanned document. **VERIFY CURRENT:** AI Builder capacity, model and file support; do not submit private documents for practice.\n\nFor a legacy UI task, [desktop Copilot](https://learn.microsoft.com/en-us/power-automate/desktop-flows/copilot-in-power-automate-for-desktop) can draft a flow or add steps to an existing one. Describe the input file, intended local action and output; review generated action groups and supply missing mandatory inputs. UI/browser work can produce a recorder placeholder that must be replaced with actual recorded or manually authored actions. A design-time error there does not mean a finished browser automation exists. Test on synthetic local data and inspect selectors, error handling and output before connecting any side effect. **VERIFY CURRENT:** natural-language flow creation remains preview and has a narrower region/account matrix than product-question assistance. These exercises were not executed.\n\n",
          "affected_objectives": [
            "6.2",
            "7.3"
          ],
          "source_urls": [
            "https://learn.microsoft.com/en-us/ai-builder/form-processing-model-in-flow",
            "https://learn.microsoft.com/en-us/power-automate/desktop-flows/copilot-in-power-automate-for-desktop"
          ],
          "reason": "Close the omitted document-automation example and the missing concrete AI desktop-authoring path without creating an operational production lab.",
          "confidence": "confirmed product documentation; independently authored exercise unexecuted",
          "live_execution": false,
          "source_catalog_matches": [
            {
              "url": "https://learn.microsoft.com/en-us/ai-builder/form-processing-model-in-flow",
              "source_id": "g04-examb-form-processing-model-in-flow",
              "status": "new evaluated source object supplied"
            },
            {
              "url": "https://learn.microsoft.com/en-us/power-automate/desktop-flows/copilot-in-power-automate-for-desktop",
              "source_id": "g04-examb-copilot-in-power-automate-for-desktop",
              "status": "new evaluated source object supplied"
            }
          ]
        },
        {
          "id": "pl900-topic",
          "exam_code": "PL-900",
          "guide_path": "guides/PL-900-microsoft-power-platform-fundamentals.md",
          "severity": "medium",
          "insertion": "before exact anchor",
          "old_text": "### Tools and MCP",
          "replacement_markdown": "**Topic construction check:** in the [standard-harness topic editor](https://learn.microsoft.com/en-us/microsoft-copilot-studio/authoring-create-edit-topics), create a custom equipment-request topic, describe its purpose for generative selection or supply suitable classic trigger phrases, add a Question node that stores the item choice, then a Condition node for supported versus unsupported items. The supported branch can explain the next step or call an authorized draft-request tool; the other branch should clarify or hand off. Save and use test chat to trace both branches, missing input and an attempted unauthorized request. A node's selected path does not grant the downstream operation permission. **VERIFY CURRENT:** orchestration/harness and node support. This is an authoring worksheet, not an executed agent test.\n\n### Tools and MCP",
          "body_markdown": "**Topic construction check:** in the [standard-harness topic editor](https://learn.microsoft.com/en-us/microsoft-copilot-studio/authoring-create-edit-topics), create a custom equipment-request topic, describe its purpose for generative selection or supply suitable classic trigger phrases, add a Question node that stores the item choice, then a Condition node for supported versus unsupported items. The supported branch can explain the next step or call an authorized draft-request tool; the other branch should clarify or hand off. Save and use test chat to trace both branches, missing input and an attempted unauthorized request. A node's selected path does not grant the downstream operation permission. **VERIFY CURRENT:** orchestration/harness and node support. This is an authoring worksheet, not an executed agent test.\n\n",
          "affected_objectives": [
            "8.2"
          ],
          "source_urls": [
            "https://learn.microsoft.com/en-us/microsoft-copilot-studio/authoring-create-edit-topics"
          ],
          "reason": "A node sequence supplies a concrete conversation path while preserving the existing grounding and tool-authority boundaries.",
          "confidence": "confirmed product documentation; independently authored exercise unexecuted",
          "live_execution": false,
          "source_catalog_matches": [
            {
              "url": "https://learn.microsoft.com/en-us/microsoft-copilot-studio/authoring-create-edit-topics",
              "source_id": "g04-examb-authoring-create-edit-topics",
              "status": "new evaluated source object supplied"
            }
          ]
        },
        {
          "id": "pl900-teams-lifecycle",
          "exam_code": "PL-900",
          "guide_path": "guides/PL-900-microsoft-power-platform-fundamentals.md",
          "severity": "medium",
          "insertion": "before exact anchor",
          "old_text": "### Security layers",
          "replacement_markdown": "> **Related item — VERIFY CURRENT, October 28, 2026:** [Dataverse for Teams deprecation](https://learn.microsoft.com/en-us/power-platform/important-changes-coming) ends new-environment creation on **November 15, 2026**. Existing environments not upgraded to full Dataverse are scheduled for suspension on **September 15, 2027** and decommissioning on **October 30, 2027**. Inventory the Microsoft Teams environment type, owners, apps, flows and agents; assess target capacity/licensing before upgrade. This concerns Dataverse for Teams environments, not ordinary Teams chats/files or full-Dataverse apps added to Teams. The dates are future milestones, not proof that a current environment is already unavailable.\n\n### Security layers",
          "body_markdown": "> **Related item — VERIFY CURRENT, October 28, 2026:** [Dataverse for Teams deprecation](https://learn.microsoft.com/en-us/power-platform/important-changes-coming) ends new-environment creation on **November 15, 2026**. Existing environments not upgraded to full Dataverse are scheduled for suspension on **September 15, 2027** and decommissioning on **October 30, 2027**. Inventory the Microsoft Teams environment type, owners, apps, flows and agents; assess target capacity/licensing before upgrade. This concerns Dataverse for Teams environments, not ordinary Teams chats/files or full-Dataverse apps added to Teams. The dates are future milestones, not proof that a current environment is already unavailable.\n\n",
          "affected_objectives": [
            "3.1"
          ],
          "source_urls": [
            "https://learn.microsoft.com/en-us/power-platform/important-changes-coming"
          ],
          "reason": "A currently announced environment lifecycle affects training choices and needs bounded dated treatment.",
          "confidence": "confirmed product documentation; independently authored exercise unexecuted",
          "live_execution": false,
          "source_catalog_matches": [
            {
              "url": "https://learn.microsoft.com/en-us/power-platform/important-changes-coming",
              "source_id": "power-platform-important-changes",
              "status": "existing exact catalog match"
            }
          ]
        },
        {
          "id": "sc500-windows-collection",
          "exam_code": "SC-500",
          "guide_path": "guides/SC-500-microsoft-cloud-ai-security-engineer.md",
          "severity": "medium",
          "insertion": "before exact anchor",
          "old_text": "### Operate Microsoft Security Copilot with the same rigor as other privileged tooling",
          "replacement_markdown": "### Worked ingestion path: direct Windows events versus WEF\n\nFor a disposable Windows source, install the appropriate Content Hub solution and open its connector. Confirm workspace and deployment permissions, select or create a DCR, associate the intended Azure VM or Arc-enabled machine, choose the event set or a tested XPath filter, and select the destination workspace. With [Windows Security Events via AMA](https://learn.microsoft.com/en-us/azure/sentinel/connect-services-windows-based), trace a harmless known sign-in event into `SecurityEvent` and inspect its computer, event ID and timestamps. A DCR existing without the intended machine association does not prove collection.\n\nFor [Windows Event Forwarding](https://learn.microsoft.com/en-us/azure/sentinel/windows-security-event-id-reference), first prove WEC is receiving the subscribed events locally, then configure AMA/DCR on the collector and verify `WindowsEvent` ingestion. Do not expect an unchanged analytics rule querying `SecurityEvent` to match records held only in `WindowsEvent`. Adapt its query or use an appropriate parser, then test a known source event through the detection. Common, Minimal, All and Custom sets differ; Minimal is not a full audit trail, and All here is not every Windows log. Preserve source event identity and compare source/ingested counts before evaluating detection coverage. **Answer check:** a healthy collector with no incident can be a table/query mismatch rather than event loss. **VERIFY CURRENT:** connector/portal support, table schemas and permissions. No collector or analytics rule was deployed in this review.\n\n### Operate Microsoft Security Copilot with the same rigor as other privileged tooling",
          "body_markdown": "### Worked ingestion path: direct Windows events versus WEF\n\nFor a disposable Windows source, install the appropriate Content Hub solution and open its connector. Confirm workspace and deployment permissions, select or create a DCR, associate the intended Azure VM or Arc-enabled machine, choose the event set or a tested XPath filter, and select the destination workspace. With [Windows Security Events via AMA](https://learn.microsoft.com/en-us/azure/sentinel/connect-services-windows-based), trace a harmless known sign-in event into `SecurityEvent` and inspect its computer, event ID and timestamps. A DCR existing without the intended machine association does not prove collection.\n\nFor [Windows Event Forwarding](https://learn.microsoft.com/en-us/azure/sentinel/windows-security-event-id-reference), first prove WEC is receiving the subscribed events locally, then configure AMA/DCR on the collector and verify `WindowsEvent` ingestion. Do not expect an unchanged analytics rule querying `SecurityEvent` to match records held only in `WindowsEvent`. Adapt its query or use an appropriate parser, then test a known source event through the detection. Common, Minimal, All and Custom sets differ; Minimal is not a full audit trail, and All here is not every Windows log. Preserve source event identity and compare source/ingested counts before evaluating detection coverage. **Answer check:** a healthy collector with no incident can be a table/query mismatch rather than event loss. **VERIFY CURRENT:** connector/portal support, table schemas and permissions. No collector or analytics rule was deployed in this review.\n\n",
          "affected_objectives": [
            "11.3",
            "11.4",
            "11.6"
          ],
          "source_urls": [
            "https://learn.microsoft.com/en-us/azure/sentinel/connect-services-windows-based",
            "https://learn.microsoft.com/en-us/azure/sentinel/windows-security-event-id-reference"
          ],
          "reason": "Turn AMA/WEF vocabulary into a concrete DCR/source/table/detection chain and close a consequential WindowsEvent versus SecurityEvent omission.",
          "confidence": "confirmed product documentation; independently authored exercise unexecuted",
          "live_execution": false,
          "source_catalog_matches": [
            {
              "url": "https://learn.microsoft.com/en-us/azure/sentinel/connect-services-windows-based",
              "source_id": "g04-examb-connect-services-windows-based",
              "status": "new evaluated source object supplied"
            },
            {
              "url": "https://learn.microsoft.com/en-us/azure/sentinel/windows-security-event-id-reference",
              "source_id": "g04-examb-windows-security-event-id-reference",
              "status": "new evaluated source object supplied"
            }
          ]
        },
        {
          "id": "ab250-lifecycle-rule",
          "exam_code": "AB-250",
          "guide_path": "guides/AB-250-transforming-contact-center-experiences-ai-dynamics-365.md",
          "severity": "medium",
          "insertion": "before exact anchor",
          "old_text": "### Distinguish message masking, voice masking and recording controls",
          "replacement_markdown": "### Worked conversation lifecycle rule\n\nFor a synthetic messaging workstream, use [timeout rules](https://learn.microsoft.com/en-us/dynamics365/customer-service/administer/configure-time-out-rules) to choose customer or representative nonresponse, threshold/unit and a supported action. Start with a localized warning message and explicit fallback language; then model close, wait or release-to-queue behavior where supported. Set the rule active, bind it to the correct workstream, set priority and test which party sent the last message. Voice and AI-only conversations are outside this timeout-rule feature. Do not confuse this per-workstream automation with the service's [automatic closure scheduler](https://learn.microsoft.com/en-us/dynamics365/customer-service/administer/auto-close-conversation-powerapps), which uses conversation state and `modifiedon`; consultation/transfer can recalculate its elapsed time. Do not repair it by directly editing Dataverse state/status.\n\n**Answer check:** a live-chat customer waiting after their own message does not meet a customer-nonresponse condition that starts after the representative's message. Record the expected transition, message language, capacity change and re-entry behavior. Recheck documented channel/state support and observed timing before treating a threshold as an exact closure promise. **VERIFY CURRENT:** rule availability and scheduler behavior. This is a tabletop exercise, not a tenant observation.\n\n### Distinguish message masking, voice masking and recording controls",
          "body_markdown": "### Worked conversation lifecycle rule\n\nFor a synthetic messaging workstream, use [timeout rules](https://learn.microsoft.com/en-us/dynamics365/customer-service/administer/configure-time-out-rules) to choose customer or representative nonresponse, threshold/unit and a supported action. Start with a localized warning message and explicit fallback language; then model close, wait or release-to-queue behavior where supported. Set the rule active, bind it to the correct workstream, set priority and test which party sent the last message. Voice and AI-only conversations are outside this timeout-rule feature. Do not confuse this per-workstream automation with the service's [automatic closure scheduler](https://learn.microsoft.com/en-us/dynamics365/customer-service/administer/auto-close-conversation-powerapps), which uses conversation state and `modifiedon`; consultation/transfer can recalculate its elapsed time. Do not repair it by directly editing Dataverse state/status.\n\n**Answer check:** a live-chat customer waiting after their own message does not meet a customer-nonresponse condition that starts after the representative's message. Record the expected transition, message language, capacity change and re-entry behavior. Recheck documented channel/state support and observed timing before treating a threshold as an exact closure promise. **VERIFY CURRENT:** rule availability and scheduler behavior. This is a tabletop exercise, not a tenant observation.\n\n",
          "affected_objectives": [
            "6.3",
            "6.7",
            "6.8",
            "6.12"
          ],
          "source_urls": [
            "https://learn.microsoft.com/en-us/dynamics365/customer-service/administer/configure-time-out-rules",
            "https://learn.microsoft.com/en-us/dynamics365/customer-service/administer/auto-close-conversation-powerapps"
          ],
          "reason": "Teach the named closure/configuration operation and distinguish two automation engines instead of only listing lifecycle settings.",
          "confidence": "confirmed product documentation; independently authored exercise unexecuted",
          "live_execution": false,
          "source_catalog_matches": [
            {
              "url": "https://learn.microsoft.com/en-us/dynamics365/customer-service/administer/configure-time-out-rules",
              "source_id": "g04-examb-configure-time-out-rules",
              "status": "new evaluated source object supplied"
            },
            {
              "url": "https://learn.microsoft.com/en-us/dynamics365/customer-service/administer/auto-close-conversation-powerapps",
              "source_id": "g04-examb-auto-close-conversation-powerapps",
              "status": "new evaluated source object supplied"
            }
          ]
        },
        {
          "id": "ab250-copilot-assist-build",
          "exam_code": "AB-250",
          "guide_path": "guides/AB-250-transforming-contact-center-experiences-ai-dynamics-365.md",
          "severity": "medium",
          "insertion": "before exact anchor",
          "old_text": "### Configure voice agents",
          "replacement_markdown": "### Worked representative-assistance setup\n\nFor a pilot persona, enable the intended Copilot experience and make it available through the applicable experience profile. In the [help-pane configuration](https://learn.microsoft.com/en-us/dynamics365/contact-center/administer/copilot-enable-help-pane), enable Ask a question, configure approved knowledge and then set preset, representative-selectable or automatic filters deliberately. A hidden preset filter is not the same as a visible representative choice. Test an article inside the selected scope, one outside it and a user without source access; a filter does not replace authorization.\n\nFor [conversation summaries](https://learn.microsoft.com/en-us/dynamics365/contact-center/administer/copilot-enable-summary), select the supported join/transfer/end or on-demand triggers rather than assuming all occur automatically. Check the documented deployment applicability; case-summary configuration has a different scope. In [Manage format](https://learn.microsoft.com/en-us/dynamics365/contact-center/administer/customize-copilot-conv-summary), choose paragraph or structured output, add only needed information sections, and omit information not present in the conversation. Test a transcript that lacks an error code; an invented code fails acceptance even if the summary reads fluently.\n\nFor the measured plugin/tool extension, the current [Copilot Studio extensibility procedure](https://learn.microsoft.com/en-us/dynamics365/customer-service/administer/extend-copilot-with-copilot-studio) is **preview**. Enable the extension in Customer Support settings, configure the agent's tool/knowledge in Copilot Studio, review passed context and publish/test the intended version. Existing plugins can continue to work; edits beyond connection/description may require a replacement tool. **Answer check:** successful summarization does not prove the custom tool was invoked—basic summarization takes priority over extensibility. **VERIFY CURRENT:** licenses, regional prerequisites, deployment applicability and settings. No tenant or agent changes were made here.\n\n### Configure voice agents",
          "body_markdown": "### Worked representative-assistance setup\n\nFor a pilot persona, enable the intended Copilot experience and make it available through the applicable experience profile. In the [help-pane configuration](https://learn.microsoft.com/en-us/dynamics365/contact-center/administer/copilot-enable-help-pane), enable Ask a question, configure approved knowledge and then set preset, representative-selectable or automatic filters deliberately. A hidden preset filter is not the same as a visible representative choice. Test an article inside the selected scope, one outside it and a user without source access; a filter does not replace authorization.\n\nFor [conversation summaries](https://learn.microsoft.com/en-us/dynamics365/contact-center/administer/copilot-enable-summary), select the supported join/transfer/end or on-demand triggers rather than assuming all occur automatically. Check the documented deployment applicability; case-summary configuration has a different scope. In [Manage format](https://learn.microsoft.com/en-us/dynamics365/contact-center/administer/customize-copilot-conv-summary), choose paragraph or structured output, add only needed information sections, and omit information not present in the conversation. Test a transcript that lacks an error code; an invented code fails acceptance even if the summary reads fluently.\n\nFor the measured plugin/tool extension, the current [Copilot Studio extensibility procedure](https://learn.microsoft.com/en-us/dynamics365/customer-service/administer/extend-copilot-with-copilot-studio) is **preview**. Enable the extension in Customer Support settings, configure the agent's tool/knowledge in Copilot Studio, review passed context and publish/test the intended version. Existing plugins can continue to work; edits beyond connection/description may require a replacement tool. **Answer check:** successful summarization does not prove the custom tool was invoked—basic summarization takes priority over extensibility. **VERIFY CURRENT:** licenses, regional prerequisites, deployment applicability and settings. No tenant or agent changes were made here.\n\n",
          "affected_objectives": [
            "7.1",
            "7.2",
            "7.3",
            "7.4"
          ],
          "source_urls": [
            "https://learn.microsoft.com/en-us/dynamics365/contact-center/administer/copilot-enable-help-pane",
            "https://learn.microsoft.com/en-us/dynamics365/contact-center/administer/copilot-enable-summary",
            "https://learn.microsoft.com/en-us/dynamics365/contact-center/administer/customize-copilot-conv-summary",
            "https://learn.microsoft.com/en-us/dynamics365/customer-service/administer/extend-copilot-with-copilot-studio"
          ],
          "reason": "Give assistance objectives one enable→scope→trigger→test workflow, preserving deployment limits and the April2026 extensibility change.",
          "confidence": "confirmed product documentation; independently authored exercise unexecuted",
          "live_execution": false,
          "source_catalog_matches": [
            {
              "url": "https://learn.microsoft.com/en-us/dynamics365/contact-center/administer/copilot-enable-help-pane",
              "source_id": "g04-examb-copilot-enable-help-pane",
              "status": "new evaluated source object supplied"
            },
            {
              "url": "https://learn.microsoft.com/en-us/dynamics365/contact-center/administer/copilot-enable-summary",
              "source_id": "g04-examb-copilot-enable-summary",
              "status": "new evaluated source object supplied"
            },
            {
              "url": "https://learn.microsoft.com/en-us/dynamics365/contact-center/administer/customize-copilot-conv-summary",
              "source_id": "g04-examb-customize-copilot-conv-summary",
              "status": "new evaluated source object supplied"
            },
            {
              "url": "https://learn.microsoft.com/en-us/dynamics365/customer-service/administer/extend-copilot-with-copilot-studio",
              "source_id": "g04-examb-extend-copilot-with-copilot-studio",
              "status": "new evaluated source object supplied"
            }
          ]
        },
        {
          "id": "ab250-assessment-state",
          "exam_code": "AB-250",
          "guide_path": "guides/AB-250-transforming-contact-center-experiences-ai-dynamics-365.md",
          "severity": "medium",
          "insertion": "replace exact unique text",
          "old_text": "The credential page does not offer a Practice Assessment.",
          "replacement_markdown": "**VERIFY CURRENT:** Microsoft now lists a Practice Assessment through AI Skills Navigator; sign-in is required to launch it. The public [credential page](https://learn.microsoft.com/en-us/credentials/certifications/d365-contact-center-ai-engineer-associate/) establishes availability. The signed-in assessment and its questions were not accessed.",
          "affected_objectives": [],
          "source_urls": [
            "https://learn.microsoft.com/en-us/credentials/certifications/d365-contact-center-ai-engineer-associate/"
          ],
          "reason": "Current first-party page supersedes the September absence observation.",
          "confidence": "confirmed current first-party statement; service not launched",
          "live_execution": false,
          "source_catalog_matches": [
            {
              "url": "https://learn.microsoft.com/en-us/credentials/certifications/d365-contact-center-ai-engineer-associate/",
              "source_id": "ab-250-credential",
              "status": "existing exact catalog match"
            }
          ]
        },
        {
          "id": "ab250-assessment-resource",
          "exam_code": "AB-250",
          "guide_path": "guides/AB-250-transforming-contact-center-experiences-ai-dynamics-365.md",
          "severity": "medium",
          "insertion": "replace exact unique text",
          "old_text": "The official credential page does not offer a Practice Assessment.",
          "replacement_markdown": "The official [credential page](https://learn.microsoft.com/en-us/credentials/certifications/d365-contact-center-ai-engineer-associate/) now directs learners to a sign-in-required Practice Assessment on AI Skills Navigator. Allow about 1–2 hours for an initial attempt and explanation review as an editorial estimate; assessment content was not opened.",
          "affected_objectives": [],
          "source_urls": [
            "https://learn.microsoft.com/en-us/credentials/certifications/d365-contact-center-ai-engineer-associate/"
          ],
          "reason": "Correct the resource section as well as the lifecycle paragraph; no assessment-content review claimed.",
          "confidence": "confirmed current first-party statement; service not launched",
          "live_execution": false,
          "source_catalog_matches": [
            {
              "url": "https://learn.microsoft.com/en-us/credentials/certifications/d365-contact-center-ai-engineer-associate/",
              "source_id": "ab-250-credential",
              "status": "existing exact catalog match"
            }
          ]
        }
      ],
      "proposed_catalog_changes": {
        "new_source_catalog_objects": [
          {
            "id": "g04-examb-devenv-xmlport-object",
            "title": "Devenv Xmlport Object",
            "url": "https://learn.microsoft.com/en-us/dynamics365/business-central/dev-itpro/developer/devenv-xmlport-object",
            "publisher": "Microsoft",
            "authority_class": 2,
            "source_type": "product-documentation",
            "access_model": "public",
            "last_checked": "2026-10-28",
            "supported_exams": [
              "MB-820"
            ],
            "notes": "Selected substantive article sections opened and read October28 2026; supports original mb820-object-data-path implementation worksheet. No compiler/engine/tenant/lab execution; UI/version/feature scope must be rechecked. Microsoft documentation defines product behavior, not undisclosed exam content."
          },
          {
            "id": "g04-examb-devenv-query-object",
            "title": "Devenv Query Object",
            "url": "https://learn.microsoft.com/en-us/dynamics365/business-central/dev-itpro/developer/devenv-query-object",
            "publisher": "Microsoft",
            "authority_class": 2,
            "source_type": "product-documentation",
            "access_model": "public",
            "last_checked": "2026-10-28",
            "supported_exams": [
              "MB-820"
            ],
            "notes": "Selected substantive article sections opened and read October28 2026; supports original mb820-object-data-path implementation worksheet. No compiler/engine/tenant/lab execution; UI/version/feature scope must be rechecked. Microsoft documentation defines product behavior, not undisclosed exam content."
          },
          {
            "id": "g04-examb-devenv-report-dataset",
            "title": "Devenv Report Dataset",
            "url": "https://learn.microsoft.com/en-us/dynamics365/business-central/dev-itpro/developer/devenv-report-dataset",
            "publisher": "Microsoft",
            "authority_class": 2,
            "source_type": "product-documentation",
            "access_model": "public",
            "last_checked": "2026-10-28",
            "supported_exams": [
              "MB-820"
            ],
            "notes": "Selected substantive article sections opened and read October28 2026; supports original mb820-object-data-path implementation worksheet. No compiler/engine/tenant/lab execution; UI/version/feature scope must be rechecked. Microsoft documentation defines product behavior, not undisclosed exam content."
          },
          {
            "id": "g04-examb-devenv-report-object",
            "title": "Devenv Report Object",
            "url": "https://learn.microsoft.com/en-us/dynamics365/business-central/dev-itpro/developer/devenv-report-object",
            "publisher": "Microsoft",
            "authority_class": 2,
            "source_type": "product-documentation",
            "access_model": "public",
            "last_checked": "2026-10-28",
            "supported_exams": [
              "MB-820"
            ],
            "notes": "Selected substantive article sections opened and read October28 2026; supports original mb820-object-data-path implementation worksheet. No compiler/engine/tenant/lab execution; UI/version/feature scope must be rechecked. Microsoft documentation defines product behavior, not undisclosed exam content."
          },
          {
            "id": "g04-examb-devenv-al-variables",
            "title": "Devenv Al Variables",
            "url": "https://learn.microsoft.com/en-us/dynamics365/business-central/dev-itpro/developer/devenv-al-variables",
            "publisher": "Microsoft",
            "authority_class": 2,
            "source_type": "product-documentation",
            "access_model": "public",
            "last_checked": "2026-10-28",
            "supported_exams": [
              "MB-820"
            ],
            "notes": "Selected substantive article sections opened and read October28 2026; supports original mb820-language-trace implementation worksheet. No compiler/engine/tenant/lab execution; UI/version/feature scope must be rechecked. Microsoft documentation defines product behavior, not undisclosed exam content."
          },
          {
            "id": "g04-examb-desktop-quick-measures",
            "title": "Desktop Quick Measures",
            "url": "https://learn.microsoft.com/en-us/power-bi/transform-model/desktop-quick-measures",
            "publisher": "Microsoft",
            "authority_class": 2,
            "source_type": "product-documentation",
            "access_model": "public",
            "last_checked": "2026-10-28",
            "supported_exams": [
              "PL-300"
            ],
            "notes": "Selected substantive article sections opened and read October28 2026; supports original pl300-calculation-build implementation worksheet. No compiler/engine/tenant/lab execution; UI/version/feature scope must be rechecked. Microsoft documentation defines product behavior, not undisclosed exam content."
          },
          {
            "id": "g04-examb-calculation-groups",
            "title": "Calculation Groups",
            "url": "https://learn.microsoft.com/en-us/power-bi/transform-model/calculation-groups",
            "publisher": "Microsoft",
            "authority_class": 2,
            "source_type": "product-documentation",
            "access_model": "public",
            "last_checked": "2026-10-28",
            "supported_exams": [
              "PL-300"
            ],
            "notes": "Selected substantive article sections opened and read October28 2026; supports original pl300-calculation-build implementation worksheet. No compiler/engine/tenant/lab execution; UI/version/feature scope must be rechecked. Microsoft documentation defines product behavior, not undisclosed exam content."
          },
          {
            "id": "g04-examb-desktop-drillthrough",
            "title": "Desktop Drillthrough",
            "url": "https://learn.microsoft.com/en-us/power-bi/create-reports/desktop-drillthrough",
            "publisher": "Microsoft",
            "authority_class": 2,
            "source_type": "product-documentation",
            "access_model": "public",
            "last_checked": "2026-10-28",
            "supported_exams": [
              "PL-300"
            ],
            "notes": "Selected substantive article sections opened and read October28 2026; supports original pl300-navigation-build implementation worksheet. No compiler/engine/tenant/lab execution; UI/version/feature scope must be rechecked. Microsoft documentation defines product behavior, not undisclosed exam content."
          },
          {
            "id": "g04-examb-desktop-tooltips",
            "title": "Desktop Tooltips",
            "url": "https://learn.microsoft.com/en-us/power-bi/create-reports/desktop-tooltips",
            "publisher": "Microsoft",
            "authority_class": 2,
            "source_type": "product-documentation",
            "access_model": "public",
            "last_checked": "2026-10-28",
            "supported_exams": [
              "PL-300"
            ],
            "notes": "Selected substantive article sections opened and read October28 2026; supports original pl300-navigation-build implementation worksheet. No compiler/engine/tenant/lab execution; UI/version/feature scope must be rechecked. Microsoft documentation defines product behavior, not undisclosed exam content."
          },
          {
            "id": "g04-examb-ai-conversations-create-app",
            "title": "Ai Conversations Create App",
            "url": "https://learn.microsoft.com/en-us/power-apps/maker/canvas-apps/ai-conversations-create-app",
            "publisher": "Microsoft",
            "authority_class": 2,
            "source_type": "product-documentation",
            "access_model": "public",
            "last_checked": "2026-10-28",
            "supported_exams": [
              "PL-900"
            ],
            "notes": "Selected substantive article sections opened and read October28 2026; supports original pl900-ai-build implementation worksheet. No compiler/engine/tenant/lab execution; UI/version/feature scope must be rechecked. Microsoft documentation defines product behavior, not undisclosed exam content."
          },
          {
            "id": "g04-examb-build-solution",
            "title": "Build Solution",
            "url": "https://learn.microsoft.com/en-us/power-apps/maker/plan-designer/build-solution",
            "publisher": "Microsoft",
            "authority_class": 2,
            "source_type": "product-documentation",
            "access_model": "public",
            "last_checked": "2026-10-28",
            "supported_exams": [
              "PL-900"
            ],
            "notes": "Selected substantive article sections opened and read October28 2026; supports original pl900-ai-build implementation worksheet. No compiler/engine/tenant/lab execution; UI/version/feature scope must be rechecked. Microsoft documentation defines product behavior, not undisclosed exam content."
          },
          {
            "id": "g04-examb-form-processing-model-in-flow",
            "title": "Form Processing Model In Flow",
            "url": "https://learn.microsoft.com/en-us/ai-builder/form-processing-model-in-flow",
            "publisher": "Microsoft",
            "authority_class": 2,
            "source_type": "product-documentation",
            "access_model": "public",
            "last_checked": "2026-10-28",
            "supported_exams": [
              "PL-900"
            ],
            "notes": "Selected substantive article sections opened and read October28 2026; supports original pl900-document-desktop implementation worksheet. No compiler/engine/tenant/lab execution; UI/version/feature scope must be rechecked. Microsoft documentation defines product behavior, not undisclosed exam content."
          },
          {
            "id": "g04-examb-copilot-in-power-automate-for-desktop",
            "title": "Copilot In Power Automate For Desktop",
            "url": "https://learn.microsoft.com/en-us/power-automate/desktop-flows/copilot-in-power-automate-for-desktop",
            "publisher": "Microsoft",
            "authority_class": 2,
            "source_type": "product-documentation",
            "access_model": "public",
            "last_checked": "2026-10-28",
            "supported_exams": [
              "PL-900"
            ],
            "notes": "Selected substantive article sections opened and read October28 2026; supports original pl900-document-desktop implementation worksheet. No compiler/engine/tenant/lab execution; UI/version/feature scope must be rechecked. Microsoft documentation defines product behavior, not undisclosed exam content."
          },
          {
            "id": "g04-examb-authoring-create-edit-topics",
            "title": "Authoring Create Edit Topics",
            "url": "https://learn.microsoft.com/en-us/microsoft-copilot-studio/authoring-create-edit-topics",
            "publisher": "Microsoft",
            "authority_class": 2,
            "source_type": "product-documentation",
            "access_model": "public",
            "last_checked": "2026-10-28",
            "supported_exams": [
              "PL-900"
            ],
            "notes": "Selected substantive article sections opened and read October28 2026; supports original pl900-topic implementation worksheet. No compiler/engine/tenant/lab execution; UI/version/feature scope must be rechecked. Microsoft documentation defines product behavior, not undisclosed exam content."
          },
          {
            "id": "g04-examb-connect-services-windows-based",
            "title": "Connect Services Windows Based",
            "url": "https://learn.microsoft.com/en-us/azure/sentinel/connect-services-windows-based",
            "publisher": "Microsoft",
            "authority_class": 2,
            "source_type": "product-documentation",
            "access_model": "public",
            "last_checked": "2026-10-28",
            "supported_exams": [
              "SC-500"
            ],
            "notes": "Selected substantive article sections opened and read October28 2026; supports original sc500-windows-collection implementation worksheet. No compiler/engine/tenant/lab execution; UI/version/feature scope must be rechecked. Microsoft documentation defines product behavior, not undisclosed exam content."
          },
          {
            "id": "g04-examb-windows-security-event-id-reference",
            "title": "Windows Security Event Id Reference",
            "url": "https://learn.microsoft.com/en-us/azure/sentinel/windows-security-event-id-reference",
            "publisher": "Microsoft",
            "authority_class": 2,
            "source_type": "product-documentation",
            "access_model": "public",
            "last_checked": "2026-10-28",
            "supported_exams": [
              "SC-500"
            ],
            "notes": "Selected substantive article sections opened and read October28 2026; supports original sc500-windows-collection implementation worksheet. No compiler/engine/tenant/lab execution; UI/version/feature scope must be rechecked. Microsoft documentation defines product behavior, not undisclosed exam content."
          },
          {
            "id": "g04-examb-configure-time-out-rules",
            "title": "Configure Time Out Rules",
            "url": "https://learn.microsoft.com/en-us/dynamics365/customer-service/administer/configure-time-out-rules",
            "publisher": "Microsoft",
            "authority_class": 2,
            "source_type": "product-documentation",
            "access_model": "public",
            "last_checked": "2026-10-28",
            "supported_exams": [
              "AB-250"
            ],
            "notes": "Selected substantive article sections opened and read October28 2026; supports original ab250-lifecycle-rule implementation worksheet. No compiler/engine/tenant/lab execution; UI/version/feature scope must be rechecked. Microsoft documentation defines product behavior, not undisclosed exam content."
          },
          {
            "id": "g04-examb-auto-close-conversation-powerapps",
            "title": "Auto Close Conversation Powerapps",
            "url": "https://learn.microsoft.com/en-us/dynamics365/customer-service/administer/auto-close-conversation-powerapps",
            "publisher": "Microsoft",
            "authority_class": 2,
            "source_type": "product-documentation",
            "access_model": "public",
            "last_checked": "2026-10-28",
            "supported_exams": [
              "AB-250"
            ],
            "notes": "Selected substantive article sections opened and read October28 2026; supports original ab250-lifecycle-rule implementation worksheet. No compiler/engine/tenant/lab execution; UI/version/feature scope must be rechecked. Microsoft documentation defines product behavior, not undisclosed exam content."
          },
          {
            "id": "g04-examb-copilot-enable-help-pane",
            "title": "Copilot Enable Help Pane",
            "url": "https://learn.microsoft.com/en-us/dynamics365/contact-center/administer/copilot-enable-help-pane",
            "publisher": "Microsoft",
            "authority_class": 2,
            "source_type": "product-documentation",
            "access_model": "public",
            "last_checked": "2026-10-28",
            "supported_exams": [
              "AB-250"
            ],
            "notes": "Selected substantive article sections opened and read October28 2026; supports original ab250-copilot-assist-build implementation worksheet. No compiler/engine/tenant/lab execution; UI/version/feature scope must be rechecked. Microsoft documentation defines product behavior, not undisclosed exam content."
          },
          {
            "id": "g04-examb-copilot-enable-summary",
            "title": "Copilot Enable Summary",
            "url": "https://learn.microsoft.com/en-us/dynamics365/contact-center/administer/copilot-enable-summary",
            "publisher": "Microsoft",
            "authority_class": 2,
            "source_type": "product-documentation",
            "access_model": "public",
            "last_checked": "2026-10-28",
            "supported_exams": [
              "AB-250"
            ],
            "notes": "Selected substantive article sections opened and read October28 2026; supports original ab250-copilot-assist-build implementation worksheet. No compiler/engine/tenant/lab execution; UI/version/feature scope must be rechecked. Microsoft documentation defines product behavior, not undisclosed exam content."
          },
          {
            "id": "g04-examb-customize-copilot-conv-summary",
            "title": "Customize Copilot Conv Summary",
            "url": "https://learn.microsoft.com/en-us/dynamics365/contact-center/administer/customize-copilot-conv-summary",
            "publisher": "Microsoft",
            "authority_class": 2,
            "source_type": "product-documentation",
            "access_model": "public",
            "last_checked": "2026-10-28",
            "supported_exams": [
              "AB-250"
            ],
            "notes": "Selected substantive article sections opened and read October28 2026; supports original ab250-copilot-assist-build implementation worksheet. No compiler/engine/tenant/lab execution; UI/version/feature scope must be rechecked. Microsoft documentation defines product behavior, not undisclosed exam content."
          },
          {
            "id": "g04-examb-extend-copilot-with-copilot-studio",
            "title": "Extend Copilot With Copilot Studio",
            "url": "https://learn.microsoft.com/en-us/dynamics365/customer-service/administer/extend-copilot-with-copilot-studio",
            "publisher": "Microsoft",
            "authority_class": 2,
            "source_type": "product-documentation",
            "access_model": "public",
            "last_checked": "2026-10-28",
            "supported_exams": [
              "AB-250"
            ],
            "notes": "Selected substantive article sections opened and read October28 2026; supports original ab250-copilot-assist-build implementation worksheet. No compiler/engine/tenant/lab execution; UI/version/feature scope must be rechecked. Microsoft documentation defines product behavior, not undisclosed exam content."
          }
        ],
        "source_updates": [
          {
            "source_id": "mb820-deprecated",
            "url": "https://learn.microsoft.com/en-us/dynamics365/business-central/dev-itpro/upgrade/deprecated-features-platform",
            "last_checked": "2026-10-28",
            "add_supported_exams": [
              "MB-820"
            ],
            "append_notes": "October28 exam-b selected substantive sections reviewed for mb820-powershell-version. No service, compiler, tenant or paid assessment execution."
          },
          {
            "source_id": "power-platform-important-changes",
            "url": "https://learn.microsoft.com/en-us/power-platform/important-changes-coming",
            "last_checked": "2026-10-28",
            "add_supported_exams": [
              "PL-900"
            ],
            "append_notes": "October28 exam-b selected substantive sections reviewed for pl900-teams-lifecycle. No service, compiler, tenant or paid assessment execution."
          },
          {
            "source_id": "ab-250-credential",
            "url": "https://learn.microsoft.com/en-us/credentials/certifications/d365-contact-center-ai-engineer-associate/",
            "last_checked": "2026-10-28",
            "add_supported_exams": [
              "AB-250"
            ],
            "append_notes": "October28 exam-b selected substantive sections reviewed for ab250-assessment-state. No service, compiler, tenant or paid assessment execution."
          },
          {
            "source_id": "ab-250-credential",
            "url": "https://learn.microsoft.com/en-us/credentials/certifications/d365-contact-center-ai-engineer-associate/",
            "last_checked": "2026-10-28",
            "add_supported_exams": [
              "AB-250"
            ],
            "append_notes": "October28 exam-b selected substantive sections reviewed for ab250-assessment-resource. No service, compiler, tenant or paid assessment execution."
          }
        ],
        "exam_identity_changes": []
      },
      "materiality_reconciliation": "Initial partial labels identify thin named operations and remain immutable. They are not all material findings: describe/identify objectives can be adequately taught through conceptual distinctions and failure reasoning; the quality standard does not require every element equally. Prioritize the 14 coherent packets and final complete-guide re-read, preserving useful depth and provisional caveats.",
      "unresolved_questions": [
        "SC500 October27 Foundational CSPM default announcement absent from current release page: status unconfirmed, not cancelled.",
        "AB250 first-party dates and ACS existing-customer/resource/number eligibility conflict remain unresolved and must stay visible.",
        "MB820 official Lab02 duplicate UpdateSalespeople procedure/self-call is a known learning-resource hazard; do not recommend copying/running it without correction.",
        "Remaining initial partial leads need materiality reconciliation against complete final guides; no all-clean result is asserted."
      ],
      "bounded_recommendation": "Integrate unique-anchor proposed repairs with technical/learning patches, register exact accepted source URLs, preserve blockers and dated records, then supply full final guides and hashes for separate read-only review. Do not advance full semantic audit dates from hash equality or reachability.",
      "limitations": [
        "Same-context research; not fresh-context review or human review.",
        "No AL compiler, DAX engine, cloud deployment, phone call, campaign, paid assessment or tenant lab was executed.",
        "AI Skills Navigator links returned application shells; first-party Learn availability text supports route metadata only.",
        "First-party source access does not validate every linked source or future tenant behavior."
      ],
      "proposal_addendum": {
        "consolidated_path": ".maintenance/2026-10-28-remaining-refresh/group-04/exam-b-all-proposals.json",
        "packet_count": 29,
        "additional_source_scope_records": [
          {
            "url": "https://learn.microsoft.com/en-us/dynamics365/business-central/dev-itpro/developer/devenv-substituting-reports",
            "read_scope": "Full substantive article including event, invocation paths and coexistence/compatibility good practices.",
            "confidence": "high first-party scope; no product execution"
          },
          {
            "url": "https://learn.microsoft.com/en-us/dynamics365/business-central/dev-itpro/administration/onboarding-checklist",
            "read_scope": "Checklist data model, Guided Experience prerequisite/façade, role/user mapping and Microsoft-only RoleCenter Tour limitation.",
            "confidence": "high first-party scope; no product execution"
          },
          {
            "url": "https://learn.microsoft.com/en-us/dynamics365/business-central/dev-itpro/developer/devenv-test-codeunits-and-test-methods",
            "read_scope": "Methods, isolation/results and preview runtime18 lifecycle hooks.",
            "confidence": "high first-party scope; no product execution"
          },
          {
            "url": "https://learn.microsoft.com/en-us/dynamics365/customer-service/administer/create-quick-replies",
            "read_scope": "Create, locale, tags, workstream association and default unassociated scope.",
            "confidence": "high first-party scope; no product execution"
          },
          {
            "url": "https://learn.microsoft.com/en-us/dynamics365/customer-service/administer/presence-custom-presence",
            "read_scope": "Base/display status, defaults, custom creation and allowed-presence rule.",
            "confidence": "high first-party scope; no product execution"
          },
          {
            "url": "https://learn.microsoft.com/en-us/dynamics365/business-central/dev-itpro/developer/devenv-profile-object",
            "read_scope": "Full substantive definition/properties/example/applicability, no linked articles tested"
          },
          {
            "url": "https://learn.microsoft.com/en-us/dynamics365/business-central/dev-itpro/developer/devenv-views",
            "read_scope": "Syntax, filtering/sorting, layout, example and limitations"
          },
          {
            "url": "https://learn.microsoft.com/en-us/dynamics365/business-central/dev-itpro/developer/devenv-page-object",
            "read_scope": "Page hierarchy, object syntax, tooltips/views and example; no copying or compiling sample"
          },
          {
            "url": "https://learn.microsoft.com/en-us/dynamics365/business-central/dev-itpro/user-assistance/user-assistance-model",
            "read_scope": "Attempted exact URL; web tool internal error, not evidence"
          },
          {
            "url": "https://learn.microsoft.com/en-us/dynamics365/customer-service/administer/smart-assist",
            "scope": "Entire substantive management page: prerequisites, agent-user and workstream association, unsupported Copilot agent/record channel, removed case-knowledge suggestions, representative-message trigger."
          },
          {
            "url": "https://learn.microsoft.com/en-us/power-apps/maker/model-driven-apps/custom-connectors-timeline-control",
            "scope": "Entire substantive article through deployment dependency/security limits; sample repository not inspected."
          },
          {
            "url": "https://learn.microsoft.com/en-us/dynamics365/customer-service/administer/create-agent-experience-profile",
            "scope": "Creation and user/template/productivity/inbox/channel assignments; no UI execution."
          },
          {
            "url": "https://learn.microsoft.com/en-us/dynamics365/contact-center/extend/intro-messaging-apis",
            "scope": "Lifecycle capability, server-to-server scope, HTTPS/token/channel/org headers and endpoint list; endpoint-specific payloads not inspected."
          },
          {
            "url": "https://learn.microsoft.com/en-us/dynamics365/customer-service/develop/reference/methods/startchat",
            "scope": "Selected substantive SDK readiness/authentication/lifecycle or recording operation/callback sections, as described by associated packet. No sample/dependency execution."
          },
          {
            "url": "https://learn.microsoft.com/en-us/dynamics365/customer-service/develop/send-auth-token-starting-chat",
            "scope": "Selected substantive SDK readiness/authentication/lifecycle or recording operation/callback sections, as described by associated packet. No sample/dependency execution."
          },
          {
            "url": "https://learn.microsoft.com/en-us/dynamics365/customer-service/develop/render-live-chat-widget-mobile",
            "scope": "Selected substantive SDK readiness/authentication/lifecycle or recording operation/callback sections, as described by associated packet. No sample/dependency execution."
          },
          {
            "url": "https://github.com/microsoft/ContactCenterMessagingSDK-android",
            "scope": "Selected substantive SDK readiness/authentication/lifecycle or recording operation/callback sections, as described by associated packet. No sample/dependency execution."
          },
          {
            "url": "https://learn.microsoft.com/en-us/dynamics365/contact-center/extend/api/record-transcription-api",
            "scope": "Selected substantive SDK readiness/authentication/lifecycle or recording operation/callback sections, as described by associated packet. No sample/dependency execution."
          },
          {
            "url": "https://github.com/microsoft/dynamics-365-contact-center/blob/main/documentation/CCaaS%20SDK%20APIs/classes/VoiceModule.md",
            "scope": "Selected substantive SDK readiness/authentication/lifecycle or recording operation/callback sections, as described by associated packet. No sample/dependency execution."
          },
          {
            "url": "https://github.com/microsoft/dynamics-365-contact-center/blob/main/documentation/CCaaS%20SDK%20APIs/interfaces/IRecordingOperationCompletedEventData.md",
            "scope": "Selected substantive SDK readiness/authentication/lifecycle or recording operation/callback sections, as described by associated packet. No sample/dependency execution."
          },
          {
            "url": "https://github.com/microsoft/ContactCenterMessagingSDK-ios",
            "scope": "README selected getConfig/prechat/sendMessage/completion/agentEnd portions. Malformed example punctuation observed; not copied or executed."
          },
          {
            "url": "https://github.com/microsoft/dynamics-365-contact-center/blob/main/documentation/CCaaS%20SDK%20APIs/interfaces/IToggleRecording.md",
            "scope": "Exact liveWorkItemId string payload field read."
          },
          {
            "url": "https://github.com/microsoft/dynamics-365-contact-center/tree/main/documentation/CCaaS%20SDK%20APIs",
            "scope": "Attempted Learn-linked directory: restricted fetch; concrete module and interface files separately readable."
          },
          {
            "url": "https://learn.microsoft.com/en-us/dynamics365/contact-center/administer/configure-surveys",
            "scope": "Selected substantive configuration/invocation sections described in packet; for surveys, setup/connection/publication/channel attachment; scripts, ordered-step types/template association; macros, new-record/save; JS exact method result; knowledge recordtypes/search/portal/provider scope."
          },
          {
            "url": "https://learn.microsoft.com/en-us/dynamics365/customer-service/administer/agent-scripts",
            "scope": "Selected substantive configuration/invocation sections described in packet; for surveys, setup/connection/publication/channel attachment; scripts, ordered-step types/template association; macros, new-record/save; JS exact method result; knowledge recordtypes/search/portal/provider scope."
          },
          {
            "url": "https://learn.microsoft.com/en-us/dynamics365/customer-service/administer/macros-productivity-automation",
            "scope": "Selected substantive configuration/invocation sections described in packet; for surveys, setup/connection/publication/channel attachment; scripts, ordered-step types/template association; macros, new-record/save; JS exact method result; knowledge recordtypes/search/portal/provider scope."
          },
          {
            "url": "https://learn.microsoft.com/en-us/dynamics365/customer-service/administer/automation-dictionary-keys",
            "scope": "Selected substantive configuration/invocation sections described in packet; for surveys, setup/connection/publication/channel attachment; scripts, ordered-step types/template association; macros, new-record/save; JS exact method result; knowledge recordtypes/search/portal/provider scope."
          },
          {
            "url": "https://learn.microsoft.com/en-us/dynamics365/customer-service/develop/microsoft-apm",
            "scope": "Selected substantive configuration/invocation sections described in packet; for surveys, setup/connection/publication/channel attachment; scripts, ordered-step types/template association; macros, new-record/save; JS exact method result; knowledge recordtypes/search/portal/provider scope."
          },
          {
            "url": "https://learn.microsoft.com/en-us/dynamics365/customer-service/develop/reference/methods/getfocusedsession",
            "scope": "Selected substantive configuration/invocation sections described in packet; for surveys, setup/connection/publication/channel attachment; scripts, ordered-step types/template association; macros, new-record/save; JS exact method result; knowledge recordtypes/search/portal/provider scope."
          },
          {
            "url": "https://learn.microsoft.com/en-us/dynamics365/customer-service/develop/reference/methods/getconversationid",
            "scope": "Selected substantive configuration/invocation sections described in packet; for surveys, setup/connection/publication/channel attachment; scripts, ordered-step types/template association; macros, new-record/save; JS exact method result; knowledge recordtypes/search/portal/provider scope."
          },
          {
            "url": "https://learn.microsoft.com/en-us/dynamics365/customer-service/administer/set-up-knowledge-management-embedded-knowledge-search",
            "scope": "Selected substantive configuration/invocation sections described in packet; for surveys, setup/connection/publication/channel attachment; scripts, ordered-step types/template association; macros, new-record/save; JS exact method result; knowledge recordtypes/search/portal/provider scope."
          },
          {
            "url": "https://learn.microsoft.com/en-us/dynamics365/business-central/dev-itpro/developer/devenv-instrument-application-for-telemetry",
            "scope": "Full substantive destination and LogMessage/SendTraceTag overview; existing guide source"
          },
          {
            "url": "https://learn.microsoft.com/en-us/dynamics365/business-central/dev-itpro/administration/telemetry-enable-application-insights",
            "scope": "Environment connection settings, online/onprem distinction, restart and troubleshooting; old cmdlet examples not recommended unqualified"
          },
          {
            "url": "https://learn.microsoft.com/en-us/dynamics365/business-central/dev-itpro/developer/devenv-application-insights-for-extensions",
            "scope": "Full substantive setup, runtime/legacy manifest properties and custom/feature events"
          },
          {
            "url": "https://learn.microsoft.com/en-us/dynamics365/business-central/dev-itpro/developer/devenv-instrument-application-for-telemetry-app-insights",
            "scope": "Method signature, scope, dimensions, data classification, trace conditions and example limitations"
          }
        ],
        "note": "Subsequent targeted repairs address actual named-operation gaps; initial materiality leads remain preserved. Follow source packet IDs for root integration."
      }
    }
  },
  "technical_research": {
    "report_type": "Preliminary bounded technical research; coordinator must compare LF input hashes with frozen group04 manifest",
    "research_date": "2026-10-28",
    "exclusive_write_scope": "group-04/technical-* only; no shared files edited",
    "policy_read": [
      "AGENTS.md",
      "CONTRIBUTING.md",
      "docs/CONTENT-POLICY.md",
      "docs/SOURCE-QUALITY.md",
      "docs/GUIDE-QUALITY-STANDARD.md"
    ],
    "input_guides": [
      {
        "exam_code": "DP-900",
        "guide_path": "guides/DP-900-microsoft-azure-data-fundamentals.md",
        "sha256_lf": "3ab634df7d0d9db86be9f2d23da1014ac5ef05e6b701d7a5e494202774474a6e",
        "line_count": 792,
        "semantic_guide_lines_read": [
          [
            291,
            307
          ],
          [
            391,
            409
          ],
          [
            442,
            446
          ]
        ]
      },
      {
        "exam_code": "MB-230",
        "guide_path": "guides/MB-230-microsoft-dynamics-365-customer-service-functional-consultant.md",
        "sha256_lf": "fc595c40de2aa905feb11a2e68914673f7443ab59204b5c7658c29f1b21daae2",
        "line_count": 511,
        "semantic_guide_lines_read": [
          [
            96,
            115
          ],
          [
            130,
            160
          ]
        ]
      },
      {
        "exam_code": "MB-310",
        "guide_path": "guides/MB-310-microsoft-dynamics-365-finance-functional-consultant.md",
        "sha256_lf": "ecba021e209cf66f5221a50c341c490f30dd92ab8579ff4d95b61216ddb47f48",
        "line_count": 373,
        "semantic_guide_lines_read": [
          [
            70,
            114
          ],
          [
            130,
            142
          ],
          [
            238,
            246
          ]
        ]
      },
      {
        "exam_code": "MB-500",
        "guide_path": "guides/MB-500-microsoft-dynamics-365-finance-operations-apps-developer.md",
        "sha256_lf": "823c2995491919379df843836a8675e38691f6933484515be1abc50365248d80",
        "line_count": 433,
        "semantic_guide_lines_read": [
          [
            56,
            94
          ],
          [
            140,
            150
          ],
          [
            315,
            339
          ]
        ]
      },
      {
        "exam_code": "MB-800",
        "guide_path": "guides/MB-800-microsoft-dynamics-365-business-central-functional-consultant.md",
        "sha256_lf": "2031a157af330803a99956115b1a9f2402d1cd6c122bc2d74773a959b5370583",
        "line_count": 440,
        "semantic_guide_lines_read": [
          [
            81,
            97
          ]
        ]
      },
      {
        "exam_code": "MB-820",
        "guide_path": "guides/MB-820-microsoft-dynamics-365-business-central-developer.md",
        "sha256_lf": "2e6fe4344ecc6c46b33b04960cdb8f597932f536acd7b6b5ec76cba89cb84b2b",
        "line_count": 480,
        "semantic_guide_lines_read": [
          [
            78,
            89
          ],
          [
            177,
            193
          ],
          [
            239,
            245
          ]
        ]
      },
      {
        "exam_code": "PL-300",
        "guide_path": "guides/PL-300-microsoft-power-bi-data-analyst.md",
        "sha256_lf": "b6d4a0f04fd84f156294799c1c07eec99e61b438c121737cfee4c1c33655c5bc",
        "line_count": 408,
        "semantic_guide_lines_read": [
          [
            70,
            90
          ],
          [
            170,
            220
          ],
          [
            250,
            295
          ],
          [
            320,
            350
          ]
        ]
      },
      {
        "exam_code": "PL-900",
        "guide_path": "guides/PL-900-microsoft-power-platform-fundamentals.md",
        "sha256_lf": "60180df612865c9cba379ffa3e6dfae25b7a6e84ce9ec0ef6481f77b9fbf31a5",
        "line_count": 543,
        "semantic_guide_lines_read": [
          [
            296,
            315
          ],
          [
            337,
            349
          ],
          [
            397,
            415
          ]
        ]
      },
      {
        "exam_code": "SC-500",
        "guide_path": "guides/SC-500-microsoft-cloud-ai-security-engineer.md",
        "sha256_lf": "dd9b0133a6cae3fc6ce9bb3df39de6ac7e298a56c86d83b5bfeadf72eb1d67e4",
        "line_count": 585,
        "semantic_guide_lines_read": [
          [
            336,
            349
          ]
        ]
      },
      {
        "exam_code": "AB-250",
        "guide_path": "guides/AB-250-transforming-contact-center-experiences-ai-dynamics-365.md",
        "sha256_lf": "ecee8b47d8f7920425965d57834283e0bcbe52afdf7eca4ba7c9645f35855762",
        "line_count": 489,
        "semantic_guide_lines_read": [
          [
            24,
            30
          ],
          [
            163,
            201
          ],
          [
            231,
            261
          ]
        ]
      }
    ],
    "review_scope": "Selected meaningful technical ranges, not full guides or full-review gates. Exam researcher owns exact blueprint authority.",
    "retrieval": "Requests GET plus BeautifulSoup main text. Exact URL, raw HTML/body files and hashes retained; HTTP200 is only retrieval. Semantic evidence limited to declared line ranges. Web corroborated migration body; two guessed noncanonical URLs failed and were not evidence.",
    "source_readings": [
      {
        "key": "dp900-semantic",
        "requested_url": "https://learn.microsoft.com/en-us/fabric/data-warehouse/semantic-models",
        "final_url": "https://learn.microsoft.com/en-us/fabric/data-warehouse/semantic-models",
        "http_status": 200,
        "raw_sha256": "742f8c033268f3a702db792d341460933e9d6b7a69e85d83cdbeb0da340d0b22",
        "body_sha256": "0d348327aaddc9934a0dbda3fdc3946a6bee836aa91dd54ded2de783e1442035",
        "metadata_dates": {
          "ms.date": "2025-12-05T00:00:00Z",
          "updated_at": "2026-07-06T22:07:00Z"
        },
        "body_lines": 102,
        "raw_html_path": "technical-dp900-semantic.html",
        "body_path": "technical-dp900-semantic.txt",
        "semantic_read_scope": {
          "body_file_line_ranges_inclusive": [
            [
              22,
              85
            ]
          ],
          "description": "Selected saved main-body lines actually read; not HTTP verification."
        },
        "affected_exams": [
          "DP-900"
        ],
        "source_catalog_matches": [
          "dp900-semantic"
        ],
        "source_candidate_matches": [],
        "observations": [
          "Sep5 automatic-model end and Nov30 decoupling dates retained; unsupported source-to-Power-BI types can drop columns. Broad fallback paragraph not used as universal Direct Lake statement."
        ],
        "limitations": [
          "No model created/refreshed; no Direct Lake variant audit."
        ],
        "raw_html_context_checks": "No tabgroups in inspected main HTML.",
        "confidence": "High for selected current source text; product behavior untested"
      },
      {
        "key": "mb230-agent",
        "requested_url": "https://learn.microsoft.com/en-us/dynamics365/customer-service/administer/set-up-case-resolution-agent",
        "final_url": "https://learn.microsoft.com/en-us/dynamics365/customer-service/administer/set-up-case-resolution-agent",
        "http_status": 200,
        "raw_sha256": "0d50d94a72120a222b122c46dd4d75609efa50c35befa4de0c344beab459a1d5",
        "body_sha256": "22b0abb7aad8fd0ca676ab6e9849b618320e7fb3b577b3ed8d83d3390580dba9",
        "metadata_dates": {
          "ms.date": "2026-05-27T00:00:00Z",
          "ms.update-cycle": "180-days",
          "updated_at": "2026-05-27T13:06:00Z"
        },
        "body_lines": 314,
        "raw_html_path": "technical-mb230-agent.html",
        "body_path": "technical-mb230-agent.txt",
        "semantic_read_scope": {
          "body_file_line_ranges_inclusive": [
            [
              22,
              299
            ]
          ],
          "description": "Selected saved main-body lines actually read; not HTTP verification."
        },
        "affected_exams": [
          "MB-230"
        ],
        "source_catalog_matches": [
          "mb230-agent-resolution"
        ],
        "source_candidate_matches": [],
        "observations": [
          "Automation modes, application user/mailbox prerequisites, preview credit-consuming 100-case simulation/shadow and locale-gated handoff read. Require-confirmation setup still says review/send; runtime table remains less precise."
        ],
        "limitations": [
          "No runtime companion article opened; no tenant execution."
        ],
        "raw_html_context_checks": "No tabgroups in inspected main HTML.",
        "confidence": "High for selected current source text; product behavior untested"
      },
      {
        "key": "mb310-deferral",
        "requested_url": "https://learn.microsoft.com/en-us/dynamics365/finance/accounts-receivable/sb-deferrals-schedules",
        "final_url": "https://learn.microsoft.com/en-us/dynamics365/finance/accounts-receivable/sb-deferrals-schedules",
        "http_status": 200,
        "raw_sha256": "d922aaa2b1c7ede9a491cec24d2d6281360b2d3adf0645c4e8d7fd376b6d552b",
        "body_sha256": "86e037090ee807e7bf7b4fc4e1d6e67eb428c39e41ca07f3c04bcb6cf41c4d90",
        "metadata_dates": {
          "ms.date": "2026-06-04T00:00:00Z",
          "updated_at": "2026-09-01T01:05:00Z"
        },
        "body_lines": 457,
        "raw_html_path": "technical-mb310-deferral.html",
        "body_path": "technical-mb310-deferral.txt",
        "semantic_read_scope": {
          "body_file_line_ranges_inclusive": [
            [
              22,
              135
            ],
            [
              185,
              220
            ],
            [
              245,
              310
            ]
          ],
          "description": "Selected saved main-body lines actually read; not HTTP verification."
        },
        "affected_exams": [
          "MB-310"
        ],
        "source_catalog_matches": [
          "mb310-deferral-schedules"
        ],
        "source_candidate_matches": [],
        "observations": [
          "Inclusive recognition cutoff, deferred batch execution, straight-line catch-up/reversal and event-based history restrictions read."
        ],
        "limitations": [
          "All cancellation/termination/posting-parameter permutations not audited; no product execution."
        ],
        "raw_html_context_checks": "No tabgroups in inspected main HTML.",
        "confidence": "High for selected current source text; product behavior untested"
      },
      {
        "key": "mb500-migration",
        "requested_url": "https://learn.microsoft.com/en-us/dynamics365/fin-ops-core/dev-itpro/lifecycle-services/migrate-lifecycle-services-environments-power-platform-admin-center",
        "final_url": "https://learn.microsoft.com/en-us/dynamics365/fin-ops-core/dev-itpro/lifecycle-services/migrate-lifecycle-services-environments-power-platform-admin-center",
        "http_status": 200,
        "raw_sha256": "c5cc151e90bcc5f67c8fe32711b835ebed8295e4efc432b820918f10d674dc7e",
        "body_sha256": "4762f52d5da79a0d8e6d4a15caeb506055343cdeb7f7784fadee550c0fec02a0",
        "metadata_dates": {
          "ms.date": "2026-09-22T00:00:00Z",
          "updated_at": "2026-09-22T19:05:00Z"
        },
        "body_lines": 164,
        "raw_html_path": "technical-mb500-migration.html",
        "body_path": "technical-mb500-migration.txt",
        "semantic_read_scope": {
          "body_file_line_ranges_inclusive": [
            [
              22,
              151
            ]
          ],
          "description": "Selected saved main-body lines actually read; not HTTP verification."
        },
        "affected_exams": [
          "MB-500"
        ],
        "source_catalog_matches": [
          "mb500-migration"
        ],
        "source_candidate_matches": [],
        "observations": [
          "Public preview, sandbox first, one-way management change, database unchanged, Commerce/checker and cloud-hosted-dev exclusions, downtime/AOS, LCS slot/capacity and migration validation read."
        ],
        "limitations": [
          "No migration, provisioning, billing or deployment performed."
        ],
        "raw_html_context_checks": "No tabgroups in inspected main HTML.",
        "confidence": "High for selected current source text; product behavior untested"
      },
      {
        "key": "mb800-payables",
        "requested_url": "https://learn.microsoft.com/en-us/dynamics365/business-central/payables-agent-setup",
        "final_url": "https://learn.microsoft.com/en-us/dynamics365/business-central/payables-agent-setup",
        "http_status": 200,
        "raw_sha256": "ceeb978d6762fb011cf11673e23b98973a2f55bd7d6083cdc8ce7cb1c72d0663",
        "body_sha256": "e2e4e1a390e2a1dded1fac6bb142bd29ac4e2d67714793855947f1bba0225ac5",
        "metadata_dates": {
          "ms.date": "2026-10-02T00:00:00Z",
          "ms.update-cycle": "180-days",
          "updated_at": "2026-10-05T13:03:00Z"
        },
        "body_lines": 481,
        "raw_html_path": "technical-mb800-payables.html",
        "body_path": "technical-mb800-payables.txt",
        "semantic_read_scope": {
          "body_file_line_ranges_inclusive": [
            [
              22,
              230
            ],
            [
              300,
              340
            ]
          ],
          "description": "Selected saved main-body lines actually read; not HTTP verification."
        },
        "affected_exams": [
          "MB-800"
        ],
        "source_catalog_matches": [
          "mb800-payables-setup"
        ],
        "source_candidate_matches": [],
        "observations": [
          "GA setup designation, production-only 50-invoice auto-billable trial, activating-user context, Full Access mailbox permissions, folder/company routing and automatic resumption read. Configuration tab panels inspected."
        ],
        "limitations": [
          "Permission matrix/access tabs and known-sender companion not exhaustively reviewed; no new Always/Never precedence conclusion. No mailbox/agent execution."
        ],
        "raw_html_context_checks": "Two tabgroups: incoming/documents/samples and payablesagentconfig/payablesagentpage/perms. Incoming and document panels inspected before interpreting separate controls.",
        "confidence": "High for selected current source text; product behavior untested"
      },
      {
        "key": "mb820-try",
        "requested_url": "https://learn.microsoft.com/en-us/dynamics365/business-central/dev-itpro/developer/devenv-handling-errors-using-try-methods",
        "final_url": "https://learn.microsoft.com/en-us/dynamics365/business-central/dev-itpro/developer/devenv-handling-errors-using-try-methods",
        "http_status": 200,
        "raw_sha256": "2d1498654649ddca9c179c193c4b3ee4b3d3df4be14f679a5319ebeed742f70f",
        "body_sha256": "519327a4fc3e0e0f5e7b5e906b6bf7933740b25ffe78b03bc2300048c54e50cd",
        "metadata_dates": {
          "ms.date": "2025-06-18T00:00:00Z",
          "updated_at": "2025-06-23T13:01:00Z"
        },
        "body_lines": 157,
        "raw_html_path": "technical-mb820-try.html",
        "body_path": "technical-mb820-try.txt",
        "semantic_read_scope": {
          "body_file_line_ranges_inclusive": [
            [
              22,
              135
            ]
          ],
          "description": "Selected saved main-body lines actually read; not HTTP verification."
        },
        "affected_exams": [
          "MB-820"
        ],
        "source_catalog_matches": [
          "mb820-try"
        ],
        "source_candidate_matches": [],
        "observations": [
          "Online/on-prem write differences, nonrollback, Boolean-return handling and argument evaluation inside try call read."
        ],
        "limitations": [
          "Examples not compiled/run; current server config and future behavior not tested."
        ],
        "raw_html_context_checks": "No tabgroups in inspected main HTML.",
        "confidence": "High for selected current source text; product behavior untested"
      },
      {
        "key": "pl300-adbc",
        "requested_url": "https://learn.microsoft.com/en-us/power-query/transition-to-adbc",
        "final_url": "https://learn.microsoft.com/en-us/power-query/transition-to-adbc",
        "http_status": 200,
        "raw_sha256": "3cf60c437c0d27c2007363cc1ae39cd71ca42dea31d78953880c0f77c57e96d6",
        "body_sha256": "795d9172abb42783cf76b6a4aec46c02082909df1ee6224ebd10cb4e8e7be7ca",
        "metadata_dates": {
          "ms.date": "2026-09-03T00:00:00Z",
          "updated_at": "2026-10-26T22:03:00Z"
        },
        "body_lines": 277,
        "raw_html_path": "technical-pl300-adbc.html",
        "body_path": "technical-pl300-adbc.txt",
        "semantic_read_scope": {
          "body_file_line_ranges_inclusive": [
            [
              22,
              249
            ]
          ],
          "description": "Selected saved main-body lines actually read; not HTTP verification."
        },
        "affected_exams": [
          "PL-300"
        ],
        "source_catalog_matches": [
          "dp600-adbc"
        ],
        "source_candidate_matches": [],
        "observations": [
          "Explicit implementation precedence, cloud/gateway and DataflowsGen1 scope, planned rollout/removals, notebook diagnostic risk/coverage/telemetry caveats read."
        ],
        "limitations": [
          "Linked notebook/repository not opened/run; no complete tool endorsement. No connector/gateway validation."
        ],
        "raw_html_context_checks": "No tabgroups in inspected main HTML.",
        "confidence": "High for selected current source text; product behavior untested"
      },
      {
        "key": "pl900-evaluation",
        "requested_url": "https://learn.microsoft.com/en-us/microsoft-copilot-studio/analytics-agent-evaluation-intro",
        "final_url": "https://learn.microsoft.com/en-us/microsoft-copilot-studio/analytics-agent-evaluation-intro",
        "http_status": 200,
        "raw_sha256": "1206296133fd6b1416f082a88c93bd31378819db862b1f84629df129a6994bfb",
        "body_sha256": "6c9112f809db24e9801e320449f32f216943d3737674cd04c24e878fdaa9334b",
        "metadata_dates": {
          "ms.update-cycle": "180-days",
          "ms.date": "2026-10-05T00:00:00Z",
          "updated_at": "2026-10-06T19:03:00Z"
        },
        "body_lines": 168,
        "raw_html_path": "technical-pl900-evaluation.html",
        "body_path": "technical-pl900-evaluation.txt",
        "semantic_read_scope": {
          "body_file_line_ranges_inclusive": [
            [
              22,
              149
            ]
          ],
          "description": "Selected saved main-body lines actually read; not HTTP verification."
        },
        "affected_exams": [
          "PL-900"
        ],
        "source_catalog_matches": [
          "microsoft-copilot-studio-agent-evaluation-pl900"
        ],
        "source_candidate_matches": [],
        "observations": [
          "Standard harness, signed-in identity, repeatable test sets, response safety evaluators, GCC restrictions, Fabric/manual-auth exclusions read."
        ],
        "limitations": [
          "No evaluation/API/tenant auth execution."
        ],
        "raw_html_context_checks": "No tabgroups in inspected main HTML.",
        "confidence": "High for selected current source text; product behavior untested"
      },
      {
        "key": "sc500-release",
        "requested_url": "https://learn.microsoft.com/en-us/azure/defender-for-cloud/release-notes",
        "final_url": "https://learn.microsoft.com/en-us/azure/defender-for-cloud/release-notes",
        "http_status": 200,
        "raw_sha256": "be0a7c5aaad61742345d2d37e30cae04b3327bb2ac6f0d2eb12952d16be2d4e5",
        "body_sha256": "ecce6052b56992083d6e41181d325bf2cbb042b1f04d9ca9ea66f37d0f580102",
        "metadata_dates": {
          "ms.date": "2026-10-05T00:00:00Z",
          "updated_at": "2026-10-20T12:39:00Z"
        },
        "body_lines": 1274,
        "raw_html_path": "technical-sc500-release.html",
        "body_path": "technical-sc500-release.txt",
        "semantic_read_scope": {
          "body_file_line_ranges_inclusive": [
            [
              22,
              204
            ]
          ],
          "description": "Selected saved main-body lines actually read; not HTTP verification."
        },
        "affected_exams": [
          "SC-500"
        ],
        "source_catalog_matches": [
          "sc100-cloud-release"
        ],
        "source_candidate_matches": [],
        "observations": [
          "Oct20 preview onboarding/plan-management, Oct5 KSPM controller scope/targeted malware, Nov1 billing differences and Dec14 grouped VA retirement read. Full body literal search finds zero Foundational, October27 or July30; omission not cancellation."
        ],
        "limitations": [
          "Rest of history not semantically reviewed. Linked plan/billing pages not opened; no tenant/billing/live-security execution."
        ],
        "raw_html_context_checks": "No tabgroups in inspected main HTML.",
        "confidence": "High for selected current source text; product behavior untested"
      },
      {
        "key": "ab250-migration",
        "requested_url": "https://learn.microsoft.com/en-us/dynamics365/contact-center/administer/migrate-from-azure-communication-services",
        "final_url": "https://learn.microsoft.com/en-us/dynamics365/contact-center/administer/migrate-from-azure-communication-services",
        "http_status": 200,
        "raw_sha256": "45f0786e66b3469a6c814925521e7c8216d04471a7cb9b6359082d889e1a39df",
        "body_sha256": "b568b20d33f53d4cc8f322cbdfbf3eb5adc0a504e5976943ed1c9db64d711b3e",
        "metadata_dates": {
          "ms.date": "2026-09-23T00:00:00Z",
          "updated_at": "2026-10-08T19:04:00Z"
        },
        "body_lines": 164,
        "raw_html_path": "technical-ab250-migration.html",
        "body_path": "technical-ab250-migration.txt",
        "semantic_read_scope": {
          "body_file_line_ranges_inclusive": [
            [
              22,
              150
            ]
          ],
          "description": "Selected saved main-body lines actually read; not HTTP verification."
        },
        "affected_exams": [
          "AB-250"
        ],
        "source_catalog_matches": [
          "ab250-acs-migration"
        ],
        "source_candidate_matches": [],
        "observations": [
          "Sep30 new-number restriction persists; existing resource acquire/port and Sep2028 service end, Teams/provider destinations read."
        ],
        "limitations": [
          "No carrier/tenant/migration validation."
        ],
        "raw_html_context_checks": "No tabgroups in inspected main HTML.",
        "confidence": "High for selected current source text; product behavior untested"
      },
      {
        "key": "ab250-deprecations",
        "requested_url": "https://learn.microsoft.com/en-us/dynamics365/contact-center/implement/deprecations-contact-center",
        "final_url": "https://learn.microsoft.com/en-us/dynamics365/contact-center/implement/deprecations-contact-center",
        "http_status": 200,
        "raw_sha256": "bb2985e4ec925bf2aac91aa5e46e20041d9938f0ce1e107d35755a29eefd15da",
        "body_sha256": "ba9d18dd577c4c835c7479e2399ffa635a8829a91ada04ab0ba58ae177a6b23b",
        "metadata_dates": {
          "ms.date": "2026-09-14T00:00:00Z",
          "updated_at": "2026-09-23T13:03:00Z"
        },
        "body_lines": 78,
        "raw_html_path": "technical-ab250-deprecations.html",
        "body_path": "technical-ab250-deprecations.txt",
        "semantic_read_scope": {
          "body_file_line_ranges_inclusive": [
            [
              22,
              65
            ]
          ],
          "description": "Selected saved main-body lines actually read; not HTTP verification."
        },
        "affected_exams": [
          "AB-250"
        ],
        "source_catalog_matches": [
          "ab250-deprecations"
        ],
        "source_candidate_matches": [],
        "observations": [
          "Sep23 restriction persists; Oct30 forecasting removal/WEM replacement and Sep30 Apple config removal read."
        ],
        "limitations": [
          "No forecasting/tenant execution."
        ],
        "raw_html_context_checks": "No tabgroups in inspected main HTML.",
        "confidence": "High for selected current source text; product behavior untested"
      },
      {
        "key": "ab250-acs-retirement",
        "requested_url": "https://learn.microsoft.com/en-us/azure/communication-services/acs-retirement-and-breaking-changes-guide",
        "final_url": "https://learn.microsoft.com/en-us/azure/communication-services/acs-retirement-and-breaking-changes-guide",
        "http_status": 200,
        "raw_sha256": "df9a297d67c3cd498eadfbc04a36ca958ef55e1e0abb9bd7e907b415c3badeb3",
        "body_sha256": "e4270bcaa8be018658c2bc93156d5b1e8a28a93c06d893cef26c50b6f385cf10",
        "metadata_dates": {
          "ms.date": "2026-08-18T00:00:00Z",
          "updated_at": "2026-10-08T22:13:00Z"
        },
        "body_lines": 985,
        "raw_html_path": "technical-ab250-acs-retirement.html",
        "body_path": "technical-ab250-acs-retirement.txt",
        "semantic_read_scope": {
          "body_file_line_ranges_inclusive": [
            [
              22,
              165
            ],
            [
              339,
              413
            ],
            [
              483,
              485
            ],
            [
              511,
              523
            ],
            [
              725,
              727
            ],
            [
              830,
              834
            ]
          ],
          "description": "Selected saved main-body lines actually read; not HTTP verification."
        },
        "affected_exams": [
          "AB-250"
        ],
        "source_catalog_matches": [
          "ab250-acs-retirement"
        ],
        "source_candidate_matches": [],
        "observations": [
          "Oct23 retiring-service restriction for resources not predating date and Teams-aligned exclusion read. Number/SMS FAQ existing-number eligibility differs from resource-only wording. Retired versus breaking-change distinction read."
        ],
        "limitations": [
          "Other lengthy FAQs not semantically audited; no provider/number/SDK execution."
        ],
        "raw_html_context_checks": "No tabgroups in inspected main HTML.",
        "confidence": "High for selected current source text; product behavior untested"
      }
    ],
    "proposed_changes": [
      {
        "exam_code": "DP-900",
        "guide_path": "guides/DP-900-microsoft-azure-data-fundamentals.md",
        "old_text": "Since September 5, 2025, creating a Fabric warehouse, lakehouse or mirrored item no longer automatically creates a default Power BI semantic model. Current [semantic-model guidance](https://learn.microsoft.com/en-us/fabric/data-warehouse/semantic-models) also says existing defaults were to be decoupled by November 30, 2025. An older tutorial that expects a model to appear needs an explicit model-creation step. Retain a useful existing model and check dependent reports before deleting it.",
        "replacement_markdown": "Since September 5, 2025, creating a Fabric warehouse, lakehouse or mirrored item no longer automatically creates a default Power BI semantic model. Current [semantic-model guidance](https://learn.microsoft.com/en-us/fabric/data-warehouse/semantic-models) also says existing defaults were to be decoupled by November 30, 2025. An older tutorial that expects a model to appear needs an explicit model-creation step. Retain a useful existing model and check dependent reports before deleting it.\n\n**Schema check:** The same [semantic-model documentation](https://learn.microsoft.com/en-us/fabric/data-warehouse/semantic-models) warns that columns whose source types cannot map to Power BI types can be dropped during synchronization. If a field is missing, compare the source schema with the model and inspect type compatibility before changing a visual. An explicit supported type conversion belongs upstream when required; retaining a file in OneLake does not prove every field reached the model.",
        "reason": "Adds a concrete failure diagnosis to analytics/model lifecycle teaching, rather than equating item creation with complete schema.",
        "sources": [
          "https://learn.microsoft.com/en-us/fabric/data-warehouse/semantic-models"
        ],
        "confidence": "Confirmed source behavior; proposed study checks are not executed product evidence"
      },
      {
        "exam_code": "MB-230",
        "guide_path": "guides/MB-230-microsoft-dynamics-365-customer-service-functional-consultant.md",
        "old_text": "[Case resolution setup](https://learn.microsoft.com/en-us/dynamics365/customer-service/administer/set-up-case-resolution-agent) distinguishes Full, Require agent confirmation, Shadow mode and Disabled by line of business. Fully autonomous processing needs its application user/shared mailbox configuration, along with the documented intent, setup and billing prerequisites. Inbound email or a closed conversation transcript must be associated with the case for the corresponding standard trigger.",
        "replacement_markdown": "[Case resolution setup](https://learn.microsoft.com/en-us/dynamics365/customer-service/administer/set-up-case-resolution-agent) distinguishes Full, Require agent confirmation, Shadow mode and Disabled by line of business. Fully autonomous processing needs its application user/shared mailbox configuration, along with the documented intent, setup and billing prerequisites. Inbound email or a closed conversation transcript must be associated with the case for the corresponding standard trigger.\n\n**Language is an eligibility gate.** The same [case-resolution setup](https://learn.microsoft.com/en-us/dynamics365/customer-service/administer/set-up-case-resolution-agent) can use a configured case locale or one supported language. With the case-record option, a missing or unsupported locale causes handoff without drafting or sending email. Test a valid locale such as `en-US`, an empty value and an unsupported value alongside the automation level; a triggered case is not automatically eligible for an AI response. **VERIFY CURRENT:** supported languages and the tenant configuration.",
        "reason": "Concrete current missing-language handoff path improves service-agent setup and troubleshooting.",
        "sources": [
          "https://learn.microsoft.com/en-us/dynamics365/customer-service/administer/set-up-case-resolution-agent"
        ],
        "confidence": "Confirmed source behavior; proposed study checks are not executed product evidence"
      },
      {
        "exam_code": "MB-310",
        "guide_path": "guides/MB-310-microsoft-dynamics-365-finance-functional-consultant.md",
        "old_text": "Check the [deferral parameters](https://learn.microsoft.com/en-us/dynamics365/finance/accounts-receivable/sb-deferrals): Equal per period gives equal full-period amounts but prorates partial periods; turning it off allocates using days. Posting method and reversal settings also affect credit/termination behavior. In [recognition processing](https://learn.microsoft.com/en-us/dynamics365/finance/accounts-receivable/sb-deferrals-schedules), the cutoff includes schedule lines whose end date is on or before it. Creating a recognition journal is not evidence of posting when automatic posting is off. Once lines are recognized, schedule modification must handle their history through the supported catch-up/reversal behavior.",
        "replacement_markdown": "Check the [deferral parameters](https://learn.microsoft.com/en-us/dynamics365/finance/accounts-receivable/sb-deferrals): Equal per period gives equal full-period amounts but prorates partial periods; turning it off allocates using days. Posting method and reversal settings also affect credit/termination behavior. In [recognition processing](https://learn.microsoft.com/en-us/dynamics365/finance/accounts-receivable/sb-deferrals-schedules), the cutoff includes schedule lines whose end date is on or before it. Creating a recognition journal is not evidence of posting when automatic posting is off. Once lines are recognized, schedule modification must handle their history through the supported catch-up/reversal behavior.\n\nFor a straight-line schedule, recognition history changes the available repair: with no recognized or externally posted lines, the whole schedule, including its start date, can be modified. With history, use the documented recalculation, catch-up or reversal behavior and preview the result. An event-based schedule has different restrictions, including immutable template/allocation choices once history exists. The [schedule modification rules](https://learn.microsoft.com/en-us/dynamics365/finance/accounts-receivable/sb-deferrals-schedules) are a better diagnostic than assuming every schedule remains freely editable.",
        "reason": "Makes the existing deferral-history warning actionable without claiming accounting-policy compliance or tested postings.",
        "sources": [
          "https://learn.microsoft.com/en-us/dynamics365/finance/accounts-receivable/sb-deferrals-schedules"
        ],
        "confidence": "Confirmed source behavior; proposed study checks are not executed product evidence"
      },
      {
        "exam_code": "MB-500",
        "guide_path": "guides/MB-500-microsoft-dynamics-365-finance-operations-apps-developer.md",
        "old_text": "[Self-service migration](https://learn.microsoft.com/en-us/dynamics365/fin-ops-core/dev-itpro/lifecycle-services/migrate-lifecycle-services-environments-power-platform-admin-center) is **public preview** in September 2026: it changes each environment's management plane, not the project or database location. It is one-way for customer-initiated operations; LCS becomes read-only for that environment. Microsoft recommends sandboxes first and not production during preview. Cloud-hosted developer environments and Commerce workloads are unsupported; the prerequisite checker does not detect Commerce usage. Validate the workload separately and prepare unified deployment pipelines before a sandbox migration.",
        "replacement_markdown": "[Self-service migration](https://learn.microsoft.com/en-us/dynamics365/fin-ops-core/dev-itpro/lifecycle-services/migrate-lifecycle-services-environments-power-platform-admin-center) is **public preview** in September 2026: it changes each environment's management plane, not the project or database location. It is one-way for customer-initiated operations; LCS becomes read-only for that environment. Microsoft recommends sandboxes first and not production during preview. Cloud-hosted developer environments and Commerce workloads are unsupported; the prerequisite checker does not detect Commerce usage. Validate the workload separately and prepare unified deployment pipelines before a sandbox migration.\n\n**Migration planning check — VERIFY CURRENT:** The [migration procedure](https://learn.microsoft.com/en-us/dynamics365/fin-ops-core/dev-itpro/lifecycle-services/migrate-lifecycle-services-environments-power-platform-admin-center) estimates about 15 minutes of downtime per AOS instance and requires extra maintenance-window allowance. Migration does not return an LCS environment slot; future provisioning uses Power Platform capacity. Model a three-AOS environment as an approximately 45-minute planning estimate plus contingency, not a promised completion time. Validate copy, deployment and integrations in the migrated sandbox before the next migration.",
        "reason": "Adds source-explicit downtime/capacity and validation consequences to environment/ALM objectives while retaining existing preview restrictions.",
        "sources": [
          "https://learn.microsoft.com/en-us/dynamics365/fin-ops-core/dev-itpro/lifecycle-services/migrate-lifecycle-services-environments-power-platform-admin-center"
        ],
        "confidence": "Confirmed source behavior; proposed study checks are not executed product evidence"
      },
      {
        "exam_code": "MB-800",
        "guide_path": "guides/MB-800-microsoft-dynamics-365-business-central-functional-consultant.md",
        "old_text": "**Agent setup changes the control boundary.** Current [Payables Agent setup](https://learn.microsoft.com/en-us/dynamics365/business-central/payables-agent-setup) lists the capability as generally available; an older preview sentence in the overview is not the current activation guide. Availability still depends on the supported country/region, language, permissions and environment billing. Its production-only trial automatically becomes billable processing after 50 invoices; do not assume a sandbox exercise is covered by that trial. Credit exhaustion pauses invoice processing while the scheduled task can remain active, and replenishment can resume a backlog.",
        "replacement_markdown": "**Agent setup changes the control boundary.** Current [Payables Agent setup](https://learn.microsoft.com/en-us/dynamics365/business-central/payables-agent-setup) lists the capability as generally available; an older preview sentence in the overview is not the current activation guide. Availability still depends on the supported country/region, language, permissions and environment billing. Its production-only trial automatically becomes billable processing after 50 invoices; do not assume a sandbox exercise is covered by that trial. Credit exhaustion pauses invoice processing while the scheduled task can remain active, and replenishment can resume a backlog.\n\n**Check whose mailbox access is used.** [Payables Agent setup](https://learn.microsoft.com/en-us/dynamics365/business-central/payables-agent-setup) says activation starts a background task in the activating user's context; configuring a shared mailbox requires Full Access, and Exchange permission propagation can take hours. For multiple companies sharing a mailbox, route invoices into company-specific folders and test the intended company before activation. Folder routing also changes email-review behavior, so reconcile it with the sender controls below. **VERIFY CURRENT:** mailbox delegation, billing and supported environments.",
        "reason": "Adds concrete identity/delegation and wrong-company routing failure modes, bounded by current setup and existing sender controls.",
        "sources": [
          "https://learn.microsoft.com/en-us/dynamics365/business-central/payables-agent-setup"
        ],
        "confidence": "Confirmed source behavior; proposed study checks are not executed product evidence"
      },
      {
        "exam_code": "MB-820",
        "guide_path": "guides/MB-820-microsoft-dynamics-365-business-central-developer.md",
        "old_text": "An unhandled error normally aborts the current uncommitted database work; it does not undo earlier commits or remote effects. A caught [try-method error](https://learn.microsoft.com/en-us/dynamics365/business-central/dev-itpro/developer/devenv-handling-errors-using-try-methods) is different: database writes in that method are not automatically rolled back. Consuming the Boolean return catches the error; calling the same attributed procedure without consuming its return behaves like an ordinary call. Online permits writes inside try methods, while on-premises blocks them by default. Keep recoverable parsing/validation separate from writes.",
        "replacement_markdown": "An unhandled error normally aborts the current uncommitted database work; it does not undo earlier commits or remote effects. A caught [try-method error](https://learn.microsoft.com/en-us/dynamics365/business-central/dev-itpro/developer/devenv-handling-errors-using-try-methods) is different: database writes in that method are not automatically rolled back. Consuming the Boolean return catches the error; calling the same attributed procedure without consuming its return behaves like an ordinary call. Online permits writes inside try methods, while on-premises blocks them by default. Keep recoverable parsing/validation separate from writes.\n\nA less obvious boundary is argument evaluation: the [try-method documentation](https://learn.microsoft.com/en-us/dynamics365/business-central/dev-itpro/developer/devenv-handling-errors-using-try-methods) evaluates argument expressions inside the try call. A helper that writes a record before returning an argument still performs that write in the try context; the default on-premises write restriction applies there too. Compute write-producing arguments outside the try call only when the resulting transaction boundary is intentional. Moving a write changes error handling; it does not make the whole business operation atomic.",
        "reason": "Adds source-explicit evaluation-order pitfall to safe AL behavior, preserving online/on-prem distinction.",
        "sources": [
          "https://learn.microsoft.com/en-us/dynamics365/business-central/dev-itpro/developer/devenv-handling-errors-using-try-methods"
        ],
        "confidence": "Confirmed source behavior; proposed study checks are not executed product evidence"
      },
      {
        "exam_code": "PL-300",
        "guide_path": "guides/PL-300-microsoft-power-bi-data-analyst.md",
        "old_text": "For connectors affected by the [ODBC-to-ADBC transition](https://learn.microsoft.com/en-us/power-query/transition-to-adbc), compare effective implementation, data types, credentials, row totals and timings in Desktop and the service. Cloud tenant/workspace settings do not establish the driver used by a gateway. October default enablement and later embedded ODBC removals are planned transitions with separate rechecks, not evidence that every connection has already changed.",
        "replacement_markdown": "For connectors affected by the [ODBC-to-ADBC transition](https://learn.microsoft.com/en-us/power-query/transition-to-adbc), compare effective implementation, data types, credentials, row totals and timings in Desktop and the service. Cloud tenant/workspace settings do not establish the driver used by a gateway. October default enablement and later embedded ODBC removals are planned transitions with separate rechecks, not evidence that every connection has already changed.\n\n**VERIFY CURRENT — test the actual refresh path.** The [ADBC transition guide](https://learn.microsoft.com/en-us/power-query/transition-to-adbc) currently distinguishes cloud refresh from gateway-routed refresh, which retains the bundled ODBC path for these connectors. Tenant/workspace defaults do not rewrite M, and an explicit implementation takes precedence; Dataflows Gen1 needs per-query opt-in. Keep a copy of a critical item, compare row counts/types/timing through its real execution path, and treat the linked `pq-adbc-advisor` notebook as an optional starting diagnostic with coverage and telemetry caveats. No notebook or gateway was run in this review.",
        "reason": "Oct26 source adds scoped diagnostic and execution-path distinctions; no endorsement of an uninspected notebook or universal connector flip.",
        "sources": [
          "https://learn.microsoft.com/en-us/power-query/transition-to-adbc"
        ],
        "confidence": "Confirmed source behavior; proposed study checks are not executed product evidence"
      },
      {
        "exam_code": "PL-900",
        "guide_path": "guides/PL-900-microsoft-power-platform-fundamentals.md",
        "old_text": "The current evaluation documentation applies to the **standard harness**, supports repeatable test sets and user profiles, and describes REST/flow automation. GCC has profile and similarity-method restrictions; Fabric data agents are currently excluded. Test chat and repeatable evaluations serve different purposes. Do not infer that an aggregate score proves correct authorization.",
        "replacement_markdown": "The current evaluation documentation applies to the **standard harness**, supports repeatable test sets and user profiles, and describes REST/flow automation. GCC has profile and similarity-method restrictions; Fabric data agents are currently excluded. Test chat and repeatable evaluations serve different purposes. Do not infer that an aggregate score proves correct authorization.\n\n**Identity check — VERIFY CURRENT:** [Evaluations run as the signed-in user](https://learn.microsoft.com/en-us/microsoft-copilot-studio/analytics-agent-evaluation-intro). To test another user's access, sign in as that authorized test identity; changing a test profile is not proof of impersonation. Current supported agent authentication modes are No authentication and Authenticate with Microsoft; manual authentication is excluded. Response-safety evaluators cover several harmful-content categories, but their scores do not establish correct tool authorization or guarantee safety for every scenario. Keep access-denial tests alongside response-quality tests.",
        "reason": "Adds actual evaluation identity/authentication constraints and separates response safety from tool authorization.",
        "sources": [
          "https://learn.microsoft.com/en-us/microsoft-copilot-studio/analytics-agent-evaluation-intro"
        ],
        "confidence": "Confirmed source behavior; proposed study checks are not executed product evidence"
      },
      {
        "exam_code": "SC-500",
        "guide_path": "guides/SC-500-microsoft-cloud-ai-security-engineer.md",
        "old_text": "| October 27, 2026, announced | Foundational CSPM becomes opt-in for new Azure subscriptions | Add explicit onboarding checks. Existing subscriptions and AWS/GCP are outside this change. The foundational plan remains free. |",
        "replacement_markdown": "| October 28, 2026 source recheck | The current release-note body no longer includes the earlier October 27 Foundational CSPM opt-in announcement | **Unconfirmed — validation needed:** recheck actual onboarding and current Microsoft guidance. An omitted announcement does not prove either rollout or cancellation. |\n| October 20, 2026, public preview | Cloud security plan management in the Defender portal for Azure commercial environments | The notice describes Defender-owned configuration, Azure view-only configuration and DWU-based billing for migrated subscriptions; verify the actual migration state before changing plans. |\n| October 5, 2026, GA notice | KSPM recommendations move from running-container scope to workload-controller scope | Reconcile changed recommendation populations and Secure Score impact before interpreting a count change as remediation. |\n| November 1, 2026, announced | Defender for Servers billing classification and identification change | **VERIFY CURRENT:** distinguish Plan 1 desktop-device treatment from Plan 1/2 server-count identification; billing classification alone does not establish supported OS or licensing eligibility. |",
        "reason": "Qualifies absent past rollout notice, preserves discrepancy and adds current Oct/Nov control-plane, monitoring and cost boundaries.",
        "sources": [
          "https://learn.microsoft.com/en-us/azure/defender-for-cloud/release-notes"
        ],
        "confidence": "Confirmed source behavior; proposed study checks are not executed product evidence"
      },
      {
        "exam_code": "AB-250",
        "guide_path": "guides/AB-250-transforming-contact-center-experiences-ai-dynamics-365.md",
        "old_text": "The [Contact Center migration plan](https://learn.microsoft.com/en-us/dynamics365/contact-center/administer/migrate-from-azure-communication-services) and [deprecation ledger](https://learn.microsoft.com/en-us/dynamics365/contact-center/implement/deprecations-contact-center) agree that affected ACS-dependent voice/messaging paths need migration before **September 30, 2028**. They conflict on new-customer phone-number acquisition/port-in restrictions: the plan says **September 30, 2026**, while the ledger says **September 23**. The [ACS retirement guide](https://learn.microsoft.com/en-us/azure/communication-services/acs-retirement-and-breaking-changes-guide) separately gives **October 23** for new retiring-service sign-ups and has phone-number-specific eligibility wording. Do not substitute that sign-up date for a phone-number cutoff or assume an existing resource without numbers qualifies. Current acquisition eligibility needs Microsoft confirmation; it is an unresolved source gap, not a tested tenant result.",
        "replacement_markdown": "**VERIFY CURRENT — checked October 28, 2026:** The [Contact Center migration plan](https://learn.microsoft.com/en-us/dynamics365/contact-center/administer/migrate-from-azure-communication-services) and [deprecation ledger](https://learn.microsoft.com/en-us/dynamics365/contact-center/implement/deprecations-contact-center) retain September 30, 2028 end of service for affected ACS-dependent channels. Their new-customer number restrictions still differ: September 30, 2026 in the plan and September 23 in the ledger. The current [ACS retirement guide](https://learn.microsoft.com/en-us/azure/communication-services/acs-retirement-and-breaking-changes-guide) describes restrictions beginning October 23, 2026 for retiring services and customers without an ACS resource created before that date; supported Teams-aligned scenarios are excluded from those onboarding restrictions. Its number-management and SMS FAQ still uses existing-phone-number eligibility wording. These are materially different date and eligibility statements, not interchangeable definitions of a sign-up cutoff.\n\n**More research needed — next pass:** Ask Microsoft to confirm acquisition/port-in eligibility for the specific tenant, resource creation date, existing-number state and retiring workload. Do not infer that an empty older resource qualifies. Preserve the supported-channel migration plan while that eligibility question remains blocked; no tenant, call or number-acquisition test was performed.",
        "reason": "Current ACS general note explicitly includes number acquisition under Oct23 restriction; older sign-ups-only framing incomplete. Date/resource-versus-number conflicts remain after raw HTML context checks.",
        "sources": [
          "https://learn.microsoft.com/en-us/dynamics365/contact-center/administer/migrate-from-azure-communication-services",
          "https://learn.microsoft.com/en-us/dynamics365/contact-center/implement/deprecations-contact-center",
          "https://learn.microsoft.com/en-us/azure/communication-services/acs-retirement-and-breaking-changes-guide"
        ],
        "confidence": "Confirmed source behavior; proposed study checks are not executed product evidence"
      }
    ],
    "new_sources": [],
    "new_sources_reason": "Every supporting exact URL already cataloged; no new promotion needed.",
    "source_catalog_refresh": [
      {
        "source_id": "dp900-semantic",
        "url": "https://learn.microsoft.com/en-us/fabric/data-warehouse/semantic-models",
        "last_checked": "2026-10-28",
        "notes_append": "October 28 group-04 bounded technical reading: main-body lines 22-85. Sep5 automatic-model end and Nov30 decoupling dates retained; unsupported source-to-Power-BI types can drop columns. Broad fallback paragraph not used as universal Direct Lake statement. Limits: No model created/refreshed; no Direct Lake variant audit. Evidence: .maintenance/2026-10-28-remaining-refresh/group-04/technical-dp900-semantic.txt; raw HTML retained. No full-guide/live-product verification claim."
      },
      {
        "source_id": "mb230-agent-resolution",
        "url": "https://learn.microsoft.com/en-us/dynamics365/customer-service/administer/set-up-case-resolution-agent",
        "last_checked": "2026-10-28",
        "notes_append": "October 28 group-04 bounded technical reading: main-body lines 22-299. Automation modes, application user/mailbox prerequisites, preview credit-consuming 100-case simulation/shadow and locale-gated handoff read. Require-confirmation setup still says review/send; runtime table remains less precise. Limits: No runtime companion article opened; no tenant execution. Evidence: .maintenance/2026-10-28-remaining-refresh/group-04/technical-mb230-agent.txt; raw HTML retained. No full-guide/live-product verification claim."
      },
      {
        "source_id": "mb310-deferral-schedules",
        "url": "https://learn.microsoft.com/en-us/dynamics365/finance/accounts-receivable/sb-deferrals-schedules",
        "last_checked": "2026-10-28",
        "notes_append": "October 28 group-04 bounded technical reading: main-body lines 22-135, 185-220, 245-310. Inclusive recognition cutoff, deferred batch execution, straight-line catch-up/reversal and event-based history restrictions read. Limits: All cancellation/termination/posting-parameter permutations not audited; no product execution. Evidence: .maintenance/2026-10-28-remaining-refresh/group-04/technical-mb310-deferral.txt; raw HTML retained. No full-guide/live-product verification claim."
      },
      {
        "source_id": "mb500-migration",
        "url": "https://learn.microsoft.com/en-us/dynamics365/fin-ops-core/dev-itpro/lifecycle-services/migrate-lifecycle-services-environments-power-platform-admin-center",
        "last_checked": "2026-10-28",
        "notes_append": "October 28 group-04 bounded technical reading: main-body lines 22-151. Public preview, sandbox first, one-way management change, database unchanged, Commerce/checker and cloud-hosted-dev exclusions, downtime/AOS, LCS slot/capacity and migration validation read. Limits: No migration, provisioning, billing or deployment performed. Evidence: .maintenance/2026-10-28-remaining-refresh/group-04/technical-mb500-migration.txt; raw HTML retained. No full-guide/live-product verification claim."
      },
      {
        "source_id": "mb800-payables-setup",
        "url": "https://learn.microsoft.com/en-us/dynamics365/business-central/payables-agent-setup",
        "last_checked": "2026-10-28",
        "notes_append": "October 28 group-04 bounded technical reading: main-body lines 22-230, 300-340. GA setup designation, production-only 50-invoice auto-billable trial, activating-user context, Full Access mailbox permissions, folder/company routing and automatic resumption read. Configuration tab panels inspected. Limits: Permission matrix/access tabs and known-sender companion not exhaustively reviewed; no new Always/Never precedence conclusion. No mailbox/agent execution. Evidence: .maintenance/2026-10-28-remaining-refresh/group-04/technical-mb800-payables.txt; raw HTML retained. No full-guide/live-product verification claim."
      },
      {
        "source_id": "mb820-try",
        "url": "https://learn.microsoft.com/en-us/dynamics365/business-central/dev-itpro/developer/devenv-handling-errors-using-try-methods",
        "last_checked": "2026-10-28",
        "notes_append": "October 28 group-04 bounded technical reading: main-body lines 22-135. Online/on-prem write differences, nonrollback, Boolean-return handling and argument evaluation inside try call read. Limits: Examples not compiled/run; current server config and future behavior not tested. Evidence: .maintenance/2026-10-28-remaining-refresh/group-04/technical-mb820-try.txt; raw HTML retained. No full-guide/live-product verification claim."
      },
      {
        "source_id": "dp600-adbc",
        "url": "https://learn.microsoft.com/en-us/power-query/transition-to-adbc",
        "last_checked": "2026-10-28",
        "notes_append": "October 28 group-04 bounded technical reading: main-body lines 22-249. Explicit implementation precedence, cloud/gateway and DataflowsGen1 scope, planned rollout/removals, notebook diagnostic risk/coverage/telemetry caveats read. Limits: Linked notebook/repository not opened/run; no complete tool endorsement. No connector/gateway validation. Evidence: .maintenance/2026-10-28-remaining-refresh/group-04/technical-pl300-adbc.txt; raw HTML retained. No full-guide/live-product verification claim."
      },
      {
        "source_id": "microsoft-copilot-studio-agent-evaluation-pl900",
        "url": "https://learn.microsoft.com/en-us/microsoft-copilot-studio/analytics-agent-evaluation-intro",
        "last_checked": "2026-10-28",
        "notes_append": "October 28 group-04 bounded technical reading: main-body lines 22-149. Standard harness, signed-in identity, repeatable test sets, response safety evaluators, GCC restrictions, Fabric/manual-auth exclusions read. Limits: No evaluation/API/tenant auth execution. Evidence: .maintenance/2026-10-28-remaining-refresh/group-04/technical-pl900-evaluation.txt; raw HTML retained. No full-guide/live-product verification claim."
      },
      {
        "source_id": "sc100-cloud-release",
        "url": "https://learn.microsoft.com/en-us/azure/defender-for-cloud/release-notes",
        "last_checked": "2026-10-28",
        "notes_append": "October 28 group-04 bounded technical reading: main-body lines 22-204. Oct20 preview onboarding/plan-management, Oct5 KSPM controller scope/targeted malware, Nov1 billing differences and Dec14 grouped VA retirement read. Full body literal search finds zero Foundational, October27 or July30; omission not cancellation. Limits: Rest of history not semantically reviewed. Linked plan/billing pages not opened; no tenant/billing/live-security execution. Evidence: .maintenance/2026-10-28-remaining-refresh/group-04/technical-sc500-release.txt; raw HTML retained. No full-guide/live-product verification claim."
      },
      {
        "source_id": "ab250-acs-migration",
        "url": "https://learn.microsoft.com/en-us/dynamics365/contact-center/administer/migrate-from-azure-communication-services",
        "last_checked": "2026-10-28",
        "notes_append": "October 28 group-04 bounded technical reading: main-body lines 22-150. Sep30 new-number restriction persists; existing resource acquire/port and Sep2028 service end, Teams/provider destinations read. Limits: No carrier/tenant/migration validation. Evidence: .maintenance/2026-10-28-remaining-refresh/group-04/technical-ab250-migration.txt; raw HTML retained. No full-guide/live-product verification claim."
      },
      {
        "source_id": "ab250-deprecations",
        "url": "https://learn.microsoft.com/en-us/dynamics365/contact-center/implement/deprecations-contact-center",
        "last_checked": "2026-10-28",
        "notes_append": "October 28 group-04 bounded technical reading: main-body lines 22-65. Sep23 restriction persists; Oct30 forecasting removal/WEM replacement and Sep30 Apple config removal read. Limits: No forecasting/tenant execution. Evidence: .maintenance/2026-10-28-remaining-refresh/group-04/technical-ab250-deprecations.txt; raw HTML retained. No full-guide/live-product verification claim."
      },
      {
        "source_id": "ab250-acs-retirement",
        "url": "https://learn.microsoft.com/en-us/azure/communication-services/acs-retirement-and-breaking-changes-guide",
        "last_checked": "2026-10-28",
        "notes_append": "October 28 group-04 bounded technical reading: main-body lines 22-165, 339-413, 483-485, 511-523, 725-727, 830-834. Oct23 retiring-service restriction for resources not predating date and Teams-aligned exclusion read. Number/SMS FAQ existing-number eligibility differs from resource-only wording. Retired versus breaking-change distinction read. Limits: Other lengthy FAQs not semantically audited; no provider/number/SDK execution. Evidence: .maintenance/2026-10-28-remaining-refresh/group-04/technical-ab250-acs-retirement.txt; raw HTML retained. No full-guide/live-product verification claim."
      }
    ],
    "retained_blockers": [
      {
        "exam_code": "MB-230",
        "issue": "Require-confirmation setup versus imprecise semi-autonomous runtime-table send wording",
        "recommendation": "Preserve configured approval and require authorized tenant trace before runtime assurance."
      },
      {
        "exam_code": "AB-250",
        "issue": "Phone-number acquisition/port-in date and resource-versus-existing-number eligibility conflict",
        "recommendation": "Retain Microsoft confirmation request. No tabgroups explain differences; relevant retiring workload/date scopes inspected."
      },
      {
        "exam_code": "SC-500",
        "issue": "Earlier Oct27 Foundational opt-in announcement omitted from current release-note body",
        "recommendation": "Qualify as unconfirmed, retain historical observation; omission proves neither completion nor cancellation."
      }
    ],
    "limitations": [
      "No human review, paid access, cloud resource, agent, API, telephony, SDK or lab execution.",
      "No collectors, acceptance, generators or repository validation performed by worker.",
      "Source body scopes and guide coverage are intentionally bounded; no whole-library technical audit claimed."
    ],
    "bounded_recommendation": "Apply narrow teaching/qualification patches after checking old-text uniqueness and frozen input hashes. Append source notes without replacing history. Retain runtime and ACS eligibility gaps, and perform required fresh-context review after shared edits."
  },
  "learning_research": {
    "schema_version": 1,
    "date": "2026-10-28",
    "packet": "group-04",
    "role": "learning-resource-researcher",
    "status": "preliminary-read-only-proposals",
    "input_hashes": {
      "DP-900": {
        "guide_path": "guides/DP-900-microsoft-azure-data-fundamentals.md",
        "sha256_lf": "3ab634df7d0d9db86be9f2d23da1014ac5ef05e6b701d7a5e494202774474a6e"
      },
      "MB-230": {
        "guide_path": "guides/MB-230-microsoft-dynamics-365-customer-service-functional-consultant.md",
        "sha256_lf": "fc595c40de2aa905feb11a2e68914673f7443ab59204b5c7658c29f1b21daae2"
      },
      "MB-310": {
        "guide_path": "guides/MB-310-microsoft-dynamics-365-finance-functional-consultant.md",
        "sha256_lf": "ecba021e209cf66f5221a50c341c490f30dd92ab8579ff4d95b61216ddb47f48"
      },
      "MB-500": {
        "guide_path": "guides/MB-500-microsoft-dynamics-365-finance-operations-apps-developer.md",
        "sha256_lf": "823c2995491919379df843836a8675e38691f6933484515be1abc50365248d80"
      },
      "MB-800": {
        "guide_path": "guides/MB-800-microsoft-dynamics-365-business-central-functional-consultant.md",
        "sha256_lf": "2031a157af330803a99956115b1a9f2402d1cd6c122bc2d74773a959b5370583"
      },
      "MB-820": {
        "guide_path": "guides/MB-820-microsoft-dynamics-365-business-central-developer.md",
        "sha256_lf": "2e6fe4344ecc6c46b33b04960cdb8f597932f536acd7b6b5ec76cba89cb84b2b"
      },
      "PL-300": {
        "guide_path": "guides/PL-300-microsoft-power-bi-data-analyst.md",
        "sha256_lf": "b6d4a0f04fd84f156294799c1c07eec99e61b438c121737cfee4c1c33655c5bc"
      },
      "PL-900": {
        "guide_path": "guides/PL-900-microsoft-power-platform-fundamentals.md",
        "sha256_lf": "60180df612865c9cba379ffa3e6dfae25b7a6e84ce9ec0ef6481f77b9fbf31a5"
      },
      "SC-500": {
        "guide_path": "guides/SC-500-microsoft-cloud-ai-security-engineer.md",
        "sha256_lf": "dd9b0133a6cae3fc6ce9bb3df39de6ac7e298a56c86d83b5bfeadf72eb1d67e4"
      },
      "AB-250": {
        "guide_path": "guides/AB-250-transforming-contact-center-experiences-ai-dynamics-365.md",
        "sha256_lf": "ecee8b47d8f7920425965d57834283e0bcbe52afdf7eca4ba7c9645f35855762"
      }
    },
    "reading_boundary": "Complete Places-to-learn sections of ten scratch input guides read. Ten official course overview/audience/duration pages read; dynamic course syllabus details were placeholders. Focused units/labs read as individually scoped; no complete paid course, lesson video, assessment questions or cloud/lab run. Sources are learning evidence; objective authority remains the official blueprint.",
    "observations": [
      {
        "exam_codes": [
          "DP-900"
        ],
        "url": "https://learn.microsoft.com/en-us/training/courses/dp-900t00",
        "source_catalog_match": "microsoft-dp-900-course",
        "candidate_match": null,
        "read_scope": "Complete rendered public course overview, audience, duration and language list. Syllabus heading rendered placeholders rather than detailed modules; no complete linked lesson/course consumption claimed.",
        "observation": "Public course overview still lists 1 instructor day(s). 13 languages; core relational/nonrelational concepts, warehousing, real-time analytics and visualization.",
        "confidence": "high",
        "limitations": "No product execution, paid lessons, video watching or assessment-question review.",
        "publication_or_update": "No reliable separate publication/update date displayed in this reviewed scope.",
        "authority_class": 3
      },
      {
        "exam_codes": [
          "MB-230"
        ],
        "url": "https://learn.microsoft.com/en-us/training/courses/mb-230t01",
        "source_catalog_match": "mb-230-course",
        "candidate_match": null,
        "read_scope": "Complete rendered public course overview, audience, duration and language list. Syllabus heading rendered placeholders rather than detailed modules; no complete linked lesson/course consumption claimed.",
        "observation": "Public course overview still lists 4 instructor day(s). English; case creation, queue management, interaction, resolution and analysis.",
        "confidence": "high",
        "limitations": "No product execution, paid lessons, video watching or assessment-question review.",
        "publication_or_update": "No reliable separate publication/update date displayed in this reviewed scope.",
        "authority_class": 3
      },
      {
        "exam_codes": [
          "MB-310"
        ],
        "url": "https://learn.microsoft.com/en-us/training/courses/mb-310t00",
        "source_catalog_match": "mb-310-course",
        "candidate_match": null,
        "read_scope": "Complete rendered public course overview, audience, duration and language list. Syllabus heading rendered placeholders rather than detailed modules; no complete linked lesson/course consumption claimed.",
        "observation": "Public course overview still lists 4 instructor day(s). English; financial configuration, payables, receivables, collections, budgeting and fixed assets.",
        "confidence": "high",
        "limitations": "No product execution, paid lessons, video watching or assessment-question review.",
        "publication_or_update": "No reliable separate publication/update date displayed in this reviewed scope.",
        "authority_class": 3
      },
      {
        "exam_codes": [
          "MB-500"
        ],
        "url": "https://learn.microsoft.com/en-us/training/courses/mb-500t00",
        "source_catalog_match": "mb-500-course",
        "candidate_match": null,
        "read_scope": "Complete rendered public course overview, audience, duration and language list. Syllabus heading rendered placeholders rather than detailed modules; no complete linked lesson/course consumption claimed.",
        "observation": "Public course overview still lists 5 instructor day(s). English; developer implementation and extension responsibilities.",
        "confidence": "high",
        "limitations": "No product execution, paid lessons, video watching or assessment-question review.",
        "publication_or_update": "No reliable separate publication/update date displayed in this reviewed scope.",
        "authority_class": 3
      },
      {
        "exam_codes": [
          "MB-800"
        ],
        "url": "https://learn.microsoft.com/en-us/training/courses/mb-800t00",
        "source_catalog_match": "mb-800-course",
        "candidate_match": null,
        "read_scope": "Complete rendered public course overview, audience, duration and language list. Syllabus heading rendered placeholders rather than detailed modules; no complete linked lesson/course consumption claimed.",
        "observation": "Public course overview still lists 5 instructor day(s). English; core setup, migration, finance, sales, purchasing and inventory.",
        "confidence": "high",
        "limitations": "No product execution, paid lessons, video watching or assessment-question review.",
        "publication_or_update": "No reliable separate publication/update date displayed in this reviewed scope.",
        "authority_class": 3
      },
      {
        "exam_codes": [
          "MB-820"
        ],
        "url": "https://learn.microsoft.com/en-us/training/courses/mb-820t00",
        "source_catalog_match": "mb-820-course",
        "candidate_match": null,
        "read_scope": "Complete rendered public course overview, audience, duration and language list. Syllabus heading rendered placeholders rather than detailed modules; no complete linked lesson/course consumption claimed.",
        "observation": "Public course overview still lists 5 instructor day(s). English; extensions, events, integration, debugging, performance, upgrades and data migration.",
        "confidence": "high",
        "limitations": "No product execution, paid lessons, video watching or assessment-question review.",
        "publication_or_update": "No reliable separate publication/update date displayed in this reviewed scope.",
        "authority_class": 3
      },
      {
        "exam_codes": [
          "PL-300"
        ],
        "url": "https://learn.microsoft.com/en-us/training/courses/pl-300t00",
        "source_catalog_match": "pl-300-course",
        "candidate_match": null,
        "read_scope": "Complete rendered public course overview, audience, duration and language list. Syllabus heading rendered placeholders rather than detailed modules; no complete linked lesson/course consumption claimed.",
        "observation": "Public course overview still lists 3 instructor day(s). Ten languages; data access/processing, modeling, reporting, analysis and distribution.",
        "confidence": "high",
        "limitations": "No product execution, paid lessons, video watching or assessment-question review.",
        "publication_or_update": "No reliable separate publication/update date displayed in this reviewed scope.",
        "authority_class": 3
      },
      {
        "exam_codes": [
          "PL-900"
        ],
        "url": "https://learn.microsoft.com/en-us/training/courses/pl-900t00",
        "source_catalog_match": "microsoft-pl-900-course",
        "candidate_match": null,
        "read_scope": "Complete rendered public course overview, audience, duration and language list. Syllabus heading rendered placeholders rather than detailed modules; no complete linked lesson/course consumption claimed.",
        "observation": "Public course overview still lists 1 instructor day(s). Twelve languages; business value, Dataverse, canvas/model-driven apps, flows, sites and copilots. Overview does not establish detailed July agent/code/Plan-designer coverage.",
        "confidence": "high",
        "limitations": "No product execution, paid lessons, video watching or assessment-question review.",
        "publication_or_update": "No reliable separate publication/update date displayed in this reviewed scope.",
        "authority_class": 3
      },
      {
        "exam_codes": [
          "SC-500"
        ],
        "url": "https://learn.microsoft.com/en-us/training/courses/sc-500t00",
        "source_catalog_match": "sc-500-instructor-course",
        "candidate_match": null,
        "read_scope": "Complete rendered public course overview, audience, duration and language list. Syllabus heading rendered placeholders rather than detailed modules; no complete linked lesson/course consumption claimed.",
        "observation": "Public course overview still lists 4 instructor day(s). Ten languages; identity/Key Vault, compliance, storage/database/network, compute, AI and posture responsibilities.",
        "confidence": "high",
        "limitations": "No product execution, paid lessons, video watching or assessment-question review.",
        "publication_or_update": "No reliable separate publication/update date displayed in this reviewed scope.",
        "authority_class": 3
      },
      {
        "exam_codes": [
          "AB-250"
        ],
        "url": "https://learn.microsoft.com/en-us/training/courses/ab-250t00",
        "source_catalog_match": "ab-250-course",
        "candidate_match": null,
        "read_scope": "Complete rendered public course overview, audience, duration and language list. Syllabus heading rendered placeholders rather than detailed modules; no complete linked lesson/course consumption claimed.",
        "observation": "Public course overview still lists 3 instructor day(s). Seven languages: English, Simplified Chinese, French, German, Japanese, Brazilian Portuguese and Spanish; deployment modes, data/CCaaS connections, channels, users/security and AI.",
        "confidence": "high",
        "limitations": "No product execution, paid lessons, video watching or assessment-question review.",
        "publication_or_update": "No reliable separate publication/update date displayed in this reviewed scope.",
        "authority_class": 3
      },
      {
        "exam_codes": [
          "DP-900"
        ],
        "url": "https://learn.microsoft.com/en-us/training/modules/examine-components-of-modern-data-warehouse/",
        "source_catalog_match": "microsoft-dp900-large-scale-analytics-module",
        "candidate_match": null,
        "read_scope": "Complete module outline and prerequisites; selected units separately recorded.",
        "observation": "Seven-unit module explicitly includes Fabric ingestion/analysis; current module total runtime not rendered.",
        "confidence": "high",
        "limitations": "No product execution, paid lessons, video watching or assessment-question review.",
        "publication_or_update": "No reliable separate publication/update date displayed in this reviewed scope.",
        "authority_class": 3
      },
      {
        "exam_codes": [
          "DP-900"
        ],
        "url": "https://learn.microsoft.com/en-us/training/modules/examine-components-of-modern-data-warehouse/2-describe-warehousing",
        "source_catalog_match": null,
        "candidate_match": null,
        "read_scope": "Readable text body; warehouse/ingestion units complete; analytical-store core through lakehouse/OneLake paragraphs. Embedded videos not watched and diagrams not independently inspected.",
        "observation": "3-minute published unit estimate. Architecture layers distinguish ingestion, analytical storage, semantic model and visualization; Fabric and Azure Databricks examples.",
        "confidence": "high",
        "limitations": "No product execution, paid lessons, video watching or assessment-question review.",
        "publication_or_update": "No reliable separate publication/update date displayed in this reviewed scope.",
        "authority_class": 3
      },
      {
        "exam_codes": [
          "DP-900"
        ],
        "url": "https://learn.microsoft.com/en-us/training/modules/examine-components-of-modern-data-warehouse/3-data-ingestion-pipelines",
        "source_catalog_match": null,
        "candidate_match": null,
        "read_scope": "Readable text body; warehouse/ingestion units complete; analytical-store core through lakehouse/OneLake paragraphs. Embedded videos not watched and diagrams not independently inspected.",
        "observation": "5-minute published unit estimate. Pipelines/Dataflows Gen2, shortcuts, mirroring, Eventstream and notebooks offer a practical ingestion-choice worksheet. Do not adopt its absolute no-movement/no-duplication wording without product-specific cache/security checks.",
        "confidence": "high",
        "limitations": "No product execution, paid lessons, video watching or assessment-question review.",
        "publication_or_update": "No reliable separate publication/update date displayed in this reviewed scope.",
        "authority_class": 3
      },
      {
        "exam_codes": [
          "DP-900"
        ],
        "url": "https://learn.microsoft.com/en-us/training/modules/examine-components-of-modern-data-warehouse/4-analytical-data-stores",
        "source_catalog_match": null,
        "candidate_match": null,
        "read_scope": "Readable text body; warehouse/ingestion units complete; analytical-store core through lakehouse/OneLake paragraphs. Embedded videos not watched and diagrams not independently inspected.",
        "observation": "8-minute published unit estimate. Warehouse star-schema, lake schema-on-read and lakehouse distinctions support store-selection reasoning.",
        "confidence": "high",
        "limitations": "No product execution, paid lessons, video watching or assessment-question review.",
        "publication_or_update": "No reliable separate publication/update date displayed in this reviewed scope.",
        "authority_class": 3
      },
      {
        "exam_codes": [
          "DP-900"
        ],
        "url": "https://learn.microsoft.com/en-us/training/modules/examine-components-of-modern-data-warehouse/5-exercise-data-analytics-fabric",
        "source_catalog_match": null,
        "candidate_match": null,
        "read_scope": "Complete exercise introduction and account prerequisite. Underlying launch URL found in returned HTML; redirect could not be opened; detailed launched lab not read.",
        "observation": "Published 30-minute introductory lakehouse ingestion/analysis exercise requires Fabric account or trial; no free entitlement guarantee.",
        "confidence": "high",
        "limitations": "No product execution, paid lessons, video watching or assessment-question review.",
        "publication_or_update": "No reliable separate publication/update date displayed in this reviewed scope.",
        "authority_class": 3
      },
      {
        "exam_codes": [
          "DP-900"
        ],
        "url": "https://go.microsoft.com/fwlink/?linkid=2262126&azure-portal=true",
        "read_scope": "Launch link from exercise HTML",
        "observation": "Body not available through this attempted route.",
        "confidence": "high for access limitation only",
        "limitations": "Web tool inaccessible; no launched instructions or lab execution.",
        "source_catalog_match": null,
        "candidate_match": null
      },
      {
        "exam_codes": [
          "MB-230"
        ],
        "url": "https://learn.microsoft.com/en-us/training/paths/work-with-entitlements-and-slas-in-microsoft-dynamics-365-for-customer-service/",
        "source_catalog_match": "mb-230-path-slas",
        "candidate_match": null,
        "read_scope": "Complete public path outline; linked lessons not all read.",
        "observation": "Two-module path still separates SLA commitments from entitlement coverage/consumption; requires trial or tenant access for practice.",
        "confidence": "high",
        "limitations": "No product execution, paid lessons, video watching or assessment-question review.",
        "publication_or_update": "No reliable separate publication/update date displayed in this reviewed scope.",
        "authority_class": 3
      },
      {
        "exam_codes": [
          "MB-230"
        ],
        "url": "https://learn.microsoft.com/en-us/training/modules/service-level-agreements/",
        "source_catalog_match": null,
        "candidate_match": null,
        "read_scope": "Complete public module outline.",
        "observation": "Eight-unit outline covers calendars, KPIs, items, custom KPIs and applying/managing SLAs; aggregate runtime absent.",
        "confidence": "high",
        "limitations": "No product execution, paid lessons, video watching or assessment-question review.",
        "publication_or_update": "No reliable separate publication/update date displayed in this reviewed scope.",
        "authority_class": 3
      },
      {
        "exam_codes": [
          "MB-230"
        ],
        "url": "https://learn.microsoft.com/en-us/training/modules/service-level-agreements/define-service-level-agreement",
        "source_catalog_match": null,
        "candidate_match": null,
        "read_scope": "Complete readable main unit text; screenshots and linked product reference not independently inspected.",
        "observation": "Published nine-minute unit distinguishes KPI/applicability/success/pause/warning/failure, protected action-flow branches and specific-before-general ordering.",
        "confidence": "high",
        "limitations": "No product execution, paid lessons, video watching or assessment-question review.",
        "publication_or_update": "No reliable separate publication/update date displayed in this reviewed scope.",
        "authority_class": 3
      },
      {
        "exam_codes": [
          "MB-310"
        ],
        "url": "https://github.com/MicrosoftLearning/MB-310-Microsoft-Dynamics-365-Finance",
        "source_catalog_match": "mb-310-labs",
        "candidate_match": null,
        "read_scope": "Repository root metadata and linked hosted directory; selected lab recorded separately; license text inspected.",
        "observation": "Hosted exercise directory and one specific lab read; do not infer all repository labs are current or executable. MIT license text inspected (copyright 2019 Sidney Andrews).",
        "confidence": "high",
        "limitations": "No scripts, solutions, PBIX, screenshots or hosted environment executed. Original exercise synthesis only; no upstream code or lab text republished.",
        "publication_or_update": "No reliable separate publication/update date displayed in this reviewed scope.",
        "authority_class": 3
      },
      {
        "exam_codes": [
          "MB-310"
        ],
        "url": "https://microsoftlearning.github.io/MB-310-Microsoft-Dynamics-365-Finance/Instructions/Labs/LP3%20Lab%20-%20Breakdown%20of%20voucher.html",
        "source_catalog_match": null,
        "candidate_match": null,
        "read_scope": "Complete textual body/change record, not screenshot rendering.",
        "observation": "Current change record reaches February 10, 2026. Multi-tax invoice journal workflow is useful for voucher reconciliation; USMF/demo data and old invoice date are assumptions. Expired-certificate bypass instruction is inappropriate to transfer to an independent learner environment.",
        "confidence": "high",
        "limitations": "Public reading only. Requires learner-supplied authorized environment/tools; no lab execution. MIT repository license inspected; no copied lab text/code.",
        "publication_or_update": "No reliable separate publication/update date displayed in this reviewed scope.",
        "authority_class": 3
      },
      {
        "exam_codes": [
          "MB-310"
        ],
        "url": "https://github.com/MicrosoftLearning/MB-310-Microsoft-Dynamics-365-Finance/blob/master/LICENSE",
        "read_scope": "License text including MIT label, copyright 2019 Sidney Andrews, permission/notice condition and warranty disclaimer.",
        "observation": "Repository license inspected; no source text/code copied into proposed guide prose.",
        "confidence": "high",
        "limitations": "License inspection does not verify runtime safety or technical correctness.",
        "source_catalog_match": null,
        "candidate_match": null
      },
      {
        "exam_codes": [
          "MB-500"
        ],
        "url": "https://github.com/MicrosoftLearning/MB-500-Microsoft-Dynamics-365-Finance-and-Operations-Apps-Developer",
        "source_catalog_match": "mb-500-labs",
        "candidate_match": null,
        "read_scope": "Repository root metadata and linked hosted directory; selected lab recorded separately; license text inspected.",
        "observation": "Hosted exercise directory and one specific lab read; do not infer all repository labs are current or executable. MIT license text inspected (copyright 2019 Sidney Andrews).",
        "confidence": "high",
        "limitations": "No scripts, solutions, PBIX, screenshots or hosted environment executed. Original exercise synthesis only; no upstream code or lab text republished.",
        "publication_or_update": "No reliable separate publication/update date displayed in this reviewed scope.",
        "authority_class": 3
      },
      {
        "exam_codes": [
          "MB-500"
        ],
        "url": "https://microsoftlearning.github.io/MB-500-Microsoft-Dynamics-365-Finance-and-Operations-Apps-Developer/Instructions/Labs/Lab%20-%201%20-%20Work%20with%20trace%20and%20import%20it%20to%20Trace%20Parser.html",
        "source_catalog_match": null,
        "candidate_match": null,
        "read_scope": "Complete textual body, prerequisites, capture/import and call-tree/X++/SQL analysis; screenshots not independently inspected.",
        "observation": "Change record reaches February 9, 2026 and names 10.0.41. Requires development VM, Trace Parser and SSMS; old onebox path, local manifest changes and certificate bypass are environment assumptions, not universal UDE instructions. Includes SQL parameter capture, so use synthetic data.",
        "confidence": "high",
        "limitations": "Public reading only. Requires learner-supplied authorized environment/tools; no lab execution. MIT repository license inspected; no copied lab text/code.",
        "publication_or_update": "No reliable separate publication/update date displayed in this reviewed scope.",
        "authority_class": 3
      },
      {
        "exam_codes": [
          "MB-500"
        ],
        "url": "https://github.com/MicrosoftLearning/MB-500-Microsoft-Dynamics-365-Finance-and-Operations-Apps-Developer/blob/master/LICENSE",
        "read_scope": "License text including MIT label, copyright 2019 Sidney Andrews, permission/notice condition and warranty disclaimer.",
        "observation": "Repository license inspected; no source text/code copied into proposed guide prose.",
        "confidence": "high",
        "limitations": "License inspection does not verify runtime safety or technical correctness.",
        "source_catalog_match": null,
        "candidate_match": null
      },
      {
        "exam_codes": [
          "MB-800"
        ],
        "url": "https://github.com/MicrosoftLearning/MB-800-Business-Central-Functional-Consultant",
        "source_catalog_match": "mb-800-labs",
        "candidate_match": null,
        "read_scope": "Repository root metadata and linked hosted directory; selected lab recorded separately; license text inspected.",
        "observation": "Hosted exercise directory and one specific lab read; do not infer all repository labs are current or executable. MIT license text inspected (copyright 2019 Sidney Andrews).",
        "confidence": "high",
        "limitations": "No scripts, solutions, PBIX, screenshots or hosted environment executed. Original exercise synthesis only; no upstream code or lab text republished.",
        "publication_or_update": "No reliable separate publication/update date displayed in this reviewed scope.",
        "authority_class": 3
      },
      {
        "exam_codes": [
          "MB-800"
        ],
        "url": "https://microsoftlearning.github.io/MB-800-Business-Central-Functional-Consultant/Instructions/Labs/Lab05_Set_up_and_use_a_purchase_approval_workflow.html",
        "source_catalog_match": null,
        "candidate_match": null,
        "read_scope": "Complete textual body, tasks 1-4 and check-your-work sections.",
        "observation": "Useful event/condition/response, limits/substitutes, notification and approve/reject sequence. Task 1 says leave Approver ID blank, while its check asks each user to have an approver; configuration must be resolved using the intended approval chain and current product docs. No date/runtime displayed.",
        "confidence": "high",
        "limitations": "Public reading only. Requires learner-supplied authorized environment/tools; no lab execution. MIT repository license inspected; no copied lab text/code.",
        "publication_or_update": "No reliable separate publication/update date displayed in this reviewed scope.",
        "authority_class": 3
      },
      {
        "exam_codes": [
          "MB-800"
        ],
        "url": "https://github.com/MicrosoftLearning/MB-800-Business-Central-Functional-Consultant/blob/master/LICENSE",
        "read_scope": "License text including MIT label, copyright 2019 Sidney Andrews, permission/notice condition and warranty disclaimer.",
        "observation": "Repository license inspected; no source text/code copied into proposed guide prose.",
        "confidence": "high",
        "limitations": "License inspection does not verify runtime safety or technical correctness.",
        "source_catalog_match": null,
        "candidate_match": null
      },
      {
        "exam_codes": [
          "MB-820"
        ],
        "url": "https://github.com/MicrosoftLearning/MB-820-Business-Central-Developer-Certification",
        "source_catalog_match": "mb-820-labs",
        "candidate_match": null,
        "read_scope": "Repository root metadata and linked hosted directory; selected lab recorded separately; license text inspected.",
        "observation": "Hosted exercise directory and one specific lab read; do not infer all repository labs are current or executable. MIT license text inspected (copyright 2019 Sidney Andrews).",
        "confidence": "high",
        "limitations": "No scripts, solutions, PBIX, screenshots or hosted environment executed. Original exercise synthesis only; no upstream code or lab text republished.",
        "publication_or_update": "No reliable separate publication/update date displayed in this reviewed scope.",
        "authority_class": 3
      },
      {
        "exam_codes": [
          "MB-820"
        ],
        "url": "https://microsoftlearning.github.io/MB-820-Business-Central-Developer-Certification/Instructions/Labs/LAB_02_Implement_installation_and_upgrade_code_extension.html",
        "source_catalog_match": null,
        "candidate_match": null,
        "read_scope": "Complete textual body and both code blocks; no compilation or execution.",
        "observation": "Material source defect: upgrade code block declares two same-signature UpdateSalespeople procedures, and the first calls UpdateSalespeople again. Final expected precondition failure refers to a trigger absent from the shown code. Do not paste or run this as a validated solution; use as a review/repair exercise alongside product docs. No reliable page update date displayed; date inside an example upgrade tag is not publication metadata.",
        "confidence": "high",
        "limitations": "Public reading only. Requires learner-supplied authorized environment/tools; no lab execution. MIT repository license inspected; no copied lab text/code.",
        "publication_or_update": "No reliable separate publication/update date displayed in this reviewed scope.",
        "authority_class": 3
      },
      {
        "exam_codes": [
          "MB-820"
        ],
        "url": "https://github.com/MicrosoftLearning/MB-820-Business-Central-Developer-Certification/blob/master/LICENSE",
        "read_scope": "License text including MIT label, copyright 2019 Sidney Andrews, permission/notice condition and warranty disclaimer.",
        "observation": "Repository license inspected; no source text/code copied into proposed guide prose.",
        "confidence": "high",
        "limitations": "License inspection does not verify runtime safety or technical correctness.",
        "source_catalog_match": null,
        "candidate_match": null
      },
      {
        "exam_codes": [
          "PL-300"
        ],
        "url": "https://github.com/MicrosoftLearning/PL-300-Microsoft-Power-BI-Data-Analyst",
        "source_catalog_match": "pl-300-official-labs",
        "candidate_match": null,
        "read_scope": "Repository root metadata and linked hosted directory; selected lab recorded separately; license text inspected.",
        "observation": "Hosted exercise directory and one specific lab read; do not infer all repository labs are current or executable. MIT license text inspected (copyright 2019 Sidney Andrews).",
        "confidence": "high",
        "limitations": "No scripts, solutions, PBIX, screenshots or hosted environment executed. Original exercise synthesis only; no upstream code or lab text republished.",
        "publication_or_update": "No reliable separate publication/update date displayed in this reviewed scope.",
        "authority_class": 3
      },
      {
        "exam_codes": [
          "PL-300"
        ],
        "url": "https://microsoftlearning.github.io/PL-300-Microsoft-Power-BI-Data-Analyst/Instructions/Labs/07-create-visual-calculations.html",
        "source_catalog_match": null,
        "candidate_match": null,
        "read_scope": "Complete textual lab body including Axis, Reset, totals and save steps; screenshots/download not independently inspected.",
        "observation": "Published approximate runtime 30 minutes. Bar-chart previous/running sum/moving average, matrix axis choice and hierarchical reset support inspectable calculation reasoning. Downloaded PBIX was not opened; UI/version availability must be checked.",
        "confidence": "high",
        "limitations": "Public reading only. Requires learner-supplied authorized environment/tools; no lab execution. MIT repository license inspected; no copied lab text/code.",
        "publication_or_update": "No reliable separate publication/update date displayed in this reviewed scope.",
        "authority_class": 3
      },
      {
        "exam_codes": [
          "PL-300"
        ],
        "url": "https://github.com/MicrosoftLearning/PL-300-Microsoft-Power-BI-Data-Analyst/blob/Main/LICENSE",
        "read_scope": "License text including MIT label, copyright 2019 Sidney Andrews, permission/notice condition and warranty disclaimer.",
        "observation": "Repository license inspected; no source text/code copied into proposed guide prose.",
        "confidence": "high",
        "limitations": "License inspection does not verify runtime safety or technical correctness.",
        "source_catalog_match": null,
        "candidate_match": null
      },
      {
        "exam_codes": [
          "MB-820"
        ],
        "url": "https://learn.microsoft.com/en-us/dynamics365/business-central/dev-itpro/developer/devenv-upgrading-extensions",
        "source_catalog_match": "mb820-upgrade",
        "candidate_match": null,
        "read_scope": "Sections writing upgrade code through upgrade-tag registration/design considerations; selected example and sensitive external-effects paragraph. On-premises command sequence not evaluated as an online deployment recipe.",
        "observation": "Upgrade triggers, AppVersion/DataVersion and tags give an authoritative repair reference for defective lab. Fresh-install/new-company tag registration and repeat-safe transformations are separate obligations.",
        "confidence": "high",
        "limitations": "No product execution, paid lessons, video watching or assessment-question review.",
        "publication_or_update": "Page displays June 14, 2022 last updated; do not invent a new publication date.",
        "authority_class": 2
      },
      {
        "exam_codes": [
          "PL-900"
        ],
        "url": "https://learn.microsoft.com/en-us/power-apps/maker/common/faq-plan-designer",
        "source_catalog_match": "microsoft-power-apps-plan-designer-faq-pl900",
        "candidate_match": null,
        "read_scope": "Complete readable main FAQ body and last-updated field despite generic authorization banner. No images uploaded and no generated app created.",
        "observation": "Roles/requirements/schema/component planning and refinement support a requirement-to-artifact worksheet; generated code-app statements refer to latest preview features. Dataverse requirement, capacity limits and responsible iteration are explicit.",
        "confidence": "high",
        "limitations": "No product execution, paid lessons, video watching or assessment-question review.",
        "publication_or_update": "Last updated March 4, 2026.",
        "authority_class": 2
      },
      {
        "exam_codes": [
          "PL-900"
        ],
        "url": "https://aka.ms/PowerSeries/Labs",
        "read_scope": "Existing guide workshop-directory link",
        "observation": "Body not available through this attempted route.",
        "confidence": "high for access limitation only",
        "limitations": "Web tool inaccessible this pass; earlier directory-only caveat remains valid. No individual workshop content claim.",
        "source_catalog_match": "pl900-power-series",
        "candidate_match": null
      },
      {
        "exam_codes": [
          "SC-500"
        ],
        "url": "https://learn.microsoft.com/en-us/training/modules/enable-protection-copilot-studio-agents/",
        "source_catalog_match": "sc-500-copilot-studio-protection",
        "candidate_match": null,
        "read_scope": "Complete module outline and prerequisites; two selected unit bodies read separately.",
        "observation": "Six-unit outline centers on Defender/Power Platform coordination and output verification; no total runtime rendered.",
        "confidence": "high",
        "limitations": "No product execution, paid lessons, video watching or assessment-question review.",
        "publication_or_update": "No reliable separate publication/update date displayed in this reviewed scope.",
        "authority_class": 3
      },
      {
        "exam_codes": [
          "SC-500"
        ],
        "url": "https://learn.microsoft.com/en-us/training/modules/enable-protection-copilot-studio-agents/3-enable-protection-microsoft-defender",
        "source_catalog_match": null,
        "candidate_match": null,
        "read_scope": "Complete readable unit body, including example queries; no queries executed or authentication/tenant setup performed.",
        "observation": "Published 7-minute reading. Cross-admin endpoint/App ID handoff and connector dependency make an ownership/evidence worksheet. UI/timing and broad blocking claims need current product verification.",
        "confidence": "high",
        "limitations": "No product execution, paid lessons, video watching or assessment-question review.",
        "publication_or_update": "No reliable separate publication/update date displayed in this reviewed scope.",
        "authority_class": 3
      },
      {
        "exam_codes": [
          "SC-500"
        ],
        "url": "https://learn.microsoft.com/en-us/training/modules/enable-protection-copilot-studio-agents/4-review-ai-agent-protection-outputs",
        "source_catalog_match": null,
        "candidate_match": null,
        "read_scope": "Complete readable unit body, including example queries; no queries executed or authentication/tenant setup performed.",
        "observation": "Published 5-minute reading. Inventory, incident and hunting views provide different evidence. Training examples and illustrative suspicious-file counts are not guaranteed detection thresholds; query field/table availability requires product/schema check.",
        "confidence": "high",
        "limitations": "No product execution, paid lessons, video watching or assessment-question review.",
        "publication_or_update": "No reliable separate publication/update date displayed in this reviewed scope.",
        "authority_class": 3
      },
      {
        "exam_codes": [
          "SC-500"
        ],
        "url": "https://github.com/timothywarner-org/sc500",
        "source_catalog_match": "sc-500-tim-warner-companion",
        "candidate_match": null,
        "read_scope": "README overview, outline, how-to-use and prerequisites; lesson 10/directory fetch denied, scripts not read.",
        "observation": "README still claims 15 lessons/~10-hour video and active development. Third-party self-claimed 100% alignment is not independently established. Root metadata is insufficient to endorse scripts as idempotent.",
        "confidence": "high",
        "limitations": "No paid videos watched, current publisher purchase listing established, or scripts audited/executed. Existing roughly 10-hour video claim remains attributed to author.",
        "publication_or_update": "No reliable separate publication/update date displayed in this reviewed scope.",
        "authority_class": 5
      },
      {
        "exam_codes": [
          "SC-500"
        ],
        "url": "https://github.com/timothywarner-org/sc500/tree/main/lessons",
        "read_scope": "Linked lesson directory",
        "observation": "Body not available through this attempted route.",
        "confidence": "high for access limitation only",
        "limitations": "Restricted URL fetch failure.",
        "source_catalog_match": null,
        "candidate_match": null
      },
      {
        "exam_codes": [
          "SC-500"
        ],
        "url": "https://github.com/timothywarner-org/sc500/blob/main/lessons/lesson-10-ai-workloads-i",
        "read_scope": "README-linked lesson 10",
        "observation": "Body not available through this attempted route.",
        "confidence": "high for access limitation only",
        "limitations": "Robots denial; no lesson/script body read.",
        "source_catalog_match": null,
        "candidate_match": null
      },
      {
        "exam_codes": [
          "AB-250"
        ],
        "url": "https://learn.microsoft.com/en-us/training/paths/monitor-optimize-dynamics-365-contact-center/",
        "source_catalog_match": "ab-250-path-monitor",
        "candidate_match": null,
        "read_scope": "Complete path overview/prerequisites and supervisor module description; remaining module bodies not read.",
        "observation": "Three-module monitor/optimize path remains; supervisor permissions, monitoring, quality and analytics provide a focused starting point. Total runtime still not rendered.",
        "confidence": "high",
        "limitations": "No product execution, paid lessons, video watching or assessment-question review.",
        "publication_or_update": "No reliable separate publication/update date displayed in this reviewed scope.",
        "authority_class": 3
      },
      {
        "exam_codes": [
          "AB-250"
        ],
        "url": "https://learn.microsoft.com/en-us/training/modules/configure-supervisor-experience-contact-center/",
        "source_catalog_match": null,
        "candidate_match": null,
        "read_scope": "Complete module outline/prerequisites.",
        "observation": "Seven units cover supervisor actions, live monitoring, quality/coaching and analytics access.",
        "confidence": "high",
        "limitations": "No product execution, paid lessons, video watching or assessment-question review.",
        "publication_or_update": "No reliable separate publication/update date displayed in this reviewed scope.",
        "authority_class": 3
      },
      {
        "exam_codes": [
          "AB-250"
        ],
        "url": "https://learn.microsoft.com/en-us/training/modules/configure-supervisor-experience-contact-center/2-enable-supervisor-controls",
        "source_catalog_match": null,
        "candidate_match": null,
        "read_scope": "Complete readable text body and four-action table. No live conversations observed or controls changed.",
        "observation": "Published five-minute unit distinguishes monitor/assign/transfer/force-close permissions; dashboard visibility alone does not prove intervention access. Assignment troubleshooting names Omnichannel API access-role interaction.",
        "confidence": "high",
        "limitations": "No product execution, paid lessons, video watching or assessment-question review.",
        "publication_or_update": "No reliable separate publication/update date displayed in this reviewed scope.",
        "authority_class": 3
      }
    ],
    "proposed_changes": [
      {
        "exam_code": "DP-900",
        "guide_path": "guides/DP-900-microsoft-azure-data-fundamentals.md",
        "old_text": "This is a curated starting point, not a complete list, and it is not meant to be consumed in full. Pick the formats that fit you. Times are approximate consumption time at normal speed; labs, note-taking, review, and independent practice add time.",
        "replacement_markdown": "This is a curated starting point, not a complete list, and it is not meant to be consumed in full. Pick the formats that fit you. Times are approximate consumption time at normal speed; labs, note-taking, review, and independent practice add time.\n\n### Focused reading and evidence route\n\nRead the [warehouse architecture](https://learn.microsoft.com/en-us/training/modules/examine-components-of-modern-data-warehouse/2-describe-warehousing), [ingestion](https://learn.microsoft.com/en-us/training/modules/examine-components-of-modern-data-warehouse/3-data-ingestion-pipelines) and [analytical-store](https://learn.microsoft.com/en-us/training/modules/examine-components-of-modern-data-warehouse/4-analytical-data-stores) units: their published estimates total 16 minutes. Then allow about 30–45 minutes for an original worksheet comparing a daily sales file, a replicated operational database and a live event stream. For each, draw source → ingestion/reference → store → semantic model → report, explain ETL versus ELT and identify freshness, identity and reconciliation checks. This worksheet estimate covers three scenarios and written justification, not deployment. The [Fabric exercise introduction](https://learn.microsoft.com/en-us/training/modules/examine-components-of-modern-data-warehouse/5-exercise-data-analytics-fabric) publishes another 30 minutes and requires a Fabric account/trial; its launched instructions were unavailable in this review. Text units were read; videos and the cloud exercise were not run. **VERIFY CURRENT:** confirm service limits and avoid treating a shortcut as an unconditional no-copy/no-cache guarantee.",
        "reason": "Add a bounded source-to-evidence learning route with transparent timing, reading scope, practical output and source limitations.",
        "sources": [
          "https://learn.microsoft.com/en-us/training/modules/examine-components-of-modern-data-warehouse/2-describe-warehousing",
          "https://learn.microsoft.com/en-us/training/modules/examine-components-of-modern-data-warehouse/3-data-ingestion-pipelines",
          "https://learn.microsoft.com/en-us/training/modules/examine-components-of-modern-data-warehouse/4-analytical-data-stores",
          "https://learn.microsoft.com/en-us/training/modules/examine-components-of-modern-data-warehouse/5-exercise-data-analytics-fabric"
        ]
      },
      {
        "exam_code": "MB-230",
        "guide_path": "guides/MB-230-microsoft-dynamics-365-customer-service-functional-consultant.md",
        "old_text": "This is not a complete list and is not meant to be consumed in full. Choose one primary route, build complete case/SLA/routing/workspace journeys, and add another resource only for a measured gap.",
        "replacement_markdown": "This is not a complete list and is not meant to be consumed in full. Choose one primary route, build complete case/SLA/routing/workspace journeys, and add another resource only for a measured gap.\n\n### Focused reading and evidence route\n\nUse [Define SLA items](https://learn.microsoft.com/en-us/training/modules/service-level-agreements/define-service-level-agreement) as a small step beyond the two-module SLA/entitlements path. The unit publishes nine minutes; allow about 45–60 more minutes to design two support tiers with response and resolution KPIs. Record applicability, calendar, pause, success, warning/failure and expected KPI-instance state, then add an overlapping item and a changed applicability field as negative cases. Explain which protected action-flow branch receives your notification rather than editing the predefined branch structure. The added time is an editorial estimate for a four-item matrix and two failure traces. This is a paper design route; tenant execution needs Customer Service access and current product documentation. The complete unit was read, without assessment questions or tenant testing.",
        "reason": "Add a bounded source-to-evidence learning route with transparent timing, reading scope, practical output and source limitations.",
        "sources": [
          "https://learn.microsoft.com/en-us/training/modules/service-level-agreements/define-service-level-agreement"
        ]
      },
      {
        "exam_code": "MB-310",
        "guide_path": "guides/MB-310-microsoft-dynamics-365-finance-functional-consultant.md",
        "old_text": "This is not a complete list and is not meant to be consumed in full. Choose one primary route, build several source-document-to-ledger journeys, and add another resource only for a measured gap.",
        "replacement_markdown": "This is not a complete list and is not meant to be consumed in full. Choose one primary route, build several source-document-to-ledger journeys, and add another resource only for a measured gap.\n\n### Focused reading and evidence route\n\nSelect MicrosoftLearning’s [voucher breakdown lab](https://microsoftlearning.github.io/MB-310-Microsoft-Dynamics-365-Finance/Instructions/Labs/LP3%20Lab%20-%20Breakdown%20of%20voucher.html) for payables-to-ledger reasoning. Allow about 60–90 minutes for reading and an original worksheet that predicts taxable bases, tax by line, offset accounts, balanced totals and the evidence needed before and after posting; this editorial range includes one deliberately wrong tax-group mapping and its correction. The February 10, 2026 change record is visible, but the walkthrough assumes USMF demo records and older dates. Reconcile those prerequisites with your sandbox and current Finance documentation. Exclude its expired-certificate bypass workaround. The public textual procedure was read, not executed; screenshots, journal postings and tax compliance outcomes were not independently verified.",
        "reason": "Add a bounded source-to-evidence learning route with transparent timing, reading scope, practical output and source limitations.",
        "sources": [
          "https://microsoftlearning.github.io/MB-310-Microsoft-Dynamics-365-Finance/Instructions/Labs/LP3%20Lab%20-%20Breakdown%20of%20voucher.html"
        ]
      },
      {
        "exam_code": "MB-500",
        "guide_path": "guides/MB-500-microsoft-dynamics-365-finance-operations-apps-developer.md",
        "old_text": "This is not a complete list and is not meant to be consumed in full. Choose one primary route, build and deploy a secure extension end to end, and add another resource only for a measured gap.",
        "replacement_markdown": "This is not a complete list and is not meant to be consumed in full. Choose one primary route, build and deploy a secure extension end to end, and add another resource only for a measured gap.\n\n### Focused reading and evidence route\n\nRead MicrosoftLearning’s [Trace Parser lab](https://microsoftlearning.github.io/MB-500-Microsoft-Dynamics-365-Finance-and-Operations-Apps-Developer/Instructions/Labs/Lab%20-%201%20-%20Work%20with%20trace%20and%20import%20it%20to%20Trace%20Parser.html) to connect a slow business action to call-tree, X++ and SQL evidence. Allow about 60–90 minutes for a capture-plan worksheet: business action, user/session, start/stop boundaries, expensive call versus inclusive duration, candidate query and a repeatable before/after comparison. That editorial estimate covers reading, one diagnostic hypothesis and its falsification; VM/tool setup and execution add time. The February 9, 2026 change record still references a development VM and earlier platform setup. **VERIFY CURRENT:** validate your development topology and tracing prerequisites; exclude certificate bypass and do not apply local manifest edits as generic UDE steps. Use synthetic data if capturing SQL parameters. The complete textual lab was read, with no trace collection or performance claim.",
        "reason": "Add a bounded source-to-evidence learning route with transparent timing, reading scope, practical output and source limitations.",
        "sources": [
          "https://microsoftlearning.github.io/MB-500-Microsoft-Dynamics-365-Finance-and-Operations-Apps-Developer/Instructions/Labs/Lab%20-%201%20-%20Work%20with%20trace%20and%20import%20it%20to%20Trace%20Parser.html"
        ]
      },
      {
        "exam_code": "MB-800",
        "guide_path": "guides/MB-800-microsoft-dynamics-365-business-central-functional-consultant.md",
        "old_text": "This is not a complete list and is not meant to be consumed in full. Choose one primary route, build one company from setup through close, and add a second resource only for a measured gap.",
        "replacement_markdown": "This is not a complete list and is not meant to be consumed in full. Choose one primary route, build one company from setup through close, and add a second resource only for a measured gap.\n\n### Focused reading and evidence route\n\nTurn MicrosoftLearning’s [purchase approval workflow lab](https://microsoftlearning.github.io/MB-800-Business-Central-Functional-Consultant/Instructions/Labs/Lab05_Set_up_and_use_a_purchase_approval_workflow.html) into an approval-chain worksheet. Allow about 60–90 minutes to map requester, approver, limit, substitute, event, condition, response, notification and final document state, then predict approve, reject, above-limit and absent-approver outcomes. The range is an editorial estimate for reading and four test traces; tenant configuration takes additional time. **Source discrepancy:** its setup says to leave Approver ID blank, but its check asks each user to have an approver. Resolve the intended chain using current Business Central documentation and your configuration; the sample is not a universal default. The full textual exercise was read; no approval, notification or purchase document was created.",
        "reason": "Add a bounded source-to-evidence learning route with transparent timing, reading scope, practical output and source limitations.",
        "sources": [
          "https://microsoftlearning.github.io/MB-800-Business-Central-Functional-Consultant/Instructions/Labs/Lab05_Set_up_and_use_a_purchase_approval_workflow.html"
        ]
      },
      {
        "exam_code": "MB-820",
        "guide_path": "guides/MB-820-microsoft-dynamics-365-business-central-developer.md",
        "old_text": "This is not a complete list and is not meant to be consumed in full. Choose one primary route, build and upgrade one secure extension end to end, and add another resource only for a measured gap.",
        "replacement_markdown": "This is not a complete list and is not meant to be consumed in full. Choose one primary route, build and upgrade one secure extension end to end, and add another resource only for a measured gap.\n\n### Focused reading and evidence route\n\nUse MicrosoftLearning’s [installation/upgrade lab](https://microsoftlearning.github.io/MB-820-Business-Central-Developer-Certification/Instructions/Labs/LAB_02_Implement_installation_and_upgrade_code_extension.html) as a code-review exercise alongside [Upgrading Extensions](https://learn.microsoft.com/en-us/dynamics365/business-central/dev-itpro/developer/devenv-upgrading-extensions). **Source defect observed October 28, 2026:** the shown upgrade code declares `UpdateSalespeople()` twice and includes a same-name call; its final expected precondition error refers to a trigger absent from the displayed code. Do not treat the snippet as a validated solution. Allow about 60–90 minutes for an independent design separating tag check, transformation and tag recording, with expected old/new data, fresh-install/new-company behavior and retry evidence. This editorial estimate covers reading and design; compiler and sandbox tests add time. Both texts were inspected within the recorded scope; no AL compilation or upgrade was performed.",
        "reason": "Add a bounded source-to-evidence learning route with transparent timing, reading scope, practical output and source limitations.",
        "sources": [
          "https://microsoftlearning.github.io/MB-820-Business-Central-Developer-Certification/Instructions/Labs/LAB_02_Implement_installation_and_upgrade_code_extension.html",
          "https://learn.microsoft.com/en-us/dynamics365/business-central/dev-itpro/developer/devenv-upgrading-extensions"
        ]
      },
      {
        "exam_code": "PL-300",
        "guide_path": "guides/PL-300-microsoft-power-bi-data-analyst.md",
        "old_text": "This is a curated starting point, **not a complete list**, and it is not meant to be consumed in full. Choose one primary course or path, build an end-to-end report, and add only resources that close measured gaps. Reconcile every resource with the April 20, 2026 blueprint, especially Direct Lake, calculation groups, DAX query view, Copilot, visual calculations, current usability controls, and workspace/asset changes.",
        "replacement_markdown": "This is a curated starting point, **not a complete list**, and it is not meant to be consumed in full. Choose one primary course or path, build an end-to-end report, and add only resources that close measured gaps. Reconcile every resource with the April 20, 2026 blueprint, especially Direct Lake, calculation groups, DAX query view, Copilot, visual calculations, current usability controls, and workspace/asset changes.\n\n### Focused reading and evidence route\n\nChoose MicrosoftLearning’s [visual-calculations lab](https://microsoftlearning.github.io/PL-300-Microsoft-Power-BI-Data-Analyst/Instructions/Labs/07-create-visual-calculations.html) when Axis, Reset or totals are a measured gap. The publisher estimates 30 minutes. Add about 30–45 minutes for an original evidence sheet that predicts a result before switching rows/columns, changes the hierarchy level, compares a running sum with and without reset, and explains the grand-total result. That added range covers four comparisons and written reasoning, not a promised runtime. Preserve the report and capture the visual grain, sort/filter state and result so another learner can explain it. **VERIFY CURRENT:** Desktop UI and feature availability. The textual lab was read; its PBIX download, visuals and calculations were not executed.",
        "reason": "Add a bounded source-to-evidence learning route with transparent timing, reading scope, practical output and source limitations.",
        "sources": [
          "https://microsoftlearning.github.io/PL-300-Microsoft-Power-BI-Data-Analyst/Instructions/Labs/07-create-visual-calculations.html"
        ]
      },
      {
        "exam_code": "PL-900",
        "guide_path": "guides/PL-900-microsoft-power-platform-fundamentals.md",
        "old_text": "This is a curated starting point, not a complete list, and it is not meant to be consumed in full. Pick the formats that fit you. Times are approximate consumption time at normal speed; labs, note-taking, review, and independent practice add time.",
        "replacement_markdown": "This is a curated starting point, not a complete list, and it is not meant to be consumed in full. Pick the formats that fit you. Times are approximate consumption time at normal speed; labs, note-taking, review, and independent practice add time.\n\n### Focused reading and evidence route\n\nUse the [plans FAQ](https://learn.microsoft.com/en-us/power-apps/maker/common/faq-plan-designer) for a requirement-to-artifact worksheet: describe a small service-request process, its roles and permissions, data entities, app surface, automation and agent boundary. Allow about 45–60 minutes for reading and mapping three requirements to proposed components, then identify a missing authorization rule and one generated artifact that would need review. This is an editorial estimate based on the short FAQ and a written component map; no app generation is required. **VERIFY CURRENT:** generated code-app preview features, prerequisites and limits. The complete readable FAQ was inspected despite its generic authorization banner; it does not establish tenant entitlement or the quality of any generated solution. The Power Series directory was unavailable in this pass, so its earlier directory-only caveat remains.",
        "reason": "Add a bounded source-to-evidence learning route with transparent timing, reading scope, practical output and source limitations.",
        "sources": [
          "https://learn.microsoft.com/en-us/power-apps/maker/common/faq-plan-designer"
        ]
      },
      {
        "exam_code": "SC-500",
        "guide_path": "guides/SC-500-microsoft-cloud-ai-security-engineer.md",
        "old_text": "This is a curated starting point, **not a complete list**. Do not try to consume every item. Pick the format and depth that work for you, use the official blueprint as the coverage checklist, and spend at least as much effort on implementation and negative testing as on passive watching. Provider runtimes and catalogs change; estimates below use public listings checked September 28, 2026 and include notes where exact current duration was unavailable.",
        "replacement_markdown": "This is a curated starting point, **not a complete list**. Do not try to consume every item. Pick the format and depth that work for you, use the official blueprint as the coverage checklist, and spend at least as much effort on implementation and negative testing as on passive watching. Provider runtimes and catalogs change; estimates below use public listings checked September 28, 2026 and include notes where exact current duration was unavailable.\n\n### Focused reading and evidence route\n\nRead [enable protection](https://learn.microsoft.com/en-us/training/modules/enable-protection-copilot-studio-agents/3-enable-protection-microsoft-defender) and [review protection outputs](https://learn.microsoft.com/en-us/training/modules/enable-protection-copilot-studio-agents/4-review-ai-agent-protection-outputs): published estimates total 12 minutes. Then allow about 45–60 minutes for a handoff/evidence worksheet assigning the Defender URL, Power Platform configuration and matching App ID to their owners. Distinguish the proxy app from an agent’s own identity, and predict evidence for a mismatched ID, missing connector, no suspicious activity and a fresh session. Keep inventory, alert flow and hunting results as separate checks; a connected indicator or logged event alone is insufficient proof of prevention. The added range covers four failure cases, not tenant setup. **VERIFY CURRENT:** product prerequisites, UI, query schema and detection behavior; training examples are not guaranteed thresholds. Both unit texts were read; no tenant change or query ran.",
        "reason": "Add a bounded source-to-evidence learning route with transparent timing, reading scope, practical output and source limitations.",
        "sources": [
          "https://learn.microsoft.com/en-us/training/modules/enable-protection-copilot-studio-agents/3-enable-protection-microsoft-defender",
          "https://learn.microsoft.com/en-us/training/modules/enable-protection-copilot-studio-agents/4-review-ai-agent-protection-outputs"
        ]
      },
      {
        "exam_code": "AB-250",
        "guide_path": "guides/AB-250-transforming-contact-center-experiences-ai-dynamics-365.md",
        "old_text": "This is not a complete list and is not meant to be consumed in full. Choose one primary route, build representative end-to-end journeys, and add another resource only for a measured gap.",
        "replacement_markdown": "This is not a complete list and is not meant to be consumed in full. Choose one primary route, build representative end-to-end journeys, and add another resource only for a measured gap.\n\n### Focused reading and evidence route\n\nStart the monitor/optimize path with [Enable supervisor controls for live conversations](https://learn.microsoft.com/en-us/training/modules/configure-supervisor-experience-contact-center/2-enable-supervisor-controls), a published five-minute unit. Allow about 45–60 more minutes for a persona/action matrix covering monitor, assign, transfer and force close. For each action, record the needed control, expected visibility and allowed/denied evidence; add a supervisor who can view dashboards but lacks intervention access and an assignment-role conflict. This editorial estimate covers reading and a four-action worksheet, not tenant configuration. Use synthetic conversation descriptions and current product guidance before testing any control. **VERIFY CURRENT:** supported channel/action combinations and role behavior. The complete textual unit was read; no live conversation was monitored, reassigned or closed.",
        "reason": "Add a bounded source-to-evidence learning route with transparent timing, reading scope, practical output and source limitations.",
        "sources": [
          "https://learn.microsoft.com/en-us/training/modules/configure-supervisor-experience-contact-center/2-enable-supervisor-controls"
        ]
      },
      {
        "exam_code": "MB-820",
        "guide_path": "guides/MB-820-microsoft-dynamics-365-business-central-developer.md",
        "old_text": "| [MicrosoftLearning MB-820 labs](https://github.com/MicrosoftLearning/MB-820-Business-Central-Developer-Certification) | Free; MIT | 12–25 hours; repository title/README retain sample-course artifacts, so use hosted lab index and verify current instructions |",
        "replacement_markdown": "| [MicrosoftLearning MB-820 labs](https://github.com/MicrosoftLearning/MB-820-Business-Central-Developer-Certification) | Free; MIT | 12–25 hours editorial estimate for selected work; Lab 02 has a defective displayed upgrade sample (see focused route); review and rewrite before execution |",
        "reason": "A specific body read found defects that materially limit the existing generic recommendation.",
        "sources": [
          "https://microsoftlearning.github.io/MB-820-Business-Central-Developer-Certification/Instructions/Labs/LAB_02_Implement_installation_and_upgrade_code_extension.html",
          "https://learn.microsoft.com/en-us/dynamics365/business-central/dev-itpro/developer/devenv-upgrading-extensions"
        ]
      }
    ],
    "new_source_catalog_objects": [
      {
        "id": "dp900-2-analytics-unit",
        "title": "Describe data warehousing architecture",
        "url": "https://learn.microsoft.com/en-us/training/modules/examine-components-of-modern-data-warehouse/2-describe-warehousing",
        "publisher": "Microsoft Learn",
        "authority_class": 3,
        "source_type": "official-training",
        "access_model": "public",
        "last_checked": "2026-10-28",
        "supported_exams": [
          "DP-900"
        ],
        "notes": "October 28 group-04 learning review. 3-minute published unit estimate. Architecture layers distinguish ingestion, analytical storage, semantic model and visualization; Fabric and Azure Databricks examples. Read scope: Readable text body; warehouse/ingestion units complete; analytical-store core through lakehouse/OneLake paragraphs. Embedded videos not watched and diagrams not independently inspected. Limits: No product execution, paid lessons, video watching or assessment-question review."
      },
      {
        "id": "dp900-3-analytics-unit",
        "title": "Explore data ingestion pipelines",
        "url": "https://learn.microsoft.com/en-us/training/modules/examine-components-of-modern-data-warehouse/3-data-ingestion-pipelines",
        "publisher": "Microsoft Learn",
        "authority_class": 3,
        "source_type": "official-training",
        "access_model": "public",
        "last_checked": "2026-10-28",
        "supported_exams": [
          "DP-900"
        ],
        "notes": "October 28 group-04 learning review. 5-minute published unit estimate. Pipelines/Dataflows Gen2, shortcuts, mirroring, Eventstream and notebooks offer a practical ingestion-choice worksheet. Do not adopt its absolute no-movement/no-duplication wording without product-specific cache/security checks. Read scope: Readable text body; warehouse/ingestion units complete; analytical-store core through lakehouse/OneLake paragraphs. Embedded videos not watched and diagrams not independently inspected. Limits: No product execution, paid lessons, video watching or assessment-question review."
      },
      {
        "id": "dp900-4-analytics-unit",
        "title": "Explore analytical data stores",
        "url": "https://learn.microsoft.com/en-us/training/modules/examine-components-of-modern-data-warehouse/4-analytical-data-stores",
        "publisher": "Microsoft Learn",
        "authority_class": 3,
        "source_type": "official-training",
        "access_model": "public",
        "last_checked": "2026-10-28",
        "supported_exams": [
          "DP-900"
        ],
        "notes": "October 28 group-04 learning review. 8-minute published unit estimate. Warehouse star-schema, lake schema-on-read and lakehouse distinctions support store-selection reasoning. Read scope: Readable text body; warehouse/ingestion units complete; analytical-store core through lakehouse/OneLake paragraphs. Embedded videos not watched and diagrams not independently inspected. Limits: No product execution, paid lessons, video watching or assessment-question review."
      },
      {
        "id": "dp900-fabric-exercise-unit",
        "title": "Exercise: Explore data analytics in Microsoft Fabric",
        "url": "https://learn.microsoft.com/en-us/training/modules/examine-components-of-modern-data-warehouse/5-exercise-data-analytics-fabric",
        "publisher": "Microsoft Learn",
        "authority_class": 3,
        "source_type": "official-training",
        "access_model": "public",
        "last_checked": "2026-10-28",
        "supported_exams": [
          "DP-900"
        ],
        "notes": "October 28 group-04 learning review. Published 30-minute introductory lakehouse ingestion/analysis exercise requires Fabric account or trial; no free entitlement guarantee. Read scope: Complete exercise introduction and account prerequisite. Underlying launch URL found in returned HTML; redirect could not be opened; detailed launched lab not read. Limits: No product execution, paid lessons, video watching or assessment-question review."
      },
      {
        "id": "mb230-sla-module",
        "title": "Work with service-level agreements in Dynamics 365 Customer Service",
        "url": "https://learn.microsoft.com/en-us/training/modules/service-level-agreements/",
        "publisher": "Microsoft Learn",
        "authority_class": 3,
        "source_type": "official-training",
        "access_model": "public",
        "last_checked": "2026-10-28",
        "supported_exams": [
          "MB-230"
        ],
        "notes": "October 28 group-04 learning review. Eight-unit outline covers calendars, KPIs, items, custom KPIs and applying/managing SLAs; aggregate runtime absent. Read scope: Complete public module outline. Limits: No product execution, paid lessons, video watching or assessment-question review."
      },
      {
        "id": "mb230-sla-items-unit",
        "title": "Define SLA items",
        "url": "https://learn.microsoft.com/en-us/training/modules/service-level-agreements/define-service-level-agreement",
        "publisher": "Microsoft Learn",
        "authority_class": 3,
        "source_type": "official-training",
        "access_model": "public",
        "last_checked": "2026-10-28",
        "supported_exams": [
          "MB-230"
        ],
        "notes": "October 28 group-04 learning review. Published nine-minute unit distinguishes KPI/applicability/success/pause/warning/failure, protected action-flow branches and specific-before-general ordering. Read scope: Complete readable main unit text; screenshots and linked product reference not independently inspected. Limits: No product execution, paid lessons, video watching or assessment-question review."
      },
      {
        "id": "mb310-focused-lab",
        "title": "Lab 3: Breakdown of voucher",
        "url": "https://microsoftlearning.github.io/MB-310-Microsoft-Dynamics-365-Finance/Instructions/Labs/LP3%20Lab%20-%20Breakdown%20of%20voucher.html",
        "publisher": "MicrosoftLearning",
        "authority_class": 3,
        "source_type": "hands-on-lab",
        "access_model": "public",
        "last_checked": "2026-10-28",
        "supported_exams": [
          "MB-310"
        ],
        "notes": "October 28 group-04 learning review. Current change record reaches February 10, 2026. Multi-tax invoice journal workflow is useful for voucher reconciliation; USMF/demo data and old invoice date are assumptions. Expired-certificate bypass instruction is inappropriate to transfer to an independent learner environment. Read scope: Complete textual body/change record, not screenshot rendering. Limits: Public reading only. Requires learner-supplied authorized environment/tools; no lab execution. MIT repository license inspected; no copied lab text/code."
      },
      {
        "id": "mb500-focused-lab",
        "title": "Lab 1: Work with trace and import it into the Trace Parser tool",
        "url": "https://microsoftlearning.github.io/MB-500-Microsoft-Dynamics-365-Finance-and-Operations-Apps-Developer/Instructions/Labs/Lab%20-%201%20-%20Work%20with%20trace%20and%20import%20it%20to%20Trace%20Parser.html",
        "publisher": "MicrosoftLearning",
        "authority_class": 3,
        "source_type": "hands-on-lab",
        "access_model": "public",
        "last_checked": "2026-10-28",
        "supported_exams": [
          "MB-500"
        ],
        "notes": "October 28 group-04 learning review. Change record reaches February 9, 2026 and names 10.0.41. Requires development VM, Trace Parser and SSMS; old onebox path, local manifest changes and certificate bypass are environment assumptions, not universal UDE instructions. Includes SQL parameter capture, so use synthetic data. Read scope: Complete textual body, prerequisites, capture/import and call-tree/X++/SQL analysis; screenshots not independently inspected. Limits: Public reading only. Requires learner-supplied authorized environment/tools; no lab execution. MIT repository license inspected; no copied lab text/code."
      },
      {
        "id": "mb800-focused-lab",
        "title": "Set up and use a purchase approval workflow",
        "url": "https://microsoftlearning.github.io/MB-800-Business-Central-Functional-Consultant/Instructions/Labs/Lab05_Set_up_and_use_a_purchase_approval_workflow.html",
        "publisher": "MicrosoftLearning",
        "authority_class": 3,
        "source_type": "hands-on-lab",
        "access_model": "public",
        "last_checked": "2026-10-28",
        "supported_exams": [
          "MB-800"
        ],
        "notes": "October 28 group-04 learning review. Useful event/condition/response, limits/substitutes, notification and approve/reject sequence. Task 1 says leave Approver ID blank, while its check asks each user to have an approver; configuration must be resolved using the intended approval chain and current product docs. No date/runtime displayed. Read scope: Complete textual body, tasks 1-4 and check-your-work sections. Limits: Public reading only. Requires learner-supplied authorized environment/tools; no lab execution. MIT repository license inspected; no copied lab text/code."
      },
      {
        "id": "mb820-focused-lab",
        "title": "Lab 02: Implement installation and upgrade code in an extension",
        "url": "https://microsoftlearning.github.io/MB-820-Business-Central-Developer-Certification/Instructions/Labs/LAB_02_Implement_installation_and_upgrade_code_extension.html",
        "publisher": "MicrosoftLearning",
        "authority_class": 3,
        "source_type": "hands-on-lab",
        "access_model": "public",
        "last_checked": "2026-10-28",
        "supported_exams": [
          "MB-820"
        ],
        "notes": "October 28 group-04 learning review. Material source defect: upgrade code block declares two same-signature UpdateSalespeople procedures, and the first calls UpdateSalespeople again. Final expected precondition failure refers to a trigger absent from the shown code. Do not paste or run this as a validated solution; use as a review/repair exercise alongside product docs. No reliable page update date displayed; date inside an example upgrade tag is not publication metadata. Read scope: Complete textual body and both code blocks; no compilation or execution. Limits: Public reading only. Requires learner-supplied authorized environment/tools; no lab execution. MIT repository license inspected; no copied lab text/code."
      },
      {
        "id": "pl300-focused-lab",
        "title": "Create visual calculations in Power BI Desktop",
        "url": "https://microsoftlearning.github.io/PL-300-Microsoft-Power-BI-Data-Analyst/Instructions/Labs/07-create-visual-calculations.html",
        "publisher": "MicrosoftLearning",
        "authority_class": 3,
        "source_type": "hands-on-lab",
        "access_model": "public",
        "last_checked": "2026-10-28",
        "supported_exams": [
          "PL-300"
        ],
        "notes": "October 28 group-04 learning review. Published approximate runtime 30 minutes. Bar-chart previous/running sum/moving average, matrix axis choice and hierarchical reset support inspectable calculation reasoning. Downloaded PBIX was not opened; UI/version availability must be checked. Read scope: Complete textual lab body including Axis, Reset, totals and save steps; screenshots/download not independently inspected. Limits: Public reading only. Requires learner-supplied authorized environment/tools; no lab execution. MIT repository license inspected; no copied lab text/code."
      },
      {
        "id": "sc500-3-protection-unit",
        "title": "Enable protection in Microsoft Defender",
        "url": "https://learn.microsoft.com/en-us/training/modules/enable-protection-copilot-studio-agents/3-enable-protection-microsoft-defender",
        "publisher": "Microsoft Learn",
        "authority_class": 3,
        "source_type": "official-training",
        "access_model": "public",
        "last_checked": "2026-10-28",
        "supported_exams": [
          "SC-500"
        ],
        "notes": "October 28 group-04 learning review. Published 7-minute reading. Cross-admin endpoint/App ID handoff and connector dependency make an ownership/evidence worksheet. UI/timing and broad blocking claims need current product verification. Read scope: Complete readable unit body, including example queries; no queries executed or authentication/tenant setup performed. Limits: No product execution, paid lessons, video watching or assessment-question review."
      },
      {
        "id": "sc500-4-protection-unit",
        "title": "Review AI agent protection outputs",
        "url": "https://learn.microsoft.com/en-us/training/modules/enable-protection-copilot-studio-agents/4-review-ai-agent-protection-outputs",
        "publisher": "Microsoft Learn",
        "authority_class": 3,
        "source_type": "official-training",
        "access_model": "public",
        "last_checked": "2026-10-28",
        "supported_exams": [
          "SC-500"
        ],
        "notes": "October 28 group-04 learning review. Published 5-minute reading. Inventory, incident and hunting views provide different evidence. Training examples and illustrative suspicious-file counts are not guaranteed detection thresholds; query field/table availability requires product/schema check. Read scope: Complete readable unit body, including example queries; no queries executed or authentication/tenant setup performed. Limits: No product execution, paid lessons, video watching or assessment-question review."
      },
      {
        "id": "ab250-supervisor-module",
        "title": "Manage contact center operations with supervisor tools in Dynamics 365 Contact Center",
        "url": "https://learn.microsoft.com/en-us/training/modules/configure-supervisor-experience-contact-center/",
        "publisher": "Microsoft Learn",
        "authority_class": 3,
        "source_type": "official-training",
        "access_model": "public",
        "last_checked": "2026-10-28",
        "supported_exams": [
          "AB-250"
        ],
        "notes": "October 28 group-04 learning review. Seven units cover supervisor actions, live monitoring, quality/coaching and analytics access. Read scope: Complete module outline/prerequisites. Limits: No product execution, paid lessons, video watching or assessment-question review."
      },
      {
        "id": "ab250-supervisor-controls-unit",
        "title": "Enable supervisor controls for live conversations",
        "url": "https://learn.microsoft.com/en-us/training/modules/configure-supervisor-experience-contact-center/2-enable-supervisor-controls",
        "publisher": "Microsoft Learn",
        "authority_class": 3,
        "source_type": "official-training",
        "access_model": "public",
        "last_checked": "2026-10-28",
        "supported_exams": [
          "AB-250"
        ],
        "notes": "October 28 group-04 learning review. Published five-minute unit distinguishes monitor/assign/transfer/force-close permissions; dashboard visibility alone does not prove intervention access. Assignment troubleshooting names Omnichannel API access-role interaction. Read scope: Complete readable text body and four-action table. No live conversations observed or controls changed. Limits: No product execution, paid lessons, video watching or assessment-question review."
      }
    ],
    "source_updates": [
      {
        "id": "microsoft-dp-900-course",
        "title": "Introduction to Microsoft Azure Data",
        "url": "https://learn.microsoft.com/en-us/training/courses/dp-900t00",
        "publisher": "Microsoft",
        "authority_class": 3,
        "source_type": "official-training",
        "access_model": "public",
        "last_checked": "2026-10-28",
        "supported_exams": [
          "DP-900"
        ],
        "notes": "Official one-day course. September 28 DP-900 deep review: Complete short main course metadata read: Introduction to Microsoft Azure Data, one day and 13 languages; linked lessons not completed. See docs/research/2026-09-28-dp-900-deep-review.md No live infrastructure execution. October 28 group-04 learning review: Public course overview still lists 1 instructor day(s). 13 languages; core relational/nonrelational concepts, warehousing, real-time analytics and visualization. Read scope: Complete rendered public course overview, audience, duration and language list. Syllabus heading rendered placeholders rather than detailed modules; no complete linked lesson/course consumption claimed. Limits: No product execution, paid lessons, video watching or assessment-question review."
      },
      {
        "id": "mb-230-course",
        "title": "Implement customer service solutions using Microsoft Dynamics 365 Customer Service",
        "url": "https://learn.microsoft.com/en-us/training/courses/mb-230t01",
        "publisher": "Microsoft Learn",
        "authority_class": 3,
        "source_type": "official-training",
        "access_model": "public",
        "last_checked": "2026-10-28",
        "supported_exams": [
          "MB-230"
        ],
        "notes": "Four-day official instructor-led course. September 28 MB-230 deep review: Complete short course overview read: Implement customer service solutions using Microsoft Dynamics 365 Customer Service, four days, English. No classroom/paid content. See docs/research/2026-09-28-mb-230-deep-review.md No live infrastructure execution. October 28 group-04 learning review: Public course overview still lists 4 instructor day(s). English; case creation, queue management, interaction, resolution and analysis. Read scope: Complete rendered public course overview, audience, duration and language list. Syllabus heading rendered placeholders rather than detailed modules; no complete linked lesson/course consumption claimed. Limits: No product execution, paid lessons, video watching or assessment-question review."
      },
      {
        "id": "mb-310-course",
        "title": "Manage Financial Operations with Dynamics 365 Finance",
        "url": "https://learn.microsoft.com/en-us/training/courses/mb-310t00",
        "publisher": "Microsoft Learn",
        "authority_class": 3,
        "source_type": "official-training",
        "access_model": "public",
        "last_checked": "2026-10-28",
        "supported_exams": [
          "MB-310"
        ],
        "notes": "Four-day official instructor-led course; five linked paths total 48 hours 30 minutes. September 28 MB-310 deep review: Complete short overview read: Manage Financial Operations with Dynamics 365 Finance, four days, English. Broader audience includes adjacent cost/asset-leasing material. See docs/research/2026-09-28-mb-310-deep-review.md No live infrastructure execution. October 28 group-04 learning review: Public course overview still lists 4 instructor day(s). English; financial configuration, payables, receivables, collections, budgeting and fixed assets. Read scope: Complete rendered public course overview, audience, duration and language list. Syllabus heading rendered placeholders rather than detailed modules; no complete linked lesson/course consumption claimed. Limits: No product execution, paid lessons, video watching or assessment-question review."
      },
      {
        "id": "mb-500-course",
        "title": "Develop Finance and Operations Apps with Dynamics 365",
        "url": "https://learn.microsoft.com/en-us/training/courses/mb-500t00",
        "publisher": "Microsoft Learn",
        "authority_class": 3,
        "source_type": "official-training",
        "access_model": "public",
        "last_checked": "2026-10-28",
        "supported_exams": [
          "MB-500"
        ],
        "notes": "Five-day official course; five timed core paths total 43 hours two minutes before reporting. September 28 MB-500 deep review: Complete public overview read: Develop Finance and Operations Apps with Dynamics 365, five days, English. See docs/research/2026-09-28-mb-500-deep-review.md No live infrastructure execution. October 28 group-04 learning review: Public course overview still lists 5 instructor day(s). English; developer implementation and extension responsibilities. Read scope: Complete rendered public course overview, audience, duration and language list. Syllabus heading rendered placeholders rather than detailed modules; no complete linked lesson/course consumption claimed. Limits: No product execution, paid lessons, video watching or assessment-question review."
      },
      {
        "id": "mb-800-course",
        "title": "Manage business solutions with Microsoft Dynamics 365 Business Central",
        "url": "https://learn.microsoft.com/en-us/training/courses/mb-800t00",
        "publisher": "Microsoft Learn",
        "authority_class": 3,
        "source_type": "official-training",
        "access_model": "public",
        "last_checked": "2026-10-28",
        "supported_exams": [
          "MB-800"
        ],
        "notes": "Five-day official course; its five self-directed paths total 43 hours 40 minutes. September 28 MB-800 deep review: Complete public overview read: Manage business solutions with Microsoft Dynamics365BusinessCentral, five days, English. See docs/research/2026-09-28-mb-800-deep-review.md No live infrastructure execution. October 28 group-04 learning review: Public course overview still lists 5 instructor day(s). English; core setup, migration, finance, sales, purchasing and inventory. Read scope: Complete rendered public course overview, audience, duration and language list. Syllabus heading rendered placeholders rather than detailed modules; no complete linked lesson/course consumption claimed. Limits: No product execution, paid lessons, video watching or assessment-question review."
      },
      {
        "id": "mb-820-course",
        "title": "Develop solutions with Dynamics 365 Business Central",
        "url": "https://learn.microsoft.com/en-us/training/courses/mb-820t00",
        "publisher": "Microsoft Learn",
        "authority_class": 3,
        "source_type": "official-training",
        "access_model": "public",
        "last_checked": "2026-10-28",
        "supported_exams": [
          "MB-820"
        ],
        "notes": "Five-day official advanced course; eight selected paths total 50 hours seven minutes. September 28 MB-820 deep review: Complete public overview read: Develop solutions with Dynamics365BusinessCentral, five days, English. See docs/research/2026-09-28-mb-820-deep-review.md No live infrastructure execution. October 28 group-04 learning review: Public course overview still lists 5 instructor day(s). English; extensions, events, integration, debugging, performance, upgrades and data migration. Read scope: Complete rendered public course overview, audience, duration and language list. Syllabus heading rendered placeholders rather than detailed modules; no complete linked lesson/course consumption claimed. Limits: No product execution, paid lessons, video watching or assessment-question review."
      },
      {
        "id": "pl-300-course",
        "title": "PL-300T00-A Design and manage analytics solutions using Power BI",
        "url": "https://learn.microsoft.com/en-us/training/courses/pl-300t00",
        "publisher": "Microsoft Learn",
        "authority_class": 3,
        "source_type": "official-training",
        "access_model": "public",
        "last_checked": "2026-10-28",
        "supported_exams": [
          "PL-300"
        ],
        "notes": "Three-day official course linking five current learning paths. October 28 group-04 learning review: Public course overview still lists 3 instructor day(s). Ten languages; data access/processing, modeling, reporting, analysis and distribution. Read scope: Complete rendered public course overview, audience, duration and language list. Syllabus heading rendered placeholders rather than detailed modules; no complete linked lesson/course consumption claimed. Limits: No product execution, paid lessons, video watching or assessment-question review."
      },
      {
        "id": "microsoft-pl-900-course",
        "title": "Microsoft Power Platform Fundamentals",
        "url": "https://learn.microsoft.com/en-us/training/courses/pl-900t00",
        "publisher": "Microsoft",
        "authority_class": 3,
        "source_type": "official-training",
        "access_model": "public",
        "last_checked": "2026-10-28",
        "supported_exams": [
          "PL-900"
        ],
        "notes": "Official one-day course. September 28 PL-900 deep review: Complete public overview and language/duration list read:one day,12 languages; syllabus section does not expose module listings in fetched page. Overview remains broad with PowerPages emphasis. See docs/research/2026-09-28-pl-900-deep-review.md No live infrastructure execution. October 28 group-04 learning review: Public course overview still lists 1 instructor day(s). Twelve languages; business value, Dataverse, canvas/model-driven apps, flows, sites and copilots. Overview does not establish detailed July agent/code/Plan-designer coverage. Read scope: Complete rendered public course overview, audience, duration and language list. Syllabus heading rendered placeholders rather than detailed modules; no complete linked lesson/course consumption claimed. Limits: No product execution, paid lessons, video watching or assessment-question review."
      },
      {
        "id": "sc-500-instructor-course",
        "title": "SC-500T00-A: Implement end-to-end security controls for cloud and AI workloads",
        "url": "https://learn.microsoft.com/en-us/training/courses/sc-500t00",
        "publisher": "Microsoft Learn",
        "authority_class": 3,
        "source_type": "official-training",
        "access_model": "paid",
        "last_checked": "2026-10-28",
        "supported_exams": [
          "SC-500"
        ],
        "notes": "Four-day instructor-led course with twelve linked self-paced paths. September 28 SC-500 deep review: Complete public course overview/language/duration list read:Implement end-to-end security controls for cloud and AI workloads,4days,10languages. See docs/research/2026-09-28-sc-500-deep-review.md No live infrastructure execution. October 28 group-04 learning review: Public course overview still lists 4 instructor day(s). Ten languages; identity/Key Vault, compliance, storage/database/network, compute, AI and posture responsibilities. Read scope: Complete rendered public course overview, audience, duration and language list. Syllabus heading rendered placeholders rather than detailed modules; no complete linked lesson/course consumption claimed. Limits: No product execution, paid lessons, video watching or assessment-question review."
      },
      {
        "id": "ab-250-course",
        "title": "AB-250T00-A Transform contact center experiences with AI in Dynamics 365",
        "url": "https://learn.microsoft.com/en-us/training/courses/ab-250t00",
        "publisher": "Microsoft Learn",
        "authority_class": 3,
        "source_type": "official-training",
        "access_model": "public",
        "last_checked": "2026-10-28",
        "supported_exams": [
          "AB-250"
        ],
        "notes": "Three-day official instructor-led course; linked paths total 11 hours 40 minutes. September 28 AB-250 deep review: Public course metadata inspected: English, three days. No event occurrence, enrollment or teaching verified. See docs/research/2026-09-28-ab-250-deep-review.md No live infrastructure execution. October 28 group-04 learning review: Public course overview still lists 3 instructor day(s). Seven languages: English, Simplified Chinese, French, German, Japanese, Brazilian Portuguese and Spanish; deployment modes, data/CCaaS connections, channels, users/security and AI. Read scope: Complete rendered public course overview, audience, duration and language list. Syllabus heading rendered placeholders rather than detailed modules; no complete linked lesson/course consumption claimed. Limits: No product execution, paid lessons, video watching or assessment-question review."
      },
      {
        "id": "microsoft-dp900-large-scale-analytics-module",
        "title": "Explore fundamentals of large-scale analytics",
        "url": "https://learn.microsoft.com/en-us/training/modules/examine-components-of-modern-data-warehouse/",
        "publisher": "Microsoft",
        "authority_class": 3,
        "source_type": "official-training",
        "access_model": "public",
        "last_checked": "2026-10-28",
        "supported_exams": [
          "DP-900"
        ],
        "notes": "September 28 DP-900 deep review: Contextual source fetched for availability. Full page, linked units/media and procedures not exhaustively reread; specific applied boundaries are recorded separately. See docs/research/2026-09-28-dp-900-deep-review.md No live infrastructure execution. October 28 group-04 learning review: Seven-unit module explicitly includes Fabric ingestion/analysis; current module total runtime not rendered. Read scope: Complete module outline and prerequisites; selected units separately recorded. Limits: No product execution, paid lessons, video watching or assessment-question review."
      },
      {
        "id": "mb-230-path-slas",
        "title": "Work with entitlements and service level agreements in Dynamics 365 Customer Service",
        "url": "https://learn.microsoft.com/en-us/training/paths/work-with-entitlements-and-slas-in-microsoft-dynamics-365-for-customer-service/",
        "publisher": "Microsoft Learn",
        "authority_class": 3,
        "source_type": "official-training",
        "access_model": "public",
        "last_checked": "2026-10-28",
        "supported_exams": [
          "MB-230"
        ],
        "notes": "Two hours one minute; SLA material maps directly, while entitlement content is useful adjacent context rather than an explicit March 2026 objective. September 28 MB-230 deep review: Complete public path title, prerequisites and module descriptions read. Current module placements recorded in overlap ledger; lesson contents and prior runtimes not verified. Seven paths contain 29 placements/25 distinct modules, including four repeated placements. See docs/research/2026-09-28-mb-230-deep-review.md No live infrastructure execution. October 28 group-04 learning review: Two-module path still separates SLA commitments from entitlement coverage/consumption; requires trial or tenant access for practice. Read scope: Complete public path outline; linked lessons not all read. Limits: No product execution, paid lessons, video watching or assessment-question review."
      },
      {
        "id": "mb-310-labs",
        "title": "MB-310 Microsoft Dynamics 365 Finance labs",
        "url": "https://github.com/MicrosoftLearning/MB-310-Microsoft-Dynamics-365-Finance",
        "publisher": "MicrosoftLearning",
        "authority_class": 3,
        "source_type": "official-training",
        "access_model": "public",
        "last_checked": "2026-10-28",
        "supported_exams": [
          "MB-310"
        ],
        "notes": "Public course lab instructions and files with an explicit repository license; individual labs remain subject to current-blueprint and tenant-UI checks. September 28 MB-310 deep review: Repository root/README and public listing inspected; individual lab instructions, commit history and runtime not audited. Linked only; no copied labs or execution. See docs/research/2026-09-28-mb-310-deep-review.md No live infrastructure execution. October 28 group-04 learning review: Hosted exercise directory and one specific lab read; do not infer all repository labs are current or executable. MIT license text inspected (copyright 2019 Sidney Andrews). Read scope: Repository root metadata and linked hosted directory; selected lab recorded separately; license text inspected. Limits: No scripts, solutions, PBIX, screenshots or hosted environment executed. Original exercise synthesis only; no upstream code or lab text republished."
      },
      {
        "id": "mb-500-labs",
        "title": "MB-500 Finance and Operations Apps Developer labs",
        "url": "https://github.com/MicrosoftLearning/MB-500-Microsoft-Dynamics-365-Finance-and-Operations-Apps-Developer",
        "publisher": "MicrosoftLearning",
        "authority_class": 3,
        "source_type": "official-training",
        "access_model": "public",
        "last_checked": "2026-10-28",
        "supported_exams": [
          "MB-500"
        ],
        "notes": "MIT-licensed public course lab instructions and files; UDE and portal-transition behavior needs current documentation checks. September 28 MB-500 deep review: Public repository root/README/license metadata inspected; individual labs, release history and tenant steps not audited or executed. See docs/research/2026-09-28-mb-500-deep-review.md No live infrastructure execution. October 28 group-04 learning review: Hosted exercise directory and one specific lab read; do not infer all repository labs are current or executable. MIT license text inspected (copyright 2019 Sidney Andrews). Read scope: Repository root metadata and linked hosted directory; selected lab recorded separately; license text inspected. Limits: No scripts, solutions, PBIX, screenshots or hosted environment executed. Original exercise synthesis only; no upstream code or lab text republished."
      },
      {
        "id": "mb-800-labs",
        "title": "MB-800 Business Central Functional Consultant labs",
        "url": "https://github.com/MicrosoftLearning/MB-800-Business-Central-Functional-Consultant",
        "publisher": "MicrosoftLearning",
        "authority_class": 3,
        "source_type": "official-training",
        "access_model": "public",
        "last_checked": "2026-10-28",
        "supported_exams": [
          "MB-800"
        ],
        "notes": "MIT-licensed public course labs; review current repository issues and tenant/localization differences before use. September 28 MB-800 deep review: Public root, README and MIT metadata read; individual labs/issues/history not audited or executed. See docs/research/2026-09-28-mb-800-deep-review.md No live infrastructure execution. October 28 group-04 learning review: Hosted exercise directory and one specific lab read; do not infer all repository labs are current or executable. MIT license text inspected (copyright 2019 Sidney Andrews). Read scope: Repository root metadata and linked hosted directory; selected lab recorded separately; license text inspected. Limits: No scripts, solutions, PBIX, screenshots or hosted environment executed. Original exercise synthesis only; no upstream code or lab text republished."
      },
      {
        "id": "mb-820-labs",
        "title": "MB-820 Business Central Developer labs",
        "url": "https://github.com/MicrosoftLearning/MB-820-Business-Central-Developer-Certification",
        "publisher": "MicrosoftLearning",
        "authority_class": 3,
        "source_type": "official-training",
        "access_model": "public",
        "last_checked": "2026-10-28",
        "supported_exams": [
          "MB-820"
        ],
        "notes": "MIT-licensed public course labs; repository README retains sample-course wording, while its hosted index lists MB-820 extension, upgrade, UI, report and API labs. September 28 MB-820 deep review: Public repository root/README/license inspected; INF99X sample template artifact remains. Individual labs/issues not audited or executed. See docs/research/2026-09-28-mb-820-deep-review.md No live infrastructure execution. October 28 group-04 learning review: Hosted exercise directory and one specific lab read; do not infer all repository labs are current or executable. MIT license text inspected (copyright 2019 Sidney Andrews). Read scope: Repository root metadata and linked hosted directory; selected lab recorded separately; license text inspected. Limits: No scripts, solutions, PBIX, screenshots or hosted environment executed. Original exercise synthesis only; no upstream code or lab text republished."
      },
      {
        "id": "pl-300-official-labs",
        "title": "MicrosoftLearning PL-300 hands-on labs",
        "url": "https://github.com/MicrosoftLearning/PL-300-Microsoft-Power-BI-Data-Analyst",
        "publisher": "MicrosoftLearning",
        "authority_class": 3,
        "source_type": "official-training",
        "access_model": "public",
        "last_checked": "2026-10-28",
        "supported_exams": [
          "PL-300"
        ],
        "notes": "Public MIT-licensed lab repository for PL-300T00; use current instructions and data files. October 28 group-04 learning review: Hosted exercise directory and one specific lab read; do not infer all repository labs are current or executable. MIT license text inspected (copyright 2019 Sidney Andrews). Read scope: Repository root metadata and linked hosted directory; selected lab recorded separately; license text inspected. Limits: No scripts, solutions, PBIX, screenshots or hosted environment executed. Original exercise synthesis only; no upstream code or lab text republished."
      },
      {
        "id": "mb820-upgrade",
        "title": "Upgrade codeunits",
        "url": "https://learn.microsoft.com/en-us/dynamics365/business-central/dev-itpro/developer/devenv-upgrading-extensions",
        "publisher": "Microsoft",
        "authority_class": 2,
        "source_type": "product-documentation",
        "access_model": "public",
        "last_checked": "2026-10-28",
        "supported_exams": [
          "MB-820"
        ],
        "notes": "September 28 MB-820 deep review: Main lifecycle, trigger order, company/database scope, app/data versions and upgrade-tag use/new-company/fresh-install registration sections read; full later procedural upgrade examples not audited. See docs/research/2026-09-28-mb-820-deep-review.md No live infrastructure execution. October 28 group-04 learning review: Upgrade triggers, AppVersion/DataVersion and tags give an authoritative repair reference for defective lab. Fresh-install/new-company tag registration and repeat-safe transformations are separate obligations. Read scope: Sections writing upgrade code through upgrade-tag registration/design considerations; selected example and sensitive external-effects paragraph. On-premises command sequence not evaluated as an online deployment recipe. Limits: No product execution, paid lessons, video watching or assessment-question review."
      },
      {
        "id": "microsoft-power-apps-plan-designer-faq-pl900",
        "title": "FAQ for plans in Power Apps",
        "url": "https://learn.microsoft.com/en-us/power-apps/maker/common/faq-plan-designer",
        "publisher": "Microsoft",
        "authority_class": 2,
        "source_type": "product-documentation",
        "access_model": "public",
        "last_checked": "2026-10-28",
        "supported_exams": [
          "PL-900"
        ],
        "notes": "Generated components, prerequisites, limits, language support, and preview capabilities are volatile. September 28 PL-900 deep review: Complete main FAQ read: requirements/roles/components, Dataverse and prompt limits; generated plan needs review. See docs/research/2026-09-28-pl-900-deep-review.md No live infrastructure execution. October 28 group-04 learning review: Roles/requirements/schema/component planning and refinement support a requirement-to-artifact worksheet; generated code-app statements refer to latest preview features. Dataverse requirement, capacity limits and responsible iteration are explicit. Read scope: Complete readable main FAQ body and last-updated field despite generic authorization banner. No images uploaded and no generated app created. Limits: No product execution, paid lessons, video watching or assessment-question review."
      },
      {
        "id": "sc-500-copilot-studio-protection",
        "title": "Enable real-time protection for Copilot Studio agents",
        "url": "https://learn.microsoft.com/en-us/training/modules/enable-protection-copilot-studio-agents/",
        "publisher": "Microsoft Learn",
        "authority_class": 3,
        "source_type": "official-training",
        "access_model": "public",
        "last_checked": "2026-10-28",
        "supported_exams": [
          "SC-500"
        ],
        "notes": "Current official module for configuration in Defender and verification of inventory, alerts, and Advanced Hunting output. September 28 SC-500 deep review: Complete public module overview, objectives and six-unit list read; linked units not read/executed. See docs/research/2026-09-28-sc-500-deep-review.md No live infrastructure execution. October 28 group-04 learning review: Six-unit outline centers on Defender/Power Platform coordination and output verification; no total runtime rendered. Read scope: Complete module outline and prerequisites; two selected unit bodies read separately. Limits: No product execution, paid lessons, video watching or assessment-question review."
      },
      {
        "id": "sc-500-tim-warner-companion",
        "title": "SC-500 Cloud and AI Security Engineer course companion",
        "url": "https://github.com/timothywarner-org/sc500",
        "publisher": "Tim Warner",
        "authority_class": 5,
        "source_type": "expert-resource",
        "access_model": "public",
        "last_checked": "2026-10-28",
        "supported_exams": [
          "SC-500"
        ],
        "notes": "MIT-licensed 15-lesson public companion with demos and an objective map; active development for a separately licensed Pearson/Microsoft Press video course. September 28 SC-500 deep review: Public root and README course outline/usage/prerequisites/license read;15lessons/~10h author claims, in-development. Scripts/lessons/issues not audited. No current publisher course listing established. See docs/research/2026-09-28-sc-500-deep-review.md No live infrastructure execution. October 28 group-04 learning review: README still claims 15 lessons/~10-hour video and active development. Third-party self-claimed 100% alignment is not independently established. Root metadata is insufficient to endorse scripts as idempotent. Read scope: README overview, outline, how-to-use and prerequisites; lesson 10/directory fetch denied, scripts not read. Limits: No paid videos watched, current publisher purchase listing established, or scripts audited/executed. Existing roughly 10-hour video claim remains attributed to author."
      },
      {
        "id": "ab-250-path-monitor",
        "title": "Monitor and optimize Dynamics 365 Contact Center with AI-driven insights",
        "url": "https://learn.microsoft.com/en-us/training/paths/monitor-optimize-dynamics-365-contact-center/",
        "publisher": "Microsoft Learn",
        "authority_class": 3,
        "source_type": "official-training",
        "access_model": "public",
        "last_checked": "2026-10-28",
        "supported_exams": [
          "AB-250"
        ],
        "notes": "One hour 46 minutes across three modules on supervisors, quality, proactive engagement, Power BI and Application Insights. September 28 AB-250 deep review: Full current three-module outline read; operations, proactive and analytics. Runtime not exposed. See docs/research/2026-09-28-ab-250-deep-review.md No live infrastructure execution. October 28 group-04 learning review: Three-module monitor/optimize path remains; supervisor permissions, monitoring, quality and analytics provide a focused starting point. Total runtime still not rendered. Read scope: Complete path overview/prerequisites and supervisor module description; remaining module bodies not read. Limits: No product execution, paid lessons, video watching or assessment-question review."
      }
    ],
    "source_update_semantics": "Complete existing source objects with preserved prior notes plus dated append; coordinator must merge by id to preserve concurrent evidence and confirm source/candidate matches. Changed authority tiers reflect source purpose, not promotion of learning content to blueprint/product authority.",
    "bounded_recommendation": "Apply the ten focused learning routes, the MB-820 lab-row caveat and matching source catalog entries after comparing preliminary hashes to the coordinator frozen inputs. Retain prior commercial metadata as dated history because these paid listings were not re-opened. No wider source-market absence claim or wholesale current-runtime recalculation. Review MB-820 source defects and MB-800 approval-chain contradiction with technical findings; keep unexecuted/compiler limits explicit.",
    "unresolved_questions": [
      "MB-820 upstream lab needs duplicate helper/signature repair and inclusion or removal of the final precondition-error expectation. No compiler run verifies the proposed independent design.",
      "MB-800 approval lab blank Approver ID conflicts with its own check-your-work wording; intended chain/default cannot be generalized without current product/configuration evidence.",
      "DP-900 launched Fabric exercise instructions were inaccessible; only introductory published duration and account requirement verified.",
      "SC-500 training claims and example query schema need product documentation and authorized execution before being adopted as observed technical behavior.",
      "No current paid catalog, subscriber lessons, signed-in partner event or assessment launch was evaluated in this focused pass."
    ],
    "validation": {
      "shared_files_written": false,
      "review_kind": "research proposal; neither same-context acceptance nor independent final review",
      "test_execution": "None; read-only research. Scratch JSON shape and exact replacement uniqueness checked."
    }
  },
  "source_gate_decisions": {
    "passed": [
      "DP-900",
      "MB-310",
      "MB-500",
      "MB-800",
      "MB-820",
      "PL-300",
      "PL-900"
    ],
    "blocked": {
      "MB-230": [
        "Require-confirmation setup and semi-autonomous runtime-table send wording remain imprecise; preserve configured approval and require authorized runtime evidence."
      ],
      "SC-500": [
        "Earlier October27 Foundational CSPM opt-in announcement absent from current release body; actual default behavior unconfirmed. Omission proves neither rollout nor cancellation."
      ],
      "AB-250": [
        "Contact Center plan/ledger number-acquisition dates and ACS resource-versus-existing-number eligibility statements differ; specific-tenant acquisition/port-in eligibility still needs Microsoft confirmation."
      ]
    },
    "boundary": "Provisional coordinated source gates remain subject to fresh-context review. Product/Office/cloud/lab execution not performed."
  },
  "health_resolution": {
    "initial": "468 observations:445ok,19blocked,3DNSerrors,1HTTP404; original report preserved.",
    "retry": "All three partner-hub IDs retried HTTP200; transient DNS not universal portal retirement.",
    "missing": "PL900 path remains404 in catalog/history but removed from current guide. Specifically evaluated introduction course replaces it; current guide uses no missing/error URL.",
    "final_bad_catalog_ids": [
      "pluralsight-pl-900"
    ]
  },
  "coordinator_source_observations": {
    "reviewed_on": "2026-10-28",
    "observations": [
      {
        "url": "https://www.pluralsight.com/courses/intro-microsoft-power-platform-fundamentals-900",
        "read_scope": "Public landing/main course description and outline only; no paid/video/assessment access",
        "visible_duration": "24 minutes",
        "visible_last_updated": "October13,2026",
        "replacement_for": "https://www.pluralsight.com/paths/microsoft-power-platform-fundamentals-pl-900",
        "failed_original": "HTTP404 recorded in initial source-health report"
      },
      {
        "url": "https://www.skilling-hub.com/en-US",
        "read_scope": "Browser search/open plus sequential direct retry; initial3DNSerrors retained, all3 retried200",
        "interpretation": "Transient direct-DNS failures, not evidence portal retired. No partner content or sign-in entered."
      }
    ]
  },
  "catalog": {
    "new_source_ids": [
      "g04-examb-contactcentermessagingsdk-android",
      "g04-examb-voicemodule",
      "g04-examb-irecordingoperationcompletedeventdata",
      "g04-examb-form-processing-model-in-flow",
      "g04-examb-connect-services-windows-based",
      "g04-examb-windows-security-event-id-reference",
      "exam-a-cache",
      "exam-a-mb800-log",
      "exam-a-costing",
      "g04-examb-onboarding-checklist",
      "g04-examb-devenv-al-variables",
      "g04-examb-devenv-application-insights-for-extensions",
      "g04-examb-devenv-instrument-application-for-telemetry-app-insights",
      "g04-examb-devenv-profile-object",
      "g04-examb-devenv-query-object",
      "g04-examb-devenv-report-dataset",
      "g04-examb-devenv-report-object",
      "g04-examb-devenv-substituting-reports",
      "g04-examb-devenv-test-codeunits-and-test-methods",
      "g04-examb-devenv-views",
      "g04-examb-devenv-xmlport-object",
      "exam-a-mb800-depreciation",
      "exam-a-mb800-depreciate",
      "exam-a-mb800-prepayment",
      "exam-a-mb800-inventory-ops",
      "exam-a-mb800-transfer",
      "exam-a-mb800-combine-purchase",
      "exam-a-recurring",
      "exam-a-mb800-combine",
      "exam-a-mb800-blanket",
      "exam-a-mb800-recurring-sales",
      "g04-examb-configure-surveys",
      "g04-examb-copilot-enable-help-pane",
      "g04-examb-copilot-enable-summary",
      "g04-examb-customize-copilot-conv-summary",
      "g04-examb-intro-messaging-apis",
      "g04-examb-agent-scripts",
      "g04-examb-auto-close-conversation-powerapps",
      "g04-examb-automation-dictionary-keys",
      "exam-a-mb230-contacts",
      "g04-examb-configure-time-out-rules",
      "g04-examb-create-agent-experience-profile",
      "g04-examb-create-quick-replies",
      "g04-examb-extend-copilot-with-copilot-studio",
      "g04-examb-macros-productivity-automation",
      "exam-a-mb230-resolution",
      "g04-examb-presence-custom-presence",
      "exam-a-mb230-skills",
      "g04-examb-smart-assist",
      "g04-examb-microsoft-apm",
      "g04-examb-getconversationid",
      "g04-examb-getfocusedsession",
      "g04-examb-startchat",
      "g04-examb-render-live-chat-widget-mobile",
      "g04-examb-send-auth-token-starting-chat",
      "exam-a-mb230-translate",
      "exam-a-mb500-er",
      "exam-a-mb500-ssrs",
      "exam-a-mb500-store",
      "exam-a-mb500-outbound",
      "exam-a-mb500-composite",
      "exam-a-mb500-change",
      "exam-a-mb500-integration",
      "exam-a-mb500-rowversion",
      "exam-a-mb500-attributes",
      "exam-a-mb500-xpp",
      "exam-a-mb500-query",
      "exam-a-mb500-global",
      "exam-a-mb500-issue",
      "exam-a-mb500-async-migration",
      "exam-a-mb310-excel-design",
      "exam-a-mb310-vendor-recurring",
      "exam-a-mb310-prepayment",
      "exam-a-mb310-recurring",
      "exam-a-mb310-letters",
      "exam-a-mb310-interest",
      "exam-a-mb310-budget-register",
      "exam-a-mb310-forecast",
      "exam-a-mb310-centralized",
      "exam-a-mb310-split",
      "exam-a-mb310-tax",
      "exam-a-mb310-excel",
      "exam-a-mb310-company",
      "exam-a-mb310-withholding",
      "exam-a-mb310-tax-payment",
      "exam-a-mb310-periodic",
      "exam-a-alias",
      "exam-a-mb500-keyvault",
      "exam-a-mb310-billing",
      "exam-a-mb310-perdiem",
      "exam-a-mb310-personal-expense",
      "exam-a-mb310-expenses",
      "exam-a-mb310-mileage",
      "exam-a-mb310-intercompany-expense",
      "g04-examb-authoring-create-edit-topics",
      "exam-a-mb230-notify",
      "g04-examb-ai-conversations-create-app",
      "exam-a-mb230-table-example",
      "exam-a-mb230-maker",
      "exam-a-mb230-form",
      "g04-examb-custom-connectors-timeline-control",
      "g04-examb-build-solution",
      "g04-examb-copilot-in-power-automate-for-desktop",
      "g04-examb-desktop-drillthrough",
      "g04-examb-desktop-tooltips",
      "g04-examb-calculation-groups",
      "g04-examb-desktop-quick-measures",
      "exam-a-mb230-search",
      "exam-a-mb230-email",
      "ab250-supervisor-controls-unit",
      "sc500-3-protection-unit",
      "sc500-4-protection-unit",
      "dp900-2-analytics-unit",
      "dp900-3-analytics-unit",
      "dp900-4-analytics-unit",
      "dp900-fabric-exercise-unit",
      "exam-a-sandbox",
      "exam-a-workflow",
      "exam-a-mb310-asset-budget",
      "mb230-sla-items-unit",
      "mb310-focused-lab",
      "mb500-focused-lab",
      "exam-a-serializer",
      "mb800-focused-lab",
      "mb820-focused-lab",
      "pl300-focused-lab",
      "g04-pluralsight-pl900-introduction"
    ],
    "new_sources": 127,
    "reused_association_updates": [
      {
        "id": "mb-820-partner-skilling-hub",
        "added_exams": [
          "AB-250",
          "MB-230",
          "MB-310",
          "MB-500",
          "MB-800",
          "PL-300",
          "SC-500"
        ]
      }
    ],
    "evaluated_source_updates": [
      "ab-250-course",
      "ab-250-credential",
      "ab-250-path-monitor",
      "ab250-acs-migration",
      "ab250-acs-retirement",
      "ab250-deprecations",
      "ab250-record-api",
      "dp600-adbc",
      "dp900-semantic",
      "mb-230-course",
      "mb-230-path-slas",
      "mb-310-course",
      "mb-310-labs",
      "mb-500-course",
      "mb-500-labs",
      "mb-800-course",
      "mb-800-labs",
      "mb-820-course",
      "mb-820-labs",
      "mb230-agent-resolution",
      "mb230-inbox",
      "mb230-knowledge",
      "mb310-deferral-schedules",
      "mb500-migration",
      "mb800-payables-setup",
      "mb820-deprecated",
      "mb820-try",
      "mb820-upgrade",
      "microsoft-copilot-studio-agent-evaluation-pl900",
      "microsoft-dp-900-course",
      "microsoft-dp900-large-scale-analytics-module",
      "microsoft-pl-900-course",
      "microsoft-power-apps-plan-designer-faq-pl900",
      "pl-300-course",
      "pl-300-official-labs",
      "power-platform-important-changes",
      "sc-500-copilot-studio-protection",
      "sc-500-instructor-course",
      "sc-500-tim-warner-companion",
      "sc100-cloud-release"
    ],
    "fresh_health_sources": 128,
    "removed_current_guide_url": "https://www.pluralsight.com/paths/microsoft-power-platform-fundamentals-pl-900",
    "preservation": "Retain original source rows and historical notes; append observations. Only evaluated URLs used by actual guide text are promoted.",
    "final_new_source_ids": [
      "g04-examb-contactcentermessagingsdk-android",
      "g04-examb-voicemodule",
      "g04-examb-irecordingoperationcompletedeventdata",
      "g04-examb-form-processing-model-in-flow",
      "g04-examb-connect-services-windows-based",
      "g04-examb-windows-security-event-id-reference",
      "exam-a-cache",
      "exam-a-mb800-log",
      "exam-a-costing",
      "g04-examb-onboarding-checklist",
      "g04-examb-devenv-al-variables",
      "g04-examb-devenv-application-insights-for-extensions",
      "g04-examb-devenv-instrument-application-for-telemetry-app-insights",
      "g04-examb-devenv-profile-object",
      "g04-examb-devenv-query-object",
      "g04-examb-devenv-report-dataset",
      "g04-examb-devenv-report-object",
      "g04-examb-devenv-substituting-reports",
      "g04-examb-devenv-test-codeunits-and-test-methods",
      "g04-examb-devenv-views",
      "g04-examb-devenv-xmlport-object",
      "exam-a-mb800-depreciation",
      "exam-a-mb800-depreciate",
      "exam-a-mb800-prepayment",
      "exam-a-mb800-inventory-ops",
      "exam-a-mb800-transfer",
      "exam-a-mb800-combine-purchase",
      "exam-a-recurring",
      "exam-a-mb800-combine",
      "exam-a-mb800-blanket",
      "exam-a-mb800-recurring-sales",
      "g04-examb-configure-surveys",
      "g04-examb-copilot-enable-help-pane",
      "g04-examb-copilot-enable-summary",
      "g04-examb-customize-copilot-conv-summary",
      "g04-examb-intro-messaging-apis",
      "g04-examb-agent-scripts",
      "g04-examb-auto-close-conversation-powerapps",
      "g04-examb-automation-dictionary-keys",
      "exam-a-mb230-contacts",
      "g04-examb-configure-time-out-rules",
      "g04-examb-create-agent-experience-profile",
      "g04-examb-create-quick-replies",
      "g04-examb-extend-copilot-with-copilot-studio",
      "g04-examb-macros-productivity-automation",
      "exam-a-mb230-resolution",
      "g04-examb-presence-custom-presence",
      "exam-a-mb230-skills",
      "g04-examb-smart-assist",
      "g04-examb-microsoft-apm",
      "g04-examb-getconversationid",
      "g04-examb-getfocusedsession",
      "g04-examb-startchat",
      "g04-examb-render-live-chat-widget-mobile",
      "g04-examb-send-auth-token-starting-chat",
      "exam-a-mb230-translate",
      "exam-a-mb500-er",
      "exam-a-mb500-ssrs",
      "exam-a-mb500-store",
      "exam-a-mb500-outbound",
      "exam-a-mb500-composite",
      "exam-a-mb500-change",
      "exam-a-mb500-integration",
      "exam-a-mb500-rowversion",
      "exam-a-mb500-attributes",
      "exam-a-mb500-xpp",
      "exam-a-mb500-query",
      "exam-a-mb500-global",
      "exam-a-mb500-issue",
      "exam-a-mb500-async-migration",
      "exam-a-mb310-excel-design",
      "exam-a-mb310-vendor-recurring",
      "exam-a-mb310-prepayment",
      "exam-a-mb310-recurring",
      "exam-a-mb310-letters",
      "exam-a-mb310-interest",
      "exam-a-mb310-budget-register",
      "exam-a-mb310-forecast",
      "exam-a-mb310-centralized",
      "exam-a-mb310-split",
      "exam-a-mb310-tax",
      "exam-a-mb310-excel",
      "exam-a-mb310-company",
      "exam-a-mb310-withholding",
      "exam-a-mb310-tax-payment",
      "exam-a-mb310-periodic",
      "exam-a-alias",
      "exam-a-mb500-keyvault",
      "exam-a-mb310-billing",
      "exam-a-mb310-perdiem",
      "exam-a-mb310-personal-expense",
      "exam-a-mb310-expenses",
      "exam-a-mb310-mileage",
      "exam-a-mb310-intercompany-expense",
      "g04-examb-authoring-create-edit-topics",
      "exam-a-mb230-notify",
      "g04-examb-ai-conversations-create-app",
      "exam-a-mb230-table-example",
      "exam-a-mb230-maker",
      "exam-a-mb230-form",
      "g04-examb-custom-connectors-timeline-control",
      "g04-examb-build-solution",
      "g04-examb-copilot-in-power-automate-for-desktop",
      "g04-examb-desktop-drillthrough",
      "g04-examb-desktop-tooltips",
      "g04-examb-calculation-groups",
      "g04-examb-desktop-quick-measures",
      "exam-a-mb230-search",
      "exam-a-mb230-email",
      "ab250-supervisor-controls-unit",
      "sc500-3-protection-unit",
      "sc500-4-protection-unit",
      "dp900-2-analytics-unit",
      "dp900-3-analytics-unit",
      "dp900-4-analytics-unit",
      "dp900-fabric-exercise-unit",
      "exam-a-sandbox",
      "exam-a-workflow",
      "exam-a-mb310-asset-budget",
      "mb230-sla-items-unit",
      "mb310-focused-lab",
      "mb500-focused-lab",
      "exam-a-serializer",
      "mb800-focused-lab",
      "mb820-focused-lab",
      "pl300-focused-lab",
      "g04-pluralsight-pl900-introduction",
      "g04-examb-desktop-calculated-tables",
      "g04-examb-copilot-create-reports",
      "g04-examb-copilot-create-narrative",
      "g04-examb-voice-configuration",
      "g04-examb-voice-dtmf",
      "g04-examb-voice-sip-x-header",
      "g04-review-a-xpp-inheritance",
      "g04-review-a-xpp-syntax",
      "g04-review-a-temporary-choice",
      "g04-review-a-temporary-build",
      "g04-review-a-bc-dimensions",
      "g04-review-a-bc-acquire"
    ],
    "final_new_sources": 139
  },
  "health": {
    "initial": {
      "total": 468,
      "ok": 445,
      "blocked": 19,
      "broken": 4,
      "changed": 16,
      "stale": 0,
      "baseline_missing": false,
      "needs_review": true
    },
    "initial_errors": "Three transient DNS failures and one HTTP404 retained. All three partner-hub IDs retried HTTP200; missing PL900 path removed from current recommendations, source/history retained.",
    "additional": {
      "total": 128,
      "ok": 128,
      "blocked": 0,
      "broken": 0,
      "changed": 0,
      "stale": 0,
      "baseline_missing": false,
      "needs_review": false
    },
    "retry": {
      "total": 3,
      "ok": 3,
      "blocked": 0,
      "broken": 0,
      "changed": 0,
      "stale": 0,
      "baseline_missing": false,
      "needs_review": false
    },
    "coordinator": {
      "total": 1,
      "ok": 1,
      "blocked": 0,
      "broken": 0,
      "changed": 0,
      "stale": 0,
      "baseline_missing": false,
      "needs_review": false
    },
    "late_semantic": {
      "total": 4,
      "ok": 4,
      "blocked": 0,
      "broken": 0,
      "changed": 0,
      "stale": 0,
      "baseline_missing": false,
      "needs_review": false
    },
    "voice": {
      "total": 3,
      "ok": 3,
      "blocked": 0,
      "broken": 0,
      "changed": 0,
      "stale": 0,
      "baseline_missing": false,
      "needs_review": false
    },
    "independent_review_repair": {
      "total": 6,
      "ok": 6,
      "blocked": 0,
      "broken": 0,
      "changed": 0,
      "stale": 0,
      "baseline_missing": false,
      "needs_review": false
    },
    "final_unique": {
      "total": 600,
      "reachable": 581,
      "access_blocked": 19,
      "missing_or_error": 0
    }
  },
  "validation": {
    "status": "passed before authorized stage/commit/push",
    "unit_tests": {
      "run": 199,
      "passed": true
    },
    "repository_validation": "passed",
    "reviewed_learning_resources_drift": false,
    "strict_site_build": "passed",
    "generated_site_validation": "passed",
    "diff_whitespace_check": "passed",
    "new_service_or_pipeline_execution": false,
    "boundary": "Final Markdown, guides, source/binding records and links were fixed before the website gate. This JSON-only validation metadata is recorded afterward; no rendered Markdown or links changed. Final repository/index checks follow; remote workflows rebuild and validate the final commit after push. No production deployment claimed.",
    "check_output_sha256": {
      "tests.log": "c301bb7e9d823181e02eebfa8cd1e410f78be97cfd2dc86f37cf100a604649e7",
      "repository-validation.log": "3ac098dae1d09b59c78bfa83456c83a24aa7308b4b1b6f2e899b2284e5b360ea",
      "final-resource-drift.log": "d28016225567fcf09849dc13984ea580d4c45eebb41b86f1a264e4fb4654d7af",
      "final-mkdocs.log": "7ad2d348fdc4c30220936d85a63fba70e483ec03485bcf2f46c2f8f85caa192e",
      "final-site-validation.log": "7c73e2c9af83a76584eb3405bee55b609273f378e966f358455c673c2ee00047"
    }
  },
  "binding_correction_audit": {
    "finding": "G04-B-R1",
    "objective_count": 396,
    "rows": [
      {
        "objective_id": "MB-820:1.1",
        "wording": "Describe the components and capabilities of Business Central",
        "selected_authored_sections": [
          "Architecture and extension model"
        ],
        "new_ranges": [
          [
            60,
            66
          ]
        ],
        "prior_ranges": [
          [
            60,
            66
          ]
        ],
        "binding_changed": false,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "MB-820:1.2",
        "wording": "Describe the core solution and extensions approach for Business Central",
        "selected_authored_sections": [
          "Architecture and extension model"
        ],
        "new_ranges": [
          [
            60,
            66
          ]
        ],
        "prior_ranges": [
          [
            60,
            66
          ]
        ],
        "binding_changed": false,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "MB-820:1.3",
        "wording": "Describe the update lifecycle for customizations of Business Central",
        "selected_authored_sections": [
          "Architecture and extension model"
        ],
        "new_ranges": [
          [
            60,
            66
          ]
        ],
        "prior_ranges": [
          [
            60,
            66
          ]
        ],
        "binding_changed": false,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "MB-820:1.4",
        "wording": "Differentiate Business Central online and Business Central on-premises features",
        "selected_authored_sections": [
          "Architecture and extension model"
        ],
        "new_ranges": [
          [
            60,
            66
          ]
        ],
        "prior_ranges": [
          [
            60,
            66
          ]
        ],
        "binding_changed": false,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "MB-820:2.1",
        "wording": "Differentiate between the base app and the system app",
        "selected_authored_sections": [
          "Architecture and extension model"
        ],
        "new_ranges": [
          [
            60,
            66
          ]
        ],
        "prior_ranges": [
          [
            62,
            64
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "MB-820:2.2",
        "wording": "Describe the functionality of apps",
        "selected_authored_sections": [
          "Apps and AppSource",
          "Architecture and extension model"
        ],
        "new_ranges": [
          [
            70,
            76
          ],
          [
            60,
            66
          ]
        ],
        "prior_ranges": [
          [
            70,
            72
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "MB-820:2.3",
        "wording": "Describe the process of bringing an app to AppSource",
        "selected_authored_sections": [
          "Apps and AppSource"
        ],
        "new_ranges": [
          [
            70,
            76
          ]
        ],
        "prior_ranges": [
          [
            70,
            72
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "MB-820:3.1",
        "wording": "Describe the development environment for Business Central",
        "selected_authored_sections": [
          "Configure the development environment"
        ],
        "new_ranges": [
          [
            97,
            99
          ]
        ],
        "prior_ranges": [
          [
            97,
            99
          ]
        ],
        "binding_changed": false,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "MB-820:3.2",
        "wording": "Install and configure the development environment",
        "selected_authored_sections": [
          "Configure the development environment",
          "Create, debug and deploy extensions",
          "Current deployment and endpoint transitions"
        ],
        "new_ranges": [
          [
            97,
            99
          ],
          [
            103,
            115
          ],
          [
            80,
            91
          ]
        ],
        "prior_ranges": [
          [
            97,
            99
          ],
          [
            91,
            91
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "MB-820:3.3",
        "wording": "Manage configuration files for an AL extension",
        "selected_authored_sections": [
          "Configure the development environment"
        ],
        "new_ranges": [
          [
            97,
            99
          ]
        ],
        "prior_ranges": [
          [
            97,
            99
          ]
        ],
        "binding_changed": false,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "MB-820:3.4",
        "wording": "Manage multiple AL extensions in one workspace",
        "selected_authored_sections": [
          "Configure the development environment"
        ],
        "new_ranges": [
          [
            97,
            99
          ]
        ],
        "prior_ranges": [
          [
            97,
            99
          ]
        ],
        "binding_changed": false,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "MB-820:4.1",
        "wording": "Debug an extension with Visual Studio Code",
        "selected_authored_sections": [
          "Create, debug and deploy extensions"
        ],
        "new_ranges": [
          [
            103,
            115
          ]
        ],
        "prior_ranges": [
          [
            103,
            103
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "MB-820:4.2",
        "wording": "Deploy an extension",
        "selected_authored_sections": [
          "Create, debug and deploy extensions"
        ],
        "new_ranges": [
          [
            103,
            115
          ]
        ],
        "prior_ranges": [
          [
            105,
            105
          ],
          [
            91,
            91
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "MB-820:4.3",
        "wording": "Create or modify a Business Central extension in Visual Studio Code",
        "selected_authored_sections": [
          "Create, debug and deploy extensions"
        ],
        "new_ranges": [
          [
            103,
            115
          ]
        ],
        "prior_ranges": [
          [
            103,
            105
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "MB-820:4.4",
        "wording": "Manage multilanguage development",
        "selected_authored_sections": [
          "Create, debug and deploy extensions"
        ],
        "new_ranges": [
          [
            103,
            115
          ]
        ],
        "prior_ranges": [
          [
            107,
            107
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "MB-820:4.5",
        "wording": "Maintain extensions",
        "selected_authored_sections": [
          "Create, debug and deploy extensions"
        ],
        "new_ranges": [
          [
            103,
            115
          ]
        ],
        "prior_ranges": [
          [
            105,
            115
          ],
          [
            91,
            91
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "MB-820:5.1",
        "wording": "Develop Role Center pages",
        "selected_authored_sections": [
          "Tables, enums and pages"
        ],
        "new_ranges": [
          [
            121,
            131
          ]
        ],
        "prior_ranges": [
          [
            127,
            127
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "MB-820:5.2",
        "wording": "Identify different page types",
        "selected_authored_sections": [
          "Tables, enums and pages"
        ],
        "new_ranges": [
          [
            121,
            131
          ]
        ],
        "prior_ranges": [
          [
            125,
            125
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "MB-820:5.3",
        "wording": "Build and extend page objects",
        "selected_authored_sections": [
          "Tables, enums and pages"
        ],
        "new_ranges": [
          [
            121,
            131
          ]
        ],
        "prior_ranges": [
          [
            125,
            125
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "MB-820:5.4",
        "wording": "Build and extend tables",
        "selected_authored_sections": [
          "Tables, enums and pages"
        ],
        "new_ranges": [
          [
            121,
            131
          ]
        ],
        "prior_ranges": [
          [
            121,
            121
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "MB-820:5.5",
        "wording": "Build and extend enums",
        "selected_authored_sections": [
          "Tables, enums and pages"
        ],
        "new_ranges": [
          [
            121,
            131
          ]
        ],
        "prior_ranges": [
          [
            123,
            123
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "MB-820:6.1",
        "wording": "Substitute a report",
        "selected_authored_sections": [
          "Reports",
          "Worked object path: import, query and report"
        ],
        "new_ranges": [
          [
            135,
            139
          ],
          [
            151,
            155
          ]
        ],
        "prior_ranges": [
          [
            135,
            137
          ],
          [
            139,
            139
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "MB-820:6.2",
        "wording": "Create a report layout",
        "selected_authored_sections": [
          "Reports",
          "Worked object path: import, query and report"
        ],
        "new_ranges": [
          [
            135,
            139
          ],
          [
            151,
            155
          ]
        ],
        "prior_ranges": [
          [
            135,
            137
          ],
          [
            151,
            151
          ],
          [
            153,
            153
          ],
          [
            155,
            155
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "MB-820:6.3",
        "wording": "Create document reports",
        "selected_authored_sections": [
          "Reports",
          "Worked object path: import, query and report"
        ],
        "new_ranges": [
          [
            135,
            139
          ],
          [
            151,
            155
          ]
        ],
        "prior_ranges": [
          [
            135,
            137
          ],
          [
            151,
            151
          ],
          [
            153,
            153
          ],
          [
            155,
            155
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "MB-820:6.4",
        "wording": "Design the data model of a report",
        "selected_authored_sections": [
          "Reports",
          "Worked object path: import, query and report"
        ],
        "new_ranges": [
          [
            135,
            139
          ],
          [
            151,
            155
          ]
        ],
        "prior_ranges": [
          [
            135,
            137
          ],
          [
            151,
            151
          ],
          [
            153,
            153
          ],
          [
            155,
            155
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "MB-820:6.5",
        "wording": "Implement multilanguage in reports",
        "selected_authored_sections": [
          "Reports",
          "Worked object path: import, query and report"
        ],
        "new_ranges": [
          [
            135,
            139
          ],
          [
            151,
            155
          ]
        ],
        "prior_ranges": [
          [
            135,
            137
          ],
          [
            151,
            151
          ],
          [
            153,
            153
          ],
          [
            155,
            155
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "MB-820:6.6",
        "wording": "Use report triggers, functions, and processing-only reports",
        "selected_authored_sections": [
          "Reports",
          "Worked object path: import, query and report"
        ],
        "new_ranges": [
          [
            135,
            139
          ],
          [
            151,
            155
          ]
        ],
        "prior_ranges": [
          [
            135,
            137
          ],
          [
            151,
            151
          ],
          [
            153,
            153
          ],
          [
            155,
            155
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "MB-820:6.7",
        "wording": "Develop the report request page",
        "selected_authored_sections": [
          "Reports",
          "Worked object path: import, query and report"
        ],
        "new_ranges": [
          [
            135,
            139
          ],
          [
            151,
            155
          ]
        ],
        "prior_ranges": [
          [
            135,
            137
          ],
          [
            151,
            151
          ],
          [
            153,
            153
          ],
          [
            155,
            155
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "MB-820:7.1",
        "wording": "Configure different XMLport properties",
        "selected_authored_sections": [
          "XMLports and queries",
          "Worked object path: import, query and report"
        ],
        "new_ranges": [
          [
            143,
            147
          ],
          [
            151,
            155
          ]
        ],
        "prior_ranges": [
          [
            143,
            143
          ],
          [
            151,
            151
          ],
          [
            153,
            153
          ],
          [
            155,
            155
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "MB-820:7.2",
        "wording": "Configure nodes and their properties",
        "selected_authored_sections": [
          "XMLports and queries",
          "Worked object path: import, query and report"
        ],
        "new_ranges": [
          [
            143,
            147
          ],
          [
            151,
            155
          ]
        ],
        "prior_ranges": [
          [
            143,
            143
          ],
          [
            151,
            151
          ],
          [
            153,
            153
          ],
          [
            155,
            155
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "MB-820:7.3",
        "wording": "Use XMLports in AL code",
        "selected_authored_sections": [
          "XMLports and queries",
          "Worked object path: import, query and report"
        ],
        "new_ranges": [
          [
            143,
            147
          ],
          [
            151,
            155
          ]
        ],
        "prior_ranges": [
          [
            143,
            143
          ],
          [
            151,
            151
          ],
          [
            153,
            153
          ],
          [
            155,
            155
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "MB-820:8.1",
        "wording": "Create and access codeunits",
        "selected_authored_sections": [
          "Codeunits, events and interfaces",
          "Worked AL reasoning: values, variables and record effects"
        ],
        "new_ranges": [
          [
            159,
            161
          ],
          [
            215,
            217
          ]
        ],
        "prior_ranges": [
          [
            159,
            161
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "MB-820:8.2",
        "wording": "Use events and triggers",
        "selected_authored_sections": [
          "Codeunits, events and interfaces"
        ],
        "new_ranges": [
          [
            159,
            161
          ]
        ],
        "prior_ranges": [
          [
            159,
            161
          ]
        ],
        "binding_changed": false,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "MB-820:8.3",
        "wording": "Implement interfaces",
        "selected_authored_sections": [
          "Codeunits, events and interfaces"
        ],
        "new_ranges": [
          [
            159,
            161
          ]
        ],
        "prior_ranges": [
          [
            159,
            161
          ]
        ],
        "binding_changed": false,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "MB-820:8.4",
        "wording": "Create installation and upgrade codeunits",
        "selected_authored_sections": [
          "Codeunits, events and interfaces",
          "Create, debug and deploy extensions",
          "5. Upgrade every company exactly once"
        ],
        "new_ranges": [
          [
            159,
            161
          ],
          [
            103,
            115
          ],
          [
            325,
            325
          ]
        ],
        "prior_ranges": [
          [
            159,
            161
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "MB-820:9.1",
        "wording": "Create and extend permission sets",
        "selected_authored_sections": [
          "Entitlements, permission sets and queries"
        ],
        "new_ranges": [
          [
            165,
            171
          ]
        ],
        "prior_ranges": [
          [
            165,
            171
          ]
        ],
        "binding_changed": false,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "MB-820:9.2",
        "wording": "Override entitlements with inherent permissions",
        "selected_authored_sections": [
          "Entitlements, permission sets and queries"
        ],
        "new_ranges": [
          [
            165,
            171
          ]
        ],
        "prior_ranges": [
          [
            165,
            171
          ]
        ],
        "binding_changed": false,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "MB-820:9.3",
        "wording": "Troubleshoot permission sets",
        "selected_authored_sections": [
          "Entitlements, permission sets and queries"
        ],
        "new_ranges": [
          [
            165,
            171
          ]
        ],
        "prior_ranges": [
          [
            165,
            171
          ]
        ],
        "binding_changed": false,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "MB-820:10.1",
        "wording": "Link and join data items",
        "selected_authored_sections": [
          "XMLports and queries",
          "Worked object path: import, query and report",
          "3. Joining at the wrong grain doubles a report"
        ],
        "new_ranges": [
          [
            143,
            147
          ],
          [
            151,
            155
          ],
          [
            317,
            317
          ]
        ],
        "prior_ranges": [
          [
            145,
            147
          ],
          [
            151,
            151
          ],
          [
            153,
            153
          ],
          [
            155,
            155
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "MB-820:10.2",
        "wording": "Apply filters in query objects",
        "selected_authored_sections": [
          "XMLports and queries",
          "Worked object path: import, query and report",
          "3. Joining at the wrong grain doubles a report"
        ],
        "new_ranges": [
          [
            143,
            147
          ],
          [
            151,
            155
          ],
          [
            317,
            317
          ]
        ],
        "prior_ranges": [
          [
            145,
            147
          ],
          [
            151,
            151
          ],
          [
            153,
            153
          ],
          [
            155,
            155
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "MB-820:10.3",
        "wording": "Use queries instead of record variables",
        "selected_authored_sections": [
          "XMLports and queries",
          "Worked object path: import, query and report",
          "3. Joining at the wrong grain doubles a report"
        ],
        "new_ranges": [
          [
            143,
            147
          ],
          [
            151,
            155
          ],
          [
            317,
            317
          ]
        ],
        "prior_ranges": [
          [
            145,
            147
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "MB-820:10.4",
        "wording": "Aggregate data in query objects",
        "selected_authored_sections": [
          "XMLports and queries",
          "Worked object path: import, query and report",
          "3. Joining at the wrong grain doubles a report"
        ],
        "new_ranges": [
          [
            143,
            147
          ],
          [
            151,
            155
          ],
          [
            317,
            317
          ]
        ],
        "prior_ranges": [
          [
            145,
            147
          ],
          [
            151,
            151
          ],
          [
            153,
            153
          ],
          [
            155,
            155
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "MB-820:10.5",
        "wording": "Use a query to create a report",
        "selected_authored_sections": [
          "XMLports and queries",
          "Worked object path: import, query and report",
          "3. Joining at the wrong grain doubles a report"
        ],
        "new_ranges": [
          [
            143,
            147
          ],
          [
            151,
            155
          ],
          [
            317,
            317
          ]
        ],
        "prior_ranges": [
          [
            145,
            147
          ],
          [
            151,
            151
          ],
          [
            153,
            153
          ],
          [
            155,
            155
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "MB-820:11.1",
        "wording": "Create profiles in AL",
        "selected_authored_sections": [
          "UI experience and onboarding"
        ],
        "new_ranges": [
          [
            177,
            183
          ]
        ],
        "prior_ranges": [
          [
            177,
            179
          ],
          [
            183,
            183
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "MB-820:11.2",
        "wording": "Use and create views in AL",
        "selected_authored_sections": [
          "UI experience and onboarding"
        ],
        "new_ranges": [
          [
            177,
            183
          ]
        ],
        "prior_ranges": [
          [
            177,
            179
          ],
          [
            183,
            183
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "MB-820:11.3",
        "wording": "Develop the UI by using the user assistance model",
        "selected_authored_sections": [
          "UI experience and onboarding"
        ],
        "new_ranges": [
          [
            177,
            183
          ]
        ],
        "prior_ranges": [
          [
            177,
            179
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "MB-820:11.4",
        "wording": "Integrate assisted setup",
        "selected_authored_sections": [
          "UI experience and onboarding"
        ],
        "new_ranges": [
          [
            177,
            183
          ]
        ],
        "prior_ranges": [
          [
            177,
            179
          ],
          [
            181,
            181
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "MB-820:11.5",
        "wording": "Create teaching tips and in-app tours to onboard users",
        "selected_authored_sections": [
          "UI experience and onboarding"
        ],
        "new_ranges": [
          [
            177,
            183
          ]
        ],
        "prior_ranges": [
          [
            177,
            179
          ],
          [
            181,
            181
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "MB-820:11.6",
        "wording": "Create an onboarding checklist",
        "selected_authored_sections": [
          "UI experience and onboarding"
        ],
        "new_ranges": [
          [
            177,
            183
          ]
        ],
        "prior_ranges": [
          [
            177,
            179
          ],
          [
            181,
            181
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "MB-820:12.1",
        "wording": "Implement the data process model in Business Central",
        "selected_authored_sections": [
          "Development standards and data process"
        ],
        "new_ranges": [
          [
            187,
            191
          ]
        ],
        "prior_ranges": [
          [
            187,
            191
          ]
        ],
        "binding_changed": false,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "MB-820:12.2",
        "wording": "Define the different functional table types and characteristics",
        "selected_authored_sections": [
          "Development standards and data process"
        ],
        "new_ranges": [
          [
            187,
            191
          ]
        ],
        "prior_ranges": [
          [
            187,
            191
          ]
        ],
        "binding_changed": false,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "MB-820:12.3",
        "wording": "Use document standards in Business Central",
        "selected_authored_sections": [
          "Development standards and data process"
        ],
        "new_ranges": [
          [
            187,
            191
          ]
        ],
        "prior_ranges": [
          [
            187,
            191
          ]
        ],
        "binding_changed": false,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "MB-820:12.4",
        "wording": "Implement master data standards and design patterns",
        "selected_authored_sections": [
          "Development standards and data process"
        ],
        "new_ranges": [
          [
            187,
            191
          ]
        ],
        "prior_ranges": [
          [
            187,
            191
          ]
        ],
        "binding_changed": false,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "MB-820:13.1",
        "wording": "Create custom procedures",
        "selected_authored_sections": [
          "AL language and safe data behavior",
          "Worked AL reasoning: values, variables and record effects"
        ],
        "new_ranges": [
          [
            195,
            211
          ],
          [
            215,
            217
          ]
        ],
        "prior_ranges": [
          [
            195,
            195
          ],
          [
            215,
            215
          ],
          [
            217,
            217
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "MB-820:13.2",
        "wording": "Use data types in code",
        "selected_authored_sections": [
          "AL language and safe data behavior",
          "Worked AL reasoning: values, variables and record effects"
        ],
        "new_ranges": [
          [
            195,
            211
          ],
          [
            215,
            217
          ]
        ],
        "prior_ranges": [
          [
            195,
            195
          ],
          [
            215,
            215
          ],
          [
            217,
            217
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "MB-820:13.3",
        "wording": "Manage files",
        "selected_authored_sections": [
          "AL language and safe data behavior",
          "Worked AL reasoning: values, variables and record effects"
        ],
        "new_ranges": [
          [
            195,
            211
          ],
          [
            215,
            217
          ]
        ],
        "prior_ranges": [
          [
            199,
            199
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "MB-820:13.4",
        "wording": "Manipulate data by using code",
        "selected_authored_sections": [
          "AL language and safe data behavior",
          "Worked AL reasoning: values, variables and record effects"
        ],
        "new_ranges": [
          [
            195,
            211
          ],
          [
            215,
            217
          ]
        ],
        "prior_ranges": [
          [
            197,
            197
          ],
          [
            215,
            215
          ],
          [
            217,
            217
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "MB-820:13.5",
        "wording": "Describe the basics of the AL",
        "selected_authored_sections": [
          "AL language and safe data behavior",
          "Worked AL reasoning: values, variables and record effects"
        ],
        "new_ranges": [
          [
            195,
            211
          ],
          [
            215,
            217
          ]
        ],
        "prior_ranges": [
          [
            195,
            197
          ],
          [
            215,
            215
          ],
          [
            217,
            217
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "MB-820:13.6",
        "wording": "Use the different types of expressions",
        "selected_authored_sections": [
          "AL language and safe data behavior",
          "Worked AL reasoning: values, variables and record effects"
        ],
        "new_ranges": [
          [
            195,
            211
          ],
          [
            215,
            217
          ]
        ],
        "prior_ranges": [
          [
            197,
            197
          ],
          [
            215,
            215
          ],
          [
            217,
            217
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "MB-820:13.7",
        "wording": "Use AL built-in functions and AL statements",
        "selected_authored_sections": [
          "AL language and safe data behavior",
          "Worked AL reasoning: values, variables and record effects"
        ],
        "new_ranges": [
          [
            195,
            211
          ],
          [
            215,
            217
          ]
        ],
        "prior_ranges": [
          [
            197,
            197
          ],
          [
            215,
            215
          ],
          [
            217,
            217
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "MB-820:13.8",
        "wording": "Work with variables and define them in AL code",
        "selected_authored_sections": [
          "AL language and safe data behavior",
          "Worked AL reasoning: values, variables and record effects"
        ],
        "new_ranges": [
          [
            195,
            211
          ],
          [
            215,
            217
          ]
        ],
        "prior_ranges": [
          [
            195,
            195
          ],
          [
            215,
            215
          ],
          [
            217,
            217
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "MB-820:13.9",
        "wording": "Manage errors",
        "selected_authored_sections": [
          "AL language and safe data behavior",
          "1. Trace what an error can still leave behind"
        ],
        "new_ranges": [
          [
            195,
            211
          ],
          [
            283,
            283
          ]
        ],
        "prior_ranges": [
          [
            201,
            201
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "MB-820:13.10",
        "wording": "Use access modifiers to limit access",
        "selected_authored_sections": [
          "AL language and safe data behavior",
          "Worked AL reasoning: values, variables and record effects"
        ],
        "new_ranges": [
          [
            195,
            211
          ],
          [
            215,
            217
          ]
        ],
        "prior_ranges": [
          [
            195,
            195
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "MB-820:14.1",
        "wording": "Test applications in Business Central",
        "selected_authored_sections": [
          "Automated and semiautomated testing"
        ],
        "new_ranges": [
          [
            223,
            229
          ]
        ],
        "prior_ranges": [
          [
            223,
            227
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "MB-820:14.2",
        "wording": "Install and run the Test Toolkit",
        "selected_authored_sections": [
          "Automated and semiautomated testing"
        ],
        "new_ranges": [
          [
            223,
            229
          ]
        ],
        "prior_ranges": [
          [
            223,
            227
          ],
          [
            229,
            229
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "MB-820:14.3",
        "wording": "Develop test codeunits and procedures",
        "selected_authored_sections": [
          "Automated and semiautomated testing"
        ],
        "new_ranges": [
          [
            223,
            229
          ]
        ],
        "prior_ranges": [
          [
            223,
            227
          ],
          [
            229,
            229
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "MB-820:15.1",
        "wording": "Monitor and analyze telemetry",
        "selected_authored_sections": [
          "Telemetry and performance"
        ],
        "new_ranges": [
          [
            233,
            245
          ]
        ],
        "prior_ranges": [
          [
            233,
            241
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "MB-820:15.2",
        "wording": "Configure telemetry",
        "selected_authored_sections": [
          "Telemetry and performance"
        ],
        "new_ranges": [
          [
            233,
            245
          ]
        ],
        "prior_ranges": [
          [
            233,
            241
          ],
          [
            243,
            243
          ],
          [
            245,
            245
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "MB-820:15.3",
        "wording": "Create custom telemetry signals",
        "selected_authored_sections": [
          "Telemetry and performance"
        ],
        "new_ranges": [
          [
            233,
            245
          ]
        ],
        "prior_ranges": [
          [
            233,
            241
          ],
          [
            243,
            243
          ],
          [
            245,
            245
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "MB-820:16.1",
        "wording": "Use the different HTTP classes and their functions",
        "selected_authored_sections": [
          "Call REST services from AL",
          "2. Retry an external effect with the same identity"
        ],
        "new_ranges": [
          [
            251,
            257
          ],
          [
            287,
            313
          ]
        ],
        "prior_ranges": [
          [
            251,
            257
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "MB-820:16.2",
        "wording": "Get data from and send data to an external REST service",
        "selected_authored_sections": [
          "Call REST services from AL",
          "2. Retry an external effect with the same identity"
        ],
        "new_ranges": [
          [
            251,
            257
          ],
          [
            287,
            313
          ]
        ],
        "prior_ranges": [
          [
            251,
            257
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "MB-820:16.3",
        "wording": "Use and read JSON",
        "selected_authored_sections": [
          "Call REST services from AL",
          "2. Retry an external effect with the same identity"
        ],
        "new_ranges": [
          [
            251,
            257
          ],
          [
            287,
            313
          ]
        ],
        "prior_ranges": [
          [
            251,
            257
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "MB-820:17.1",
        "wording": "Create and work with APIs",
        "selected_authored_sections": [
          "Implement Business Central APIs",
          "API compatibility, atomicity and read consistency"
        ],
        "new_ranges": [
          [
            261,
            267
          ],
          [
            271,
            275
          ]
        ],
        "prior_ranges": [
          [
            261,
            275
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "MB-820:17.2",
        "wording": "Create and manage OData bound and unbound actions",
        "selected_authored_sections": [
          "Implement Business Central APIs",
          "API compatibility, atomicity and read consistency"
        ],
        "new_ranges": [
          [
            261,
            267
          ],
          [
            271,
            275
          ]
        ],
        "prior_ranges": [
          [
            261,
            275
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "MB-820:17.3",
        "wording": "Use Read Scale-Out to improve performance",
        "selected_authored_sections": [
          "Implement Business Central APIs",
          "API compatibility, atomicity and read consistency"
        ],
        "new_ranges": [
          [
            261,
            267
          ],
          [
            271,
            275
          ]
        ],
        "prior_ranges": [
          [
            261,
            275
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "PL-300:1.1",
        "wording": "Identify and connect to data sources or a shared semantic model",
        "selected_authored_sections": [
          "Requirements, sources, and storage mode"
        ],
        "new_ranges": [
          [
            61,
            79
          ]
        ],
        "prior_ranges": [
          [
            61,
            65
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "PL-300:1.2",
        "wording": "Change data source settings, including credentials and privacy levels",
        "selected_authored_sections": [
          "Requirements, sources, and storage mode"
        ],
        "new_ranges": [
          [
            61,
            79
          ]
        ],
        "prior_ranges": [
          [
            73,
            75
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "PL-300:1.3",
        "wording": "Choose between DirectLake, DirectQuery, and Import",
        "selected_authored_sections": [
          "Requirements, sources, and storage mode"
        ],
        "new_ranges": [
          [
            61,
            79
          ]
        ],
        "prior_ranges": [
          [
            67,
            67
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "PL-300:1.4",
        "wording": "Create and modify parameters",
        "selected_authored_sections": [
          "Requirements, sources, and storage mode",
          "Lab 1 — Connect and profile"
        ],
        "new_ranges": [
          [
            61,
            79
          ],
          [
            303,
            303
          ]
        ],
        "prior_ranges": [
          [
            73,
            73
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "PL-300:2.1",
        "wording": "Evaluate data, including data statistics and column properties",
        "selected_authored_sections": [
          "Profile and clean before transforming"
        ],
        "new_ranges": [
          [
            83,
            92
          ]
        ],
        "prior_ranges": [
          [
            83,
            90
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "PL-300:2.2",
        "wording": "Resolve inconsistencies, unexpected or null values, and data quality issues",
        "selected_authored_sections": [
          "Profile and clean before transforming"
        ],
        "new_ranges": [
          [
            83,
            92
          ]
        ],
        "prior_ranges": [
          [
            83,
            90
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "PL-300:2.3",
        "wording": "Resolve data import errors",
        "selected_authored_sections": [
          "Profile and clean before transforming"
        ],
        "new_ranges": [
          [
            83,
            92
          ]
        ],
        "prior_ranges": [
          [
            83,
            90
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "PL-300:3.1",
        "wording": "Select appropriate column data types",
        "selected_authored_sections": [
          "Transform and load at an explicit grain",
          "Profile and clean before transforming"
        ],
        "new_ranges": [
          [
            96,
            115
          ],
          [
            83,
            92
          ]
        ],
        "prior_ranges": [
          [
            96,
            113
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "PL-300:3.2",
        "wording": "Create and transform columns",
        "selected_authored_sections": [
          "Transform and load at an explicit grain"
        ],
        "new_ranges": [
          [
            96,
            115
          ]
        ],
        "prior_ranges": [
          [
            96,
            113
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "PL-300:3.3",
        "wording": "Group and aggregate rows",
        "selected_authored_sections": [
          "Transform and load at an explicit grain"
        ],
        "new_ranges": [
          [
            96,
            115
          ]
        ],
        "prior_ranges": [
          [
            96,
            113
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "PL-300:3.4",
        "wording": "Pivot, unpivot, and transpose data",
        "selected_authored_sections": [
          "Transform and load at an explicit grain"
        ],
        "new_ranges": [
          [
            96,
            115
          ]
        ],
        "prior_ranges": [
          [
            96,
            113
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "PL-300:3.5",
        "wording": "Convert semi-structured data to a table",
        "selected_authored_sections": [
          "Transform and load at an explicit grain"
        ],
        "new_ranges": [
          [
            96,
            115
          ]
        ],
        "prior_ranges": [
          [
            96,
            113
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "PL-300:3.6",
        "wording": "Create fact tables and dimension tables",
        "selected_authored_sections": [
          "Transform and load at an explicit grain"
        ],
        "new_ranges": [
          [
            96,
            115
          ]
        ],
        "prior_ranges": [
          [
            96,
            113
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "PL-300:3.7",
        "wording": "Identify when to use reference or duplicate queries and the resulting impact",
        "selected_authored_sections": [
          "Transform and load at an explicit grain"
        ],
        "new_ranges": [
          [
            96,
            115
          ]
        ],
        "prior_ranges": [
          [
            96,
            113
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "PL-300:3.8",
        "wording": "Merge and append queries",
        "selected_authored_sections": [
          "Transform and load at an explicit grain"
        ],
        "new_ranges": [
          [
            96,
            115
          ]
        ],
        "prior_ranges": [
          [
            96,
            113
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "PL-300:3.9",
        "wording": "Identify and create appropriate keys for relationships",
        "selected_authored_sections": [
          "Transform and load at an explicit grain"
        ],
        "new_ranges": [
          [
            96,
            115
          ]
        ],
        "prior_ranges": [
          [
            96,
            113
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "PL-300:3.10",
        "wording": "Configure data loading for queries",
        "selected_authored_sections": [
          "Transform and load at an explicit grain"
        ],
        "new_ranges": [
          [
            96,
            115
          ]
        ],
        "prior_ranges": [
          [
            96,
            113
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "PL-300:4.1",
        "wording": "Configure table and column properties",
        "selected_authored_sections": [
          "Build a semantic model that explains itself"
        ],
        "new_ranges": [
          [
            121,
            127
          ]
        ],
        "prior_ranges": [
          [
            121,
            127
          ]
        ],
        "binding_changed": false,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "PL-300:4.2",
        "wording": "Implement role-playing dimensions",
        "selected_authored_sections": [
          "Build a semantic model that explains itself"
        ],
        "new_ranges": [
          [
            121,
            127
          ]
        ],
        "prior_ranges": [
          [
            121,
            127
          ]
        ],
        "binding_changed": false,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "PL-300:4.3",
        "wording": "Define a relationship's cardinality and cross-filter direction",
        "selected_authored_sections": [
          "Build a semantic model that explains itself"
        ],
        "new_ranges": [
          [
            121,
            127
          ]
        ],
        "prior_ranges": [
          [
            121,
            127
          ]
        ],
        "binding_changed": false,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "PL-300:4.4",
        "wording": "Create a common date table",
        "selected_authored_sections": [
          "Build a semantic model that explains itself"
        ],
        "new_ranges": [
          [
            121,
            127
          ]
        ],
        "prior_ranges": [
          [
            121,
            127
          ]
        ],
        "binding_changed": false,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "PL-300:4.5",
        "wording": "Identify use cases for calculated columns and calculated tables",
        "selected_authored_sections": [
          "Put each calculation in the right layer",
          "Worked creation check: a column and a table"
        ],
        "new_ranges": [
          [
            131,
            165
          ],
          [
            169,
            171
          ]
        ],
        "prior_ranges": [
          [
            121,
            127
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "PL-300:5.1",
        "wording": "Create single aggregation measures",
        "selected_authored_sections": [
          "Put each calculation in the right layer",
          "Worked calculation build: explicit measure, quick measure and group"
        ],
        "new_ranges": [
          [
            131,
            165
          ],
          [
            175,
            179
          ]
        ],
        "prior_ranges": [
          [
            131,
            141
          ],
          [
            175,
            175
          ],
          [
            177,
            177
          ],
          [
            179,
            179
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "PL-300:5.2",
        "wording": "Use the CALCULATE function",
        "selected_authored_sections": [
          "Put each calculation in the right layer",
          "Lab 4 — DAX calculation layers"
        ],
        "new_ranges": [
          [
            131,
            165
          ],
          [
            315,
            315
          ]
        ],
        "prior_ranges": [
          [
            143,
            153
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "PL-300:5.3",
        "wording": "Implement time intelligence measures",
        "selected_authored_sections": [
          "Put each calculation in the right layer",
          "Worked calculation build: explicit measure, quick measure and group"
        ],
        "new_ranges": [
          [
            131,
            165
          ],
          [
            175,
            179
          ]
        ],
        "prior_ranges": [
          [
            157,
            157
          ],
          [
            175,
            175
          ],
          [
            177,
            177
          ],
          [
            179,
            179
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "PL-300:5.4",
        "wording": "Use basic statistical functions",
        "selected_authored_sections": [
          "Put each calculation in the right layer",
          "Worked calculation build: explicit measure, quick measure and group"
        ],
        "new_ranges": [
          [
            131,
            165
          ],
          [
            175,
            179
          ]
        ],
        "prior_ranges": [
          [
            143,
            143
          ],
          [
            175,
            175
          ],
          [
            177,
            177
          ],
          [
            179,
            179
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "PL-300:5.5",
        "wording": "Create semi-additive measures",
        "selected_authored_sections": [
          "Put each calculation in the right layer",
          "Lab 4 — DAX calculation layers"
        ],
        "new_ranges": [
          [
            131,
            165
          ],
          [
            315,
            315
          ]
        ],
        "prior_ranges": [
          [
            157,
            157
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "PL-300:5.6",
        "wording": "Create a measure by using quick measures",
        "selected_authored_sections": [
          "Put each calculation in the right layer",
          "Worked calculation build: explicit measure, quick measure and group"
        ],
        "new_ranges": [
          [
            131,
            165
          ],
          [
            175,
            179
          ]
        ],
        "prior_ranges": [
          [
            157,
            157
          ],
          [
            175,
            175
          ],
          [
            177,
            177
          ],
          [
            179,
            179
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "PL-300:5.7",
        "wording": "Create calculated tables or columns",
        "selected_authored_sections": [
          "Put each calculation in the right layer",
          "Worked creation check: a column and a table"
        ],
        "new_ranges": [
          [
            131,
            165
          ],
          [
            169,
            171
          ]
        ],
        "prior_ranges": [
          [
            131,
            141
          ],
          [
            169,
            169
          ],
          [
            171,
            171
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "PL-300:5.8",
        "wording": "Create calculation groups",
        "selected_authored_sections": [
          "Put each calculation in the right layer",
          "Worked calculation build: explicit measure, quick measure and group"
        ],
        "new_ranges": [
          [
            131,
            165
          ],
          [
            175,
            179
          ]
        ],
        "prior_ranges": [
          [
            159,
            165
          ],
          [
            175,
            175
          ],
          [
            177,
            177
          ],
          [
            179,
            179
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "PL-300:6.1",
        "wording": "Improve performance by identifying and removing unnecessary rows and columns",
        "selected_authored_sections": [
          "Optimize from evidence"
        ],
        "new_ranges": [
          [
            183,
            189
          ]
        ],
        "prior_ranges": [
          [
            183,
            183
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "PL-300:6.2",
        "wording": "Identify poorly performing measures, relationships, and visuals by using Performance Analyzer and DAX query view",
        "selected_authored_sections": [
          "Optimize from evidence"
        ],
        "new_ranges": [
          [
            183,
            189
          ]
        ],
        "prior_ranges": [
          [
            185,
            189
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "PL-300:6.3",
        "wording": "Improve performance by reducing granularity",
        "selected_authored_sections": [
          "Optimize from evidence"
        ],
        "new_ranges": [
          [
            183,
            189
          ]
        ],
        "prior_ranges": [
          [
            183,
            183
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "PL-300:7.1",
        "wording": "Select an appropriate visual",
        "selected_authored_sections": [
          "Select and configure reports for a decision"
        ],
        "new_ranges": [
          [
            195,
            213
          ]
        ],
        "prior_ranges": [
          [
            195,
            195
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "PL-300:7.2",
        "wording": "Format and configure visuals",
        "selected_authored_sections": [
          "Select and configure reports for a decision"
        ],
        "new_ranges": [
          [
            195,
            213
          ]
        ],
        "prior_ranges": [
          [
            195,
            195
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "PL-300:7.3",
        "wording": "Create a narrative visual with Copilot",
        "selected_authored_sections": [
          "Select and configure reports for a decision"
        ],
        "new_ranges": [
          [
            195,
            213
          ]
        ],
        "prior_ranges": [
          [
            195,
            195
          ],
          [
            209,
            209
          ],
          [
            211,
            211
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "PL-300:7.4",
        "wording": "Apply and customize a theme",
        "selected_authored_sections": [
          "Select and configure reports for a decision"
        ],
        "new_ranges": [
          [
            195,
            213
          ]
        ],
        "prior_ranges": [
          [
            195,
            195
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "PL-300:7.5",
        "wording": "Apply conditional formatting",
        "selected_authored_sections": [
          "Select and configure reports for a decision"
        ],
        "new_ranges": [
          [
            195,
            213
          ]
        ],
        "prior_ranges": [
          [
            195,
            195
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "PL-300:7.6",
        "wording": "Apply slicing and filtering",
        "selected_authored_sections": [
          "Select and configure reports for a decision"
        ],
        "new_ranges": [
          [
            195,
            213
          ]
        ],
        "prior_ranges": [
          [
            195,
            195
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "PL-300:7.7",
        "wording": "Use Copilot to create a new report page",
        "selected_authored_sections": [
          "Select and configure reports for a decision"
        ],
        "new_ranges": [
          [
            195,
            213
          ]
        ],
        "prior_ranges": [
          [
            195,
            195
          ],
          [
            209,
            209
          ],
          [
            211,
            211
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "PL-300:7.8",
        "wording": "Use Copilot to suggest content for a new report page",
        "selected_authored_sections": [
          "Select and configure reports for a decision"
        ],
        "new_ranges": [
          [
            195,
            213
          ]
        ],
        "prior_ranges": [
          [
            195,
            195
          ],
          [
            209,
            209
          ],
          [
            211,
            211
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "PL-300:7.9",
        "wording": "Configure the report page",
        "selected_authored_sections": [
          "Select and configure reports for a decision"
        ],
        "new_ranges": [
          [
            195,
            213
          ]
        ],
        "prior_ranges": [
          [
            195,
            195
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "PL-300:7.10",
        "wording": "Choose when to use a paginated report",
        "selected_authored_sections": [
          "Select and configure reports for a decision"
        ],
        "new_ranges": [
          [
            195,
            213
          ]
        ],
        "prior_ranges": [
          [
            195,
            195
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "PL-300:7.11",
        "wording": "Create visual calculations by using DAX",
        "selected_authored_sections": [
          "Put each calculation in the right layer",
          "Focused reading and evidence route",
          "Lab 4 — DAX calculation layers"
        ],
        "new_ranges": [
          [
            131,
            165
          ],
          [
            410,
            432
          ],
          [
            315,
            315
          ]
        ],
        "prior_ranges": [
          [
            195,
            195
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "PL-300:8.1",
        "wording": "Configure bookmarks",
        "selected_authored_sections": [
          "Usability, storytelling, and accessibility"
        ],
        "new_ranges": [
          [
            217,
            221
          ]
        ],
        "prior_ranges": [
          [
            217,
            221
          ]
        ],
        "binding_changed": false,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "PL-300:8.2",
        "wording": "Create custom tooltips",
        "selected_authored_sections": [
          "Usability, storytelling, and accessibility",
          "Worked navigation: product details and tooltip context"
        ],
        "new_ranges": [
          [
            217,
            221
          ],
          [
            225,
            227
          ]
        ],
        "prior_ranges": [
          [
            217,
            221
          ],
          [
            225,
            225
          ],
          [
            227,
            227
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "PL-300:8.3",
        "wording": "Edit and configure interactions between visuals",
        "selected_authored_sections": [
          "Usability, storytelling, and accessibility"
        ],
        "new_ranges": [
          [
            217,
            221
          ]
        ],
        "prior_ranges": [
          [
            217,
            221
          ]
        ],
        "binding_changed": false,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "PL-300:8.4",
        "wording": "Configure navigation for a report",
        "selected_authored_sections": [
          "Usability, storytelling, and accessibility"
        ],
        "new_ranges": [
          [
            217,
            221
          ]
        ],
        "prior_ranges": [
          [
            217,
            221
          ],
          [
            225,
            225
          ],
          [
            227,
            227
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "PL-300:8.5",
        "wording": "Apply sorting to visuals",
        "selected_authored_sections": [
          "Select and configure reports for a decision",
          "Put each calculation in the right layer"
        ],
        "new_ranges": [
          [
            195,
            213
          ],
          [
            131,
            165
          ]
        ],
        "prior_ranges": [
          [
            217,
            221
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "PL-300:8.6",
        "wording": "Configure sync slicers",
        "selected_authored_sections": [
          "Usability, storytelling, and accessibility"
        ],
        "new_ranges": [
          [
            217,
            221
          ]
        ],
        "prior_ranges": [
          [
            217,
            221
          ]
        ],
        "binding_changed": false,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "PL-300:8.7",
        "wording": "Group and layer visuals by using the Selection pane",
        "selected_authored_sections": [
          "Usability, storytelling, and accessibility"
        ],
        "new_ranges": [
          [
            217,
            221
          ]
        ],
        "prior_ranges": [
          [
            217,
            221
          ]
        ],
        "binding_changed": false,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "PL-300:8.8",
        "wording": "Configure drillthrough navigation, including pages, filters, and buttons",
        "selected_authored_sections": [
          "Usability, storytelling, and accessibility",
          "Worked navigation: product details and tooltip context"
        ],
        "new_ranges": [
          [
            217,
            221
          ],
          [
            225,
            227
          ]
        ],
        "prior_ranges": [
          [
            217,
            221
          ],
          [
            225,
            225
          ],
          [
            227,
            227
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "PL-300:8.9",
        "wording": "Configure export settings",
        "selected_authored_sections": [
          "Usability, storytelling, and accessibility"
        ],
        "new_ranges": [
          [
            217,
            221
          ]
        ],
        "prior_ranges": [
          [
            217,
            221
          ]
        ],
        "binding_changed": false,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "PL-300:8.10",
        "wording": "Design reports for mobile devices",
        "selected_authored_sections": [
          "Usability, storytelling, and accessibility"
        ],
        "new_ranges": [
          [
            217,
            221
          ]
        ],
        "prior_ranges": [
          [
            217,
            221
          ]
        ],
        "binding_changed": false,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "PL-300:8.11",
        "wording": "Enable personalization in a report, including personalized visuals",
        "selected_authored_sections": [
          "Usability, storytelling, and accessibility"
        ],
        "new_ranges": [
          [
            217,
            221
          ]
        ],
        "prior_ranges": [
          [
            217,
            221
          ]
        ],
        "binding_changed": false,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "PL-300:8.12",
        "wording": "Design and configure Power BI reports for accessibility",
        "selected_authored_sections": [
          "Usability, storytelling, and accessibility",
          "Worked navigation: product details and tooltip context"
        ],
        "new_ranges": [
          [
            217,
            221
          ],
          [
            225,
            227
          ]
        ],
        "prior_ranges": [
          [
            217,
            221
          ],
          [
            225,
            225
          ],
          [
            227,
            227
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "PL-300:8.13",
        "wording": "Configure automatic page refresh",
        "selected_authored_sections": [
          "Select and configure reports for a decision"
        ],
        "new_ranges": [
          [
            195,
            213
          ]
        ],
        "prior_ranges": [
          [
            203,
            203
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "PL-300:9.1",
        "wording": "Use the Analyze feature in Power BI",
        "selected_authored_sections": [
          "Analyze patterns without overclaiming",
          "Lab 6 — Analysis and Copilot"
        ],
        "new_ranges": [
          [
            231,
            237
          ],
          [
            323,
            323
          ]
        ],
        "prior_ranges": [
          [
            231,
            235
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "PL-300:9.2",
        "wording": "Use grouping, binning, and clustering",
        "selected_authored_sections": [
          "Analyze patterns without overclaiming",
          "Lab 6 — Analysis and Copilot"
        ],
        "new_ranges": [
          [
            231,
            237
          ],
          [
            323,
            323
          ]
        ],
        "prior_ranges": [
          [
            231,
            235
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "PL-300:9.3",
        "wording": "Use AI visuals",
        "selected_authored_sections": [
          "Analyze patterns without overclaiming",
          "Select and configure reports for a decision",
          "Lab 6 — Analysis and Copilot"
        ],
        "new_ranges": [
          [
            231,
            237
          ],
          [
            195,
            213
          ],
          [
            323,
            323
          ]
        ],
        "prior_ranges": [
          [
            231,
            235
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "PL-300:9.4",
        "wording": "Use reference lines, error bars, and forecasting",
        "selected_authored_sections": [
          "Analyze patterns without overclaiming",
          "Lab 6 — Analysis and Copilot"
        ],
        "new_ranges": [
          [
            231,
            237
          ],
          [
            323,
            323
          ]
        ],
        "prior_ranges": [
          [
            231,
            235
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "PL-300:9.5",
        "wording": "Detect outliers and anomalies",
        "selected_authored_sections": [
          "Analyze patterns without overclaiming",
          "Lab 6 — Analysis and Copilot"
        ],
        "new_ranges": [
          [
            231,
            237
          ],
          [
            323,
            323
          ]
        ],
        "prior_ranges": [
          [
            231,
            235
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "PL-300:9.6",
        "wording": "Use Copilot to summarize the underlying semantic model",
        "selected_authored_sections": [
          "Select and configure reports for a decision"
        ],
        "new_ranges": [
          [
            195,
            213
          ]
        ],
        "prior_ranges": [
          [
            205,
            205
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "PL-300:10.1",
        "wording": "Create and configure a workspace",
        "selected_authored_sections": [
          "Workspaces, assets, apps, and distribution",
          "Scenario 1: Regional sales app"
        ],
        "new_ranges": [
          [
            243,
            255
          ],
          [
            287,
            287
          ]
        ],
        "prior_ranges": [
          [
            243,
            255
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "PL-300:10.2",
        "wording": "Configure and update an app",
        "selected_authored_sections": [
          "Workspaces, assets, apps, and distribution"
        ],
        "new_ranges": [
          [
            243,
            255
          ]
        ],
        "prior_ranges": [
          [
            243,
            255
          ]
        ],
        "binding_changed": false,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "PL-300:10.3",
        "wording": "Publish, import, or update items in a workspace",
        "selected_authored_sections": [
          "Workspaces, assets, apps, and distribution"
        ],
        "new_ranges": [
          [
            243,
            255
          ]
        ],
        "prior_ranges": [
          [
            243,
            255
          ]
        ],
        "binding_changed": false,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "PL-300:10.4",
        "wording": "Create dashboards",
        "selected_authored_sections": [
          "Workspaces, assets, apps, and distribution"
        ],
        "new_ranges": [
          [
            243,
            255
          ]
        ],
        "prior_ranges": [
          [
            243,
            255
          ]
        ],
        "binding_changed": false,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "PL-300:10.5",
        "wording": "Choose a distribution method",
        "selected_authored_sections": [
          "Workspaces, assets, apps, and distribution"
        ],
        "new_ranges": [
          [
            243,
            255
          ]
        ],
        "prior_ranges": [
          [
            243,
            255
          ]
        ],
        "binding_changed": false,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "PL-300:10.6",
        "wording": "Configure subscriptions and data alerts",
        "selected_authored_sections": [
          "Workspaces, assets, apps, and distribution"
        ],
        "new_ranges": [
          [
            243,
            255
          ]
        ],
        "prior_ranges": [
          [
            243,
            255
          ]
        ],
        "binding_changed": false,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "PL-300:10.7",
        "wording": "Promote or certify Power BI content",
        "selected_authored_sections": [
          "Workspaces, assets, apps, and distribution"
        ],
        "new_ranges": [
          [
            243,
            255
          ]
        ],
        "prior_ranges": [
          [
            243,
            255
          ]
        ],
        "binding_changed": false,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "PL-300:10.8",
        "wording": "Identify when a gateway is required",
        "selected_authored_sections": [
          "Gateways and refresh"
        ],
        "new_ranges": [
          [
            259,
            267
          ]
        ],
        "prior_ranges": [
          [
            259,
            267
          ]
        ],
        "binding_changed": false,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "PL-300:10.9",
        "wording": "Configure a semantic model scheduled refresh",
        "selected_authored_sections": [
          "Gateways and refresh"
        ],
        "new_ranges": [
          [
            259,
            267
          ]
        ],
        "prior_ranges": [
          [
            259,
            267
          ]
        ],
        "binding_changed": false,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "PL-300:11.1",
        "wording": "Assign workspace roles",
        "selected_authored_sections": [
          "Roles, item permissions, semantic-model access, and RLS"
        ],
        "new_ranges": [
          [
            271,
            281
          ]
        ],
        "prior_ranges": [
          [
            271,
            279
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "PL-300:11.2",
        "wording": "Configure item-level access",
        "selected_authored_sections": [
          "Roles, item permissions, semantic-model access, and RLS"
        ],
        "new_ranges": [
          [
            271,
            281
          ]
        ],
        "prior_ranges": [
          [
            271,
            279
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "PL-300:11.3",
        "wording": "Configure access to semantic models",
        "selected_authored_sections": [
          "Roles, item permissions, semantic-model access, and RLS"
        ],
        "new_ranges": [
          [
            271,
            281
          ]
        ],
        "prior_ranges": [
          [
            271,
            279
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "PL-300:11.4",
        "wording": "Implement row-level security roles",
        "selected_authored_sections": [
          "Roles, item permissions, semantic-model access, and RLS"
        ],
        "new_ranges": [
          [
            271,
            281
          ]
        ],
        "prior_ranges": [
          [
            271,
            279
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "PL-300:11.5",
        "wording": "Configure row-level security group membership",
        "selected_authored_sections": [
          "Roles, item permissions, semantic-model access, and RLS"
        ],
        "new_ranges": [
          [
            271,
            281
          ]
        ],
        "prior_ranges": [
          [
            271,
            279
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "PL-300:11.6",
        "wording": "Apply sensitivity labels",
        "selected_authored_sections": [
          "Roles, item permissions, semantic-model access, and RLS"
        ],
        "new_ranges": [
          [
            271,
            281
          ]
        ],
        "prior_ranges": [
          [
            1,
            1
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "PL-900:1.1",
        "wording": "Describe the value of Microsoft Power Apps to build applications",
        "selected_authored_sections": [
          "1. The Power Platform mental model"
        ],
        "new_ranges": [
          [
            61,
            91
          ]
        ],
        "prior_ranges": [
          [
            61,
            91
          ]
        ],
        "binding_changed": false,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "PL-900:1.2",
        "wording": "Describe the value of Microsoft Power Automate to automate processes",
        "selected_authored_sections": [
          "1. The Power Platform mental model"
        ],
        "new_ranges": [
          [
            61,
            91
          ]
        ],
        "prior_ranges": [
          [
            61,
            91
          ]
        ],
        "binding_changed": false,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "PL-900:1.3",
        "wording": "Describe the value of Microsoft Dataverse to organize business data",
        "selected_authored_sections": [
          "1. The Power Platform mental model"
        ],
        "new_ranges": [
          [
            61,
            91
          ]
        ],
        "prior_ranges": [
          [
            61,
            91
          ]
        ],
        "binding_changed": false,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "PL-900:1.4",
        "wording": "Describe the value of connectors to integrate services and data for apps and flows",
        "selected_authored_sections": [
          "1. The Power Platform mental model",
          "Connectors and data movement"
        ],
        "new_ranges": [
          [
            61,
            91
          ],
          [
            126,
            134
          ]
        ],
        "prior_ranges": [
          [
            61,
            91
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "PL-900:1.5",
        "wording": "Describe the value of Microsoft Power Pages to build websites",
        "selected_authored_sections": [
          "1. The Power Platform mental model"
        ],
        "new_ranges": [
          [
            61,
            91
          ]
        ],
        "prior_ranges": [
          [
            61,
            91
          ]
        ],
        "binding_changed": false,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "PL-900:1.6",
        "wording": "Describe the value of generative AI features in Microsoft Power Platform",
        "selected_authored_sections": [
          "1. The Power Platform mental model"
        ],
        "new_ranges": [
          [
            61,
            91
          ]
        ],
        "prior_ranges": [
          [
            61,
            91
          ]
        ],
        "binding_changed": false,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "PL-900:1.7",
        "wording": "Describe the value of Copilot Studio to create agents",
        "selected_authored_sections": [
          "1. The Power Platform mental model"
        ],
        "new_ranges": [
          [
            61,
            91
          ]
        ],
        "prior_ranges": [
          [
            61,
            91
          ]
        ],
        "binding_changed": false,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "PL-900:2.1",
        "wording": "Describe differences between traditional databases and Dataverse",
        "selected_authored_sections": [
          "Dataverse concepts"
        ],
        "new_ranges": [
          [
            97,
            122
          ]
        ],
        "prior_ranges": [
          [
            114,
            120
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "PL-900:2.2",
        "wording": "Describe tables, columns, and relationships",
        "selected_authored_sections": [
          "Dataverse concepts"
        ],
        "new_ranges": [
          [
            97,
            122
          ]
        ],
        "prior_ranges": [
          [
            97,
            110
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "PL-900:2.3",
        "wording": "Describe table forms and views",
        "selected_authored_sections": [
          "Dataverse concepts"
        ],
        "new_ranges": [
          [
            97,
            122
          ]
        ],
        "prior_ranges": [
          [
            118,
            118
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "PL-900:2.4",
        "wording": "Describe the options for business logic in Dataverse, including Power Fx",
        "selected_authored_sections": [
          "Dataverse concepts"
        ],
        "new_ranges": [
          [
            97,
            122
          ]
        ],
        "prior_ranges": [
          [
            118,
            120
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "PL-900:2.5",
        "wording": "Describe how to use AI to create and edit tables, columns, and relationships",
        "selected_authored_sections": [
          "Dataverse concepts",
          "Worked creation path: one model, two app experiences"
        ],
        "new_ranges": [
          [
            97,
            122
          ],
          [
            221,
            223
          ]
        ],
        "prior_ranges": [
          [
            122,
            122
          ],
          [
            221,
            221
          ],
          [
            223,
            223
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "PL-900:3.1",
        "wording": "Describe environments",
        "selected_authored_sections": [
          "3. Environments, security, governance, and ALM"
        ],
        "new_ranges": [
          [
            138,
            196
          ]
        ],
        "prior_ranges": [
          [
            138,
            140
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "PL-900:3.2",
        "wording": "Describe the Microsoft Power Platform security model",
        "selected_authored_sections": [
          "Security layers"
        ],
        "new_ranges": [
          [
            146,
            171
          ]
        ],
        "prior_ranges": [
          [
            146,
            171
          ]
        ],
        "binding_changed": false,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "PL-900:3.3",
        "wording": "Describe how Microsoft Power Platform supports data privacy and accessibility guidelines",
        "selected_authored_sections": [
          "Security layers",
          "Monitoring and accessibility"
        ],
        "new_ranges": [
          [
            146,
            171
          ],
          [
            192,
            196
          ]
        ],
        "prior_ranges": [
          [
            190,
            194
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "PL-900:3.4",
        "wording": "Describe the monitoring and analytics capabilities of the Microsoft Power Platform",
        "selected_authored_sections": [
          "Monitoring and accessibility"
        ],
        "new_ranges": [
          [
            192,
            196
          ]
        ],
        "prior_ranges": [
          [
            190,
            192
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "PL-900:3.5",
        "wording": "Describe application lifecycle management (ALM) with Microsoft Power Platform pipelines",
        "selected_authored_sections": [
          "Solutions and lifecycle"
        ],
        "new_ranges": [
          [
            175,
            188
          ]
        ],
        "prior_ranges": [
          [
            175,
            188
          ]
        ],
        "binding_changed": false,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "PL-900:4.1",
        "wording": "Describe use cases for and capabilities of canvas apps",
        "selected_authored_sections": [
          "Choose an app type",
          "Canvas apps"
        ],
        "new_ranges": [
          [
            202,
            217
          ],
          [
            233,
            245
          ]
        ],
        "prior_ranges": [
          [
            233,
            245
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "PL-900:4.2",
        "wording": "Describe use cases for and capabilities of model-driven apps",
        "selected_authored_sections": [
          "Choose an app type",
          "Model-driven apps"
        ],
        "new_ranges": [
          [
            202,
            217
          ],
          [
            249,
            255
          ]
        ],
        "prior_ranges": [
          [
            249,
            253
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "PL-900:4.3",
        "wording": "Describe use cases for and capabilities of Plan designer",
        "selected_authored_sections": [
          "Choose an app type",
          "Worked creation path: one model, two app experiences",
          "Current app-building boundaries"
        ],
        "new_ranges": [
          [
            202,
            217
          ],
          [
            221,
            223
          ],
          [
            227,
            229
          ]
        ],
        "prior_ranges": [
          [
            209,
            209
          ],
          [
            221,
            221
          ],
          [
            223,
            223
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "PL-900:4.4",
        "wording": "Describe use cases for and capabilities of code apps",
        "selected_authored_sections": [
          "Choose an app type",
          "Current app-building boundaries"
        ],
        "new_ranges": [
          [
            202,
            217
          ],
          [
            227,
            229
          ]
        ],
        "prior_ranges": [
          [
            209,
            209
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "PL-900:5.1",
        "wording": "Describe how to use AI to create a canvas app",
        "selected_authored_sections": [
          "Worked creation path: one model, two app experiences",
          "Current app-building boundaries"
        ],
        "new_ranges": [
          [
            221,
            223
          ],
          [
            227,
            229
          ]
        ],
        "prior_ranges": [
          [
            209,
            209
          ],
          [
            221,
            221
          ],
          [
            223,
            223
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "PL-900:5.2",
        "wording": "Describe how to use AI to create a model-driven app",
        "selected_authored_sections": [
          "Worked creation path: one model, two app experiences",
          "Current app-building boundaries"
        ],
        "new_ranges": [
          [
            221,
            223
          ],
          [
            227,
            229
          ]
        ],
        "prior_ranges": [
          [
            209,
            209
          ],
          [
            221,
            221
          ],
          [
            223,
            223
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "PL-900:5.3",
        "wording": "Describe creating AI-powered apps by using the vibe experience",
        "selected_authored_sections": [
          "Choose an app type",
          "Current app-building boundaries"
        ],
        "new_ranges": [
          [
            202,
            217
          ],
          [
            227,
            229
          ]
        ],
        "prior_ranges": [
          [
            209,
            209
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "PL-900:6.1",
        "wording": "Describe use cases for cloud and desktop flows",
        "selected_authored_sections": [
          "Automation types",
          "Approvals and common integrations"
        ],
        "new_ranges": [
          [
            261,
            271
          ],
          [
            275,
            279
          ]
        ],
        "prior_ranges": [
          [
            261,
            271
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "PL-900:6.2",
        "wording": "Describe Power Automate use cases for approvals, Microsoft Teams, Outlook, SharePoint, Forms, and document automation",
        "selected_authored_sections": [
          "Approvals and common integrations",
          "Worked automation choices: a document and a desktop draft"
        ],
        "new_ranges": [
          [
            275,
            279
          ],
          [
            283,
            285
          ]
        ],
        "prior_ranges": [
          [
            275,
            279
          ],
          [
            283,
            283
          ],
          [
            285,
            285
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "PL-900:7.1",
        "wording": "Describe connector triggers and actions for cloud flows",
        "selected_authored_sections": [
          "Automation types"
        ],
        "new_ranges": [
          [
            261,
            271
          ]
        ],
        "prior_ranges": [
          [
            267,
            271
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "PL-900:7.2",
        "wording": "Describe how to use AI to create and modify cloud flows",
        "selected_authored_sections": [
          "Automation types"
        ],
        "new_ranges": [
          [
            261,
            271
          ]
        ],
        "prior_ranges": [
          [
            267,
            271
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "PL-900:7.3",
        "wording": "Describe how to use AI to create and modify desktop flows",
        "selected_authored_sections": [
          "Worked automation choices: a document and a desktop draft",
          "Reliability and desktop automation"
        ],
        "new_ranges": [
          [
            283,
            285
          ],
          [
            289,
            308
          ]
        ],
        "prior_ranges": [
          [
            293,
            295
          ],
          [
            283,
            283
          ],
          [
            285,
            285
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "PL-900:8.1",
        "wording": "Describe use cases for agents",
        "selected_authored_sections": [
          "6. Copilot Studio agents"
        ],
        "new_ranges": [
          [
            312,
            371
          ]
        ],
        "prior_ranges": [
          [
            312,
            335
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "PL-900:8.2",
        "wording": "Describe how to build agent conversation paths by using topics",
        "selected_authored_sections": [
          "Topics, knowledge, and orchestration",
          "Follow one agent turn"
        ],
        "new_ranges": [
          [
            339,
            343
          ],
          [
            327,
            335
          ]
        ],
        "prior_ranges": [
          [
            339,
            341
          ],
          [
            343,
            343
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "PL-900:8.3",
        "wording": "Describe how to use knowledge sources in agents",
        "selected_authored_sections": [
          "Topics, knowledge, and orchestration",
          "Follow one agent turn"
        ],
        "new_ranges": [
          [
            339,
            343
          ],
          [
            327,
            335
          ]
        ],
        "prior_ranges": [
          [
            341,
            341
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "PL-900:8.4",
        "wording": "Describe how tools, including MCP servers and agent flows, are used in agents",
        "selected_authored_sections": [
          "Tools and MCP",
          "Follow one agent turn"
        ],
        "new_ranges": [
          [
            347,
            351
          ],
          [
            327,
            335
          ]
        ],
        "prior_ranges": [
          [
            347,
            351
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "PL-900:8.5",
        "wording": "Describe how to publish agents by using channels",
        "selected_authored_sections": [
          "Publish, monitor, and evaluate"
        ],
        "new_ranges": [
          [
            355,
            361
          ]
        ],
        "prior_ranges": [
          [
            355,
            355
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "PL-900:9.1",
        "wording": "Describe use cases and capabilities for Microsoft Agent 365",
        "selected_authored_sections": [
          "Microsoft Agent 365 boundary"
        ],
        "new_ranges": [
          [
            365,
            371
          ]
        ],
        "prior_ranges": [
          [
            365,
            371
          ]
        ],
        "binding_changed": false,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "PL-900:9.2",
        "wording": "Describe how to monitor Copilot Studio agent usage and adoption",
        "selected_authored_sections": [
          "Publish, monitor, and evaluate",
          "6. Read evaluation and adoption denominators"
        ],
        "new_ranges": [
          [
            355,
            361
          ],
          [
            433,
            433
          ]
        ],
        "prior_ranges": [
          [
            355,
            355
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "PL-900:9.3",
        "wording": "Describe agent evaluations",
        "selected_authored_sections": [
          "Publish, monitor, and evaluate",
          "6. Read evaluation and adoption denominators"
        ],
        "new_ranges": [
          [
            355,
            361
          ],
          [
            433,
            433
          ]
        ],
        "prior_ranges": [
          [
            355,
            355
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "SC-500:1.1",
        "wording": "Implement and configure Privileged Identity Management (PIM)",
        "selected_authored_sections": [
          "Treat identity as the control plane",
          "Lab 1: Privileged access and overprivilege review"
        ],
        "new_ranges": [
          [
            78,
            95
          ],
          [
            453,
            453
          ]
        ],
        "prior_ranges": [
          [
            89,
            93
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "SC-500:1.2",
        "wording": "Implement conditional access policies",
        "selected_authored_sections": [
          "Treat identity as the control plane",
          "Lab 1: Privileged access and overprivilege review"
        ],
        "new_ranges": [
          [
            78,
            95
          ],
          [
            453,
            453
          ]
        ],
        "prior_ranges": [
          [
            91,
            93
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "SC-500:1.3",
        "wording": "Implement and configure authentication methods, including multifactor authentication (MFA) and passwordless",
        "selected_authored_sections": [
          "Treat identity as the control plane",
          "Lab 1: Privileged access and overprivilege review"
        ],
        "new_ranges": [
          [
            78,
            95
          ],
          [
            453,
            453
          ]
        ],
        "prior_ranges": [
          [
            93,
            93
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "SC-500:1.4",
        "wording": "Implement and configure identity for applications, including enterprise applications and app registrations",
        "selected_authored_sections": [
          "Secure application and workload identities",
          "Lab 2: Application identity and Key Vault boundary"
        ],
        "new_ranges": [
          [
            99,
            113
          ],
          [
            457,
            457
          ]
        ],
        "prior_ranges": [
          [
            99,
            111
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "SC-500:1.5",
        "wording": "Manage OAuth permission grants and consent settings",
        "selected_authored_sections": [
          "Secure application and workload identities",
          "Lab 2: Application identity and Key Vault boundary"
        ],
        "new_ranges": [
          [
            99,
            113
          ],
          [
            457,
            457
          ]
        ],
        "prior_ranges": [
          [
            103,
            111
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "SC-500:1.6",
        "wording": "Implement and configure managed identities for Azure resources",
        "selected_authored_sections": [
          "Secure application and workload identities",
          "Lab 2: Application identity and Key Vault boundary"
        ],
        "new_ranges": [
          [
            99,
            113
          ],
          [
            457,
            457
          ]
        ],
        "prior_ranges": [
          [
            109,
            113
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "SC-500:2.1",
        "wording": "Deploy Key Vault",
        "selected_authored_sections": [
          "Secure Azure Key Vault as a boundary, not just a container",
          "Lab 2: Application identity and Key Vault boundary"
        ],
        "new_ranges": [
          [
            117,
            131
          ],
          [
            457,
            457
          ]
        ],
        "prior_ranges": [
          [
            117,
            131
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "SC-500:2.2",
        "wording": "Configure Key Vault settings",
        "selected_authored_sections": [
          "Secure Azure Key Vault as a boundary, not just a container",
          "Lab 2: Application identity and Key Vault boundary"
        ],
        "new_ranges": [
          [
            117,
            131
          ],
          [
            457,
            457
          ]
        ],
        "prior_ranges": [
          [
            117,
            131
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "SC-500:2.3",
        "wording": "Configure access to Key Vault",
        "selected_authored_sections": [
          "Secure Azure Key Vault as a boundary, not just a container",
          "Lab 2: Application identity and Key Vault boundary"
        ],
        "new_ranges": [
          [
            117,
            131
          ],
          [
            457,
            457
          ]
        ],
        "prior_ranges": [
          [
            117,
            131
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "SC-500:2.4",
        "wording": "Configure firewall settings on Key Vault",
        "selected_authored_sections": [
          "Secure Azure Key Vault as a boundary, not just a container",
          "Lab 2: Application identity and Key Vault boundary"
        ],
        "new_ranges": [
          [
            117,
            131
          ],
          [
            457,
            457
          ]
        ],
        "prior_ranges": [
          [
            117,
            131
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "SC-500:2.5",
        "wording": "Manage keys, secrets, and certificates",
        "selected_authored_sections": [
          "Secure Azure Key Vault as a boundary, not just a container",
          "Lab 2: Application identity and Key Vault boundary"
        ],
        "new_ranges": [
          [
            117,
            131
          ],
          [
            457,
            457
          ]
        ],
        "prior_ranges": [
          [
            117,
            131
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "SC-500:2.6",
        "wording": "Scan for secrets by using Defender Cloud Security Posture Management (Defender CSPM)",
        "selected_authored_sections": [
          "Secure Azure Key Vault as a boundary, not just a container",
          "Lab 2: Application identity and Key Vault boundary"
        ],
        "new_ranges": [
          [
            117,
            131
          ],
          [
            457,
            457
          ]
        ],
        "prior_ranges": [
          [
            117,
            131
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "SC-500:2.7",
        "wording": "Implement Defender for Key Vault",
        "selected_authored_sections": [
          "Secure Azure Key Vault as a boundary, not just a container",
          "Lab 2: Application identity and Key Vault boundary"
        ],
        "new_ranges": [
          [
            117,
            131
          ],
          [
            457,
            457
          ]
        ],
        "prior_ranges": [
          [
            117,
            131
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "SC-500:3.1",
        "wording": "Implement and configure security controls by using Azure Policy, including built-in and custom policy definitions",
        "selected_authored_sections": [
          "Enforce governance without confusing policy, permission, and protection",
          "Lab 3: Policy, Defender, backup, and IaC"
        ],
        "new_ranges": [
          [
            135,
            147
          ],
          [
            461,
            461
          ]
        ],
        "prior_ranges": [
          [
            135,
            137
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "SC-500:3.2",
        "wording": "Evaluate regulatory compliance by using Microsoft Defender for Cloud",
        "selected_authored_sections": [
          "Enforce governance without confusing policy, permission, and protection",
          "Lab 3: Policy, Defender, backup, and IaC"
        ],
        "new_ranges": [
          [
            135,
            147
          ],
          [
            461,
            461
          ]
        ],
        "prior_ranges": [
          [
            139,
            139
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "SC-500:3.3",
        "wording": "Implement and configure security controls in Defender for Cloud, including security standards and recommendations",
        "selected_authored_sections": [
          "Enforce governance without confusing policy, permission, and protection",
          "Lab 3: Policy, Defender, backup, and IaC"
        ],
        "new_ranges": [
          [
            135,
            147
          ],
          [
            461,
            461
          ]
        ],
        "prior_ranges": [
          [
            139,
            139
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "SC-500:3.4",
        "wording": "Implement resource locks",
        "selected_authored_sections": [
          "Enforce governance without confusing policy, permission, and protection",
          "Lab 3: Policy, Defender, backup, and IaC"
        ],
        "new_ranges": [
          [
            135,
            147
          ],
          [
            461,
            461
          ]
        ],
        "prior_ranges": [
          [
            137,
            137
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "SC-500:3.5",
        "wording": "Manage Azure built-in role assignments",
        "selected_authored_sections": [
          "Enforce governance without confusing policy, permission, and protection",
          "Lab 1: Privileged access and overprivilege review"
        ],
        "new_ranges": [
          [
            135,
            147
          ],
          [
            453,
            453
          ]
        ],
        "prior_ranges": [
          [
            141,
            141
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "SC-500:3.6",
        "wording": "Manage custom roles, including Azure roles and Microsoft Entra roles",
        "selected_authored_sections": [
          "Enforce governance without confusing policy, permission, and protection",
          "Lab 1: Privileged access and overprivilege review"
        ],
        "new_ranges": [
          [
            135,
            147
          ],
          [
            453,
            453
          ]
        ],
        "prior_ranges": [
          [
            141,
            141
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "SC-500:3.7",
        "wording": "Evaluate and remediate overprivileged access assignments by using Azure role-based access control (RBAC)",
        "selected_authored_sections": [
          "Enforce governance without confusing policy, permission, and protection",
          "Lab 1: Privileged access and overprivilege review"
        ],
        "new_ranges": [
          [
            135,
            147
          ],
          [
            453,
            453
          ]
        ],
        "prior_ranges": [
          [
            141,
            141
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "SC-500:3.8",
        "wording": "Configure security controls for backup protection by using Azure Backup security features",
        "selected_authored_sections": [
          "Enforce governance without confusing policy, permission, and protection",
          "Lab 3: Policy, Defender, backup, and IaC"
        ],
        "new_ranges": [
          [
            135,
            147
          ],
          [
            461,
            461
          ]
        ],
        "prior_ranges": [
          [
            143,
            143
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "SC-500:3.9",
        "wording": "Implement and configure security controls by using infrastructure as code",
        "selected_authored_sections": [
          "Enforce governance without confusing policy, permission, and protection",
          "Lab 3: Policy, Defender, backup, and IaC"
        ],
        "new_ranges": [
          [
            135,
            147
          ],
          [
            461,
            461
          ]
        ],
        "prior_ranges": [
          [
            145,
            147
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "SC-500:4.1",
        "wording": "Implement and configure security for storage accounts",
        "selected_authored_sections": [
          "Secure storage from identity through recovery",
          "Lab 4: Storage and SQL data plane"
        ],
        "new_ranges": [
          [
            153,
            165
          ],
          [
            465,
            465
          ]
        ],
        "prior_ranges": [
          [
            153,
            165
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "SC-500:4.2",
        "wording": "Configure Azure Storage firewall rules",
        "selected_authored_sections": [
          "Secure storage from identity through recovery",
          "Lab 4: Storage and SQL data plane"
        ],
        "new_ranges": [
          [
            153,
            165
          ],
          [
            465,
            465
          ]
        ],
        "prior_ranges": [
          [
            153,
            165
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "SC-500:4.3",
        "wording": "Implement Defender for Storage threat protection configurations",
        "selected_authored_sections": [
          "Secure storage from identity through recovery",
          "Lab 4: Storage and SQL data plane"
        ],
        "new_ranges": [
          [
            153,
            165
          ],
          [
            465,
            465
          ]
        ],
        "prior_ranges": [
          [
            153,
            165
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "SC-500:4.4",
        "wording": "Manage access to storage, including access policies",
        "selected_authored_sections": [
          "Secure storage from identity through recovery",
          "Lab 4: Storage and SQL data plane"
        ],
        "new_ranges": [
          [
            153,
            165
          ],
          [
            465,
            465
          ]
        ],
        "prior_ranges": [
          [
            153,
            165
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "SC-500:5.1",
        "wording": "Implement platform-level security configurations in Azure SQL",
        "selected_authored_sections": [
          "Layer Azure SQL security and evidence",
          "Lab 4: Storage and SQL data plane"
        ],
        "new_ranges": [
          [
            169,
            179
          ],
          [
            465,
            465
          ]
        ],
        "prior_ranges": [
          [
            169,
            179
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "SC-500:5.2",
        "wording": "Configure database auditing for Azure SQL Database and Azure SQL Managed Instance",
        "selected_authored_sections": [
          "Layer Azure SQL security and evidence",
          "Lab 4: Storage and SQL data plane"
        ],
        "new_ranges": [
          [
            169,
            179
          ],
          [
            465,
            465
          ]
        ],
        "prior_ranges": [
          [
            169,
            179
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "SC-500:5.3",
        "wording": "Configure Defender for Databases protection across Azure database services",
        "selected_authored_sections": [
          "Layer Azure SQL security and evidence",
          "Lab 4: Storage and SQL data plane"
        ],
        "new_ranges": [
          [
            169,
            179
          ],
          [
            465,
            465
          ]
        ],
        "prior_ranges": [
          [
            169,
            179
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "SC-500:6.1",
        "wording": "Implement and manage network security groups (NSGs) and application security groups (ASGs)",
        "selected_authored_sections": [
          "Build segmentation and private access deliberately",
          "Lab 5: Network path and effective controls"
        ],
        "new_ranges": [
          [
            183,
            197
          ],
          [
            469,
            469
          ]
        ],
        "prior_ranges": [
          [
            183,
            183
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "SC-500:6.2",
        "wording": "Implement and configure network access policies by using Azure Virtual Network Manager",
        "selected_authored_sections": [
          "Build segmentation and private access deliberately",
          "Lab 5: Network path and effective controls"
        ],
        "new_ranges": [
          [
            183,
            197
          ],
          [
            469,
            469
          ]
        ],
        "prior_ranges": [
          [
            185,
            185
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "SC-500:6.3",
        "wording": "Configure security for an Azure Virtual WAN",
        "selected_authored_sections": [
          "Build segmentation and private access deliberately",
          "Lab 5: Network path and effective controls"
        ],
        "new_ranges": [
          [
            183,
            197
          ],
          [
            469,
            469
          ]
        ],
        "prior_ranges": [
          [
            187,
            187
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "SC-500:6.4",
        "wording": "Implement and configure security for virtual private network (VPN) connections",
        "selected_authored_sections": [
          "Build segmentation and private access deliberately",
          "Lab 5: Network path and effective controls"
        ],
        "new_ranges": [
          [
            183,
            197
          ],
          [
            469,
            469
          ]
        ],
        "prior_ranges": [
          [
            189,
            189
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "SC-500:6.5",
        "wording": "Implement and configure Microsoft Entra Private Access",
        "selected_authored_sections": [
          "Build segmentation and private access deliberately",
          "Lab 5: Network path and effective controls"
        ],
        "new_ranges": [
          [
            183,
            197
          ],
          [
            469,
            469
          ]
        ],
        "prior_ranges": [
          [
            191,
            191
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "SC-500:6.6",
        "wording": "Configure Azure private endpoints to secure access to Azure platform as a service (PaaS) resources",
        "selected_authored_sections": [
          "Build segmentation and private access deliberately",
          "Lab 5: Network path and effective controls"
        ],
        "new_ranges": [
          [
            183,
            197
          ],
          [
            469,
            469
          ]
        ],
        "prior_ranges": [
          [
            193,
            193
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "SC-500:6.7",
        "wording": "Configure Azure Private Link services to secure access to network resources",
        "selected_authored_sections": [
          "Build segmentation and private access deliberately",
          "Lab 5: Network path and effective controls"
        ],
        "new_ranges": [
          [
            183,
            197
          ],
          [
            469,
            469
          ]
        ],
        "prior_ranges": [
          [
            193,
            193
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "SC-500:6.8",
        "wording": "Implement and configure Azure Firewall",
        "selected_authored_sections": [
          "Build segmentation and private access deliberately",
          "Lab 5: Network path and effective controls"
        ],
        "new_ranges": [
          [
            183,
            197
          ],
          [
            469,
            469
          ]
        ],
        "prior_ranges": [
          [
            195,
            195
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "SC-500:6.9",
        "wording": "Evaluate effective security rules by using Azure Network Watcher diagnostics",
        "selected_authored_sections": [
          "Build segmentation and private access deliberately",
          "Lab 5: Network path and effective controls"
        ],
        "new_ranges": [
          [
            183,
            197
          ],
          [
            469,
            469
          ]
        ],
        "prior_ranges": [
          [
            183,
            183
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "SC-500:7.1",
        "wording": "Identify overexposure of data in SharePoint",
        "selected_authored_sections": [
          "Secure AI as a connected system",
          "Lab 6: AI and agent security control chain"
        ],
        "new_ranges": [
          [
            203,
            237
          ],
          [
            473,
            473
          ]
        ],
        "prior_ranges": [
          [
            215,
            215
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "SC-500:7.2",
        "wording": "Identify risks related to Microsoft Copilot and AI apps by using Microsoft Purview Data Security Posture Management (DSPM)",
        "selected_authored_sections": [
          "Secure AI as a connected system",
          "Lab 6: AI and agent security control chain"
        ],
        "new_ranges": [
          [
            203,
            237
          ],
          [
            473,
            473
          ]
        ],
        "prior_ranges": [
          [
            215,
            215
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "SC-500:7.3",
        "wording": "Enable and configure real-time protection for Microsoft Copilot Studio agents",
        "selected_authored_sections": [
          "Secure AI as a connected system",
          "Focused reading and evidence route",
          "Lab 6: AI and agent security control chain"
        ],
        "new_ranges": [
          [
            203,
            237
          ],
          [
            571,
            591
          ],
          [
            473,
            473
          ]
        ],
        "prior_ranges": [
          [
            217,
            217
          ],
          [
            571,
            571
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "SC-500:7.4",
        "wording": "Implement conditional access for Microsoft Entra Agent ID",
        "selected_authored_sections": [
          "Secure AI as a connected system",
          "1. Map the caller before assigning a policy",
          "Lab 6: AI and agent security control chain"
        ],
        "new_ranges": [
          [
            203,
            237
          ],
          [
            412,
            419
          ],
          [
            473,
            473
          ]
        ],
        "prior_ranges": [
          [
            219,
            221
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "SC-500:7.5",
        "wording": "Analyze blast radius for security risks related to Entra Agent ID by using Defender XDR",
        "selected_authored_sections": [
          "Secure AI as a connected system",
          "2. Compute effective access without double counting",
          "Lab 6: AI and agent security control chain"
        ],
        "new_ranges": [
          [
            203,
            237
          ],
          [
            423,
            423
          ],
          [
            473,
            473
          ]
        ],
        "prior_ranges": [
          [
            219,
            219
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "SC-500:7.6",
        "wording": "Manage Entra Agent ID access",
        "selected_authored_sections": [
          "Secure AI as a connected system",
          "1. Map the caller before assigning a policy",
          "Lab 6: AI and agent security control chain"
        ],
        "new_ranges": [
          [
            203,
            237
          ],
          [
            412,
            419
          ],
          [
            473,
            473
          ]
        ],
        "prior_ranges": [
          [
            219,
            221
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "SC-500:7.7",
        "wording": "Configure and deploy AI Gateway in Azure API Management for Microsoft Foundry",
        "selected_authored_sections": [
          "Secure AI as a connected system",
          "7. Gateway success is not backend authorization",
          "Lab 6: AI and agent security control chain"
        ],
        "new_ranges": [
          [
            203,
            237
          ],
          [
            445,
            445
          ],
          [
            473,
            473
          ]
        ],
        "prior_ranges": [
          [
            223,
            223
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "SC-500:7.8",
        "wording": "Enable Defender for AI Service in Cloud Workload Protection in Defender for Cloud",
        "selected_authored_sections": [
          "Secure AI as a connected system",
          "Lab 6: AI and agent security control chain"
        ],
        "new_ranges": [
          [
            203,
            237
          ],
          [
            473,
            473
          ]
        ],
        "prior_ranges": [
          [
            225,
            225
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "SC-500:7.9",
        "wording": "Configure guardrails for agent security in Foundry",
        "selected_authored_sections": [
          "Secure AI as a connected system",
          "Lab 6: AI and agent security control chain"
        ],
        "new_ranges": [
          [
            203,
            237
          ],
          [
            473,
            473
          ]
        ],
        "prior_ranges": [
          [
            227,
            227
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "SC-500:7.10",
        "wording": "Monitor AI security by using the Data and AI security dashboard in Defender for Cloud",
        "selected_authored_sections": [
          "Secure AI as a connected system",
          "Lab 6: AI and agent security control chain"
        ],
        "new_ranges": [
          [
            203,
            237
          ],
          [
            473,
            473
          ]
        ],
        "prior_ranges": [
          [
            229,
            231
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "SC-500:7.11",
        "wording": "Manage agents in Microsoft 365 admin center",
        "selected_authored_sections": [
          "Secure AI as a connected system",
          "Lab 6: AI and agent security control chain"
        ],
        "new_ranges": [
          [
            203,
            237
          ],
          [
            473,
            473
          ]
        ],
        "prior_ranges": [
          [
            233,
            233
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "SC-500:8.1",
        "wording": "Implement and configure disk encryption",
        "selected_authored_sections": [
          "Harden servers and virtual machines across clouds",
          "Lab 7: Hybrid VM protection and recovery"
        ],
        "new_ranges": [
          [
            241,
            251
          ],
          [
            477,
            477
          ]
        ],
        "prior_ranges": [
          [
            241,
            241
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "SC-500:8.2",
        "wording": "Plan and implement Azure Bastion",
        "selected_authored_sections": [
          "Harden servers and virtual machines across clouds",
          "Lab 7: Hybrid VM protection and recovery"
        ],
        "new_ranges": [
          [
            241,
            251
          ],
          [
            477,
            477
          ]
        ],
        "prior_ranges": [
          [
            243,
            243
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "SC-500:8.3",
        "wording": "Enable and enforce use of just-in-time (JIT) VM access",
        "selected_authored_sections": [
          "Harden servers and virtual machines across clouds",
          "Lab 7: Hybrid VM protection and recovery"
        ],
        "new_ranges": [
          [
            241,
            251
          ],
          [
            477,
            477
          ]
        ],
        "prior_ranges": [
          [
            243,
            243
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "SC-500:8.4",
        "wording": "Extend security controls to hybrid and multicloud servers by using Azure Arc",
        "selected_authored_sections": [
          "Harden servers and virtual machines across clouds",
          "Lab 7: Hybrid VM protection and recovery"
        ],
        "new_ranges": [
          [
            241,
            251
          ],
          [
            477,
            477
          ]
        ],
        "prior_ranges": [
          [
            245,
            245
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "SC-500:8.5",
        "wording": "Onboard servers to Defender for Servers in Defender for Cloud, including hybrid and multicloud scenarios",
        "selected_authored_sections": [
          "Harden servers and virtual machines across clouds",
          "4. Separate scanning from live endpoint protection",
          "Lab 7: Hybrid VM protection and recovery"
        ],
        "new_ranges": [
          [
            241,
            251
          ],
          [
            431,
            431
          ],
          [
            477,
            477
          ]
        ],
        "prior_ranges": [
          [
            247,
            247
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "SC-500:8.6",
        "wording": "Configure Defender for Servers settings, including vulnerability scanning, and endpoint detection and response (EDR)",
        "selected_authored_sections": [
          "Harden servers and virtual machines across clouds",
          "4. Separate scanning from live endpoint protection",
          "Lab 7: Hybrid VM protection and recovery"
        ],
        "new_ranges": [
          [
            241,
            251
          ],
          [
            431,
            431
          ],
          [
            477,
            477
          ]
        ],
        "prior_ranges": [
          [
            247,
            247
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "SC-500:8.7",
        "wording": "Implement and manage agentless scanning for VMs in Defender for Servers",
        "selected_authored_sections": [
          "Harden servers and virtual machines across clouds",
          "4. Separate scanning from live endpoint protection",
          "Lab 7: Hybrid VM protection and recovery"
        ],
        "new_ranges": [
          [
            241,
            251
          ],
          [
            431,
            431
          ],
          [
            477,
            477
          ]
        ],
        "prior_ranges": [
          [
            247,
            247
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "SC-500:8.8",
        "wording": "Configure security features on a VM, including secure boot, virtual Trusted Platform Module (vTPM), integrity monitoring, and security type",
        "selected_authored_sections": [
          "Harden servers and virtual machines across clouds",
          "Lab 7: Hybrid VM protection and recovery"
        ],
        "new_ranges": [
          [
            241,
            251
          ],
          [
            477,
            477
          ]
        ],
        "prior_ranges": [
          [
            249,
            249
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "SC-500:8.9",
        "wording": "Enforce security configuration of Azure-managed servers by using Azure Machine Configuration",
        "selected_authored_sections": [
          "Harden servers and virtual machines across clouds",
          "Lab 7: Hybrid VM protection and recovery"
        ],
        "new_ranges": [
          [
            241,
            251
          ],
          [
            477,
            477
          ]
        ],
        "prior_ranges": [
          [
            249,
            249
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "SC-500:9.1",
        "wording": "Detect misconfigurations and runtime risks in container workloads by using Defender for Containers",
        "selected_authored_sections": [
          "Secure containers, serverless, web apps, and APIs",
          "Lab 8: Application platform, Sentinel, and Copilot operations"
        ],
        "new_ranges": [
          [
            255,
            279
          ],
          [
            481,
            481
          ]
        ],
        "prior_ranges": [
          [
            255,
            255
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "SC-500:9.2",
        "wording": "Implement and configure security controls for Azure Kubernetes Service (AKS)",
        "selected_authored_sections": [
          "Secure containers, serverless, web apps, and APIs",
          "Lab 8: Application platform, Sentinel, and Copilot operations"
        ],
        "new_ranges": [
          [
            255,
            279
          ],
          [
            481,
            481
          ]
        ],
        "prior_ranges": [
          [
            257,
            265
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "SC-500:9.3",
        "wording": "Implement and configure security controls for Azure Container Registry",
        "selected_authored_sections": [
          "Secure containers, serverless, web apps, and APIs",
          "Lab 8: Application platform, Sentinel, and Copilot operations"
        ],
        "new_ranges": [
          [
            255,
            279
          ],
          [
            481,
            481
          ]
        ],
        "prior_ranges": [
          [
            267,
            267
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "SC-500:9.4",
        "wording": "Implement and configure security controls for Azure Container Instances and Azure Container Apps",
        "selected_authored_sections": [
          "Secure containers, serverless, web apps, and APIs",
          "Lab 8: Application platform, Sentinel, and Copilot operations"
        ],
        "new_ranges": [
          [
            255,
            279
          ],
          [
            481,
            481
          ]
        ],
        "prior_ranges": [
          [
            269,
            269
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "SC-500:9.5",
        "wording": "Implement and configure security controls for Azure Functions, including authentication and network access",
        "selected_authored_sections": [
          "Secure containers, serverless, web apps, and APIs",
          "Lab 8: Application platform, Sentinel, and Copilot operations"
        ],
        "new_ranges": [
          [
            255,
            279
          ],
          [
            481,
            481
          ]
        ],
        "prior_ranges": [
          [
            271,
            271
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "SC-500:9.6",
        "wording": "Implement and configure security controls for Azure Logic Apps",
        "selected_authored_sections": [
          "Secure containers, serverless, web apps, and APIs",
          "Lab 8: Application platform, Sentinel, and Copilot operations"
        ],
        "new_ranges": [
          [
            255,
            279
          ],
          [
            481,
            481
          ]
        ],
        "prior_ranges": [
          [
            273,
            273
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "SC-500:9.7",
        "wording": "Implement and configure security controls for Azure App Service",
        "selected_authored_sections": [
          "Secure containers, serverless, web apps, and APIs",
          "Lab 8: Application platform, Sentinel, and Copilot operations"
        ],
        "new_ranges": [
          [
            255,
            279
          ],
          [
            481,
            481
          ]
        ],
        "prior_ranges": [
          [
            275,
            275
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "SC-500:9.8",
        "wording": "Implement and configure Azure Web Application Firewall",
        "selected_authored_sections": [
          "Secure containers, serverless, web apps, and APIs",
          "Lab 8: Application platform, Sentinel, and Copilot operations"
        ],
        "new_ranges": [
          [
            255,
            279
          ],
          [
            481,
            481
          ]
        ],
        "prior_ranges": [
          [
            277,
            277
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "SC-500:9.9",
        "wording": "Implement security policies for back-end API protection by using API Management",
        "selected_authored_sections": [
          "Secure containers, serverless, web apps, and APIs",
          "7. Gateway success is not backend authorization",
          "Lab 8: Application platform, Sentinel, and Copilot operations"
        ],
        "new_ranges": [
          [
            255,
            279
          ],
          [
            445,
            445
          ],
          [
            481,
            481
          ]
        ],
        "prior_ranges": [
          [
            279,
            279
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "SC-500:10.1",
        "wording": "Identify security risks by using Defender CSPM",
        "selected_authored_sections": [
          "Turn Defender for Cloud findings into controlled remediation"
        ],
        "new_ranges": [
          [
            285,
            302
          ]
        ],
        "prior_ranges": [
          [
            285,
            302
          ]
        ],
        "binding_changed": false,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "SC-500:10.2",
        "wording": "Evaluate compliance against security frameworks by using Defender for Cloud",
        "selected_authored_sections": [
          "Turn Defender for Cloud findings into controlled remediation"
        ],
        "new_ranges": [
          [
            285,
            302
          ]
        ],
        "prior_ranges": [
          [
            285,
            302
          ]
        ],
        "binding_changed": false,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "SC-500:10.3",
        "wording": "Enable and configure Defender for Cloud workload protection plans",
        "selected_authored_sections": [
          "Turn Defender for Cloud findings into controlled remediation"
        ],
        "new_ranges": [
          [
            285,
            302
          ]
        ],
        "prior_ranges": [
          [
            285,
            302
          ]
        ],
        "binding_changed": false,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "SC-500:10.4",
        "wording": "Connect hybrid cloud and multicloud environments to Defender for Cloud, including Amazon Web Services (AWS) and Google Cloud Platform (GCP)",
        "selected_authored_sections": [
          "Turn Defender for Cloud findings into controlled remediation"
        ],
        "new_ranges": [
          [
            285,
            302
          ]
        ],
        "prior_ranges": [
          [
            285,
            302
          ]
        ],
        "binding_changed": false,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "SC-500:10.5",
        "wording": "Configure Microsoft Defender Vulnerability Management settings for Azure VMs",
        "selected_authored_sections": [
          "Harden servers and virtual machines across clouds",
          "4. Separate scanning from live endpoint protection",
          "Lab 7: Hybrid VM protection and recovery"
        ],
        "new_ranges": [
          [
            241,
            251
          ],
          [
            431,
            431
          ],
          [
            477,
            477
          ]
        ],
        "prior_ranges": [
          [
            285,
            302
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "SC-500:10.6",
        "wording": "Discover unprotected assets and vulnerabilities by using Microsoft Defender External Attack Surface Management (EASM)",
        "selected_authored_sections": [
          "Turn Defender for Cloud findings into controlled remediation"
        ],
        "new_ranges": [
          [
            285,
            302
          ]
        ],
        "prior_ranges": [
          [
            285,
            302
          ]
        ],
        "binding_changed": false,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "SC-500:11.1",
        "wording": "Create and connect workspaces in Microsoft Sentinel",
        "selected_authored_sections": [
          "Engineer Microsoft Sentinel ingestion before analytics",
          "Current release and onboarding boundaries"
        ],
        "new_ranges": [
          [
            306,
            320
          ],
          [
            344,
            358
          ]
        ],
        "prior_ranges": [
          [
            306,
            306
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "SC-500:11.2",
        "wording": "Assign roles in Microsoft Sentinel",
        "selected_authored_sections": [
          "Engineer Microsoft Sentinel ingestion before analytics"
        ],
        "new_ranges": [
          [
            306,
            320
          ]
        ],
        "prior_ranges": [
          [
            306,
            306
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "SC-500:11.3",
        "wording": "Implement and use content hub solutions",
        "selected_authored_sections": [
          "Engineer Microsoft Sentinel ingestion before analytics",
          "Worked ingestion path: direct Windows events versus WEF"
        ],
        "new_ranges": [
          [
            306,
            320
          ],
          [
            324,
            326
          ]
        ],
        "prior_ranges": [
          [
            306,
            306
          ],
          [
            324,
            324
          ],
          [
            326,
            326
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "SC-500:11.4",
        "wording": "Configure and use Microsoft data connectors for Azure resources",
        "selected_authored_sections": [
          "Engineer Microsoft Sentinel ingestion before analytics",
          "Worked ingestion path: direct Windows events versus WEF"
        ],
        "new_ranges": [
          [
            306,
            320
          ],
          [
            324,
            326
          ]
        ],
        "prior_ranges": [
          [
            308,
            308
          ],
          [
            324,
            324
          ],
          [
            326,
            326
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": true
      },
      {
        "objective_id": "SC-500:11.5",
        "wording": "Implement and configure syslog and Common Event Format (CEF) event collections",
        "selected_authored_sections": [
          "Engineer Microsoft Sentinel ingestion before analytics"
        ],
        "new_ranges": [
          [
            306,
            320
          ]
        ],
        "prior_ranges": [
          [
            310,
            310
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "SC-500:11.6",
        "wording": "Implement and configure collection of Windows Security events by using data collection rules, including Windows Event Forwarding (WEF)",
        "selected_authored_sections": [
          "Engineer Microsoft Sentinel ingestion before analytics",
          "Worked ingestion path: direct Windows events versus WEF"
        ],
        "new_ranges": [
          [
            306,
            320
          ],
          [
            324,
            326
          ]
        ],
        "prior_ranges": [
          [
            310,
            310
          ],
          [
            324,
            324
          ],
          [
            326,
            326
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "SC-500:11.7",
        "wording": "Create custom log tables in the workspace to store ingested data",
        "selected_authored_sections": [
          "Engineer Microsoft Sentinel ingestion before analytics"
        ],
        "new_ranges": [
          [
            306,
            320
          ]
        ],
        "prior_ranges": [
          [
            312,
            312
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "SC-500:11.8",
        "wording": "Implement automation rules and playbooks in Microsoft Sentinel",
        "selected_authored_sections": [
          "Engineer Microsoft Sentinel ingestion before analytics"
        ],
        "new_ranges": [
          [
            306,
            320
          ]
        ],
        "prior_ranges": [
          [
            314,
            314
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "SC-500:11.9",
        "wording": "Implement data retention in Microsoft Sentinel data stores",
        "selected_authored_sections": [
          "Engineer Microsoft Sentinel ingestion before analytics",
          "Current release and onboarding boundaries"
        ],
        "new_ranges": [
          [
            306,
            320
          ],
          [
            344,
            358
          ]
        ],
        "prior_ranges": [
          [
            316,
            316
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "SC-500:11.10",
        "wording": "Query Microsoft Purview Audit in Defender XDR",
        "selected_authored_sections": [
          "Engineer Microsoft Sentinel ingestion before analytics"
        ],
        "new_ranges": [
          [
            306,
            320
          ]
        ],
        "prior_ranges": [
          [
            318,
            318
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "SC-500:12.1",
        "wording": "Configure workspaces for Security Copilot",
        "selected_authored_sections": [
          "Operate Microsoft Security Copilot with the same rigor as other privileged tooling"
        ],
        "new_ranges": [
          [
            330,
            340
          ]
        ],
        "prior_ranges": [
          [
            330,
            340
          ]
        ],
        "binding_changed": false,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "SC-500:12.2",
        "wording": "Manage permissions and roles in Security Copilot",
        "selected_authored_sections": [
          "Operate Microsoft Security Copilot with the same rigor as other privileged tooling"
        ],
        "new_ranges": [
          [
            330,
            340
          ]
        ],
        "prior_ranges": [
          [
            330,
            340
          ]
        ],
        "binding_changed": false,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "SC-500:12.3",
        "wording": "Enable and configure plugins",
        "selected_authored_sections": [
          "Operate Microsoft Security Copilot with the same rigor as other privileged tooling"
        ],
        "new_ranges": [
          [
            330,
            340
          ]
        ],
        "prior_ranges": [
          [
            330,
            340
          ]
        ],
        "binding_changed": false,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "SC-500:12.4",
        "wording": "Enable and configure Microsoft agents and Security Store agents",
        "selected_authored_sections": [
          "Operate Microsoft Security Copilot with the same rigor as other privileged tooling"
        ],
        "new_ranges": [
          [
            330,
            340
          ]
        ],
        "prior_ranges": [
          [
            330,
            340
          ]
        ],
        "binding_changed": false,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "AB-250:1.1",
        "wording": "Configure the Copilot Service workspace",
        "selected_authored_sections": [
          "Configure workspace, agents and operational helpers",
          "Configure productivity tools"
        ],
        "new_ranges": [
          [
            81,
            91
          ],
          [
            318,
            324
          ]
        ],
        "prior_ranges": [
          [
            81,
            81
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "AB-250:1.2",
        "wording": "Configure and extend connectors for Dynamics 365 Contact Center",
        "selected_authored_sections": [
          "Choose the architecture and deployment mode"
        ],
        "new_ranges": [
          [
            67,
            77
          ]
        ],
        "prior_ranges": [
          [
            67,
            77
          ]
        ],
        "binding_changed": false,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "AB-250:1.3",
        "wording": "Configure embedded Dynamics 365 Contact Center mode",
        "selected_authored_sections": [
          "Choose the architecture and deployment mode"
        ],
        "new_ranges": [
          [
            67,
            77
          ]
        ],
        "prior_ranges": [
          [
            71,
            77
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "AB-250:1.4",
        "wording": "Configure Copilot for third-party CCaaS solutions",
        "selected_authored_sections": [
          "Choose the architecture and deployment mode"
        ],
        "new_ranges": [
          [
            67,
            77
          ]
        ],
        "prior_ranges": [
          [
            73,
            75
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "AB-250:1.5",
        "wording": "Enable agent simulation to evaluate journeys",
        "selected_authored_sections": [
          "Configure workspace, agents and operational helpers",
          "Worked example 2 — Simulation scope and a rough budget"
        ],
        "new_ranges": [
          [
            81,
            91
          ],
          [
            117,
            120
          ]
        ],
        "prior_ranges": [
          [
            87,
            87
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "AB-250:1.6",
        "wording": "Enable the Health Agent to proactively investigate issues",
        "selected_authored_sections": [
          "Configure workspace, agents and operational helpers"
        ],
        "new_ranges": [
          [
            81,
            91
          ]
        ],
        "prior_ranges": [
          [
            85,
            85
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "AB-250:1.7",
        "wording": "Enable agents to perform transformation, environment migration, and configuration",
        "selected_authored_sections": [
          "Configure workspace, agents and operational helpers",
          "Apply ALM and environment governance"
        ],
        "new_ranges": [
          [
            81,
            91
          ],
          [
            95,
            99
          ]
        ],
        "prior_ranges": [
          [
            83,
            85
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "AB-250:2.1",
        "wording": "Manage and roll out agents by using the Agent hub",
        "selected_authored_sections": [
          "Apply ALM and environment governance",
          "Configure workspace, agents and operational helpers"
        ],
        "new_ranges": [
          [
            95,
            99
          ],
          [
            81,
            91
          ]
        ],
        "prior_ranges": [
          [
            83,
            91
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "AB-250:2.2",
        "wording": "Create solutions for Dynamics 365 Contact Center deployments",
        "selected_authored_sections": [
          "Apply ALM and environment governance",
          "Configure workspace, agents and operational helpers"
        ],
        "new_ranges": [
          [
            95,
            99
          ],
          [
            81,
            91
          ]
        ],
        "prior_ranges": [
          [
            95,
            99
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "AB-250:2.3",
        "wording": "Configure application lifecycle management (ALM) for Dynamics 365 Contact Center deployments",
        "selected_authored_sections": [
          "Apply ALM and environment governance",
          "Configure workspace, agents and operational helpers"
        ],
        "new_ranges": [
          [
            95,
            99
          ],
          [
            81,
            91
          ]
        ],
        "prior_ranges": [
          [
            95,
            99
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "AB-250:2.4",
        "wording": "Manage an omnichannel environment",
        "selected_authored_sections": [
          "Apply ALM and environment governance",
          "Configure workspace, agents and operational helpers"
        ],
        "new_ranges": [
          [
            95,
            99
          ],
          [
            81,
            91
          ]
        ],
        "prior_ranges": [
          [
            95,
            99
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "AB-250:3.1",
        "wording": "Configure user settings",
        "selected_authored_sections": [
          "Manage users, security and capacity"
        ],
        "new_ranges": [
          [
            103,
            107
          ]
        ],
        "prior_ranges": [
          [
            103,
            107
          ]
        ],
        "binding_changed": false,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "AB-250:3.2",
        "wording": "Create user accounts",
        "selected_authored_sections": [
          "Manage users, security and capacity"
        ],
        "new_ranges": [
          [
            103,
            107
          ]
        ],
        "prior_ranges": [
          [
            103,
            107
          ]
        ],
        "binding_changed": false,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "AB-250:3.3",
        "wording": "Manage security roles, including custom security roles and personas",
        "selected_authored_sections": [
          "Manage users, security and capacity"
        ],
        "new_ranges": [
          [
            103,
            107
          ]
        ],
        "prior_ranges": [
          [
            103,
            113
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "AB-250:3.4",
        "wording": "Manage capacity profiles",
        "selected_authored_sections": [
          "Manage users, security and capacity",
          "Worked example 1 — Capacity is an intersection"
        ],
        "new_ranges": [
          [
            103,
            107
          ],
          [
            111,
            113
          ]
        ],
        "prior_ranges": [
          [
            105,
            113
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "AB-250:4.1",
        "wording": "Configure the chat channel",
        "selected_authored_sections": [
          "Configure chat and digital engagement"
        ],
        "new_ranges": [
          [
            126,
            134
          ]
        ],
        "prior_ranges": [
          [
            126,
            130
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "AB-250:4.2",
        "wording": "Configure the record-based channel",
        "selected_authored_sections": [
          "Configure chat and digital engagement",
          "Build basic and unified routing",
          "Design queues and capacity behavior",
          "Manage users, security and capacity"
        ],
        "new_ranges": [
          [
            126,
            134
          ],
          [
            291,
            306
          ],
          [
            279,
            287
          ],
          [
            103,
            107
          ]
        ],
        "prior_ranges": [
          [
            126,
            126
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "AB-250:4.3",
        "wording": "Configure digital channels",
        "selected_authored_sections": [
          "Configure chat and digital engagement"
        ],
        "new_ranges": [
          [
            126,
            134
          ]
        ],
        "prior_ranges": [
          [
            126,
            130
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "AB-250:4.4",
        "wording": "Configure and embed a chat widget",
        "selected_authored_sections": [
          "Configure chat and digital engagement"
        ],
        "new_ranges": [
          [
            126,
            134
          ]
        ],
        "prior_ranges": [
          [
            128,
            130
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "AB-250:4.5",
        "wording": "Configure proactive chat",
        "selected_authored_sections": [
          "Configure chat and digital engagement",
          "Configure proactive outbound engagement"
        ],
        "new_ranges": [
          [
            126,
            134
          ],
          [
            203,
            209
          ]
        ],
        "prior_ranges": [
          [
            128,
            128
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "AB-250:4.6",
        "wording": "Configure pre-chat surveys",
        "selected_authored_sections": [
          "Configure chat and digital engagement"
        ],
        "new_ranges": [
          [
            126,
            134
          ]
        ],
        "prior_ranges": [
          [
            128,
            128
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "AB-250:4.7",
        "wording": "Manage quick replies",
        "selected_authored_sections": [
          "Worked representative settings: reply scope and availability"
        ],
        "new_ranges": [
          [
            185,
            189
          ]
        ],
        "prior_ranges": [
          [
            171,
            171
          ],
          [
            185,
            185
          ],
          [
            187,
            187
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "AB-250:4.8",
        "wording": "Extend the chat experience using the live chat SDK",
        "selected_authored_sections": [
          "Worked chat SDK lifecycle",
          "Configure chat and digital engagement"
        ],
        "new_ranges": [
          [
            138,
            140
          ],
          [
            126,
            134
          ]
        ],
        "prior_ranges": [
          [
            130,
            130
          ],
          [
            138,
            138
          ],
          [
            140,
            140
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "AB-250:4.9",
        "wording": "Configure authentication settings for chat",
        "selected_authored_sections": [
          "Configure chat and digital engagement"
        ],
        "new_ranges": [
          [
            126,
            134
          ]
        ],
        "prior_ranges": [
          [
            132,
            132
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "AB-250:4.10",
        "wording": "Manage chat in native mobile apps by using the Messaging SDK for Dynamics 365 Contact Center",
        "selected_authored_sections": [
          "Worked chat SDK lifecycle",
          "Configure chat and digital engagement"
        ],
        "new_ranges": [
          [
            138,
            140
          ],
          [
            126,
            134
          ]
        ],
        "prior_ranges": [
          [
            130,
            130
          ],
          [
            322,
            322
          ],
          [
            324,
            324
          ],
          [
            138,
            138
          ],
          [
            140,
            140
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "AB-250:4.11",
        "wording": "Configure a custom messaging channel by using messaging APIs",
        "selected_authored_sections": [
          "Configure productivity tools"
        ],
        "new_ranges": [
          [
            318,
            324
          ]
        ],
        "prior_ranges": [
          [
            130,
            130
          ],
          [
            322,
            322
          ],
          [
            324,
            324
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "AB-250:4.12",
        "wording": "Enable real-time translation of conversations",
        "selected_authored_sections": [
          "Configure chat and digital engagement"
        ],
        "new_ranges": [
          [
            126,
            134
          ]
        ],
        "prior_ranges": [
          [
            134,
            134
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "AB-250:4.13",
        "wording": "Configure customer settings, including location and self-service settings",
        "selected_authored_sections": [
          "Configure chat and digital engagement",
          "Configure conversation lifecycle features",
          "Configure proactive outbound engagement",
          "Worked example 3 — Missing time zone changes quiet-hour decisions"
        ],
        "new_ranges": [
          [
            126,
            134
          ],
          [
            169,
            175
          ],
          [
            203,
            209
          ],
          [
            213,
            213
          ]
        ],
        "prior_ranges": [
          [
            128,
            132
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "AB-250:5.1",
        "wording": "Configure the voice channel",
        "selected_authored_sections": [
          "Provision voice"
        ],
        "new_ranges": [
          [
            144,
            159
          ]
        ],
        "prior_ranges": [
          [
            144,
            157
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "AB-250:5.2",
        "wording": "Integrate a non-Microsoft interactive voice response (IVR) system with voice channel",
        "selected_authored_sections": [
          "Provision voice",
          "Worked voice binding: keypad trigger and transfer context"
        ],
        "new_ranges": [
          [
            144,
            159
          ],
          [
            263,
            273
          ]
        ],
        "prior_ranges": [
          [
            1,
            1
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "AB-250:5.3",
        "wording": "Manage phone numbers",
        "selected_authored_sections": [
          "Provision voice"
        ],
        "new_ranges": [
          [
            144,
            159
          ]
        ],
        "prior_ranges": [
          [
            144,
            153
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "AB-250:5.4",
        "wording": "Configure inbound and outbound calling profiles",
        "selected_authored_sections": [
          "Provision voice",
          "Answers and reasoning"
        ],
        "new_ranges": [
          [
            144,
            159
          ],
          [
            471,
            509
          ]
        ],
        "prior_ranges": [
          [
            144,
            157
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "AB-250:5.5",
        "wording": "Configure call recording, transcription, and real-time translation",
        "selected_authored_sections": [
          "Provision voice",
          "Distinguish message masking, voice masking and recording controls",
          "Worked CCaaS voice operation: request versus completion"
        ],
        "new_ranges": [
          [
            144,
            159
          ],
          [
            193,
            199
          ],
          [
            163,
            165
          ]
        ],
        "prior_ranges": [
          [
            156,
            157
          ],
          [
            163,
            163
          ],
          [
            165,
            165
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "AB-250:5.6",
        "wording": "Configure agent feedback",
        "selected_authored_sections": [
          "Distinguish message masking, voice masking and recording controls",
          "Distinguish message masking, voice masking and recording controls"
        ],
        "new_ranges": [
          [
            193,
            199
          ],
          [
            199,
            199
          ]
        ],
        "prior_ranges": [
          [
            175,
            175
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "AB-250:5.7",
        "wording": "Manage voice calls via the CCaaS SDK API",
        "selected_authored_sections": [
          "Worked CCaaS voice operation: request versus completion"
        ],
        "new_ranges": [
          [
            163,
            165
          ]
        ],
        "prior_ranges": [
          [
            159,
            159
          ],
          [
            163,
            163
          ],
          [
            165,
            165
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "AB-250:6.1",
        "wording": "Manage context variables",
        "selected_authored_sections": [
          "Configure conversation lifecycle features",
          "Configure chat and digital engagement",
          "Worked chat SDK lifecycle"
        ],
        "new_ranges": [
          [
            169,
            175
          ],
          [
            126,
            134
          ],
          [
            138,
            140
          ]
        ],
        "prior_ranges": [
          [
            169,
            169
          ],
          [
            185,
            185
          ],
          [
            187,
            187
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "AB-250:6.2",
        "wording": "Configure automatic customer identification",
        "selected_authored_sections": [
          "Configure conversation lifecycle features",
          "Configure chat and digital engagement",
          "Worked chat SDK lifecycle"
        ],
        "new_ranges": [
          [
            169,
            175
          ],
          [
            126,
            134
          ],
          [
            138,
            140
          ]
        ],
        "prior_ranges": [
          [
            169,
            169
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "AB-250:6.3",
        "wording": "Close conversations automatically",
        "selected_authored_sections": [
          "Configure conversation lifecycle features",
          "Worked conversation lifecycle rule"
        ],
        "new_ranges": [
          [
            169,
            175
          ],
          [
            179,
            181
          ]
        ],
        "prior_ranges": [
          [
            171,
            171
          ],
          [
            179,
            179
          ],
          [
            181,
            181
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "AB-250:6.4",
        "wording": "Enable consult with representatives and transfer of conversations",
        "selected_authored_sections": [
          "Configure conversation lifecycle features",
          "Provision voice",
          "Worked conversation lifecycle rule",
          "Design queues and capacity behavior"
        ],
        "new_ranges": [
          [
            169,
            175
          ],
          [
            144,
            159
          ],
          [
            179,
            181
          ],
          [
            279,
            287
          ]
        ],
        "prior_ranges": [
          [
            171,
            175
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "AB-250:6.5",
        "wording": "Configure sensitive data masking",
        "selected_authored_sections": [
          "Distinguish message masking, voice masking and recording controls"
        ],
        "new_ranges": [
          [
            193,
            199
          ]
        ],
        "prior_ranges": [
          [
            193,
            197
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "AB-250:6.6",
        "wording": "Configure custom presences",
        "selected_authored_sections": [
          "Worked representative settings: reply scope and availability"
        ],
        "new_ranges": [
          [
            185,
            189
          ]
        ],
        "prior_ranges": [
          [
            171,
            171
          ],
          [
            185,
            185
          ],
          [
            187,
            187
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "AB-250:6.7",
        "wording": "Configure messages, including templates, formatting, automated messages, and outbound messages",
        "selected_authored_sections": [
          "Worked representative settings: reply scope and availability",
          "Worked conversation lifecycle rule"
        ],
        "new_ranges": [
          [
            185,
            189
          ],
          [
            179,
            181
          ]
        ],
        "prior_ranges": [
          [
            171,
            171
          ],
          [
            179,
            179
          ],
          [
            181,
            181
          ],
          [
            185,
            185
          ],
          [
            187,
            187
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "AB-250:6.8",
        "wording": "Manage active conversation settings",
        "selected_authored_sections": [
          "Configure conversation lifecycle features",
          "Worked conversation lifecycle rule"
        ],
        "new_ranges": [
          [
            169,
            175
          ],
          [
            179,
            181
          ]
        ],
        "prior_ranges": [
          [
            171,
            175
          ],
          [
            179,
            179
          ],
          [
            181,
            181
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "AB-250:6.9",
        "wording": "Configure the timeline",
        "selected_authored_sections": [
          "Worked representative settings: reply scope and availability"
        ],
        "new_ranges": [
          [
            185,
            189
          ]
        ],
        "prior_ranges": [
          [
            173,
            173
          ],
          [
            189,
            189
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "AB-250:6.10",
        "wording": "Use custom connectors with the timeline control",
        "selected_authored_sections": [
          "Worked representative settings: reply scope and availability"
        ],
        "new_ranges": [
          [
            185,
            189
          ]
        ],
        "prior_ranges": [
          [
            173,
            173
          ],
          [
            189,
            189
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "AB-250:6.11",
        "wording": "Configure the channel integration framework",
        "selected_authored_sections": [
          "Configure conversation lifecycle features"
        ],
        "new_ranges": [
          [
            169,
            175
          ]
        ],
        "prior_ranges": [
          [
            173,
            173
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "AB-250:6.12",
        "wording": "Manage conversations",
        "selected_authored_sections": [
          "Configure conversation lifecycle features",
          "Worked conversation lifecycle rule"
        ],
        "new_ranges": [
          [
            169,
            175
          ],
          [
            179,
            181
          ]
        ],
        "prior_ranges": [
          [
            175,
            175
          ],
          [
            179,
            179
          ],
          [
            181,
            181
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "AB-250:6.13",
        "wording": "Configure feedback by using Copilot Studio",
        "selected_authored_sections": [
          "Distinguish message masking, voice masking and recording controls"
        ],
        "new_ranges": [
          [
            193,
            199
          ]
        ],
        "prior_ranges": [
          [
            175,
            175
          ],
          [
            199,
            199
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "AB-250:6.14",
        "wording": "Manage file attachments",
        "selected_authored_sections": [
          "Configure conversation lifecycle features",
          "Configure chat and digital engagement"
        ],
        "new_ranges": [
          [
            169,
            175
          ],
          [
            126,
            134
          ]
        ],
        "prior_ranges": [
          [
            175,
            175
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "AB-250:6.15",
        "wording": "Manage proactive outbound engagement",
        "selected_authored_sections": [
          "Configure proactive outbound engagement",
          "Worked example 3 — Missing time zone changes quiet-hour decisions"
        ],
        "new_ranges": [
          [
            203,
            209
          ],
          [
            213,
            213
          ]
        ],
        "prior_ranges": [
          [
            203,
            209
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "AB-250:6.16",
        "wording": "Configure proactive outbound campaigns, including workstreams and triggers",
        "selected_authored_sections": [
          "Configure proactive outbound engagement",
          "Worked example 3 — Missing time zone changes quiet-hour decisions"
        ],
        "new_ranges": [
          [
            203,
            209
          ],
          [
            213,
            213
          ]
        ],
        "prior_ranges": [
          [
            203,
            209
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "AB-250:6.17",
        "wording": "Configure dialing methods for proactive outbound campaigns",
        "selected_authored_sections": [
          "Configure proactive outbound engagement",
          "Worked example 3 — Missing time zone changes quiet-hour decisions"
        ],
        "new_ranges": [
          [
            203,
            209
          ],
          [
            213,
            213
          ]
        ],
        "prior_ranges": [
          [
            203,
            209
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "AB-250:6.18",
        "wording": "Set up the proactive outbound dashboard",
        "selected_authored_sections": [
          "Configure proactive outbound engagement",
          "Customize reports and telemetry",
          "Worked example 6 — Overlapping diagnostics and correct containment"
        ],
        "new_ranges": [
          [
            203,
            209
          ],
          [
            362,
            366
          ],
          [
            370,
            374
          ]
        ],
        "prior_ranges": [
          [
            203,
            209
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "AB-250:6.19",
        "wording": "Configure Workforce management (WFM)",
        "selected_authored_sections": [
          "Configure workforce management",
          "Worked example 4 — Workload arithmetic is only a staffing starting point"
        ],
        "new_ranges": [
          [
            217,
            221
          ],
          [
            225,
            231
          ]
        ],
        "prior_ranges": [
          [
            217,
            227
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "AB-250:6.20",
        "wording": "Configure shift management and scheduling",
        "selected_authored_sections": [
          "Configure workforce management",
          "Worked example 4 — Workload arithmetic is only a staffing starting point"
        ],
        "new_ranges": [
          [
            217,
            221
          ],
          [
            225,
            231
          ]
        ],
        "prior_ranges": [
          [
            217,
            227
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "AB-250:6.21",
        "wording": "Configure forecasting",
        "selected_authored_sections": [
          "Configure workforce management",
          "Worked example 4 — Workload arithmetic is only a staffing starting point"
        ],
        "new_ranges": [
          [
            217,
            221
          ],
          [
            225,
            231
          ]
        ],
        "prior_ranges": [
          [
            217,
            227
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "AB-250:6.22",
        "wording": "Integrate third-party WFM solutions",
        "selected_authored_sections": [
          "Configure workforce management",
          "Worked example 4 — Workload arithmetic is only a staffing starting point"
        ],
        "new_ranges": [
          [
            217,
            221
          ],
          [
            225,
            231
          ]
        ],
        "prior_ranges": [
          [
            217,
            227
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "AB-250:6.23",
        "wording": "Design the Dynamics 365 Contact Center setup",
        "selected_authored_sections": [
          "Choose the architecture and deployment mode",
          "Scenario 1: authenticated digital self-service",
          "Scenario 2: regulated multilingual voice",
          "Scenario 3: proactive service campaign and staffing"
        ],
        "new_ranges": [
          [
            67,
            77
          ],
          [
            380,
            380
          ],
          [
            384,
            384
          ],
          [
            388,
            390
          ]
        ],
        "prior_ranges": [
          [
            67,
            77
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "AB-250:6.24",
        "wording": "Use best practices when setting up voice",
        "selected_authored_sections": [
          "Provision voice",
          "Configure voice agents",
          "Worked voice binding: keypad trigger and transfer context",
          "Scenario 2: regulated multilingual voice"
        ],
        "new_ranges": [
          [
            144,
            159
          ],
          [
            255,
            259
          ],
          [
            263,
            273
          ],
          [
            384,
            384
          ]
        ],
        "prior_ranges": [
          [
            154,
            159
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "AB-250:6.25",
        "wording": "Use best practices for developing AI capabilities",
        "selected_authored_sections": [
          "Configure Copilot-assisted guidance",
          "Worked representative-assistance setup",
          "Configure voice agents",
          "Worked voice binding: keypad trigger and transfer context",
          "Scenario 1: authenticated digital self-service",
          "Scenario 2: regulated multilingual voice"
        ],
        "new_ranges": [
          [
            237,
            241
          ],
          [
            245,
            251
          ],
          [
            255,
            259
          ],
          [
            263,
            273
          ],
          [
            380,
            380
          ],
          [
            384,
            384
          ]
        ],
        "prior_ranges": [
          [
            255,
            255
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "AB-250:6.26",
        "wording": "Evaluate the total cost of ownership for a Dynamics 365 Contact Center implementation",
        "selected_authored_sections": [
          "Choose the architecture and deployment mode"
        ],
        "new_ranges": [
          [
            67,
            77
          ]
        ],
        "prior_ranges": [
          [
            67,
            77
          ]
        ],
        "binding_changed": false,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "AB-250:7.1",
        "wording": "Configure Copilot summaries",
        "selected_authored_sections": [
          "Configure Copilot-assisted guidance",
          "Worked representative-assistance setup"
        ],
        "new_ranges": [
          [
            237,
            241
          ],
          [
            245,
            251
          ]
        ],
        "prior_ranges": [
          [
            237,
            241
          ],
          [
            245,
            245
          ],
          [
            247,
            247
          ],
          [
            249,
            249
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "AB-250:7.2",
        "wording": "Configure the Ask a question feature",
        "selected_authored_sections": [
          "Configure Copilot-assisted guidance",
          "Worked representative-assistance setup"
        ],
        "new_ranges": [
          [
            237,
            241
          ],
          [
            245,
            251
          ]
        ],
        "prior_ranges": [
          [
            237,
            241
          ],
          [
            245,
            245
          ],
          [
            247,
            247
          ],
          [
            249,
            249
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "AB-250:7.3",
        "wording": "Configure knowledge sources for Copilot in Dynamics 365 Customer Service",
        "selected_authored_sections": [
          "Configure Copilot-assisted guidance",
          "Worked representative-assistance setup"
        ],
        "new_ranges": [
          [
            237,
            241
          ],
          [
            245,
            251
          ]
        ],
        "prior_ranges": [
          [
            237,
            241
          ],
          [
            245,
            245
          ],
          [
            247,
            247
          ],
          [
            249,
            249
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "AB-250:7.4",
        "wording": "Extend Copilot capabilities with prompt plugins and tools",
        "selected_authored_sections": [
          "Configure Copilot-assisted guidance",
          "Worked representative-assistance setup"
        ],
        "new_ranges": [
          [
            237,
            241
          ],
          [
            245,
            251
          ]
        ],
        "prior_ranges": [
          [
            237,
            241
          ],
          [
            245,
            245
          ],
          [
            247,
            247
          ],
          [
            249,
            249
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "AB-250:7.5",
        "wording": "Interpret the Copilot analytics report",
        "selected_authored_sections": [
          "Configure Copilot-assisted guidance",
          "Worked example 6 — Overlapping diagnostics and correct containment"
        ],
        "new_ranges": [
          [
            237,
            241
          ],
          [
            370,
            374
          ]
        ],
        "prior_ranges": [
          [
            237,
            241
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "AB-250:7.6",
        "wording": "Create a smart assist bot",
        "selected_authored_sections": [
          "Configure Copilot-assisted guidance",
          "Worked representative-assistance setup"
        ],
        "new_ranges": [
          [
            237,
            241
          ],
          [
            245,
            251
          ]
        ],
        "prior_ranges": [
          [
            237,
            241
          ],
          [
            251,
            251
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "AB-250:8.1",
        "wording": "Configure IVR with voice agents by using generative AI or classic orchestration",
        "selected_authored_sections": [
          "Configure voice agents",
          "Worked voice binding: keypad trigger and transfer context"
        ],
        "new_ranges": [
          [
            255,
            259
          ],
          [
            263,
            273
          ]
        ],
        "prior_ranges": [
          [
            255,
            255
          ],
          [
            263,
            263
          ],
          [
            265,
            265
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "AB-250:8.2",
        "wording": "Manage variables in Copilot Studio",
        "selected_authored_sections": [
          "Configure voice agents",
          "Worked voice binding: keypad trigger and transfer context"
        ],
        "new_ranges": [
          [
            255,
            259
          ],
          [
            263,
            273
          ]
        ],
        "prior_ranges": [
          [
            255,
            255
          ],
          [
            263,
            263
          ],
          [
            265,
            265
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "AB-250:8.3",
        "wording": "Secure the Dynamics 365 Contact Center voice channel",
        "selected_authored_sections": [
          "Configure voice agents",
          "Worked voice binding: keypad trigger and transfer context",
          "Configure chat and digital engagement",
          "Distinguish message masking, voice masking and recording controls",
          "Scenario 2: regulated multilingual voice"
        ],
        "new_ranges": [
          [
            255,
            259
          ],
          [
            263,
            273
          ],
          [
            126,
            134
          ],
          [
            193,
            199
          ],
          [
            384,
            384
          ]
        ],
        "prior_ranges": [
          [
            255,
            255
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "AB-250:8.4",
        "wording": "Configure compliant call recording in Copilot Studio",
        "selected_authored_sections": [
          "Configure voice agents",
          "Distinguish message masking, voice masking and recording controls",
          "Worked CCaaS voice operation: request versus completion"
        ],
        "new_ranges": [
          [
            255,
            259
          ],
          [
            193,
            199
          ],
          [
            163,
            165
          ]
        ],
        "prior_ranges": [
          [
            255,
            255
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "AB-250:8.5",
        "wording": "Configure SIP header transfers",
        "selected_authored_sections": [
          "Configure voice agents",
          "Worked voice binding: keypad trigger and transfer context"
        ],
        "new_ranges": [
          [
            255,
            259
          ],
          [
            263,
            273
          ]
        ],
        "prior_ranges": [
          [
            255,
            255
          ],
          [
            263,
            263
          ],
          [
            265,
            265
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "AB-250:8.6",
        "wording": "Configure the Real-time Speech agent",
        "selected_authored_sections": [
          "Configure voice agents",
          "Worked voice binding: keypad trigger and transfer context",
          "Scenario 2: regulated multilingual voice"
        ],
        "new_ranges": [
          [
            255,
            259
          ],
          [
            263,
            273
          ],
          [
            384,
            384
          ]
        ],
        "prior_ranges": [
          [
            255,
            255
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "AB-250:8.7",
        "wording": "Configure dual-tone multi-frequency (DTMF), natural language understanding (NLU), and speech-based IVR",
        "selected_authored_sections": [
          "Configure voice agents",
          "Worked voice binding: keypad trigger and transfer context"
        ],
        "new_ranges": [
          [
            255,
            259
          ],
          [
            263,
            273
          ]
        ],
        "prior_ranges": [
          [
            255,
            255
          ],
          [
            263,
            263
          ],
          [
            265,
            265
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "AB-250:8.8",
        "wording": "Configure Copilot Studio voice triggers",
        "selected_authored_sections": [
          "Configure voice agents",
          "Worked voice binding: keypad trigger and transfer context"
        ],
        "new_ranges": [
          [
            255,
            259
          ],
          [
            263,
            273
          ]
        ],
        "prior_ranges": [
          [
            255,
            255
          ],
          [
            263,
            263
          ],
          [
            265,
            265
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "AB-250:8.9",
        "wording": "Implement best practices for configuring voice agents",
        "selected_authored_sections": [
          "Configure voice agents",
          "Worked voice binding: keypad trigger and transfer context",
          "Scenario 2: regulated multilingual voice"
        ],
        "new_ranges": [
          [
            255,
            259
          ],
          [
            263,
            273
          ],
          [
            384,
            384
          ]
        ],
        "prior_ranges": [
          [
            255,
            255
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "AB-250:8.10",
        "wording": "Configure multilingual voice agents",
        "selected_authored_sections": [
          "Configure voice agents",
          "Worked voice binding: keypad trigger and transfer context",
          "Scenario 2: regulated multilingual voice"
        ],
        "new_ranges": [
          [
            255,
            259
          ],
          [
            263,
            273
          ],
          [
            384,
            384
          ]
        ],
        "prior_ranges": [
          [
            255,
            255
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "AB-250:9.1",
        "wording": "Create and manage queues",
        "selected_authored_sections": [
          "Design queues and capacity behavior"
        ],
        "new_ranges": [
          [
            279,
            287
          ]
        ],
        "prior_ranges": [
          [
            279,
            287
          ]
        ],
        "binding_changed": false,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "AB-250:9.2",
        "wording": "Configure queue prioritization",
        "selected_authored_sections": [
          "Design queues and capacity behavior"
        ],
        "new_ranges": [
          [
            279,
            287
          ]
        ],
        "prior_ranges": [
          [
            279,
            287
          ]
        ],
        "binding_changed": false,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "AB-250:9.3",
        "wording": "Configure overflow and fallback",
        "selected_authored_sections": [
          "Design queues and capacity behavior"
        ],
        "new_ranges": [
          [
            279,
            287
          ]
        ],
        "prior_ranges": [
          [
            279,
            287
          ]
        ],
        "binding_changed": false,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "AB-250:9.4",
        "wording": "Configure work assignment methods",
        "selected_authored_sections": [
          "Design queues and capacity behavior"
        ],
        "new_ranges": [
          [
            279,
            287
          ]
        ],
        "prior_ranges": [
          [
            279,
            287
          ]
        ],
        "binding_changed": false,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "AB-250:9.5",
        "wording": "Set up operating hours",
        "selected_authored_sections": [
          "Design queues and capacity behavior",
          "Apply ALM and environment governance"
        ],
        "new_ranges": [
          [
            279,
            287
          ],
          [
            95,
            99
          ]
        ],
        "prior_ranges": [
          [
            279,
            287
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "AB-250:10.1",
        "wording": "Configure workstreams, including configuring context variables and associating agents in Copilot Studio",
        "selected_authored_sections": [
          "Build basic and unified routing",
          "Configure conversation lifecycle features"
        ],
        "new_ranges": [
          [
            291,
            306
          ],
          [
            169,
            175
          ]
        ],
        "prior_ranges": [
          [
            291,
            306
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "AB-250:10.2",
        "wording": "Configure work classification rules",
        "selected_authored_sections": [
          "Build basic and unified routing"
        ],
        "new_ranges": [
          [
            291,
            306
          ]
        ],
        "prior_ranges": [
          [
            291,
            306
          ]
        ],
        "binding_changed": false,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "AB-250:10.3",
        "wording": "Configure the engagement agent",
        "selected_authored_sections": [
          "Build basic and unified routing"
        ],
        "new_ranges": [
          [
            291,
            306
          ]
        ],
        "prior_ranges": [
          [
            291,
            306
          ]
        ],
        "binding_changed": false,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "AB-250:10.4",
        "wording": "Configure skills-based routing",
        "selected_authored_sections": [
          "Build basic and unified routing"
        ],
        "new_ranges": [
          [
            291,
            306
          ]
        ],
        "prior_ranges": [
          [
            291,
            306
          ]
        ],
        "binding_changed": false,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "AB-250:10.5",
        "wording": "Configure AI-enabled skills-based routing",
        "selected_authored_sections": [
          "Build basic and unified routing"
        ],
        "new_ranges": [
          [
            291,
            306
          ]
        ],
        "prior_ranges": [
          [
            291,
            306
          ]
        ],
        "binding_changed": false,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "AB-250:10.6",
        "wording": "Configure intent-based routing",
        "selected_authored_sections": [
          "Build basic and unified routing"
        ],
        "new_ranges": [
          [
            291,
            306
          ]
        ],
        "prior_ranges": [
          [
            291,
            306
          ]
        ],
        "binding_changed": false,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "AB-250:10.7",
        "wording": "Configure preferred representative routing",
        "selected_authored_sections": [
          "Build basic and unified routing"
        ],
        "new_ranges": [
          [
            291,
            306
          ]
        ],
        "prior_ranges": [
          [
            291,
            306
          ]
        ],
        "binding_changed": false,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "AB-250:10.8",
        "wording": "Configure routing for records",
        "selected_authored_sections": [
          "Build basic and unified routing"
        ],
        "new_ranges": [
          [
            291,
            306
          ]
        ],
        "prior_ranges": [
          [
            291,
            306
          ]
        ],
        "binding_changed": false,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "AB-250:10.9",
        "wording": "Configure basic routing rule sets",
        "selected_authored_sections": [
          "Build basic and unified routing"
        ],
        "new_ranges": [
          [
            291,
            306
          ]
        ],
        "prior_ranges": [
          [
            291,
            306
          ]
        ],
        "binding_changed": false,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "AB-250:10.10",
        "wording": "Diagnose unified routing by using conversation diagnostics",
        "selected_authored_sections": [
          "Build basic and unified routing"
        ],
        "new_ranges": [
          [
            291,
            306
          ]
        ],
        "prior_ranges": [
          [
            291,
            306
          ]
        ],
        "binding_changed": false,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "AB-250:11.1",
        "wording": "Create experience profiles",
        "selected_authored_sections": [
          "Tailor profiles, sessions and inbox",
          "Configure productivity tools"
        ],
        "new_ranges": [
          [
            312,
            314
          ],
          [
            318,
            324
          ]
        ],
        "prior_ranges": [
          [
            312,
            314
          ],
          [
            322,
            322
          ],
          [
            324,
            324
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "AB-250:11.2",
        "wording": "Configure application tab templates",
        "selected_authored_sections": [
          "Tailor profiles, sessions and inbox",
          "Configure productivity tools"
        ],
        "new_ranges": [
          [
            312,
            314
          ],
          [
            318,
            324
          ]
        ],
        "prior_ranges": [
          [
            312,
            314
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "AB-250:11.3",
        "wording": "Configure the agent inbox, including creating custom views",
        "selected_authored_sections": [
          "Tailor profiles, sessions and inbox",
          "Configure productivity tools"
        ],
        "new_ranges": [
          [
            312,
            314
          ],
          [
            318,
            324
          ]
        ],
        "prior_ranges": [
          [
            312,
            314
          ],
          [
            322,
            322
          ],
          [
            324,
            324
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "AB-250:11.4",
        "wording": "Configure session templates",
        "selected_authored_sections": [
          "Tailor profiles, sessions and inbox",
          "Configure productivity tools",
          "Worked script and macro"
        ],
        "new_ranges": [
          [
            312,
            314
          ],
          [
            318,
            324
          ],
          [
            328,
            332
          ]
        ],
        "prior_ranges": [
          [
            312,
            314
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "AB-250:11.5",
        "wording": "Configure notification template",
        "selected_authored_sections": [
          "Tailor profiles, sessions and inbox",
          "Configure productivity tools"
        ],
        "new_ranges": [
          [
            312,
            314
          ],
          [
            318,
            324
          ]
        ],
        "prior_ranges": [
          [
            312,
            314
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "AB-250:12.1",
        "wording": "Enable custom productivity panels",
        "selected_authored_sections": [
          "Configure productivity tools",
          "Worked script and macro"
        ],
        "new_ranges": [
          [
            318,
            324
          ],
          [
            328,
            332
          ]
        ],
        "prior_ranges": [
          [
            318,
            320
          ],
          [
            322,
            322
          ],
          [
            324,
            324
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "AB-250:12.2",
        "wording": "Configure scripts, including slugs",
        "selected_authored_sections": [
          "Configure productivity tools",
          "Worked script and macro"
        ],
        "new_ranges": [
          [
            318,
            324
          ],
          [
            328,
            332
          ]
        ],
        "prior_ranges": [
          [
            318,
            320
          ],
          [
            328,
            328
          ],
          [
            330,
            330
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "AB-250:12.3",
        "wording": "Create macros",
        "selected_authored_sections": [
          "Configure productivity tools",
          "Worked script and macro"
        ],
        "new_ranges": [
          [
            318,
            324
          ],
          [
            328,
            332
          ]
        ],
        "prior_ranges": [
          [
            318,
            320
          ],
          [
            328,
            328
          ],
          [
            330,
            330
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "AB-250:12.4",
        "wording": "Enable Teams collaboration",
        "selected_authored_sections": [
          "Configure productivity tools",
          "Worked script and macro"
        ],
        "new_ranges": [
          [
            318,
            324
          ],
          [
            328,
            332
          ]
        ],
        "prior_ranges": [
          [
            318,
            320
          ],
          [
            322,
            322
          ],
          [
            324,
            324
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "AB-250:12.5",
        "wording": "Extend the productivity panel by using the app profile manager JavaScript API reference",
        "selected_authored_sections": [
          "Configure productivity tools",
          "Worked script and macro"
        ],
        "new_ranges": [
          [
            318,
            324
          ],
          [
            328,
            332
          ]
        ],
        "prior_ranges": [
          [
            318,
            320
          ],
          [
            332,
            332
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "AB-250:12.6",
        "wording": "Extend the customer service representative experience by using the Omnichannel JavaScript API",
        "selected_authored_sections": [
          "Configure productivity tools",
          "Worked script and macro"
        ],
        "new_ranges": [
          [
            318,
            324
          ],
          [
            328,
            332
          ]
        ],
        "prior_ranges": [
          [
            318,
            320
          ],
          [
            332,
            332
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "AB-250:13.1",
        "wording": "Configure internal knowledge search capabilities",
        "selected_authored_sections": [
          "Govern knowledge"
        ],
        "new_ranges": [
          [
            336,
            342
          ]
        ],
        "prior_ranges": [
          [
            336,
            340
          ],
          [
            342,
            342
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "AB-250:13.2",
        "wording": "Integrate and search external knowledge sources",
        "selected_authored_sections": [
          "Govern knowledge"
        ],
        "new_ranges": [
          [
            336,
            342
          ]
        ],
        "prior_ranges": [
          [
            336,
            340
          ],
          [
            342,
            342
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "AB-250:13.3",
        "wording": "Configure tables for knowledge management",
        "selected_authored_sections": [
          "Govern knowledge"
        ],
        "new_ranges": [
          [
            336,
            342
          ]
        ],
        "prior_ranges": [
          [
            336,
            340
          ],
          [
            342,
            342
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "AB-250:13.4",
        "wording": "Configure the Customer Knowledge Management agent",
        "selected_authored_sections": [
          "Govern knowledge"
        ],
        "new_ranges": [
          [
            336,
            342
          ]
        ],
        "prior_ranges": [
          [
            336,
            340
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "AB-250:13.5",
        "wording": "Integrate knowledge into portals",
        "selected_authored_sections": [
          "Govern knowledge"
        ],
        "new_ranges": [
          [
            336,
            342
          ]
        ],
        "prior_ranges": [
          [
            336,
            340
          ],
          [
            342,
            342
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "AB-250:14.1",
        "wording": "Configure supervisor settings",
        "selected_authored_sections": [
          "Configure supervisors and quality",
          "Focused reading and evidence route"
        ],
        "new_ranges": [
          [
            348,
            354
          ],
          [
            532,
            546
          ]
        ],
        "prior_ranges": [
          [
            348,
            358
          ],
          [
            532,
            532
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "AB-250:14.2",
        "wording": "Configure the Quality Evaluation agent",
        "selected_authored_sections": [
          "Configure supervisors and quality",
          "Focused reading and evidence route"
        ],
        "new_ranges": [
          [
            348,
            354
          ],
          [
            532,
            546
          ]
        ],
        "prior_ranges": [
          [
            348,
            358
          ],
          [
            532,
            532
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "AB-250:14.3",
        "wording": "Configure access to analytics and dashboards",
        "selected_authored_sections": [
          "Configure supervisors and quality",
          "Focused reading and evidence route"
        ],
        "new_ranges": [
          [
            348,
            354
          ],
          [
            532,
            546
          ]
        ],
        "prior_ranges": [
          [
            348,
            358
          ],
          [
            532,
            532
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "AB-250:14.4",
        "wording": "Perform supervisor actions for conversations",
        "selected_authored_sections": [
          "Configure supervisors and quality",
          "Focused reading and evidence route"
        ],
        "new_ranges": [
          [
            348,
            354
          ],
          [
            532,
            546
          ]
        ],
        "prior_ranges": [
          [
            348,
            358
          ],
          [
            532,
            532
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "AB-250:14.5",
        "wording": "Configure the supervisor app",
        "selected_authored_sections": [
          "Configure supervisors and quality",
          "Focused reading and evidence route"
        ],
        "new_ranges": [
          [
            348,
            354
          ],
          [
            532,
            546
          ]
        ],
        "prior_ranges": [
          [
            348,
            358
          ],
          [
            532,
            532
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "AB-250:15.1",
        "wording": "Customize the key performance indicators (KPIs) in the analytics reports by using the embedded Power BI editor",
        "selected_authored_sections": [
          "Customize reports and telemetry",
          "Worked example 6 — Overlapping diagnostics and correct containment"
        ],
        "new_ranges": [
          [
            362,
            366
          ],
          [
            370,
            374
          ]
        ],
        "prior_ranges": [
          [
            362,
            374
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "AB-250:15.2",
        "wording": "Embed out-of-the-box reports in the Copilot Service workspace app",
        "selected_authored_sections": [
          "Customize reports and telemetry",
          "Worked example 6 — Overlapping diagnostics and correct containment"
        ],
        "new_ranges": [
          [
            362,
            366
          ],
          [
            370,
            374
          ]
        ],
        "prior_ranges": [
          [
            362,
            374
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "AB-250:15.3",
        "wording": "Customize historical and real-time analytics reports by using Power BI",
        "selected_authored_sections": [
          "Customize reports and telemetry",
          "Worked example 6 — Overlapping diagnostics and correct containment"
        ],
        "new_ranges": [
          [
            362,
            366
          ],
          [
            370,
            374
          ]
        ],
        "prior_ranges": [
          [
            362,
            374
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "AB-250:15.4",
        "wording": "Extend historical and real-time analytics reports by using Power BI Desktop",
        "selected_authored_sections": [
          "Customize reports and telemetry",
          "Worked example 6 — Overlapping diagnostics and correct containment"
        ],
        "new_ranges": [
          [
            362,
            366
          ],
          [
            370,
            374
          ]
        ],
        "prior_ranges": [
          [
            362,
            374
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "AB-250:15.5",
        "wording": "Configure conversation diagnostics in Application Insights",
        "selected_authored_sections": [
          "Customize reports and telemetry",
          "Worked example 6 — Overlapping diagnostics and correct containment"
        ],
        "new_ranges": [
          [
            362,
            366
          ],
          [
            370,
            374
          ]
        ],
        "prior_ranges": [
          [
            362,
            374
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      },
      {
        "objective_id": "AB-250:15.6",
        "wording": "Configure and embed telemetry and analytics from Application Insights",
        "selected_authored_sections": [
          "Customize reports and telemetry",
          "Worked example 6 — Overlapping diagnostics and correct containment"
        ],
        "new_ranges": [
          [
            362,
            366
          ],
          [
            370,
            374
          ]
        ],
        "prior_ranges": [
          [
            362,
            374
          ]
        ],
        "binding_changed": true,
        "reason_reviewed": true,
        "initial_conservative_flag_unchanged": true,
        "current_disposition_changed": false
      }
    ]
  },
  "subset_a_independent_followup": {
    "reviewed_on": "2026-10-28",
    "review_type": "same-team follow-up after independent findings; initial full semantic reread plus exact four-change verification and all-row rebinding",
    "inputs": [
      {
        "exam_code": "DP-900",
        "complete_guide_read": {
          "path": "C:\\src\\certification-study-library\\.maintenance\\2026-10-28-remaining-refresh\\group-04\\review-inputs\\DP-900-microsoft-azure-data-fundamentals.md",
          "start_line": 1,
          "end_line": 798,
          "guide_lf_sha256": "1c618b776923450c7bbf59aac51ce2bf3b64cfb5dcc214e6b4b388a718332991"
        },
        "complete_diff_read": {
          "path": "C:\\src\\certification-study-library\\.maintenance\\2026-10-28-remaining-refresh\\group-04\\review-inputs\\DP-900.diff",
          "raw_sha256": "96f0e5f4d5b4747857560da42cffd32d79ae58a2ce66ebbfdf3d1fc9e206e814"
        },
        "read_parts": [
          "frontmatter/disclosure and contract",
          "all substantive teaching and cited new workflows",
          "all worked code/arithmetic examples",
          "all integrated scenarios",
          "all proposed labs and feasibility/failure boundaries",
          "all questions and answers",
          "readiness and source notes",
          "complete Places to learn and focused resource route"
        ],
        "semantic_observation": "New workflows are integrated with existing explanations and failure/verification models; proposed lab work remains unexecuted. The review did not infer teaching from headings, URLs or hashes."
      },
      {
        "exam_code": "MB-230",
        "complete_guide_read": {
          "path": "C:\\src\\certification-study-library\\.maintenance\\2026-10-28-remaining-refresh\\group-04\\review-inputs\\MB-230-microsoft-dynamics-365-customer-service-functional-consultant.md",
          "start_line": 1,
          "end_line": 557,
          "guide_lf_sha256": "f77caba6a0b5798ef90debb933287369323188d4dc567bbc11cdf9b4b875b743"
        },
        "complete_diff_read": {
          "path": "C:\\src\\certification-study-library\\.maintenance\\2026-10-28-remaining-refresh\\group-04\\review-inputs\\MB-230.diff",
          "raw_sha256": "bf1aabdfc6b6a3f71289cccdbb208db6e4a4e94773af6f13a3a8b62c1bab4317"
        },
        "read_parts": [
          "frontmatter/disclosure and contract",
          "all substantive teaching and cited new workflows",
          "all worked code/arithmetic examples",
          "all integrated scenarios",
          "all proposed labs and feasibility/failure boundaries",
          "all questions and answers",
          "readiness and source notes",
          "complete Places to learn and focused resource route"
        ],
        "semantic_observation": "New workflows are integrated with existing explanations and failure/verification models; proposed lab work remains unexecuted. The review did not infer teaching from headings, URLs or hashes."
      },
      {
        "exam_code": "MB-310",
        "complete_guide_read": {
          "path": "C:\\src\\certification-study-library\\.maintenance\\2026-10-28-remaining-refresh\\group-04\\review-inputs\\MB-310-microsoft-dynamics-365-finance-functional-consultant.md",
          "start_line": 1,
          "end_line": 439,
          "guide_lf_sha256": "a6f7f12e80a6131d1b9a58df4f8e0d8ed553f96f5d316dd2a7593a05c02f9f3b"
        },
        "complete_diff_read": {
          "path": "C:\\src\\certification-study-library\\.maintenance\\2026-10-28-remaining-refresh\\group-04\\review-inputs\\MB-310.diff",
          "raw_sha256": "58a81d834e569fe31ef53f908ca865ec4fc1159a388fe5096510469666e808cf"
        },
        "read_parts": [
          "frontmatter/disclosure and contract",
          "all substantive teaching and cited new workflows",
          "all worked code/arithmetic examples",
          "all integrated scenarios",
          "all proposed labs and feasibility/failure boundaries",
          "all questions and answers",
          "readiness and source notes",
          "complete Places to learn and focused resource route"
        ],
        "semantic_observation": "New workflows are integrated with existing explanations and failure/verification models; proposed lab work remains unexecuted. The review did not infer teaching from headings, URLs or hashes."
      },
      {
        "exam_code": "MB-500",
        "complete_guide_read": {
          "path": "C:\\src\\certification-study-library\\.maintenance\\2026-10-28-remaining-refresh\\group-04\\review-inputs\\MB-500-microsoft-dynamics-365-finance-operations-apps-developer.md",
          "start_line": 1,
          "end_line": 514,
          "guide_lf_sha256": "e894c995a3376609e18a35286d6f962371f7eff79ff55e6f2c6f74ca72f1132f"
        },
        "complete_diff_read": {
          "path": "C:\\src\\certification-study-library\\.maintenance\\2026-10-28-remaining-refresh\\group-04\\review-inputs\\MB-500.diff",
          "raw_sha256": "42fbf36f5a89cc47bf8d9618ad10abf7b49804123ddef17c093580a1119002e2"
        },
        "read_parts": [
          "frontmatter/disclosure and contract",
          "all substantive teaching and cited new workflows",
          "all worked code/arithmetic examples",
          "all integrated scenarios",
          "all proposed labs and feasibility/failure boundaries",
          "all questions and answers",
          "readiness and source notes",
          "complete Places to learn and focused resource route"
        ],
        "semantic_observation": "New workflows are integrated with existing explanations and failure/verification models; proposed lab work remains unexecuted. The review did not infer teaching from headings, URLs or hashes."
      },
      {
        "exam_code": "MB-800",
        "complete_guide_read": {
          "path": "C:\\src\\certification-study-library\\.maintenance\\2026-10-28-remaining-refresh\\group-04\\review-inputs\\MB-800-microsoft-dynamics-365-business-central-functional-consultant.md",
          "start_line": 1,
          "end_line": 494,
          "guide_lf_sha256": "9a328507ddf796c5a0c5bbd6665ef4957a7a9bc307e9f93dafc3c276cc907a5a"
        },
        "complete_diff_read": {
          "path": "C:\\src\\certification-study-library\\.maintenance\\2026-10-28-remaining-refresh\\group-04\\review-inputs\\MB-800.diff",
          "raw_sha256": "5237ea005a1a013242f26cb160e4d3bc471236f1d0a5bf485f2f3126a374161a"
        },
        "read_parts": [
          "frontmatter/disclosure and contract",
          "all substantive teaching and cited new workflows",
          "all worked code/arithmetic examples",
          "all integrated scenarios",
          "all proposed labs and feasibility/failure boundaries",
          "all questions and answers",
          "readiness and source notes",
          "complete Places to learn and focused resource route"
        ],
        "semantic_observation": "New workflows are integrated with existing explanations and failure/verification models; proposed lab work remains unexecuted. The review did not infer teaching from headings, URLs or hashes."
      }
    ],
    "objective_count": 388,
    "initial_flag_dispositions": {
      "resolved": 69,
      "still-open-material": 0
    },
    "remaining_material_findings": [],
    "low_editorial_notes": "The coordinator corrected the MB230 September-restoration/October-unchanged wording and the MB500 generic serializer sentence before this binding; the replacements were reread against the original findings.",
    "checks": [
      "Complete five captures/diffs read; truncated output windows reread explicitly.",
      "All final live guide LF hashes equal captures/manifest.",
      "All five objective raw hashes remain the accepted originals.",
      "Every one of388 objective wordings has exact normalized SHA, group numbering and substantive line/span evidence.",
      "Every initial flagged objective maps to its actual integrated workflow, explanation/failure/check and a specific repair rationale.",
      "All69 repair-body spans and retained teaching spans checked against current LF bytes.",
      "Initial mapping and frozen proposal bytes preserved.",
      "All388 current rows and every span validated after four independent repairs; 69 historical dispositions unchanged.",
      "Current reason text describes current teaching; original reasons retained in initial_reason.",
      "Every live guide equals updated capture; current full-diff raw and objective hashes checked by builder.",
      "Preserved captures plus exact four replacements reconstruct all five current guides byte-for-byte after LF normalization."
    ],
    "assurance_limits": [
      "Operational coverage is substantive teaching/configuration-design reasoning and bounded examples, not a complete click-by-click manual for every product surface.",
      "No X++ compilation, SysTest run, tenant UI/API, cloud provisioning, paid lesson, message/survey/notification, agent, journal or lab was executed in this pass.",
      "Historic local-model execution statements in unchanged guide content are not new execution claims by this reviewer.",
      "Current link health/source gates are coordinator-owned; MB-230 remains blocked regardless of this objective-depth result.",
      "Fresh-context review and human review are separate subsequent assurance states.",
      "This follow-up belongs to the same research team; it does not replace the independent reviewer acceptance pass."
    ],
    "previous_complete_semantic_review": "pre-independent-repairs/exam-a-final-semantic-review.json",
    "followup_read_scope": {
      "proposal_path": "reviewer-a-repair-proposals.json",
      "applied_path": "independent-repairs-applied.json",
      "complete_changed_regions_and_context_read": {
        "MB-500": [
          [
            108,
            199
          ],
          [
            275,
            303
          ]
        ],
        "MB-800": [
          [
            98,
            193
          ],
          [
            209,
            275
          ]
        ],
        "MB-310": [
          [
            74,
            103
          ],
          [
            146,
            214
          ]
        ]
      },
      "updated_diff_verification": "Current complete diffs/captures were verified against manifest/live bytes; semantic change from the previously completely read captures consists exactly of four reviewed replacements. This is incremental follow-up, not a second claim to reading every unchanged line."
    },
    "independent_repairs": {
      "count": 4,
      "resolved": 4,
      "separate_from_initial_flags": true,
      "dispositions": [
        {
          "finding_id": "g04-a-01",
          "exam_code": "MB-500",
          "objective_id": "4.2.2",
          "disposition": "resolved at substantive teaching/design depth",
          "reason": "A single-superclass extends contract, abstract-method implementation, base-typed dispatch and fixed-5 versus 10-percent policies teach inheritance/abstraction; invalid base instantiation and omitted implementations are proposed compile-failure checks.",
          "evidence_spans": [
            {
              "heading": "4. Develop and test code",
              "start_line": 140,
              "end_line": 142,
              "span_lf_sha256": "bf77993e96e48f7b9422f554226819ebeba2a7767c16571d2c89aed746182d9c"
            }
          ]
        },
        {
          "finding_id": "g04-a-02",
          "exam_code": "MB-500",
          "objective_id": "7.2.3",
          "disposition": "resolved at substantive teaching/design depth",
          "reason": "The reconciliation-preview design creates an AOT temporary table, chooses TableType and index, compares InMemory/TempDB joins and transaction behavior, and checks setTmpData versus linkPhysicalTableInstance, isolation and measured cost.",
          "evidence_spans": [
            {
              "heading": "7. Implement security and optimize performance",
              "start_line": 277,
              "end_line": 279,
              "span_lf_sha256": "5fcaf9274df0c5653d00ae8bbd7f5e10fb373a0589b5f41da880c76896c5312e"
            }
          ]
        },
        {
          "finding_id": "g04-a-03",
          "exam_code": "MB-800",
          "objective_id": "1.4.5",
          "disposition": "resolved at substantive teaching/design depth",
          "reason": "Account Type Default Dim. sets a type/value/Value Posting rule; SERVICE versus account-specific REPAIRS illustrates override, Code Mandatory permits required entry without a default, and source-code priorities remain a separate control.",
          "evidence_spans": [
            {
              "heading": "Set up dimensions",
              "start_line": 111,
              "end_line": 113,
              "span_lf_sha256": "536b7d3afdd1eb31f14640e4f171929189b79a6bbec9b25ed68e663b76fc98c9"
            }
          ]
        },
        {
          "finding_id": "g04-a-04",
          "exam_code": "MB-800",
          "objective_id": "2.7.2",
          "disposition": "resolved at substantive teaching/design depth",
          "reason": "Separate line/motor asset cards receive books, Main Asset Components links the motor FA No., Allow Posting to Main Assets is deliberately chosen, and changes are checked against each asset ledger without assuming grouping transfers value.",
          "evidence_spans": [
            {
              "heading": "Fixed assets",
              "start_line": 165,
              "end_line": 167,
              "span_lf_sha256": "9f4c60f89bbee0934844a60e9edc4ed16aac0a59aa302b8734e4d6737ad67730"
            }
          ]
        }
      ]
    },
    "mapping_accuracy_corrections": {
      "initial_reasons_preserved_for_all_rows": 388,
      "stale_group_reasons_replaced": 154,
      "precise_evidence": [
        "MB-310 1.3.4 current intercompany paragraph",
        "MB-500 4.2.5 current Classes and extensibility/CoC rules",
        "four independently repaired operations",
        "MB-800 4.7.4 cost adjustment/posting controls"
      ]
    }
  },
  "independent_review": {
    "subset_a": {
      "date": "2026-10-28",
      "review_type": "Fresh-context read-only bounded refresh review, not rubric2 full audit/human review/lab execution",
      "state": "complete bounded independent final review",
      "base_commit": "546feb3caf5fa38f9ab368a06e76da088f497bbb",
      "scope": [
        "DP-900",
        "MB-230",
        "MB-310",
        "MB-500",
        "MB-800"
      ],
      "reviewed_initial_bindings": [
        {
          "exam_code": "DP-900",
          "guide_path": "guides/DP-900-microsoft-azure-data-fundamentals.md",
          "guide_lf_sha256": "1c618b776923450c7bbf59aac51ce2bf3b64cfb5dcc214e6b4b388a718332991",
          "capture": "C:\\src\\certification-study-library\\.maintenance\\2026-10-28-remaining-refresh\\group-04\\review-inputs\\DP-900-microsoft-azure-data-fundamentals.md",
          "diff": "C:\\src\\certification-study-library\\.maintenance\\2026-10-28-remaining-refresh\\group-04\\review-inputs\\DP-900.diff",
          "diff_raw_sha256": "96f0e5f4d5b4747857560da42cffd32d79ae58a2ce66ebbfdf3d1fc9e206e814",
          "objective_path": "data/objective-snapshots/dp-900-official-objectives.txt",
          "objective_raw_sha256": "7cef780d1a9e8e88b587fba89acb994985c4aedbd491710e814686ce5dc6559f"
        },
        {
          "exam_code": "MB-230",
          "guide_path": "guides/MB-230-microsoft-dynamics-365-customer-service-functional-consultant.md",
          "guide_lf_sha256": "f77caba6a0b5798ef90debb933287369323188d4dc567bbc11cdf9b4b875b743",
          "capture": "C:\\src\\certification-study-library\\.maintenance\\2026-10-28-remaining-refresh\\group-04\\review-inputs\\MB-230-microsoft-dynamics-365-customer-service-functional-consultant.md",
          "diff": "C:\\src\\certification-study-library\\.maintenance\\2026-10-28-remaining-refresh\\group-04\\review-inputs\\MB-230.diff",
          "diff_raw_sha256": "bf1aabdfc6b6a3f71289cccdbb208db6e4a4e94773af6f13a3a8b62c1bab4317",
          "objective_path": "data/objective-snapshots/mb-230-official-objectives.txt",
          "objective_raw_sha256": "e5925c65c9de7fad2e0d1d921564490a83ce02092b95ad95382775abd6352b38"
        },
        {
          "exam_code": "MB-310",
          "guide_path": "guides/MB-310-microsoft-dynamics-365-finance-functional-consultant.md",
          "guide_lf_sha256": "a6f7f12e80a6131d1b9a58df4f8e0d8ed553f96f5d316dd2a7593a05c02f9f3b",
          "capture": "C:\\src\\certification-study-library\\.maintenance\\2026-10-28-remaining-refresh\\group-04\\review-inputs\\MB-310-microsoft-dynamics-365-finance-functional-consultant.md",
          "diff": "C:\\src\\certification-study-library\\.maintenance\\2026-10-28-remaining-refresh\\group-04\\review-inputs\\MB-310.diff",
          "diff_raw_sha256": "58a81d834e569fe31ef53f908ca865ec4fc1159a388fe5096510469666e808cf",
          "objective_path": "data/objective-snapshots/mb-310-official-objectives.txt",
          "objective_raw_sha256": "d5bbe85cad214566f2ba0cc7b266af0ff612664ba199a5c8ed948e28474d2284"
        },
        {
          "exam_code": "MB-500",
          "guide_path": "guides/MB-500-microsoft-dynamics-365-finance-operations-apps-developer.md",
          "guide_lf_sha256": "7f61de4360298411eaed6195dc120f1feb7d3c711a9894fbaf6f8a3000682bf6",
          "capture": "C:\\src\\certification-study-library\\.maintenance\\2026-10-28-remaining-refresh\\group-04\\review-inputs\\MB-500-microsoft-dynamics-365-finance-operations-apps-developer.md",
          "diff": "C:\\src\\certification-study-library\\.maintenance\\2026-10-28-remaining-refresh\\group-04\\review-inputs\\MB-500.diff",
          "diff_raw_sha256": "6a58e188732dd15b656bb0445d594cb43ab5034316093a4a1934429f73c19843",
          "objective_path": "data/objective-snapshots/mb-500-official-objectives.txt",
          "objective_raw_sha256": "30b2b8913d63724b60099adcd9090a67bf818e3b0b42e7e57382a5ab240134cd"
        },
        {
          "exam_code": "MB-800",
          "guide_path": "guides/MB-800-microsoft-dynamics-365-business-central-functional-consultant.md",
          "guide_lf_sha256": "d00427acc01333dd02fac80c7c031670e9a08f7b736aa601724abd516528790c",
          "capture": "C:\\src\\certification-study-library\\.maintenance\\2026-10-28-remaining-refresh\\group-04\\review-inputs\\MB-800-microsoft-dynamics-365-business-central-functional-consultant.md",
          "diff": "C:\\src\\certification-study-library\\.maintenance\\2026-10-28-remaining-refresh\\group-04\\review-inputs\\MB-800.diff",
          "diff_raw_sha256": "43c18639be4b4d7e0f79a4048593500b191933d8f6107017fbd8a324c3791da9",
          "objective_path": "data/objective-snapshots/mb-800-official-objectives.txt",
          "objective_raw_sha256": "36a7035403d51e3f1558e097e03f5cd4da0949d205420aeb46a8bd2b4ff30a9d"
        }
      ],
      "initial_flags_review": {
        "initial_objectives": 388,
        "initial_flags": 69,
        "actual_integrated_repair_packets": 27,
        "initial_flag_repairs_substantively_supported": 69,
        "method": "All27integrated explanations/workflows/examples/failures/checks reread in complete guides. Literal repair presence and current hashes supplement semantic review; neither was used as teaching proof."
      },
      "fresh_findings": [
        {
          "id": "g04-a-01",
          "exam_code": "MB-500",
          "severity": "medium",
          "check": "Objective coverage",
          "location": {
            "guide_path": "guides/MB-500-microsoft-dynamics-365-finance-operations-apps-developer.md",
            "line": 139
          },
          "affected_objective_ids": [
            "4.2.2"
          ],
          "affected_wording": [
            "Implement inheritance and abstraction concept"
          ],
          "status": "coordinator-repair-independently-verified",
          "evidence": "Existing sentence names inheritance/abstract contracts without explaining single inheritance, abstract instantiation, override or application. No later worked example teaches this specific concept.",
          "recommendation": "Apply and recheck the exact original teaching repair in reviewer-a-repair-proposals.json; rebind current mapping/guide evidence.",
          "disposition_note": "Coordinator applied a separate repair after the initial read-only finding. Reviewer reread actual live replacement in context and complete delta against preserved pre-independent-repairs captures. This records refresh repair verification, not a formal AI-audit ledger disposition.",
          "initial_status": "open",
          "repair_verification": {
            "date": "2026-10-28",
            "guide_lf_sha256": "e894c995a3376609e18a35286d6f962371f7eff79ff55e6f2c6f74ca72f1132f",
            "observed_result": "Now teaches the specific distinction, concrete original example/workflow, failure/check and linked current primary evidence; no compilation/tenant execution claimed."
          }
        },
        {
          "id": "g04-a-02",
          "exam_code": "MB-500",
          "severity": "medium",
          "check": "Objective coverage",
          "location": {
            "guide_path": "guides/MB-500-microsoft-dynamics-365-finance-operations-apps-developer.md",
            "line": 273
          },
          "affected_objective_ids": [
            "7.2.3"
          ],
          "affected_wording": [
            "Create and modify temporary tables for optimization purposes"
          ],
          "status": "coordinator-repair-independently-verified",
          "evidence": "Existing sentence says InMemory/TempDB differ without teaching which storage/join/lifetime difference guides a choice or how the temporary table is created/linked.",
          "recommendation": "Apply and recheck the exact original teaching repair in reviewer-a-repair-proposals.json; rebind current mapping/guide evidence.",
          "disposition_note": "Coordinator applied a separate repair after the initial read-only finding. Reviewer reread actual live replacement in context and complete delta against preserved pre-independent-repairs captures. This records refresh repair verification, not a formal AI-audit ledger disposition.",
          "initial_status": "open",
          "repair_verification": {
            "date": "2026-10-28",
            "guide_lf_sha256": "e894c995a3376609e18a35286d6f962371f7eff79ff55e6f2c6f74ca72f1132f",
            "observed_result": "Now teaches the specific distinction, concrete original example/workflow, failure/check and linked current primary evidence; no compilation/tenant execution claimed."
          }
        },
        {
          "id": "g04-a-03",
          "exam_code": "MB-800",
          "severity": "medium",
          "check": "Objective coverage",
          "location": {
            "guide_path": "guides/MB-800-microsoft-dynamics-365-business-central-functional-consultant.md",
            "line": 111
          },
          "affected_objective_ids": [
            "1.4.5"
          ],
          "affected_wording": [
            "Set up default dimensions for account types"
          ],
          "status": "coordinator-repair-independently-verified",
          "evidence": "Account types only appear as contributors in testing/answer text; current teaching omits the account-type versus individual-account override and its distinction from source priorities.",
          "recommendation": "Apply and recheck the exact original teaching repair in reviewer-a-repair-proposals.json; rebind current mapping/guide evidence.",
          "disposition_note": "Coordinator applied a separate repair after the initial read-only finding. Reviewer reread actual live replacement in context and complete delta against preserved pre-independent-repairs captures. This records refresh repair verification, not a formal AI-audit ledger disposition.",
          "initial_status": "open",
          "repair_verification": {
            "date": "2026-10-28",
            "guide_lf_sha256": "9a328507ddf796c5a0c5bbd6665ef4957a7a9bc307e9f93dafc3c276cc907a5a",
            "observed_result": "Now teaches the specific distinction, concrete original example/workflow, failure/check and linked current primary evidence; no compilation/tenant execution claimed."
          }
        },
        {
          "id": "g04-a-04",
          "exam_code": "MB-800",
          "severity": "medium",
          "check": "Objective coverage",
          "location": {
            "guide_path": "guides/MB-800-microsoft-dynamics-365-business-central-functional-consultant.md",
            "line": 161
          },
          "affected_objective_ids": [
            "2.7.2"
          ],
          "affected_wording": [
            "Create and modify fixed assets, main assets, and components"
          ],
          "status": "coordinator-repair-independently-verified",
          "evidence": "Main assets/components are named but not explained as separate cards and component linkage; ordinary class/book discussion does not teach the published creation/modification objective.",
          "recommendation": "Apply and recheck the exact original teaching repair in reviewer-a-repair-proposals.json; rebind current mapping/guide evidence.",
          "disposition_note": "Coordinator applied a separate repair after the initial read-only finding. Reviewer reread actual live replacement in context and complete delta against preserved pre-independent-repairs captures. This records refresh repair verification, not a formal AI-audit ledger disposition.",
          "initial_status": "open",
          "repair_verification": {
            "date": "2026-10-28",
            "guide_lf_sha256": "9a328507ddf796c5a0c5bbd6665ef4957a7a9bc307e9f93dafc3c276cc907a5a",
            "observed_result": "Now teaches the specific distinction, concrete original example/workflow, failure/check and linked current primary evidence; no compilation/tenant execution claimed."
          }
        }
      ],
      "open_new_material_count": 0,
      "known_source_blockers": [
        {
          "exam_code": "MB-230",
          "status": "blocked",
          "evidence": "Independently opened setup page: line60 requires review/send while runtime line106 uses semi-autonomous sends wording. Keep configured control and require authorized runtime evidence."
        }
      ],
      "integrity_check": "All5live/capture/guide/diff hashes,388normalized objective hashes,current span byte hashes and current/live extracted objective identity match. Objective and status current/base/before/candidate raw bytes identical. Frozen initialmapping/proposals hashes retained.",
      "semantic_limits": [
        "Substantive conceptual/configuration-design teaching at guide depth is distinct from a complete click-by-click product manual.",
        "Complete5guides and complete5diffs read, with truncated windows reread. Research/evidence files read in selected relevant subsetA fields; current mapping all388wordings/reasons/spans inspected.",
        "No source gate clears solely from link reachability. Initial69resolution does not prove no additional gap;4independent gaps found.",
        "No X++ compile, product/API/cloud/tenant/lab execution, video or paid course consumption. Historical local-model execution statements in unchanged guide content were not reexecuted by this reviewer."
      ],
      "pending": [],
      "reviewed_current_bindings": [
        {
          "exam_code": "DP-900",
          "guide_path": "guides/DP-900-microsoft-azure-data-fundamentals.md",
          "guide_lf_sha256": "1c618b776923450c7bbf59aac51ce2bf3b64cfb5dcc214e6b4b388a718332991",
          "capture": "C:\\src\\certification-study-library\\.maintenance\\2026-10-28-remaining-refresh\\group-04\\review-inputs\\DP-900-microsoft-azure-data-fundamentals.md",
          "diff": "C:\\src\\certification-study-library\\.maintenance\\2026-10-28-remaining-refresh\\group-04\\review-inputs\\DP-900.diff",
          "diff_raw_sha256": "96f0e5f4d5b4747857560da42cffd32d79ae58a2ce66ebbfdf3d1fc9e206e814",
          "objective_path": "data/objective-snapshots/dp-900-official-objectives.txt",
          "objective_raw_sha256": "7cef780d1a9e8e88b587fba89acb994985c4aedbd491710e814686ce5dc6559f"
        },
        {
          "exam_code": "MB-230",
          "guide_path": "guides/MB-230-microsoft-dynamics-365-customer-service-functional-consultant.md",
          "guide_lf_sha256": "f77caba6a0b5798ef90debb933287369323188d4dc567bbc11cdf9b4b875b743",
          "capture": "C:\\src\\certification-study-library\\.maintenance\\2026-10-28-remaining-refresh\\group-04\\review-inputs\\MB-230-microsoft-dynamics-365-customer-service-functional-consultant.md",
          "diff": "C:\\src\\certification-study-library\\.maintenance\\2026-10-28-remaining-refresh\\group-04\\review-inputs\\MB-230.diff",
          "diff_raw_sha256": "bf1aabdfc6b6a3f71289cccdbb208db6e4a4e94773af6f13a3a8b62c1bab4317",
          "objective_path": "data/objective-snapshots/mb-230-official-objectives.txt",
          "objective_raw_sha256": "e5925c65c9de7fad2e0d1d921564490a83ce02092b95ad95382775abd6352b38"
        },
        {
          "exam_code": "MB-310",
          "guide_path": "guides/MB-310-microsoft-dynamics-365-finance-functional-consultant.md",
          "guide_lf_sha256": "a6f7f12e80a6131d1b9a58df4f8e0d8ed553f96f5d316dd2a7593a05c02f9f3b",
          "capture": "C:\\src\\certification-study-library\\.maintenance\\2026-10-28-remaining-refresh\\group-04\\review-inputs\\MB-310-microsoft-dynamics-365-finance-functional-consultant.md",
          "diff": "C:\\src\\certification-study-library\\.maintenance\\2026-10-28-remaining-refresh\\group-04\\review-inputs\\MB-310.diff",
          "diff_raw_sha256": "58a81d834e569fe31ef53f908ca865ec4fc1159a388fe5096510469666e808cf",
          "objective_path": "data/objective-snapshots/mb-310-official-objectives.txt",
          "objective_raw_sha256": "d5bbe85cad214566f2ba0cc7b266af0ff612664ba199a5c8ed948e28474d2284"
        },
        {
          "exam_code": "MB-500",
          "guide_path": "guides/MB-500-microsoft-dynamics-365-finance-operations-apps-developer.md",
          "guide_lf_sha256": "e894c995a3376609e18a35286d6f962371f7eff79ff55e6f2c6f74ca72f1132f",
          "capture": "C:\\src\\certification-study-library\\.maintenance\\2026-10-28-remaining-refresh\\group-04\\review-inputs\\MB-500-microsoft-dynamics-365-finance-operations-apps-developer.md",
          "diff": "C:\\src\\certification-study-library\\.maintenance\\2026-10-28-remaining-refresh\\group-04\\review-inputs\\MB-500.diff",
          "diff_raw_sha256": "42fbf36f5a89cc47bf8d9618ad10abf7b49804123ddef17c093580a1119002e2",
          "objective_path": "data/objective-snapshots/mb-500-official-objectives.txt",
          "objective_raw_sha256": "30b2b8913d63724b60099adcd9090a67bf818e3b0b42e7e57382a5ab240134cd"
        },
        {
          "exam_code": "MB-800",
          "guide_path": "guides/MB-800-microsoft-dynamics-365-business-central-functional-consultant.md",
          "guide_lf_sha256": "9a328507ddf796c5a0c5bbd6665ef4957a7a9bc307e9f93dafc3c276cc907a5a",
          "capture": "C:\\src\\certification-study-library\\.maintenance\\2026-10-28-remaining-refresh\\group-04\\review-inputs\\MB-800-microsoft-dynamics-365-business-central-functional-consultant.md",
          "diff": "C:\\src\\certification-study-library\\.maintenance\\2026-10-28-remaining-refresh\\group-04\\review-inputs\\MB-800.diff",
          "diff_raw_sha256": "5237ea005a1a013242f26cb160e4d3bc471236f1d0a5bf485f2f3126a374161a",
          "objective_path": "data/objective-snapshots/mb-800-official-objectives.txt",
          "objective_raw_sha256": "36a7035403d51e3f1558e097e03f5cd4da0949d205420aeb46a8bd2b4ff30a9d"
        }
      ],
      "verified_new_guide_repairs": 4,
      "known_open_source_blocker_count": 1,
      "phase_verdict": "pass for subsetA guide-content, final mapping accuracy and assembled evidence; retained MB230 source blocker remains independently recorded",
      "repair_phase_read_scope": {
        "unchanged_guides": "DP900,MB230,MB310 complete previously read captures remain byte-identical to recapture.",
        "changed_guides": "MB500 and MB800 complete previous captures plus every line of new delta and surrounding paragraphs read; delta contains only the four applied repairs. New complete guide and diff hashes verified.",
        "new_source_catalog": "Six exact repair URLs were registered after the independent opens; health run pending, no reachability-based behavior assurance."
      },
      "additional_observations": [
        "New inheritance exercise uses synthetic base100, fixed5 and10percent=10 to make dynamic dispatch consequences concrete; arithmetic does not establish X++ execution.",
        "Minor extra spaces before Query objects/Prefer set-based work are editorial only.",
        "This record preserves initial hashes/findings and does not replace historical full-review dates or claim rubric2/human review."
      ],
      "verdict": "pass",
      "open_material_findings": 0,
      "pending_checks": [],
      "final_evidence_review": {
        "date": "2026-10-28",
        "scope": "All388subsetArows/currentreasons/460spans and current5guide/objective/source/deep bindings; complete public report; relevant subsetA ledger blocks and whole historical-object preservation. Other subsetB technical semantics remain its independent reviewer scope.",
        "objective_rows": 388,
        "teaching_spans": 460,
        "current_reason_corrections": "154stale retained-row reasons updated; all388original reasons retained exactly in initial_reason. Intercompany paragraph80 and CoC120-130 now identify actual teaching. Four independent repair rows have precise substantive bindings.",
        "matrix_consistency": "CurrentAexams equal combinedmatrixAobjects; ledger embeds exact combinedmatrix. Currentguide/capture/diff/objective SHAvalues match source/deep/public ledger receipts.",
        "historical_preservation": {
          "reviews.json": {
            "historical_objects": 319,
            "all_original_object_values_preserved": true,
            "current_objects": 329,
            "ordering_note": "Existing historical order retained."
          },
          "deep-reviews.json": {
            "historical_objects": 196,
            "all_original_object_values_preserved": true,
            "current_objects": 206,
            "ordering_note": "Deep-review array insertion/reordering does not alter historical objects."
          },
          "ai-audits.json": {
            "historical_objects": 42,
            "all_original_object_values_preserved": true,
            "current_objects": 42,
            "ordering_note": "Existing historical order retained."
          }
        },
        "snapshot_preservation": "All10currentobjective and10statusfiles rawbyte-equal acceptedbase,before,andcandidate; no baseline archive migration needed.",
        "source_gates": "DP900,MB310,MB500,MB800 sourcepassed; MB230sourceblocked in guide/config/source/deep/ledger/publicreport. BsourceblockersSC500/AB250 retained as separate reviewer scope.",
        "catalog_health": "Allcurrentten-guideURLsets match exact registered source IDs/exam associations and tracked health counts. Six independent repair sources have correct exam associations andHTTP200 records; technical support comes from prior selected primary-body reads.139newcatalogsources;42modifiedexistingrecords consist of40evaluatedupdates plus2association/availabilityupdates. No existing source ID deleted.",
        "shared_checks": "Repository tests/site checks are root-owned and outside this reviewer acceptance scope; no duplicate collectors/check suites launched.",
        "limits": "Bounded content/evidence pass does not clear known source blockers, establish live product/lab execution, count as rubric2/full independent semantic audit or human review."
      },
      "final_reviewed_artifact_hashes": {
        ".maintenance\\2026-10-28-remaining-refresh\\group-04\\exam-a-final-mapping.json": "d1c4911567bc5e41813d921ba48dc7d4a3da930c49f5b17203b8d6e3cae632df",
        ".maintenance\\2026-10-28-remaining-refresh\\group-04\\exam-a-final-semantic-review.json": "3755df14e641cfd54d34a233884d7501b2bebd1188d01add54d8343db9e3c5fc",
        ".maintenance\\2026-10-28-remaining-refresh\\group-04\\exam-final-mapping.json": "8c5cc78f25d8e01a8348cd13715c51ab11c87cec4accf9b17bb4784869849f67",
        "ADLC_Docs\\operations\\2026-10-28-microsoft-refresh-group-04.json": "67dfeee2b62d6af8e160089226292517fe1e35d754fea2a7be985be01b327e2e",
        "data\\reviews.json": "954aa26307ec2313102b8089a141af07c0f86f1d3157f7223080b73e2fb55186",
        "data\\deep-reviews.json": "e6089f4f997bbc966d1b89c5eb63486accd7fade0e3dc70a5e37b8f92acc127d",
        "data\\ai-audits.json": "927ca54add0069885cf2b845f88613edef59febc1a6607f9e815e5c79c4af462"
      },
      "final_reviewed_artifact_hash_note": "Exact artifacts before coordinator incorporates independent reviewer receipt. Any later receipt-only additions require truthful provenance; guide bindings above remain the reviewed immutable content.",
      "low_editorial_observations": [
        {
          "severity": "low",
          "location": "public report Evidence and validation",
          "note": "40evaluatedexistingentries is correct; actualtotal modifiedexistingrows42includespartnerassociation andretained404availabilitymetadata. Coordinator informed to qualify wording.",
          "material": false
        }
      ]
    },
    "subset_b": {
      "schema_version": 1,
      "date": "2026-10-28",
      "reviewer": "fresh-context read-only reviewer B",
      "review_phase": "Initial review retained; separate corrected-matrix/public-ledger followup completed",
      "base_commit": "546feb3caf5fa38f9ab368a06e76da088f497bbb",
      "scope": [
        "MB-820",
        "PL-300",
        "PL-900",
        "SC-500",
        "AB-250"
      ],
      "verdict": "fix-required",
      "not_a_full_rubric2_audit": true,
      "findings": [
        {
          "id": "G04-B-R1",
          "severity": "medium",
          "checks": [
            2,
            9
          ],
          "status": "open",
          "location": ".maintenance/2026-10-28-remaining-refresh/group-04/exam-b-final-mapping.json",
          "title": "Semantically incorrect evidence spans survive deterministic hashes",
          "evidence": "All396 wording and evidence hashes mechanically match, but23 proven rows truncate or point away from their actual teaching. Two rows bind frontmatter line1. PL300 group7 binds the introductory sentence without its following visual choices/configuration; AB250 group8 binds its first IVR paragraph without the relevant security/recording/real-time/multilingual passages.",
          "affected_rows": {
            "PL-300": [
              "1.3",
              "4.5",
              "7.1",
              "7.2",
              "7.4",
              "7.5",
              "7.6",
              "7.9",
              "7.10",
              "7.11",
              "8.5",
              "8.13",
              "9.6",
              "11.6"
            ],
            "SC-500": [
              "10.5"
            ],
            "AB-250": [
              "5.2",
              "5.6",
              "6.25",
              "8.3",
              "8.4",
              "8.6",
              "8.9",
              "8.10"
            ]
          },
          "exact_examples": [
            {
              "row": "PL-3001.3",
              "current": "67–67",
              "actual": "65–71",
              "reason": "Import row alone excludes DirectQuery and Direct Lake."
            },
            {
              "row": "PL-3004.5",
              "current": "121–127",
              "actual": "131–141 and169–171",
              "reason": "Relationship/date passage does not teach calculation-artifact use cases."
            },
            {
              "row": "PL-3007.11",
              "current": "195–195",
              "actual": "159–165 and focused learning route",
              "reason": "Report-design introductory sentence does not teach visual calculations."
            },
            {
              "row": "PL-3008.13",
              "current": "203–203",
              "actual": "203–205",
              "reason": "Detailed automatic-refresh limits and mode behavior are205."
            },
            {
              "row": "PL-3009.6",
              "current": "205–205",
              "actual": "207/213",
              "reason": "Current span is automatic refresh, not Copilot summaries."
            },
            {
              "row": "PL-30011.6",
              "current": "1–1",
              "actual": "279–279",
              "reason": "Current span is frontmatter delimiter."
            },
            {
              "row": "SC-50010.5",
              "current": "285–302",
              "actual": "247–247",
              "reason": "MDVM scan/settings/triage text is247, not generic CSPM section."
            },
            {
              "row": "AB-2505.2",
              "current": "1–1",
              "actual": "155 and265",
              "reason": "Frontmatter delimiter is not external-IVR integration."
            },
            {
              "row": "AB-2505.6",
              "current": "175–175",
              "actual": "199–199",
              "reason": "Generic feedback clause omits the actual survey workflow; mapping should distinguish customer survey from any internal representative feedback contract."
            },
            {
              "row": "AB-2508.3/8.4/8.6/8.9/8.10",
              "current": "255–255",
              "actual": "257–271 plus193–197 as relevant",
              "reason": "IVR introduction does not contain the evidence asserted in row reasons."
            }
          ],
          "recommendation": "Rebuild all396 rows from explicit current named sections and specific relevant paragraph ranges; no default/fallback line1 and no parent-heading truncation at a worked subsection. Reinspect semantics, reasons, repair credit and exact hashes independently. Preserve initial flawed matrix and this finding history.",
          "coordinator_notified": true,
          "repair_verification": "pending; reviewer must not self-resolve initial finding"
        }
      ],
      "deterministic_checks": {
        "all396_normalized_wording_hashes": true,
        "all396_wordings_found_in_retained_snapshots": true,
        "all_evidence_span_lf_hashes": true,
        "five_guide_hashes": true,
        "five_capture_equals_current": true,
        "five_diff_hashes": true,
        "five_objective_raw_hashes": true,
        "five_objective_raw_bytes_equal_base": true,
        "five_status_raw_bytes_equal_base": true,
        "conclusion": "Identity only; not coverage proof.",
        "all314_distinct_exam_url_associations_have_exact_catalog_entries": true
      },
      "complete_guides_read": [
        {
          "exam": "MB-820",
          "lines": "1–514",
          "guide_lf_sha256": "0be7abf3d006029e0009c97001c77e79025bc8a507b47333c403abb5ff0c4d55"
        },
        {
          "exam": "PL-300",
          "lines": "1–438",
          "guide_lf_sha256": "a8d85b7c0cc3756a49c5b9885f9462f98bfc5e3ce429986817cafff4bf6dc185"
        },
        {
          "exam": "PL-900",
          "lines": "1–565",
          "guide_lf_sha256": "d111dba01cb12e5fb753260ef6f19967ca34bcac282fd54f1bd8e5b8db253c77"
        },
        {
          "exam": "SC-500",
          "lines": "1–598",
          "guide_lf_sha256": "f9f604b2bf2b694b08f9da07b87fd918e26fc6713fa1b35deadc60c0122895a2"
        },
        {
          "exam": "AB-250",
          "lines": "1–553",
          "guide_lf_sha256": "4d10c415eb14245dd8dc4d38fee8f2ad3f69f332ed32ff791e40114c3855947f"
        }
      ],
      "read_scope": "Complete five final captured guides and five frozen diffs, with initially truncated tool output recovered using explicit ranges. All396 row wordings/span bindings and all151 existing-adequate specific reasons inspected against guide teaching. Supporting research/source-gate/health artifacts read within selected relevant fields; independent primary readings recorded separately. Public group report, operations ledger, updated source/deep receipts not supplied yet.",
      "limits": [
        "No product, cloud, compiler, PowerBI, SDK, mobile, telephony, paid content or lab execution.",
        "No complete independent rubric2 or human audit.",
        "SC500 and AB250 source gates remain blocked; no final pass claimed.",
        "All initial observations remain historical if coordinator regenerates matrices."
      ],
      "reviewed_initial_matrix_raw_sha256": "ae0a3ae0ea52535281200752d32b8d3d5a97d33a374a682cdc24fbb0989a14cf",
      "source_review_receipt": "reviewer-b-sources.json:34 independently opened primary sources",
      "phase_conclusion": "No additional material technical error established in critical current-source spot checks. Systemic matrix defect remains open, corrected-matrix semantics and final public-ledger review pending. Historical SC500/AB250 source blockers retained.",
      "followup_verification": {
        "date": "2026-10-28",
        "review_type": "separate read-only repair verification of coordinator/author changes; bounded refresh support review, not full rubric2",
        "current_matrix_raw_sha256": "125e5a378fa2257bb001f6de3f8237b0cc964b3586305c29516ead7dad40d097",
        "prior_matrix_preserved_raw_sha256": "ae0a3ae0ea52535281200752d32b8d3d5a97d33a374a682cdc24fbb0989a14cf",
        "current_combined_matrix_raw_sha256": "8c5cc78f25d8e01a8348cd13715c51ab11c87cec4accf9b17bb4784869849f67",
        "operations_raw_sha256_at_review": "67dfeee2b62d6af8e160089226292517fe1e35d754fea2a7be985be01b327e2e",
        "public_report_raw_sha256_at_review": "5dff8f45792c2bfe7ab5e15b4eb06bdd7914a5f1644b7cd810cb0fc78b59bc4d",
        "semantic_read_scope": "All396 corrected objective selections and all corrected reasons inspected against the complete five guides already read, including original23 affected rows. Repeated identical reason bodies were grouped with full row lists; truncated output was recovered explicitly. All666 selected spans cover the intended current authored sections; supporting labs/scenarios are secondary evidence, not substitute execution claims.",
        "dispositions": {
          "actual_repairs": 81,
          "existing_adequate_for_verb": 152,
          "not_initially_flagged": 163,
          "initial_conservative_flags_retained": 233
        },
        "attribution_recheck": "SC50011.4 correctly loses Windows-packet repair credit: existing Azure diagnostic-setting categories/destination/known-event teaching is separate from the Windows AMA/WEF addition.",
        "G04_B_R1_repair_verification": "passed:23 original minimum defects and systematic all396 rebind verified. Initial finding history/status/verdict above intentionally unchanged; coordinator may record resolved with this separate verification evidence.",
        "new_material_findings": [],
        "remaining_unverified_material_repairs": 0,
        "public_report_corrections_verified": [
          "24-minute Pluralsight replacement provenance moved from PL300 to PL900",
          "AB250 assessment availability attributed to public credential page; sign-in shell does not establish launch or questions"
        ],
        "deterministic_recheck": {
          "subset_rows": 396,
          "subset_spans": 666,
          "combined_rows": 784,
          "combined_spans": 1126,
          "combined_ops_embedding_identical": true,
          "all_current_guide_objective_wording_and_span_hashes_pass": true,
          "ten_raw_objective_files_unchanged_from_base": true,
          "ten_raw_status_files_unchanged_from_base": true,
          "ten_source_deep_config_receipt_paths_and_hashes_pass": true,
          "ten_exact_catalog_exam_url_and_current_health_counts_pass": true
        },
        "history_preservation": {
          "prior_source_records": 319,
          "prior_deep_records": 196,
          "prior_audit_batches": 42,
          "all_prior_objects_retained_value_identical": true,
          "current_source_records": 329,
          "current_deep_records": 206,
          "current_audit_batches": 42
        },
        "source_gate_states": {
          "MB-820": "passed",
          "PL-300": "passed",
          "PL-900": "passed",
          "SC-500": "blocked: retained missing-CSPM-announcement/default uncertainty",
          "AB-250": "blocked: retained number-acquisition date/eligibility contradiction"
        },
        "bounded_outcome": "Passed corrected B refresh teaching/evidence support review; no remaining material correction identified in declared scope. Source blockers retained. Complete independent rubric2/human/live assurance not claimed.",
        "limits": [
          "SubsetA complete guides and their semantic coverage not independently reviewed by reviewerB; combinedA rows/spans and receipts checked mechanically only.",
          "Current sources re-opened within reviewer-b-sources.json scopes; not all314 distinct exam–URL source bodies independently reread.",
          "No shared whole-library collector or repository/site test run by reviewerB; coordinator validation pending at this snapshot.",
          "No product/compiler/PowerBI/SDK/mobile/call/tenant/paid-content/lab execution."
        ]
      }
    },
    "subset_a_sources": {
      "date": "2026-10-28",
      "reviewer": "fresh-context reviewer A",
      "method": "Independent web opens and selected readable primary bodies; source reachability is not product verification. Several Learn pages rendered generic authorization banners alongside readable body; no sign-in performed.",
      "sources": [
        {
          "url": "https://learn.microsoft.com/en-us/dynamics365/customer-service/administer/set-up-case-resolution-agent",
          "affected_exams": [
            "MB-230"
          ],
          "read_scope": "selected body lines31-140 of196",
          "observation": "Confirmed configuration requires representative review/send; runtime sufficient-information row describes semi-autonomous send less precisely. Language and metered simulation constraints support the new caveats.",
          "confidence": "high for selected documented contract; no live product execution"
        },
        {
          "url": "https://learn.microsoft.com/en-us/dynamics365/customer-service/administer/define-service-level-agreements",
          "affected_exams": [
            "MB-230"
          ],
          "read_scope": "selected body lines35-200 of298",
          "observation": "KPI/lookup/timer, Applicable From, pause successor, saved-item pause limitation and all-day default support clock distinctions.",
          "confidence": "high for selected documented contract; no live product execution"
        },
        {
          "url": "https://learn.microsoft.com/en-us/dynamics365/customer-service/administer/set-pause-conditions-sla",
          "affected_exams": [
            "MB-230"
          ],
          "read_scope": "complete substantive body lines32-60 of100",
          "observation": "Item overrides KPI overrides entity; resume creates successor instance. No tenant timing observed.",
          "confidence": "high for selected documented contract; no live product execution"
        },
        {
          "url": "https://learn.microsoft.com/en-us/dynamics365/finance/accounts-receivable/sb-deferrals-schedules",
          "affected_exams": [
            "MB-310"
          ],
          "read_scope": "selected body lines31-133 of245",
          "observation": "Recognition cutoff, preview and history-dependent modification distinguish unrecognized/recognized and event-based schedules.",
          "confidence": "high for selected documented contract; no live product execution"
        },
        {
          "url": "https://learn.microsoft.com/en-us/dynamics365/finance/accounts-receivable/sb-deferrals",
          "affected_exams": [
            "MB-310"
          ],
          "read_scope": "selected parameters body lines31-88 of361",
          "observation": "Equal full periods, prorated partial periods, day allocation and automatic journal posting parameter support the calculation/posting boundary.",
          "confidence": "high for selected documented contract; no live product execution"
        },
        {
          "url": "https://learn.microsoft.com/en-us/dynamics365/finance/general-ledger/indirect-taxes-overview",
          "affected_exams": [
            "MB-310"
          ],
          "read_scope": "selected body lines32-83 of123",
          "observation": "Tax code intersection, ledger posting group, settlement account and later payment are distinct; no statutory rate established.",
          "confidence": "high for selected documented contract; no live product execution"
        },
        {
          "url": "https://learn.microsoft.com/en-us/dynamics365/finance/cash-bank-management/set-up-centralized-payments",
          "affected_exams": [
            "MB-310"
          ],
          "read_scope": "complete substantive body lines31-59 of95",
          "observation": "Hierarchy purpose, unrestricted company direction, due-to/from, shared party identity and matching profile/payment IDs support setup example.",
          "confidence": "high for selected documented contract; no live product execution"
        },
        {
          "url": "https://learn.microsoft.com/en-us/dynamics365/business-central/design-details-costing-methods",
          "affected_exams": [
            "MB-800"
          ],
          "read_scope": "selected body lines31-137 of214",
          "observation": "Cost assumptions, specific application, average period/scope and prohibition on changing method after entries support new table. Paper amounts are illustrative.",
          "confidence": "high for selected documented contract; no live product execution"
        },
        {
          "url": "https://learn.microsoft.com/en-us/dynamics365/business-central/inventory-how-count-adjust-reclassify",
          "affected_exams": [
            "MB-800"
          ],
          "read_scope": "selected body lines31-94 of245",
          "observation": "Physical count calculates expected then posts observed difference, with separate directed-warehouse workflow; location errors have reclassification path.",
          "confidence": "high for selected documented contract; no live product execution"
        },
        {
          "url": "https://microsoftlearning.github.io/MB-500-Microsoft-Dynamics-365-Finance-and-Operations-Apps-Developer/Instructions/Labs/Lab%20-%203%20-%20Implement%20the%20SysExtensionSerializer%20framework.html",
          "affected_exams": [
            "MB-500"
          ],
          "read_scope": "selected body lines8-172 of399",
          "observation": "Lab introduces linked custom table, unique base reference, ExtensionMap and form/entity testing. Later instructions/screenshots not independently reviewed; no lab execution or performance assertion.",
          "confidence": "high for selected documented contract; no live product execution"
        },
        {
          "url": "https://learn.microsoft.com/en-us/training/modules/explore-extensions-framework-finance-operations/sysoperationsandbox-framework",
          "affected_exams": [
            "MB-500"
          ],
          "read_scope": "complete substantive text and example lines17-74 of89",
          "observation": "Separate worker/UI sessions and serialized state support revised framework distinction. No task run or rollback guarantee inferred.",
          "confidence": "high for selected documented contract; no live product execution"
        },
        {
          "url": "https://learn.microsoft.com/en-us/dynamics365/fin-ops-core/dev-itpro/data-entities/develop-composite-data-entities",
          "affected_exams": [
            "MB-500"
          ],
          "read_scope": "selected body lines32-156 of192",
          "observation": "XML Data management composite and its relations/staging/root/build workflow differ from synchronous OData or programmatic X++ API.",
          "confidence": "high for selected documented contract; no live product execution"
        },
        {
          "url": "https://learn.microsoft.com/en-us/dynamics365/fin-ops-core/dev-itpro/data-entities/entity-change-track",
          "affected_exams": [
            "MB-500"
          ],
          "read_scope": "selected body lines31-98 of134",
          "observation": "SQL tracking is distinct from row version; entity-row fields export together, deletion limited to BYOD root.",
          "confidence": "high for selected documented contract; no live product execution"
        },
        {
          "url": "https://learn.microsoft.com/en-us/dynamics365/fin-ops-core/dev-itpro/data-entities/security-data-entities",
          "affected_exams": [
            "MB-500"
          ],
          "read_scope": "selected body lines34-119 of155",
          "observation": "Entities do not support XDS; DataServices/DataManagement and TPF support independent authorization boundary.",
          "confidence": "high for selected documented contract; no live product execution"
        },
        {
          "url": "https://learn.microsoft.com/en-us/dynamics365/fin-ops-core/dev-itpro/dev-ref/xpp-inheritance",
          "affected_exams": [
            "MB-500"
          ],
          "read_scope": "selected body lines32-150 of186",
          "observation": "Subclass, single inheritance, matching-signature override and runtime dispatch directly support original design repair.",
          "confidence": "high for selected documented contract; no live product execution"
        },
        {
          "url": "https://learn.microsoft.com/en-us/dynamics365/fin-ops-core/dev-itpro/dev-ref/xpp-syntax",
          "affected_exams": [
            "MB-500"
          ],
          "read_scope": "selected keyword rows lines32-85 of784",
          "observation": "Abstract instantiation/override restrictions support repair; full grammar and unrelated keywords not read.",
          "confidence": "high for selected documented contract; no live product execution"
        },
        {
          "url": "https://learn.microsoft.com/en-us/training/modules/apply-basic-performance-optimization-finance-operations/3-table",
          "affected_exams": [
            "MB-500"
          ],
          "read_scope": "complete substantive text lines17-43 of59",
          "observation": "InMemory versus SQL TempDB storage/joins teach choice. Older client references and exact lifetime language were not generalized.",
          "confidence": "high for selected documented contract; no live product execution"
        },
        {
          "url": "https://learn.microsoft.com/en-us/training/modules/apply-basic-performance-optimization-finance-operations/temporary-tables",
          "affected_exams": [
            "MB-500"
          ],
          "read_scope": "complete substantive text/code lines17-107 of123",
          "observation": "Table population, documented linking APIs and TempDB joins/TTS support construction/failure exercise. Code inspected without execution.",
          "confidence": "high for selected documented contract; no live product execution"
        },
        {
          "url": "https://learn.microsoft.com/en-us/dynamics365/business-central/finance-dimensions",
          "affected_exams": [
            "MB-800"
          ],
          "read_scope": "selected body lines31-154 of275",
          "observation": "Account-type versus individual override and source-code priorities support new bounded configuration example.",
          "confidence": "high for selected documented contract; no live product execution"
        },
        {
          "url": "https://learn.microsoft.com/en-us/dynamics365/business-central/fa-how-acquire",
          "affected_exams": [
            "MB-800"
          ],
          "read_scope": "selected body lines31-174 of219",
          "observation": "Individual cards/books and Main Asset Components relation support distinction from class grouping and actual posting.",
          "confidence": "high for selected documented contract; no live product execution"
        },
        {
          "url": "https://learn.microsoft.com/en-us/dynamics365/fin-ops-core/dev-itpro/analytics/prevent-long-running-reports-timing-out",
          "affected_exams": [
            "MB-500"
          ],
          "read_scope": "complete substantive body lines31-50 of86",
          "observation": "Current report guide confirms specific TempDB preprocessing route; not used to claim universal performance gains.",
          "confidence": "high for selected documented contract; no live product execution"
        },
        {
          "url": "https://learn.microsoft.com/en-us/dynamics365/finance/general-ledger/foreign-currency-revaluation-general-ledger",
          "affected_exams": [
            "MB-310"
          ],
          "read_scope": "complete substantive body lines31-100 of136",
          "observation": "GL adjusts from the already revalued balance; AR/AP reverse-replace, and subledger-controlled accounts are excluded. Local arithmetic is not a posted voucher.",
          "confidence": "high for selected documented contract; no live product execution"
        },
        {
          "url": "https://learn.microsoft.com/en-us/dynamics365/business-central/design-details-expected-cost-posting",
          "affected_exams": [
            "MB-800"
          ],
          "read_scope": "selected readable body lines37-96 of144",
          "observation": "Interim accounts are assigned through separate inventory/general matrices; invoicing clears expected value and posts actual. Missing top window not claimed read.",
          "confidence": "high for selected documented contract; no live product execution"
        },
        {
          "url": "https://learn.microsoft.com/en-us/fabric/data-warehouse/semantic-models",
          "affected_exams": [
            "DP-900"
          ],
          "read_scope": "complete substantive body lines31-65 of108",
          "observation": "Explicit model creation and unmappable-type sync omission support schema-diagnostic addition. No Power BI/Fabric execution.",
          "confidence": "high for selected documented contract; no live product execution"
        }
      ],
      "failed_opens": [
        {
          "url": "https://learn.microsoft.com/en-us/dynamics365/customer-service/use/overview-case-management-agent",
          "result": "tool internal error/inaccessible; no behavior conclusion inferred"
        },
        {
          "url": "https://learn.microsoft.com/en-us/dynamics365/fin-ops-core/dev-itpro/dev-ref/xpp-data/xpp-temporary-tables",
          "result": "tool internal error/inaccessible; no behavior conclusion inferred"
        },
        {
          "url": "https://learn.microsoft.com/en-us/dynamics365/fin-ops-core/dev-itpro/dev-ref/xpp-classes",
          "result": "tool internal error/inaccessible; no behavior conclusion inferred"
        }
      ],
      "discovery_only": "Search results and module/index links were discovery; no technical conclusion based solely on snippets.",
      "limitations": [
        "No screenshot, embedded video, paid course, assessment questions, tenant, API, X++ compilation or product/lab execution.",
        "Not every source cited in all five guides was independently reopened. Existing research and health results were separately inspected as supplied evidence."
      ],
      "final_followup": {
        "date": "2026-10-28",
        "verdict": "pass",
        "new_web_reads": "No repeated web requests in final ledger phase;24prior selected primary-bodyopens remain the independently inspected support.",
        "local_evidence_checks": "Six repair catalogobjects and exactHTTP200healthreceipts checked against data/source-health.json; current source gates retained; no reachability-as-product-verification inference.",
        "pending_checks": []
      }
    },
    "subset_b_sources": {
      "schema_version": 1,
      "date": "2026-10-28",
      "reviewer": "fresh-context read-only reviewer B",
      "method": "Independent web opens with readable primary bodies; exact scopes below. Generic Learn authorization banners did not hide the quoted readable public main bodies. No login/product execution.",
      "sources": [
        {
          "affected_exams": [
            "MB-820"
          ],
          "url": "https://learn.microsoft.com/en-us/dynamics365/business-central/dev-itpro/developer/devenv-handling-errors-using-try-methods",
          "actual_read_scope": "Article behavior/usage, database writes, return handling and argument evaluation, lines32–120",
          "observation": "Caught errors do not roll back try writes; online/on-prem defaults differ; unused Boolean calls and argument evaluation distinctions match guide.",
          "confidence": "high for observed primary text; bounded to declared scope",
          "limits": "Textual independent review only; no screenshot, download, compiler, PowerBI, SDK, call or tenant execution."
        },
        {
          "affected_exams": [
            "MB-820"
          ],
          "url": "https://learn.microsoft.com/en-us/dynamics365/business-central/dev-itpro/developer/devenv-test-codeunits-and-test-methods",
          "actual_read_scope": "Creation/type/test isolation, methods and preview lifecycle handlers, lines31–100",
          "observation": "Subtype Test and Test attributes, independent subsequent method execution and runtime18 preview distinction match guide.",
          "confidence": "high for observed primary text; bounded to declared scope",
          "limits": "Textual independent review only; no screenshot, download, compiler, PowerBI, SDK, call or tenant execution."
        },
        {
          "affected_exams": [
            "MB-820"
          ],
          "url": "https://learn.microsoft.com/en-us/dynamics365/business-central/dev-itpro/developer/devenv-application-insights-for-extensions",
          "actual_read_scope": "Extension setup and legacy property distinction, lines31–75",
          "observation": "Connection string manifest property, build/publish/install sequence and no dual-property instruction match.",
          "confidence": "high for observed primary text; bounded to declared scope",
          "limits": "Textual independent review only; no screenshot, download, compiler, PowerBI, SDK, call or tenant execution."
        },
        {
          "affected_exams": [
            "MB-820"
          ],
          "url": "https://microsoftlearning.github.io/MB-820-Business-Central-Developer-Certification/Instructions/Labs/LAB_02_Implement_installation_and_upgrade_code_extension.html",
          "actual_read_scope": "Complete191-line textual lab including both code blocks",
          "observation": "Confirmed duplicate UpdateSalespeople signature/same-name call and absent precondition trigger referred to by expected error. Guide correctly makes this a design/review exercise.",
          "confidence": "high for observed primary text; bounded to declared scope",
          "limits": "Textual independent review only; no screenshot, download, compiler, PowerBI, SDK, call or tenant execution."
        },
        {
          "affected_exams": [
            "PL-300"
          ],
          "url": "https://learn.microsoft.com/en-us/power-bi/transform-model/desktop-calculated-columns",
          "actual_read_scope": "Creation and Expression Context/materialization matrix, lines31–89",
          "observation": "Scalar row artifact, Import/default storage and user-context/DirectLake preview boundaries agree.",
          "confidence": "high for observed primary text; bounded to declared scope",
          "limits": "Textual independent review only; no screenshot, download, compiler, PowerBI, SDK, call or tenant execution."
        },
        {
          "affected_exams": [
            "PL-300"
          ],
          "url": "https://learn.microsoft.com/en-us/power-bi/transform-model/desktop-calculated-tables",
          "actual_read_scope": "Creation, refresh and table-expression contract, lines31–80",
          "observation": "New table accepts table-valued expression and participates as a model artifact. Guide Import fixture is consistent; not executed.",
          "confidence": "high for observed primary text; bounded to declared scope",
          "limits": "Textual independent review only; no screenshot, download, compiler, PowerBI, SDK, call or tenant execution."
        },
        {
          "affected_exams": [
            "PL-300"
          ],
          "url": "https://learn.microsoft.com/en-us/power-bi/create-reports/copilot-create-reports",
          "actual_read_scope": "Creation workflow/save/limitations, lines32–83",
          "observation": "Report/Edit/pane/Suggest content/generate/save contract and implicit-measure/streaming/liveAS restrictions match.",
          "confidence": "high for observed primary text; bounded to declared scope",
          "limits": "Textual independent review only; no screenshot, download, compiler, PowerBI, SDK, call or tenant execution."
        },
        {
          "affected_exams": [
            "PL-300"
          ],
          "url": "https://learn.microsoft.com/en-us/power-bi/create-reports/copilot-create-narrative",
          "actual_read_scope": "Prerequisites/selected visuals, workflow/footnotes, refresh and limitations, lines31–113",
          "observation": "Narrative over selected visuals requires explicit refresh after filters; report authoring and supported capacity are separate. Matches.",
          "confidence": "high for observed primary text; bounded to declared scope",
          "limits": "Textual independent review only; no screenshot, download, compiler, PowerBI, SDK, call or tenant execution."
        },
        {
          "affected_exams": [
            "SC-500"
          ],
          "url": "https://learn.microsoft.com/en-us/azure/sentinel/connect-services-windows-based",
          "actual_read_scope": "AMA/DCR prerequisites, WEF table and creation wizard, lines31–92",
          "observation": "WEF uses WindowsEvent, direct Windows Security AMA SecurityEvent; table-specific rules need adaptation. Guide source-to-table walkthrough matches.",
          "confidence": "high for observed primary text; bounded to declared scope",
          "limits": "Textual independent review only; no screenshot, download, compiler, PowerBI, SDK, call or tenant execution."
        },
        {
          "affected_exams": [
            "SC-500"
          ],
          "url": "https://learn.microsoft.com/en-us/azure/sentinel/windows-security-event-id-reference",
          "actual_read_scope": "Event-set explanation and table distinction, lines31–46",
          "observation": "All excludes unrelated Windows logs; Minimal is not full audit trail. Matches.",
          "confidence": "high for observed primary text; bounded to declared scope",
          "limits": "Textual independent review only; no screenshot, download, compiler, PowerBI, SDK, call or tenant execution."
        },
        {
          "affected_exams": [
            "AB-250"
          ],
          "url": "https://learn.microsoft.com/en-us/dynamics365/customer-service/administer/smart-assist",
          "actual_read_scope": "Applicability, deprecation, prerequisites, registration/workstream, lines31–89",
          "observation": "Custom AzureBotService-based integration and application-user/workstream registration; unsupported Copilot agents and representative-first-message behavior match.",
          "confidence": "high for observed primary text; bounded to declared scope",
          "limits": "Textual independent review only; no screenshot, download, compiler, PowerBI, SDK, call or tenant execution."
        },
        {
          "affected_exams": [
            "AB-250"
          ],
          "url": "https://learn.microsoft.com/en-us/microsoft-copilot-studio/voice-sip-x-header",
          "actual_read_scope": "Incoming parse/schema/lowercase-prefix and outgoing transfer, lines33–188",
          "observation": "Five headers, incoming lowercase x-prefix and outgoing receiver case, Conversation.SipXHeader parse/global scope and transfer properties match.",
          "confidence": "high for observed primary text; bounded to declared scope",
          "limits": "Textual independent review only; no screenshot, download, compiler, PowerBI, SDK, call or tenant execution."
        },
        {
          "affected_exams": [
            "AB-250"
          ],
          "url": "https://learn.microsoft.com/en-us/microsoft-copilot-studio/voice-dtmf",
          "actual_read_scope": "Trigger creation, Question mapping and test/precedence, lines33–139",
          "observation": "Classic menu, explicit DTMF test command, single-key global trigger and Question precedence match.",
          "confidence": "high for observed primary text; bounded to declared scope",
          "limits": "Textual independent review only; no screenshot, download, compiler, PowerBI, SDK, call or tenant execution."
        },
        {
          "affected_exams": [
            "AB-250"
          ],
          "url": "https://learn.microsoft.com/en-us/dynamics365/customer-service/develop/reference/methods/getfocusedsession",
          "actual_read_scope": "Method/return/example, lines32–46",
          "observation": "Synchronous focused-session object with sessionId; guide distinguishes conversation identity.",
          "confidence": "high for observed primary text; bounded to declared scope",
          "limits": "Textual independent review only; no screenshot, download, compiler, PowerBI, SDK, call or tenant execution."
        },
        {
          "affected_exams": [
            "AB-250"
          ],
          "url": "https://learn.microsoft.com/en-us/dynamics365/customer-service/develop/reference/methods/getconversationid",
          "actual_read_scope": "Method/return, lines30–46",
          "observation": "Returns promise for conversation GUID; guide correctly awaits it and separates session IDs.",
          "confidence": "high for observed primary text; bounded to declared scope",
          "limits": "Textual independent review only; no screenshot, download, compiler, PowerBI, SDK, call or tenant execution."
        },
        {
          "affected_exams": [
            "MB-820"
          ],
          "url": "https://learn.microsoft.com/en-us/dynamics365/business-central/dev-itpro/developer/devenv-xmlport-object",
          "actual_read_scope": "Intro, invocation and schema example, lines31–157",
          "observation": "Page/codeunit invocation and root text/table/field node construction agree with original design path.",
          "confidence": "high for observed primary text; bounded to declared scope",
          "limits": "Textual independent review only; no screenshot, download, compiler, PowerBI, SDK, call or tenant execution."
        },
        {
          "affected_exams": [
            "MB-820"
          ],
          "url": "https://learn.microsoft.com/en-us/dynamics365/business-central/dev-itpro/developer/devenv-query-object",
          "actual_read_scope": "Creation and lower-item join contract, lines31–95",
          "observation": "Nested dataitems and lower DataItemLink/SqlJoinType match.",
          "confidence": "high for observed primary text; bounded to declared scope",
          "limits": "Textual independent review only; no screenshot, download, compiler, PowerBI, SDK, call or tenant execution."
        },
        {
          "affected_exams": [
            "MB-820"
          ],
          "url": "https://learn.microsoft.com/en-us/dynamics365/business-central/dev-itpro/developer/devenv-substituting-reports",
          "actual_read_scope": "Extensibility, subscriber, invocation and coexistence, lines31–88",
          "observation": "ReportManagement event, var NewReportId, compatible calling contract and prior substitution check match.",
          "confidence": "high for observed primary text; bounded to declared scope",
          "limits": "Textual independent review only; no screenshot, download, compiler, PowerBI, SDK, call or tenant execution."
        },
        {
          "affected_exams": [
            "MB-820"
          ],
          "url": "https://learn.microsoft.com/en-us/dynamics365/business-central/dev-itpro/developer/devenv-instrument-application-for-telemetry-app-insights",
          "actual_read_scope": "Scope/signatures/parameters and privacy/trace conditions, lines31–104 and128–193",
          "observation": "Session.LogMessage event/scope/dimensions and SystemMetadata-only emission rules support guide; on-prem trace level separate.",
          "confidence": "high for observed primary text; bounded to declared scope",
          "limits": "Textual independent review only; no screenshot, download, compiler, PowerBI, SDK, call or tenant execution."
        },
        {
          "affected_exams": [
            "AB-250"
          ],
          "url": "https://learn.microsoft.com/en-us/dynamics365/contact-center/extend/api/record-transcription-api",
          "actual_read_scope": "Available API methods and linked contract, lines31–40",
          "observation": "First-party entry point links voice methods; distinguishes recording/transcription operations and callbacks.",
          "confidence": "high for observed primary text; bounded to declared scope",
          "limits": "Textual independent review only; no screenshot, download, compiler, PowerBI, SDK, call or tenant execution."
        },
        {
          "affected_exams": [
            "AB-250"
          ],
          "url": "https://github.com/microsoft/dynamics-365-contact-center/blob/main/documentation/CCaaS%20SDK%20APIs/classes/VoiceModule.md",
          "actual_read_scope": "Rendered contract method availability and full voice API text, lines173–354",
          "observation": "Standalone pauseRecording Promise<void>, completion callback subscription ID and recording includes transcription support guide invocation subset.",
          "confidence": "high for observed primary text; bounded to declared scope",
          "limits": "Textual independent review only; no screenshot, download, compiler, PowerBI, SDK, call or tenant execution."
        },
        {
          "affected_exams": [
            "AB-250"
          ],
          "url": "https://github.com/microsoft/dynamics-365-contact-center/blob/main/documentation/CCaaS%20SDK%20APIs/interfaces/IRecordingOperationCompletedEventData.md",
          "actual_read_scope": "Complete rendered interface, lines172–224",
          "observation": "Conversation/transaction/result/current/desired fields and paused state match guide. No SDK execution.",
          "confidence": "high for observed primary text; bounded to declared scope",
          "limits": "Textual independent review only; no screenshot, download, compiler, PowerBI, SDK, call or tenant execution."
        },
        {
          "affected_exams": [
            "AB-250"
          ],
          "url": "https://learn.microsoft.com/en-us/azure/communication-services/acs-retirement-and-breaking-changes-guide",
          "actual_read_scope": "Retiring-service resource-date restriction lines65–82; number-management FAQ304–329; selected find matches",
          "observation": "Resource-before-Oct23 criterion differs from existing-number FAQ. Contradictory eligibility remains; no inference that older empty resource qualifies.",
          "confidence": "high for observed primary text; bounded to declared scope",
          "limits": "Textual independent review only; no screenshot, download, compiler, PowerBI, SDK, call or tenant execution."
        },
        {
          "affected_exams": [
            "AB-250"
          ],
          "url": "https://learn.microsoft.com/en-us/dynamics365/contact-center/administer/migrate-from-azure-communication-services",
          "actual_read_scope": "Impact, schedule and phone numbers, lines31–75",
          "observation": "ContactCenter plan still says Sep30 acquisition date and existing-resource eligibility, with Sep2028 support. Matches conflict disclosure.",
          "confidence": "high for observed primary text; bounded to declared scope",
          "limits": "Textual independent review only; no screenshot, download, compiler, PowerBI, SDK, call or tenant execution."
        },
        {
          "affected_exams": [
            "AB-250"
          ],
          "url": "https://learn.microsoft.com/en-us/dynamics365/contact-center/implement/deprecations-contact-center",
          "actual_read_scope": "ACS restrictions, forecasting, Apple and surveys, lines31–56",
          "observation": "Ledger says Sep23 acquisition, Oct30 forecast removal, Sep30 Apple configuration removal; supports retained contradiction.",
          "confidence": "high for observed primary text; bounded to declared scope",
          "limits": "Textual independent review only; no screenshot, download, compiler, PowerBI, SDK, call or tenant execution."
        },
        {
          "affected_exams": [
            "AB-250"
          ],
          "url": "https://learn.microsoft.com/en-us/dynamics365/customer-service/develop/reference/methods/startchat",
          "actual_read_scope": "Method, readiness event/context override and syntax, lines31–59",
          "observation": "lcw:ready then startChat; customContext overrides provider. Matches.",
          "confidence": "high for observed primary text; bounded to declared scope",
          "limits": "Textual independent review only; no screenshot, download, compiler, PowerBI, SDK, call or tenant execution."
        },
        {
          "affected_exams": [
            "AB-250"
          ],
          "url": "https://learn.microsoft.com/en-us/dynamics365/customer-service/develop/render-live-chat-widget-mobile",
          "actual_read_scope": "Native versus WebView sections31–58; erroneous opening snippet and limitations59–114",
          "observation": "Native SDK preference/authenticated persistent chat/code styling and reduced WebView support match. Confirmed opening narrative startChat versus snippet closeChat mismatch.",
          "confidence": "high for observed primary text; bounded to declared scope",
          "limits": "Textual independent review only; no screenshot, download, compiler, PowerBI, SDK, call or tenant execution."
        },
        {
          "affected_exams": [
            "AB-250"
          ],
          "url": "https://github.com/microsoft/ContactCenterMessagingSDK-android",
          "actual_read_scope": "Selected README initialization/auth/start/reconnect sections501–615 and version-path context366–491; selected event usage1175–1186",
          "observation": "initialize then StartChatRequestBuilder/startChat and reconnect context support minimal lifecycle worksheet. Complete repository and build not reviewed.",
          "confidence": "high for observed primary text; bounded to declared scope",
          "limits": "Textual independent review only; no screenshot, download, compiler, PowerBI, SDK, call or tenant execution."
        },
        {
          "affected_exams": [
            "AB-250"
          ],
          "url": "https://learn.microsoft.com/en-us/dynamics365/contact-center/extend/intro-messaging-apis",
          "actual_read_scope": "Complete substantive overview/protocol/auth/endpoints, lines31–89",
          "observation": "Backend HTTPS Entra token/channel/org headers, conversation create then event/webhook operations match. Client SDK boundary explicit.",
          "confidence": "high for observed primary text; bounded to declared scope",
          "limits": "Textual independent review only; no screenshot, download, compiler, PowerBI, SDK, call or tenant execution."
        },
        {
          "affected_exams": [
            "AB-250"
          ],
          "url": "https://learn.microsoft.com/en-us/microsoft-copilot-studio/voice-configuration",
          "actual_read_scope": "Basic voice enablement/modality/channel distinctions, lines34–60",
          "observation": "Basic/classic Speech&DTMF authoring and separate Telephony channel dependency match.",
          "confidence": "high for observed primary text; bounded to declared scope",
          "limits": "Textual independent review only; no screenshot, download, compiler, PowerBI, SDK, call or tenant execution."
        },
        {
          "affected_exams": [
            "SC-500"
          ],
          "url": "https://learn.microsoft.com/en-us/azure/defender-for-cloud/release-notes",
          "actual_read_scope": "October preview/GA sections43–112; billing125–164; full-page literal searches Foundational/October27",
          "observation": "Searches return no prior CSPM opt-in announcement; omission does not establish actual default. October plan/KSPM and November billing distinctions agree. Source gate stays blocked.",
          "confidence": "high for observed primary text; bounded to declared scope",
          "limits": "Textual independent review only; no screenshot, download, compiler, PowerBI, SDK, call or tenant execution."
        },
        {
          "affected_exams": [
            "MB-820"
          ],
          "url": "https://learn.microsoft.com/en-us/dynamics365/business-central/dev-itpro/developer/devenv-testing-application",
          "actual_read_scope": "Testing support matrix/test runner/UI handlers, lines31–84",
          "observation": "Online production disallowed, bounded sandbox runs and container default for large CI suites match.",
          "confidence": "high for observed primary text; bounded to declared scope",
          "limits": "Textual independent review only; no screenshot, download, compiler, PowerBI, SDK, call or tenant execution."
        },
        {
          "affected_exams": [
            "MB-820"
          ],
          "url": "https://learn.microsoft.com/en-us/dynamics365/business-central/dev-itpro/developer/devenv-report-dataset",
          "actual_read_scope": "Dataset, query-as-source and raw-data test, lines32–77",
          "observation": "Query-backed report needs explicit dataset iteration; model-grain reconciliation remains appropriate.",
          "confidence": "high for observed primary text; bounded to declared scope",
          "limits": "Textual independent review only; no screenshot, download, compiler, PowerBI, SDK, call or tenant execution."
        },
        {
          "affected_exams": [
            "MB-820"
          ],
          "url": "https://learn.microsoft.com/en-us/dynamics365/business-central/dev-itpro/developer/devenv-report-object",
          "actual_read_scope": "Purpose, syntax order and layout definitions, lines31–105",
          "observation": "Dataset/requestpage/rendering/code order and report versus processing-only/layout distinctions match.",
          "confidence": "high for observed primary text; bounded to declared scope",
          "limits": "Textual independent review only; no screenshot, download, compiler, PowerBI, SDK, call or tenant execution."
        }
      ],
      "source_gate_conclusion": {
        "SC-500": "blocked; missing prior CSPM announcement does not prove rollout/cancellation",
        "AB-250": "blocked; date/resource/existing-number criteria conflict"
      },
      "count": 34
    },
    "coordinator_resolution": "All four A teaching findings and B systematic binding finding resolved using separate final verification; original findings preserved."
  },
  "preservation": {
    "old_source_reviews_retained": 319,
    "old_deep_receipts_retained": 196,
    "old_ai_audit_batches_retained": 42,
    "historical_records": "All original values unchanged; AI-audit file byte-identical. No path migration.",
    "unchanged_objective_and_status_files": 20,
    "current_guide_bindings": 10,
    "current_objectives": 784,
    "current_teaching_spans": 1126
  }
}
