{
  "version": "2026-08-18.1",
  "rules": [
    {
      "id": "RULE-BLOCKED-NO-CORPUS",
      "kind": "decision",
      "priority": 10,
      "outcomeId": "BLOCKED",
      "when": {
        "all": [{"criterionId": "authoritative_corpus", "operator": "equals", "value": "no"}],
        "any": [
          {"criterionId": "fresh_facts", "operator": "equals", "value": "yes"},
          {"criterionId": "source_citations", "operator": "equals", "value": "yes"}
        ]
      },
      "disqualifiers": ["NO_AUTHORITATIVE_CORPUS"],
      "rejectedOutcomes": ["RAG", "HYBRID", "FINE_TUNING"],
      "nextSteps": ["Identify an authoritative, permissioned corpus and an owner for updates before selecting a knowledge architecture."],
      "sourceIds": ["SOURCE-MICROSOFT-RAG-VS-FT", "SOURCE-RAG-PAPER"],
      "claimIds": ["CLAIM-RAG-FRESHNESS-FIT", "CLAIM-CORPUS-QUALITY"]
    },
    {
      "id": "RULE-INSUFFICIENT-UNKNOWN-CORE",
      "kind": "decision",
      "priority": 20,
      "outcomeId": "INSUFFICIENT_EVIDENCE",
      "when": {
        "any": [
          {"criterionId": "fresh_facts", "operator": "equals", "value": "unknown"},
          {"criterionId": "source_citations", "operator": "equals", "value": "unknown"},
          {"criterionId": "behavior_change", "operator": "equals", "value": "unknown"},
          {"criterionId": "representative_examples", "operator": "equals", "value": "unknown"},
          {"criterionId": "evaluation_set", "operator": "equals", "value": "unknown"},
          {"criterionId": "authoritative_corpus", "operator": "equals", "value": "unknown"},
          {"criterionId": "retrieval_operations", "operator": "equals", "value": "unknown"},
          {"criterionId": "training_operations", "operator": "equals", "value": "unknown"},
          {"criterionId": "stable_narrow_task", "operator": "equals", "value": "unknown"}
        ]
      },
      "nextSteps": ["Resolve every unknown core input with a named evidence owner before forcing an architecture choice."],
      "sourceIds": ["SOURCE-OPENAI-MODEL-OPTIMIZATION"],
      "claimIds": ["CLAIM-EVAL-FIRST"]
    },
    {
      "id": "RULE-INSUFFICIENT-NO-EVAL",
      "kind": "decision",
      "priority": 30,
      "outcomeId": "INSUFFICIENT_EVIDENCE",
      "when": {"all": [{"criterionId": "evaluation_set", "operator": "equals", "value": "no"}]},
      "disqualifiers": ["NO_EVALUATION_SET"],
      "nextSteps": ["Create a versioned task evaluation set and acceptance criteria, then compare candidates against the same baseline."],
      "sourceIds": ["SOURCE-OPENAI-MODEL-OPTIMIZATION"],
      "claimIds": ["CLAIM-EVAL-FIRST", "CLAIM-EXAMPLES-REQUIRED"]
    },
    {
      "id": "RULE-BASELINE-NO-EXAMPLES",
      "kind": "decision",
      "priority": 40,
      "outcomeId": "BASELINE_FIRST",
      "when": {
        "all": [
          {"criterionId": "behavior_change", "operator": "equals", "value": "yes"},
          {"criterionId": "representative_examples", "operator": "equals", "value": "no"}
        ]
      },
      "rejectedOutcomes": ["FINE_TUNING", "HYBRID"],
      "nextSteps": ["Establish a prompt baseline and collect permitted, representative failure and success examples before training."],
      "sourceIds": ["SOURCE-OPENAI-MODEL-OPTIMIZATION"],
      "claimIds": ["CLAIM-EXAMPLES-REQUIRED", "CLAIM-EVAL-FIRST"]
    },
    {
      "id": "RULE-BLOCKED-NO-RETRIEVAL-OPS",
      "kind": "decision",
      "priority": 50,
      "outcomeId": "BLOCKED",
      "when": {
        "all": [
          {"criterionId": "authoritative_corpus", "operator": "equals", "value": "yes"},
          {"criterionId": "retrieval_operations", "operator": "equals", "value": "no"}
        ],
        "any": [
          {"criterionId": "fresh_facts", "operator": "equals", "value": "yes"},
          {"criterionId": "source_citations", "operator": "equals", "value": "yes"}
        ]
      },
      "disqualifiers": ["NO_RETRIEVAL_OPERATING_PATH"],
      "rejectedOutcomes": ["RAG", "HYBRID"],
      "nextSteps": ["Assign ownership for ingestion, index freshness, retrieval evaluation, rollback, and access control."],
      "sourceIds": ["SOURCE-MICROSOFT-RAG-VS-FT"],
      "claimIds": ["CLAIM-CORPUS-QUALITY"]
    },
    {
      "id": "RULE-BLOCKED-NO-TRAINING-OPS",
      "kind": "decision",
      "priority": 60,
      "outcomeId": "BLOCKED",
      "when": {
        "all": [
          {"criterionId": "behavior_change", "operator": "equals", "value": "yes"},
          {"criterionId": "representative_examples", "operator": "equals", "value": "yes"},
          {"criterionId": "training_operations", "operator": "equals", "value": "no"}
        ]
      },
      "disqualifiers": ["NO_TRAINING_OPERATING_PATH"],
      "rejectedOutcomes": ["FINE_TUNING", "HYBRID"],
      "nextSteps": ["Assign ownership for datasets, model versions, regression evaluation, rollback, and provider lifecycle."],
      "sourceIds": ["SOURCE-OPENAI-MODEL-OPTIMIZATION"],
      "claimIds": ["CLAIM-EXAMPLES-REQUIRED", "CLAIM-EVAL-FIRST"]
    },
    {
      "id": "RULE-HYBRID-CANDIDATE",
      "kind": "decision",
      "priority": 70,
      "outcomeId": "HYBRID",
      "when": {
        "all": [
          {"criterionId": "behavior_change", "operator": "equals", "value": "yes"},
          {"criterionId": "representative_examples", "operator": "equals", "value": "yes"},
          {"criterionId": "authoritative_corpus", "operator": "equals", "value": "yes"},
          {"criterionId": "retrieval_operations", "operator": "equals", "value": "yes"},
          {"criterionId": "training_operations", "operator": "equals", "value": "yes"},
          {"criterionId": "stable_narrow_task", "operator": "equals", "value": "yes"}
        ],
        "any": [
          {"criterionId": "fresh_facts", "operator": "equals", "value": "yes"},
          {"criterionId": "source_citations", "operator": "equals", "value": "yes"}
        ]
      },
      "nextSteps": ["Test retrieval and behavior adaptation separately before testing the combined system; retain both rollback paths."],
      "sourceIds": ["SOURCE-RAFT-PAPER", "SOURCE-MICROSOFT-RAG-VS-FT"],
      "claimIds": ["CLAIM-HYBRID-PATTERN", "CLAIM-DUAL-OPERATIONS", "CLAIM-RAFT-SCOPE"]
    },
    {
      "id": "RULE-RAG-CANDIDATE",
      "kind": "decision",
      "priority": 80,
      "outcomeId": "RAG",
      "when": {
        "all": [
          {"criterionId": "authoritative_corpus", "operator": "equals", "value": "yes"},
          {"criterionId": "retrieval_operations", "operator": "equals", "value": "yes"}
        ],
        "any": [
          {"criterionId": "fresh_facts", "operator": "equals", "value": "yes"},
          {"criterionId": "source_citations", "operator": "equals", "value": "yes"}
        ]
      },
      "nextSteps": ["Build a retrieval baseline and evaluate passage relevance, claim support, answer quality, freshness, and recovery from stale indexes."],
      "sourceIds": ["SOURCE-RAG-PAPER", "SOURCE-MICROSOFT-RAG-VS-FT"],
      "claimIds": ["CLAIM-RAG-RUNTIME-RETRIEVAL", "CLAIM-RAG-FRESHNESS-FIT", "CLAIM-RAG-PROVENANCE"]
    },
    {
      "id": "RULE-FINE-TUNING-CANDIDATE",
      "kind": "decision",
      "priority": 90,
      "outcomeId": "FINE_TUNING",
      "when": {
        "all": [
          {"criterionId": "behavior_change", "operator": "equals", "value": "yes"},
          {"criterionId": "representative_examples", "operator": "equals", "value": "yes"},
          {"criterionId": "training_operations", "operator": "equals", "value": "yes"},
          {"criterionId": "stable_narrow_task", "operator": "equals", "value": "yes"}
        ],
        "none": [
          {"criterionId": "fresh_facts", "operator": "equals", "value": "yes"},
          {"criterionId": "source_citations", "operator": "equals", "value": "yes"}
        ]
      },
      "nextSteps": ["Compare prompt-only and fine-tuned candidates on target behavior, held-out examples, regressions, and rollback readiness."],
      "sourceIds": ["SOURCE-OPENAI-MODEL-OPTIMIZATION", "SOURCE-MICROSOFT-RAG-VS-FT", "SOURCE-LORA-PAPER"],
      "claimIds": ["CLAIM-FINE-TUNING-BEHAVIOR", "CLAIM-EXAMPLES-REQUIRED", "CLAIM-LORA-METHOD"]
    },
    {
      "id": "RULE-BASELINE-NO-PRIMARY-GAP",
      "kind": "decision",
      "priority": 100,
      "outcomeId": "BASELINE_FIRST",
      "when": {
        "all": [
          {"criterionId": "fresh_facts", "operator": "equals", "value": "no"},
          {"criterionId": "source_citations", "operator": "equals", "value": "no"},
          {"criterionId": "behavior_change", "operator": "equals", "value": "no"}
        ]
      },
      "nextSteps": ["Measure the current prompt or workflow baseline and document a specific failure class before adding architecture."],
      "sourceIds": ["SOURCE-OPENAI-MODEL-OPTIMIZATION"],
      "claimIds": ["CLAIM-EVAL-FIRST"]
    },
    {
      "id": "RULE-INSUFFICIENT-FALLBACK",
      "kind": "decision",
      "priority": 110,
      "outcomeId": "INSUFFICIENT_EVIDENCE",
      "when": {"all": [{"criterionId": "fresh_facts", "operator": "not_equals", "value": "unknown"}]},
      "nextSteps": ["Document which requirement, data asset, or operating capability prevents the available evidence from matching a candidate rule."],
      "sourceIds": ["SOURCE-OPENAI-MODEL-OPTIMIZATION", "SOURCE-PHAROS-GUIDE"],
      "claimIds": ["CLAIM-EVAL-FIRST"]
    },
    {
      "id": "ADVISORY-LEXICAL-RETRIEVAL",
      "kind": "advisory",
      "priority": 200,
      "when": {"all": [{"criterionId": "exact_term_retrieval", "operator": "equals", "value": "yes"}]},
      "nextSteps": ["Benchmark BM25 or another lexical path alongside embeddings, then evaluate fusion and reranking on exact-term failures."],
      "sourceIds": ["SOURCE-ANTHROPIC-CONTEXTUAL-RETRIEVAL"],
      "claimIds": ["CLAIM-LEXICAL-SEMANTIC", "CLAIM-RERANKING"]
    },
    {
      "id": "ADVISORY-CITATION-FAITHFULNESS",
      "kind": "advisory",
      "priority": 210,
      "when": {"all": [{"criterionId": "source_citations", "operator": "equals", "value": "yes"}]},
      "nextSteps": ["Evaluate whether each material generated claim is supported by its cited passage; do not treat citation presence as faithfulness."],
      "sourceIds": ["SOURCE-RAG-PAPER", "SOURCE-ANTHROPIC-CONTEXTUAL-RETRIEVAL"],
      "claimIds": ["CLAIM-RAG-PROVENANCE"]
    },
    {
      "id": "ADVISORY-RUNTIME-BENCHMARK",
      "kind": "advisory",
      "priority": 220,
      "when": {"all": [{"criterionId": "strict_runtime_budget", "operator": "equals", "value": "yes"}]},
      "nextSteps": ["Benchmark end-to-end latency and cost on the intended provider, corpus, traffic shape, and quality target."],
      "sourceIds": ["SOURCE-MICROSOFT-RAG-VS-FT", "SOURCE-OPENAI-MODEL-OPTIMIZATION"],
      "claimIds": ["CLAIM-RUNTIME-MEASUREMENT"]
    },
    {
      "id": "ADVISORY-PRIVACY-TOPOLOGY",
      "kind": "advisory",
      "priority": 230,
      "when": {"all": [{"criterionId": "privacy_topology", "operator": "equals", "value": "yes"}]},
      "nextSteps": ["Retain the verified data-flow map and recheck provider retention, training, access, and deletion controls before release."],
      "sourceIds": ["SOURCE-OPENAI-DATA-CONTROLS"],
      "claimIds": ["CLAIM-PRIVACY-TOPOLOGY"]
    },
    {
      "id": "ADVISORY-PRIVACY-UNRESOLVED",
      "kind": "advisory",
      "priority": 240,
      "when": {
        "any": [
          {"criterionId": "privacy_topology", "operator": "equals", "value": "no"},
          {"criterionId": "privacy_topology", "operator": "equals", "value": "unknown"}
        ]
      },
      "nextSteps": ["Map storage, retrieval, training, retention, access, and deletion paths; architecture labels alone do not establish privacy."],
      "sourceIds": ["SOURCE-OPENAI-DATA-CONTROLS", "SOURCE-MICROSOFT-RAG-VS-FT"],
      "claimIds": ["CLAIM-PRIVACY-TOPOLOGY"]
    },
    {
      "id": "ADVISORY-HYBRID-OPERATIONS",
      "kind": "advisory",
      "priority": 250,
      "when": {
        "all": [
          {"criterionId": "retrieval_operations", "operator": "equals", "value": "yes"},
          {"criterionId": "training_operations", "operator": "equals", "value": "yes"},
          {"criterionId": "behavior_change", "operator": "equals", "value": "yes"}
        ],
        "any": [
          {"criterionId": "fresh_facts", "operator": "equals", "value": "yes"},
          {"criterionId": "source_citations", "operator": "equals", "value": "yes"}
        ]
      },
      "nextSteps": ["Version the corpus, index, training dataset, base model, adapter or tuned model, and evaluation suite as separate release inputs."],
      "sourceIds": ["SOURCE-RAFT-PAPER"],
      "claimIds": ["CLAIM-HYBRID-PATTERN", "CLAIM-DUAL-OPERATIONS"]
    }
  ]
}
