suite: mcf-1.1
specification: spec/MCF.md
error_catalog: conformance/error-codes.yaml
diagnostic_cases: conformance/diagnostic-cases.yaml
question_cases: conformance/question-cases.yaml
activity_cases: conformance/activity-cases.yaml
language_cases: conformance/language-cases.yaml
relationship_cases: conformance/relationship-cases.yaml
asset_cases: conformance/asset-cases.yaml
yaml_cases: conformance/yaml-cases.yaml
rich_content_cases: conformance/rich-content-cases.yaml
question_reference_cases: conformance/question-reference-cases.yaml
capability_cases: conformance/capability-cases.yaml
roundtrip:
  - path: fixtures/roundtrip/extensions.yaml
    description: "Unknown optional extension data survives a deterministic writer round trip."
valid:
  - path: fixtures/archives/valid-lesson.mcf.zip
    description: "Canonical valid distributable archive."
  - path: fixtures/valid/1.0/minimal
    description: "Canonical minimal MCF 1.0 compatibility package."
  - path: fixtures/valid/1.0/feature-showcase
    description: "Canonical MCF 1.0 core-feature compatibility package."
  - path: courses/minimal
    description: "Smallest useful MCF 1.1 course."
  - path: courses/feature-showcase
    description: "MCF 1.1 course exercising core capabilities."
  - path: courses/calculus-i
    description: "Comprehensive MCF 1.1 reference course."
  - path: fixtures/valid/module
    description: "Standalone module package."
  - path: fixtures/valid/lesson
    description: "Standalone lesson package."
  - path: fixtures/valid/question-bank
    description: "Standalone reusable question bank."
  - path: fixtures/valid/asset-collection
    description: "Standalone attributed asset collection."
invalid:
  - path: fixtures/archives/missing-manifest.mcf.zip
    expected:
      - MCF_PACKAGE_ENTRY_MISSING
  - path: fixtures/archives/path-traversal.mcf.zip
    expected:
      - MCF_PATH_TRAVERSAL
  - path: fixtures/archives/duplicate-entry.mcf.zip
    expected:
      - MCF_ARCHIVE_INVALID
  - path: fixtures/archives/special-entry.mcf.zip
    expected:
      - MCF_ARCHIVE_INVALID
  - path: fixtures/archives/limit-exceeded.mcf.zip
    expected:
      - MCF_ARCHIVE_LIMIT_EXCEEDED
  - path: fixtures/invalid/unsupported-version
    expected:
      - MCF_VERSION_UNSUPPORTED
  - path: fixtures/invalid/missing-title
    expected:
      - MCF_SCHEMA_INVALID
  - path: fixtures/invalid/path-traversal
    expected:
      - MCF_PATH_TRAVERSAL
  - path: fixtures/invalid/duplicate-option
    expected:
      - MCF_QUESTION_DUPLICATE_OPTION_ID
  - path: fixtures/invalid/invalid-answer-reference
    expected:
      - MCF_QUESTION_ANSWER_REFERENCE_INVALID
  - path: fixtures/invalid/malformed-activity
    expected:
      - MCF_ACTIVITY_UNTERMINATED
  - path: fixtures/invalid/unresolved-rubric
    expected:
      - MCF_RUBRIC_REFERENCE_UNRESOLVED
  - path: fixtures/invalid/invalid-extension-name
    expected:
      - MCF_EXTENSION_NAME_INVALID
