{
  "schema_version": "1.0.0",
  "package_id": "W03",
  "title": "Discovery, Indexing, and Retrieval",
  "language": "en",
  "phase": "Observe",
  "essential_question": "Can the system obtain the source at all?",
  "research_cutoff": "2026-08-24",
  "status": "structurally_complete_authored_draft_human_review_and_timed_pilot_pending",
  "required_artifacts": [
    "README.md",
    "LECTURE_NOTES.md",
    "SLIDE_SCRIPT.md",
    "WORKED_CASE.md",
    "TRANSCRIPT.md",
    "manifest.json",
    "validate_package.py"
  ],
  "learning_outcomes": [
    "Separate discovery, fetching, representation, index membership, retrieval, reranking, context selection, and generation.",
    "Name a numerator, denominator, unit, conditioning set, and unknown state at each observable candidate-loss boundary.",
    "Trace an inverted index and reproduce BM25 under a declared tokenizer, corpus, convention, k1, and b.",
    "Compute Recall@k from declared qrels and distinguish a candidate miss from an ordering error.",
    "Analyze sparse, supplied opaque, and hybrid runs without inventing a model identity or closed-platform mechanism.",
    "Write separate bounded conclusions for an open sandbox and a closed surface observation."
  ],
  "time_design": {
    "status": "authoring_budgets_not_observed_delivery_times",
    "synchronous_seminar_minutes": 90,
    "synchronous_core_studio_minutes": 75,
    "asynchronous_core_minutes_min": 190,
    "asynchronous_core_minutes_max": 200,
    "transcript_equivalent_minutes_min": 35,
    "transcript_equivalent_minutes_max": 45,
    "full_lab_effort_hours": 7,
    "pilot_state": "not_taught_not_rehearsed_not_timed",
    "media_state": "no_video_or_audio_recording_exists"
  },
  "local_dependencies": [
    {
      "id": "COURSE-W03",
      "path": "course-site/app/lib/course-data.ts#W03",
      "role": "Authoritative current week title, essential question, outcomes, prerequisite, lab link, and open/closed boundary wording.",
      "boundary": "A curriculum record is not evidence that the lesson has been delivered or effective."
    },
    {
      "id": "NOTES-APP-F-BM25",
      "path": "notes-latex/appendices/f-prerequisite-bridges.tex#sec:bridge-bm25",
      "role": "Notation and conceptual alignment for positive-IDF BM25, dense and hybrid retrieval, and ranking metrics.",
      "boundary": "The bridge teaches inspectable arithmetic and interpretation; its synthetic examples are not platform results."
    },
    {
      "id": "LAB-L03",
      "path": "course-labs/L03_retrieval_reranking_sandbox",
      "role": "Deterministic offline fixture, code, qrels, runs, metric definitions, stage boundary, and reproducibility route.",
      "boundary": "Ten CC0 synthetic documents and three authored topics support course exercises only; no external validity or production-system effect is established."
    },
    {
      "id": "LAB-L03-OPAQUE-RUN",
      "path": "course-labs/L03_retrieval_reranking_sandbox/data/frozen_dense_run_metadata.json",
      "role": "Machine-readable ceiling for the supplied opaque score stream.",
      "boundary": "The model identity is none; the scores must not be attributed to DPR, an embedding model, or a commercial system."
    }
  ],
  "external_sources": [
    {
      "id": "IR-BOOK",
      "type": "open_textbook",
      "title": "Introduction to Information Retrieval",
      "authors": "Christopher D. Manning, Prabhakar Raghavan, and Hinrich Schütze",
      "url": "https://nlp.stanford.edu/IR-book/",
      "role": "Classical information-retrieval vocabulary and inverted-index background.",
      "boundary": "Durable IR foundations do not describe a current generative answer product or establish any GEO intervention effect."
    },
    {
      "id": "BM25-FOUNDATION",
      "type": "peer_reviewed_review",
      "title": "The Probabilistic Relevance Framework: BM25 and Beyond",
      "authors": "Stephen Robertson and Hugo Zaragoza",
      "doi": "10.1561/1500000019",
      "url": "https://doi.org/10.1561/1500000019",
      "role": "Primary conceptual route for BM25 history, assumptions, and variants.",
      "boundary": "The package uses one declared implementation convention; the source does not establish a universal parameter choice or production ranking behavior."
    },
    {
      "id": "DPR",
      "type": "peer_reviewed_paper",
      "title": "Dense Passage Retrieval for Open-Domain Question Answering",
      "authors": "Vladimir Karpukhin et al.",
      "doi": "10.18653/v1/2020.emnlp-main.550",
      "url": "https://aclanthology.org/2020.emnlp-main.550/",
      "role": "Identified example of a dual-encoder dense-retrieval design used to motivate identity fields.",
      "boundary": "DPR is not executed in L03; no L03 score may be attributed to it, and its paper results are not reproduced here."
    },
    {
      "id": "RRF",
      "type": "peer_reviewed_paper",
      "title": "Reciprocal Rank Fusion Outperforms Condorcet and Individual Rank Learning Methods",
      "authors": "Gordon V. Cormack, Charles L. A. Clarke, and Stefan Büttcher",
      "doi": "10.1145/1571941.1572114",
      "url": "https://doi.org/10.1145/1571941.1572114",
      "role": "Alternative rank-fusion concept for contrasting rank and raw-score combination.",
      "boundary": "L03 uses normalized weighted score interpolation, not RRF; the source does not establish that fusion will improve this or any production task."
    },
    {
      "id": "NDCG",
      "type": "peer_reviewed_paper",
      "title": "Cumulated Gain-Based Evaluation of IR Techniques",
      "authors": "Kalervo Järvelin and Jaana Kekäläinen",
      "doi": "10.1145/582415.582418",
      "url": "https://doi.org/10.1145/582415.582418",
      "role": "Primary route for graded, rank-sensitive evaluation context.",
      "boundary": "NDCG is a retrieval/ranking metric under judgments and a cutoff; it is not a generated-answer fidelity or user-outcome metric."
    },
    {
      "id": "RFC-9309",
      "type": "internet_standard",
      "title": "Robots Exclusion Protocol",
      "authors": "M. Koster et al.",
      "url": "https://www.rfc-editor.org/rfc/rfc9309",
      "role": "Protocol-scope reference for distinguishing a declared crawler-control signal from later index and retrieval events.",
      "boundary": "Protocol semantics do not prove crawler compliance, fetch occurrence, indexing, retrieval, citation, or user action on a named service."
    }
  ],
  "fixture_contract": {
    "corpus_records": 10,
    "topics": 3,
    "positive_graded_qrels": 7,
    "license": "CC0-1.0",
    "offline": true,
    "deterministic": true,
    "bm25": {
      "idf": "log(1 + (N - n_t + 0.5) / (n_t + 0.5))",
      "k1": 1.2,
      "b": 0.75,
      "tokenizer": "lowercase English-oriented TOKEN_RE from course-labs/shared/geo_lab_core.py"
    },
    "evaluation": {
      "k": 3,
      "candidate_depth": 5,
      "judgment_policy": "unlisted document-topic pairs are treated as gain 0 inside this closed synthetic fixture",
      "aggregation": "unweighted macro mean over three topics"
    },
    "hybrid_alpha": 0.55,
    "rerank_weight": 0.25,
    "opaque_run_identity": "none; scores are authored fixture values"
  },
  "visual_policy": {
    "external_figure_reuse": false,
    "external_screenshot_reuse": false,
    "visuals": "original_instructional_diagram_specifications_only",
    "required_encodings": [
      "label",
      "shape_or_position",
      "line_style",
      "alt_text"
    ],
    "license_review_required_before_any_later_external_asset_reuse": true
  },
  "claim_boundary": {
    "open_sandbox_observable": [
      "fixture inputs and rights",
      "tokenization and index representation",
      "parameters and commands",
      "ranked lists and qrels",
      "Recall@k and NDCG@k under the declared policy",
      "output and input hashes"
    ],
    "closed_platform_unknown_without_separate_evidence": [
      "crawl frontier",
      "index membership",
      "candidate set",
      "ranking features",
      "query rewrite",
      "context selection cause",
      "generation influence",
      "citation mechanism"
    ],
    "not_evaluated": [
      "public crawling",
      "production indexing",
      "named dense model performance",
      "context packing",
      "answer generation",
      "citation correctness",
      "source absorption",
      "referral",
      "user action",
      "commercial outcome"
    ]
  },
  "quality_status": {
    "structural_validator": "passed_2026-08-24",
    "deterministic_fixture_reproduction": "passed_2026-08-24",
    "scientific_human_review": "pending",
    "accessibility_human_review": "pending",
    "timed_rehearsal": "pending",
    "classroom_pilot": "pending",
    "external_peer_review": "pending"
  }
}
