{
  "schema_version": "1.0",
  "baseline": "A-discovery-dual-search-v1",
  "updated_at": "2026-04-19",
  "owner": "session_a",
  "purpose_en": "System-wide discovery / reindex / dual-search upgrade · result report.",
  "purpose_th": "รายงานการ sweep ทั้งระบบ · ปรับ catalog · เพิ่ม Full-Text Search · ยืนยันค้นเจอของ 17 คำสำคัญ",
  "counts": {
    "index_entries": 112,
    "appendix_entries": 104,
    "total": 216,
    "fulltext_searchable": 141,
    "metadata_only": 75,
    "title_only": 0
  },
  "by_type": {
    "console": 9,
    "portal": 16,
    "kb": 33,
    "planning": 13,
    "runtime": 21,
    "api": 2,
    "diagram": 11,
    "legacy": 7,
    "?": 104
  },
  "by_owner": {
    "A": 111,
    "B": 105
  },
  "by_status": {
    "live": 195,
    "shell": 21
  },
  "by_search_scope": {
    "fulltext": 141,
    "metadata": 75
  },
  "added_in_this_pass": {
    "index_entries": [
      "idx-blueprint-master",
      "idx-business-context",
      "idx-nerve-center-manual",
      "idx-document-index-md",
      "idx-mice-demo-script",
      "idx-mice-demo"
    ],
    "appendix_entries_count": 49,
    "appendix_entries_first_20": [
      "idx-appendix-kb-atlas-relations",
      "idx-appendix-kb-brainstorm",
      "idx-appendix-kb-brainstorm-opportunities",
      "idx-appendix-kb-brainstorm-phase12-map",
      "idx-appendix-kb-brainstorm-routing",
      "idx-appendix-kb-brainstorm-taxonomy",
      "idx-appendix-kb-candidate-ranking",
      "idx-appendix-kb-categories",
      "idx-appendix-kb-checklist-flows",
      "idx-appendix-kb-checklist-navigator",
      "idx-appendix-kb-dependencies",
      "idx-appendix-kb-executive-cards",
      "idx-appendix-kb-lexicon-disambiguation",
      "idx-appendix-kb-lexicon-relations",
      "idx-appendix-kb-lexicon-taxonomy",
      "idx-appendix-kb-mindmap",
      "idx-appendix-kb-nerve-center-model",
      "idx-appendix-kb-nerve-center-views",
      "idx-appendix-kb-nerve-claude-proposals",
      "idx-appendix-kb-nerve-gaps"
    ],
    "new_appendix_groups": [
      "runtime_artefacts"
    ],
    "field_additions_on_all_entries": [
      "search_scope",
      "fulltext_source_refs",
      "fulltext_searchable",
      "fulltext_preview"
    ]
  },
  "files_created": [
    "docs/planning/fulltext-index.json",
    "docs/planning/fulltext-sources.json",
    "docs/planning/discovery-audit.json",
    "docs/planning/discovery-audit.html",
    "scripts/discovery/build_fulltext_index.py",
    "scripts/discovery/apply_catalog_patches.py"
  ],
  "files_updated": [
    "docs/planning/index-catalog.json (+5 entries · new fields)",
    "docs/planning/appendix-catalog.json (+49 entries · new fields · new group)",
    "docs/index-portal.html (rewritten · dual search · help panel · snippets)",
    "docs/index.html (dual-search-aware console strip)",
    "docs/operations-portal.html (audit back-link)",
    "docs/planning/index.html (Discovery Audit card)"
  ],
  "files_deleted": [],
  "search_verification": [
    {
      "term": "feature flags",
      "title_hits": 17,
      "fulltext_hits": 17,
      "title_example": "Feature Flags · Planning",
      "title_example_id": "idx-planning-flags",
      "pass": true
    },
    {
      "term": "evaluator",
      "title_hits": 7,
      "fulltext_hits": 27,
      "title_example": "Feature Flags Runtime",
      "title_example_id": "idx-runtime-flags",
      "pass": true
    },
    {
      "term": "evaluator service",
      "title_hits": 1,
      "fulltext_hits": 1,
      "title_example": "FF · evaluator_contract.json",
      "title_example_id": "idx-runtime-flags-evaluator-contract",
      "pass": true
    },
    {
      "term": "runtime service",
      "title_hits": 2,
      "fulltext_hits": 4,
      "title_example": "FF · Service (Phase 2a+)",
      "title_example_id": "idx-runtime-flags-service",
      "pass": true
    },
    {
      "term": "fastapi",
      "title_hits": 2,
      "fulltext_hits": 28,
      "title_example": "FF · Service (Phase 2a+)",
      "title_example_id": "idx-runtime-flags-service",
      "pass": true
    },
    {
      "term": "http boundary",
      "title_hits": 2,
      "fulltext_hits": 2,
      "title_example": "FF · Service (Phase 2a+)",
      "title_example_id": "idx-runtime-flags-service",
      "pass": true
    },
    {
      "term": "admin control plane",
      "title_hits": 3,
      "fulltext_hits": 4,
      "title_example": "Admin Control Plane · Planning",
      "title_example_id": "idx-planning-admin",
      "pass": true
    },
    {
      "term": "policy engine",
      "title_hits": 3,
      "fulltext_hits": 3,
      "title_example": "Admin Control Plane · Planning",
      "title_example_id": "idx-planning-admin",
      "pass": true
    },
    {
      "term": "terminal recovery",
      "title_hits": 1,
      "fulltext_hits": 1,
      "title_example": "Terminal Recovery",
      "title_example_id": "idx-terminal-recovery",
      "pass": true
    },
    {
      "term": "operations portal",
      "title_hits": 1,
      "fulltext_hits": 1,
      "title_example": "Operations Portal",
      "title_example_id": "idx-operations-portal",
      "pass": true
    },
    {
      "term": "index portal",
      "title_hits": 2,
      "fulltext_hits": 2,
      "title_example": "Index Portal",
      "title_example_id": "idx-index-portal",
      "pass": true
    },
    {
      "term": "planning",
      "title_hits": 20,
      "fulltext_hits": 48,
      "title_example": "Operations Portal",
      "title_example_id": "idx-operations-portal",
      "pass": true
    },
    {
      "term": "cases",
      "title_hits": 3,
      "fulltext_hits": 49,
      "title_example": "Operations Portal",
      "title_example_id": "idx-operations-portal",
      "pass": true
    },
    {
      "term": "generate",
      "title_hits": 8,
      "fulltext_hits": 66,
      "title_example": "Merchant",
      "title_example_id": "idx-merchant",
      "pass": true
    },
    {
      "term": "tenant",
      "title_hits": 8,
      "fulltext_hits": 58,
      "title_example": "Operations Portal",
      "title_example_id": "idx-operations-portal",
      "pass": true
    },
    {
      "term": "dashboard",
      "title_hits": 13,
      "fulltext_hits": 80,
      "title_example": "Merchant",
      "title_example_id": "idx-merchant",
      "pass": true
    },
    {
      "term": "04.01.09.00",
      "title_hits": 1,
      "fulltext_hits": 2,
      "title_example": "FF · Service (Phase 2a+)",
      "title_example_id": "idx-runtime-flags-service",
      "pass": true
    }
  ],
  "search_verification_summary": {
    "terms_tested": 17,
    "title_pass": 17,
    "fulltext_pass": 17,
    "any_pass": 17
  },
  "coverage_honest_note": "Full-Text Search is backed by a token+snippet index built from A-owned HTML/JSON/MD sources, plus KB data JSONs (descriptive fields only, no logic). 141 of 216 catalog entries have usable body text. The remaining 75 are metadata-only by design (KB data JSONs, appendix references without standalone content).",
  "risks": [
    "Full-Text Search is a linear scan over tokens + snippets in-browser. Fine at 216 entries · may need pagination or server-side at >1,000.",
    "Tokens are extracted at build time · edits to source files need re-running scripts/discovery/build_fulltext_index.py.",
    "B-owned KB pages surface body text via sibling JSON description fields · if B reshapes those fields, our snippets get stale.",
    "Negation/phrase parser is intentionally simple · does not support regex, wildcards, or field-scoped queries.",
    "Keyboard shortcut `?` requires Shift and targets Full-Text focus · some keyboards emit ? directly · behavior documented in help panel."
  ],
  "ready_for_next_phase": true,
  "next_phase_candidates": [
    "Admin Control Plane Phase 2a · policy engine service",
    "Feature Flags Phase 2b · JWT + override store",
    "Full-Text Search Phase 2 · BM25 scoring · fuzzy matches"
  ]
}
