{
  "launcher": "0.1.42",
  "cli": "0.1.25",
  "runtime": "http://127.0.0.1:18068",
  "namespace": "chinook-composition",
  "identity": "anonymous local dev/test; Console/FAP disabled",
  "passed": [
    {
      "case": "163-inline-control",
      "rows": 47,
      "requestSha256": "ad27021b2a01959d4d765163abb9ab000c63efda64f4c511e16b405b1064e046",
      "expectedRowsChecked": true
    },
    {
      "case": "164-original-base",
      "rows": 47,
      "requestSha256": "a03858c4e4b851778237097c0085eb7d5fc16b4e35d7878b04c18164044f1a2e",
      "expectedRowsChecked": true
    },
    {
      "case": "164-query-control",
      "rows": 47,
      "requestSha256": "f6a18ed8fd9a8569f38c44bb51f163540319c5163b2b7883cfd5400fa813f891",
      "expectedRowsChecked": true
    },
    {
      "case": "164-original-join",
      "rows": 47,
      "requestSha256": "fc0eaf1ce8e4785d697a8f681e4f7122cd3af9831088df1c8b0fde3513f34d22",
      "expectedRowsChecked": true
    },
    {
      "case": "163-query-empty",
      "rows": 47,
      "requestSha256": "1972ec65fe2d69ae0dc6e575401eda26871ed7bbe3f15bea17a6bde740019af3",
      "expectedRowsChecked": true
    },
    {
      "case": "163-query-null",
      "rows": 47,
      "requestSha256": "72addc0cd3442367a4e3736a2e432a895ce3f5698f1db9312cae37bad9f735f6",
      "expectedRowsChecked": true
    },
    {
      "case": "163-model-empty",
      "rows": 47,
      "requestSha256": "e40685a197b5489235065c0b7997c06490d54db09cfa7e176594e356e824104c",
      "expectedRowsChecked": true
    },
    {
      "case": "163-model-null",
      "rows": 47,
      "requestSha256": "38fc0bf27a60ab380e030fb55f4e71395bc71e06a8b0e5e7ba66cb57502ad66e",
      "expectedRowsChecked": true
    },
    {
      "case": "163-source-empty",
      "rows": 47,
      "requestSha256": "e3d123e391386646b92b58ed35424ce900aa4cacba410394ac264e638eb1825f",
      "expectedRowsChecked": true
    },
    {
      "case": "163-source-null",
      "rows": 47,
      "requestSha256": "2870967be7b69956927ac81e360c62ad46997cddb8e618572609b804f3fa8a94",
      "expectedRowsChecked": true
    },
    {
      "case": "164-derived-and-alias-filter",
      "rows": 20,
      "requestSha256": "2e08a1f21cb29df15f078d15c2f6cddcb3354ff07eb0e03174cdef40a7f217d6",
      "expectedRowsChecked": true
    },
    {
      "case": "chapter26-01-invoice-totals",
      "rows": 47,
      "requestSha256": "03fdf004076f146fb0a90432f5a7e8befb391869274055745bb9f288d2ce7aae",
      "expectedRowsChecked": true
    },
    {
      "case": "chapter26-02-qualified-customers",
      "rows": 20,
      "requestSha256": "bc5bd10b6a6aabd54d72023f7edc5c95309f83e045408700a543ad1dd44925c0",
      "expectedRowsChecked": true
    },
    {
      "case": "chapter26-03-qualified-with-names",
      "rows": 20,
      "requestSha256": "4372fcac053e9930c5b1f37ff2040f11595da17851aea10b6f6ca61d0c9083cb",
      "expectedRowsChecked": true
    },
    {
      "case": "chapter26-04-all-customers-left",
      "rows": 59,
      "requestSha256": "c6c6431bbf8bf2d3b97af58e4e3aa08e63ebfe153e642390391746483851dbf5",
      "expectedRowsChecked": true
    },
    {
      "case": "chapter26-05-empty-selection",
      "rows": 0,
      "requestSha256": "b024e20c1a7ea50d6c2ac324dd255bc31c4a6416b4d24289ca21f51cdaba5892",
      "expectedRowsChecked": true
    },
    {
      "case": "chapter27-01-bill-aggregates",
      "rows": 47,
      "requestSha256": "eed8d3ff97158486704a12f9f66c465012d225184241b1de6734d7d1ebd80eb3",
      "expectedRowsChecked": true
    },
    {
      "case": "chapter27-02-line-aggregates",
      "rows": 47,
      "requestSha256": "545ab6cc5f75f3a0155ed022883db367d36cace6931eb0d4fc5b222daf7d9064",
      "expectedRowsChecked": true
    },
    {
      "case": "chapter27-03-reconcile-customers",
      "rows": 47,
      "requestSha256": "ae549c02f3af904d8dd98cf067e7c176edf3f162474c1f7d5e0b4f664d3f4faa",
      "expectedRowsChecked": true
    },
    {
      "case": "chapter27-04-amount-differences",
      "rows": 0,
      "requestSha256": "340637ae30dc02c8ce4467014415ed90d25c40b70cd0cebbcddfda125841b772",
      "expectedRowsChecked": true
    },
    {
      "case": "chapter27-05-bills-without-lines",
      "rows": 0,
      "requestSha256": "66d1bdc3a482f103175a2a0f410c4a5724b2a90bd29e0781bb7ff9a9b85a672a",
      "expectedRowsChecked": true
    },
    {
      "case": "chapter27-06-lines-without-bills",
      "rows": 0,
      "requestSha256": "e54d9d315b16dfa1db013d083637a60974e1549e097b8b6076a33e52ba3aa09d",
      "expectedRowsChecked": true
    },
    {
      "case": "chapter27-07-mismatched-period-all",
      "rows": 47,
      "requestSha256": "8617e777cfab92b86498fdedc10740c0f5a2124d40a9a9594de5cd7eaecdc7c3",
      "expectedRowsChecked": true
    },
    {
      "case": "chapter27-08-mismatched-period-differences",
      "rows": 5,
      "requestSha256": "9fa02e3ba33699315910e8f010d8c19044d963fc529224fafa1ffa3887c05110",
      "expectedRowsChecked": true
    },
    {
      "case": "chapter27-09-mismatched-period-missing",
      "rows": 40,
      "requestSha256": "0ec90a11f73e18617dd6ecfcee2bec5cfd385c048c789ec807ade859090d5a4f",
      "expectedRowsChecked": true
    },
    {
      "case": "chapter27-10-reverse-period-missing",
      "rows": 40,
      "requestSha256": "dec10de381572c2cf41dbdfbcd898d56ddc324cbcdc765f7813f97427490c206",
      "expectedRowsChecked": true
    }
  ],
  "expectedRejections": [
    {
      "case": "163-original",
      "error": {
        "code": "COMPOSE_SCRIPT_INVALID",
        "field": "calculatedFields",
        "message": "DERIVED_PARAMETER_UNSUPPORTED: query.calculatedFields is not supported for derived plans; only null or an empty array is accepted",
        "path": "query.calculatedFields",
        "phase": "compose.validate",
        "safeToAutoRepair": false,
        "suggestedNextAction": "Project supported expressions in columns with AS aliases; add another .query(...) stage for filtering the new aliases."
      },
      "diagnostics": {
        "attributes": {
          "composeErrorCode": "DERIVED_PARAMETER_UNSUPPORTED",
          "composeErrorPhase": "plan-build",
          "datasourceType": "sqlite",
          "defaultDialect": "sqlite",
          "dialectSource": "namespace-datasource-type",
          "namespace": "chinook-composition",
          "namespaceDatasourceId": "chinook-composition-sqlite",
          "namespaceDatasourceStatus": "active",
          "parameter": "calculatedFields",
          "path": "query.calculatedFields",
          "resolvedDialect": "sqlite",
          "safeToAutoRepair": false,
          "suggestedNextAction": "Project supported expressions in columns with AS aliases; add another .query(...) stage for filtering the new aliases.",
          "supportedAlternative": "columns expression AS alias, followed by .query({slice: [...]}) if needed"
        },
        "warnings": []
      },
      "executed": false
    },
    {
      "case": "163-original-join",
      "error": {
        "code": "COMPOSE_SCRIPT_INVALID",
        "field": "calculatedFields",
        "message": "DERIVED_PARAMETER_UNSUPPORTED: query.calculatedFields is not supported for derived plans; only null or an empty array is accepted",
        "path": "query.calculatedFields",
        "phase": "compose.validate",
        "safeToAutoRepair": false,
        "suggestedNextAction": "Project supported expressions in columns with AS aliases; add another .query(...) stage for filtering the new aliases."
      },
      "diagnostics": {
        "attributes": {
          "composeErrorCode": "DERIVED_PARAMETER_UNSUPPORTED",
          "composeErrorPhase": "plan-build",
          "datasourceType": "sqlite",
          "defaultDialect": "sqlite",
          "dialectSource": "namespace-datasource-type",
          "namespace": "chinook-composition",
          "namespaceDatasourceId": "chinook-composition-sqlite",
          "namespaceDatasourceStatus": "active",
          "parameter": "calculatedFields",
          "path": "query.calculatedFields",
          "resolvedDialect": "sqlite",
          "safeToAutoRepair": false,
          "suggestedNextAction": "Project supported expressions in columns with AS aliases; add another .query(...) stage for filtering the new aliases.",
          "supportedAlternative": "columns expression AS alias, followed by .query({slice: [...]}) if needed"
        },
        "warnings": []
      },
      "executed": false
    },
    {
      "case": "163-query-calculatedFields",
      "error": {
        "code": "COMPOSE_SCRIPT_INVALID",
        "field": "calculatedFields",
        "message": "DERIVED_PARAMETER_UNSUPPORTED: query.calculatedFields is not supported for derived plans; only null or an empty array is accepted",
        "path": "query.calculatedFields",
        "phase": "compose.validate",
        "safeToAutoRepair": false,
        "suggestedNextAction": "Project supported expressions in columns with AS aliases; add another .query(...) stage for filtering the new aliases."
      },
      "diagnostics": {
        "attributes": {
          "composeErrorCode": "DERIVED_PARAMETER_UNSUPPORTED",
          "composeErrorPhase": "plan-build",
          "datasourceType": "sqlite",
          "defaultDialect": "sqlite",
          "dialectSource": "namespace-datasource-type",
          "namespace": "chinook-composition",
          "namespaceDatasourceId": "chinook-composition-sqlite",
          "namespaceDatasourceStatus": "active",
          "parameter": "calculatedFields",
          "path": "query.calculatedFields",
          "resolvedDialect": "sqlite",
          "safeToAutoRepair": false,
          "suggestedNextAction": "Project supported expressions in columns with AS aliases; add another .query(...) stage for filtering the new aliases.",
          "supportedAlternative": "columns expression AS alias, followed by .query({slice: [...]}) if needed"
        },
        "warnings": []
      },
      "executed": false
    },
    {
      "case": "163-query-having",
      "error": {
        "code": "COMPOSE_SCRIPT_INVALID",
        "field": "having",
        "message": "DERIVED_PARAMETER_UNSUPPORTED: query.having is not supported for derived plans; only null or an empty array is accepted",
        "path": "query.having",
        "phase": "compose.validate",
        "safeToAutoRepair": false,
        "suggestedNextAction": "Filter aggregate results in another .query({slice: [...]}) stage."
      },
      "diagnostics": {
        "attributes": {
          "composeErrorCode": "DERIVED_PARAMETER_UNSUPPORTED",
          "composeErrorPhase": "plan-build",
          "datasourceType": "sqlite",
          "defaultDialect": "sqlite",
          "dialectSource": "namespace-datasource-type",
          "namespace": "chinook-composition",
          "namespaceDatasourceId": "chinook-composition-sqlite",
          "namespaceDatasourceStatus": "active",
          "parameter": "having",
          "path": "query.having",
          "resolvedDialect": "sqlite",
          "safeToAutoRepair": false,
          "suggestedNextAction": "Filter aggregate results in another .query({slice: [...]}) stage.",
          "supportedAlternative": ".query({slice: [...]})"
        },
        "warnings": []
      },
      "executed": false
    },
    {
      "case": "163-model-calculatedFields",
      "error": {
        "code": "COMPOSE_SCRIPT_INVALID",
        "field": "calculatedFields",
        "message": "DERIVED_PARAMETER_UNSUPPORTED: dsl.calculatedFields is not supported for derived plans; only null or an empty array is accepted",
        "path": "dsl.calculatedFields",
        "phase": "compose.validate",
        "safeToAutoRepair": false,
        "suggestedNextAction": "Project supported expressions in columns with AS aliases; add another .query(...) stage for filtering the new aliases."
      },
      "diagnostics": {
        "attributes": {
          "composeErrorCode": "DERIVED_PARAMETER_UNSUPPORTED",
          "composeErrorPhase": "plan-build",
          "datasourceType": "sqlite",
          "defaultDialect": "sqlite",
          "dialectSource": "namespace-datasource-type",
          "namespace": "chinook-composition",
          "namespaceDatasourceId": "chinook-composition-sqlite",
          "namespaceDatasourceStatus": "active",
          "parameter": "calculatedFields",
          "path": "dsl.calculatedFields",
          "resolvedDialect": "sqlite",
          "safeToAutoRepair": false,
          "suggestedNextAction": "Project supported expressions in columns with AS aliases; add another .query(...) stage for filtering the new aliases.",
          "supportedAlternative": "columns expression AS alias, followed by .query({slice: [...]}) if needed"
        },
        "warnings": []
      },
      "executed": false
    },
    {
      "case": "163-model-having",
      "error": {
        "code": "COMPOSE_SCRIPT_INVALID",
        "field": "having",
        "message": "DERIVED_PARAMETER_UNSUPPORTED: dsl.having is not supported for derived plans; only null or an empty array is accepted",
        "path": "dsl.having",
        "phase": "compose.validate",
        "safeToAutoRepair": false,
        "suggestedNextAction": "Filter aggregate results in another .query({slice: [...]}) stage."
      },
      "diagnostics": {
        "attributes": {
          "composeErrorCode": "DERIVED_PARAMETER_UNSUPPORTED",
          "composeErrorPhase": "plan-build",
          "datasourceType": "sqlite",
          "defaultDialect": "sqlite",
          "dialectSource": "namespace-datasource-type",
          "namespace": "chinook-composition",
          "namespaceDatasourceId": "chinook-composition-sqlite",
          "namespaceDatasourceStatus": "active",
          "parameter": "having",
          "path": "dsl.having",
          "resolvedDialect": "sqlite",
          "safeToAutoRepair": false,
          "suggestedNextAction": "Filter aggregate results in another .query({slice: [...]}) stage.",
          "supportedAlternative": ".query({slice: [...]})"
        },
        "warnings": []
      },
      "executed": false
    },
    {
      "case": "163-source-calculatedFields",
      "error": {
        "code": "COMPOSE_SCRIPT_INVALID",
        "field": "calculatedFields",
        "message": "DERIVED_PARAMETER_UNSUPPORTED: dsl.calculatedFields is not supported for derived plans; only null or an empty array is accepted",
        "path": "dsl.calculatedFields",
        "phase": "compose.validate",
        "safeToAutoRepair": false,
        "suggestedNextAction": "Project supported expressions in columns with AS aliases; add another .query(...) stage for filtering the new aliases."
      },
      "diagnostics": {
        "attributes": {
          "composeErrorCode": "DERIVED_PARAMETER_UNSUPPORTED",
          "composeErrorPhase": "plan-build",
          "datasourceType": "sqlite",
          "defaultDialect": "sqlite",
          "dialectSource": "namespace-datasource-type",
          "namespace": "chinook-composition",
          "namespaceDatasourceId": "chinook-composition-sqlite",
          "namespaceDatasourceStatus": "active",
          "parameter": "calculatedFields",
          "path": "dsl.calculatedFields",
          "resolvedDialect": "sqlite",
          "safeToAutoRepair": false,
          "suggestedNextAction": "Project supported expressions in columns with AS aliases; add another .query(...) stage for filtering the new aliases.",
          "supportedAlternative": "columns expression AS alias, followed by .query({slice: [...]}) if needed"
        },
        "warnings": []
      },
      "executed": false
    },
    {
      "case": "163-source-having",
      "error": {
        "code": "COMPOSE_SCRIPT_INVALID",
        "field": "having",
        "message": "DERIVED_PARAMETER_UNSUPPORTED: dsl.having is not supported for derived plans; only null or an empty array is accepted",
        "path": "dsl.having",
        "phase": "compose.validate",
        "safeToAutoRepair": false,
        "suggestedNextAction": "Filter aggregate results in another .query({slice: [...]}) stage."
      },
      "diagnostics": {
        "attributes": {
          "composeErrorCode": "DERIVED_PARAMETER_UNSUPPORTED",
          "composeErrorPhase": "plan-build",
          "datasourceType": "sqlite",
          "defaultDialect": "sqlite",
          "dialectSource": "namespace-datasource-type",
          "namespace": "chinook-composition",
          "namespaceDatasourceId": "chinook-composition-sqlite",
          "namespaceDatasourceStatus": "active",
          "parameter": "having",
          "path": "dsl.having",
          "resolvedDialect": "sqlite",
          "safeToAutoRepair": false,
          "suggestedNextAction": "Filter aggregate results in another .query({slice: [...]}) stage.",
          "supportedAlternative": ".query({slice: [...]})"
        },
        "warnings": []
      },
      "executed": false
    }
  ],
  "modelsAndDatabaseUnchanged": true,
  "originalFilesUnchanged": true,
  "oracle": {
    "source": "read-only raw Invoice rows; Decimal per-customer totals",
    "customers": 47,
    "amount": "477.53"
  },
  "cleanSeparateCodexConversationTested": false
}
