{
  "built_at": "2026-09-23T00:00:00.000Z",
  "phase": "355",
  "floor_basis": "disclosed, not calibrated: every row is a default cut-off; calibrating on the 355 fixture rooms would be circular with the hit rate (D-19)",
  "rows": [
    {
      "id": "rs-engine.DEFAULT_THRESHOLD",
      "file": "lib/core/rs-engine.cjs",
      "line_anchor": "DEFAULT_THRESHOLD",
      "value": 0.3,
      "gates": "the reverse-salient pair-selection cut-off scoreAll uses when no explicit threshold option is supplied",
      "kind": "floor",
      "env_override": null,
      "env_read": "load",
      "status": "disclosed",
      "provenance": null,
      "dependent_outputs": ["find-connections"]
    },
    {
      "id": "rs-differential-scorer.DIFF_FLOOR",
      "file": "lib/core/rs-differential-scorer.cjs",
      "line_anchor": "DIFF_FLOOR",
      "value": 0.3,
      "gates": "the minimum differential gap a pair must clear before it counts as measured divergence",
      "kind": "floor",
      "env_override": null,
      "env_read": "load",
      "status": "disclosed",
      "provenance": null,
      "dependent_outputs": ["find-connections"]
    },
    {
      "id": "rs-differential-scorer.LSA_FLOOR",
      "file": "lib/core/rs-differential-scorer.cjs",
      "line_anchor": "LSA_FLOOR",
      "value": 0.2,
      "gates": "the minimum LSA similarity leg a pair must clear, one half of the dual-floor pass condition alongside DIFF_FLOOR",
      "kind": "floor",
      "env_override": null,
      "env_read": "load",
      "status": "disclosed",
      "provenance": null,
      "dependent_outputs": ["find-connections"]
    },
    {
      "id": "rs-differential-scorer.BERT_FLOOR",
      "file": "lib/core/rs-differential-scorer.cjs",
      "line_anchor": "BERT_FLOOR",
      "value": 0.2,
      "gates": "the minimum BERT similarity leg a pair must clear, the other half of the dual-floor pass condition alongside DIFF_FLOOR",
      "kind": "floor",
      "env_override": null,
      "env_read": "load",
      "status": "disclosed",
      "provenance": null,
      "dependent_outputs": ["find-connections"]
    },
    {
      "id": "rs-differential-scorer.SEMANTIC_FLOOR",
      "file": "lib/core/rs-differential-scorer.cjs",
      "line_anchor": "SEMANTIC_FLOOR",
      "value": 0.15,
      "gates": "the minimum semantic similarity an external candidate must clear before it enters the unified differential matrix, dropping off-topic keyword matches before scoring",
      "kind": "floor",
      "env_override": "RS_SEMANTIC_FLOOR",
      "env_read": "load",
      "status": "disclosed",
      "provenance": null,
      "dependent_outputs": ["find-connections"]
    },
    {
      "id": "rs-differential-scorer.EUREKA_DIFF_FLOOR",
      "file": "lib/core/rs-differential-scorer.cjs",
      "line_anchor": "EUREKA_DIFF_FLOOR_DEFAULT",
      "value": 0.3,
      "gates": "the env-tunable per-call differential floor eureka consumers use, defaulting to DIFF_FLOOR",
      "kind": "floor",
      "env_override": "EUREKA_DIFF_FLOOR",
      "env_read": "call",
      "status": "disclosed",
      "provenance": null,
      "dependent_outputs": ["eureka"]
    },
    {
      "id": "rs-differential-scorer.bandFor",
      "file": "lib/core/rs-differential-scorer.cjs",
      "line_anchor": "re:absDiff > (0\\.5|0\\.4|0\\.3|0\\.1)",
      "value": [0.5, 0.4, 0.3, 0.1],
      "gates": "the abs_diff cut-offs that bucket a scored pair into breakthrough/high/opportunity/moderate/low bands",
      "kind": "band",
      "env_override": null,
      "env_read": null,
      "status": "disclosed",
      "provenance": null,
      "dependent_outputs": ["find-connections"]
    },
    {
      "id": "rs-differential-scorer.highLeg",
      "file": "lib/core/rs-differential-scorer.cjs",
      "line_anchor": "re:highLeg > 0\\.2",
      "value": 0.2,
      "gates": "the minimum value the higher-magnitude leg (semantic or lexical) must clear so scoreMeasured never passes on a gap between two near-zero numbers",
      "kind": "floor",
      "env_override": null,
      "env_read": null,
      "status": "disclosed",
      "provenance": null,
      "dependent_outputs": ["find-connections"]
    },
    {
      "id": "rs-innovation-classifier.LSA_HIGH",
      "file": "lib/core/rs-innovation-classifier.cjs",
      "line_anchor": "LSA_HIGH",
      "value": 0.3,
      "gates": "the LSA similarity a pair must exceed to classify its LSA leg as high",
      "kind": "band",
      "env_override": null,
      "env_read": "load",
      "status": "disclosed",
      "provenance": null,
      "dependent_outputs": ["find-connections"]
    },
    {
      "id": "rs-innovation-classifier.BERT_HIGH",
      "file": "lib/core/rs-innovation-classifier.cjs",
      "line_anchor": "BERT_HIGH",
      "value": 0.3,
      "gates": "the BERT similarity a pair must exceed to classify its BERT leg as high",
      "kind": "band",
      "env_override": null,
      "env_read": "load",
      "status": "disclosed",
      "provenance": null,
      "dependent_outputs": ["find-connections"]
    },
    {
      "id": "rs-breakthrough-scorer.rubrics",
      "file": "lib/core/rs-breakthrough-scorer.cjs",
      "line_anchor": "re:x >= (0\\.7|0\\.5|0\\.3|0\\.8|0\\.6|0\\.4|0\\.2)\\b",
      "value": [0.7, 0.5, 0.3, 0.8, 0.6, 0.4, 0.2],
      "gates": "the five hand-authored rubric step functions (feasibility tier lookup, market signal count, differential-to-magnitude, cross-domain advantage density, BERT-to-impact) that convert raw signals into the 0-2 dimension scores",
      "kind": "rubric",
      "env_override": null,
      "env_read": null,
      "status": "disclosed",
      "provenance": null,
      "dependent_outputs": ["eureka"]
    },
    {
      "id": "hsi-engine.threshold",
      "file": "lib/core/hsi-engine.cjs",
      "line_anchor": "DEFAULT_THRESHOLD",
      "value": 0.3,
      "gates": "the HSI pair-selection cut-off; innovationDiff must exceed this for a pair to be reported",
      "kind": "floor",
      "env_override": null,
      "env_read": "load",
      "status": "disclosed",
      "provenance": null,
      "dependent_outputs": ["hsi"]
    },
    {
      "id": "hsi-engine.weights",
      "file": "lib/core/hsi-engine.cjs",
      "line_anchor": "re:0\\.6 \\* semanticSurprise \\+ 0\\.4 \\* integrativeFactor|0\\.7 \\* innovationDiff \\+ 0\\.3 \\* Math\\.min",
      "value": [0.6, 0.4, 0.7, 0.3],
      "gates": "the fixed blend weights: innovationDiff is 0.6 semantic-surprise / 0.4 integrative-factor, breakthrough is 0.7 innovationDiff / 0.3 min-similarity",
      "kind": "weight",
      "env_override": null,
      "env_read": null,
      "status": "disclosed",
      "provenance": null,
      "dependent_outputs": ["hsi"]
    },
    {
      "id": "hsi-to-graph.threshold",
      "file": "scripts/hsi-to-graph.cjs",
      "line_anchor": "re:hsi_score <= 0\\.3",
      "value": 0.3,
      "gates": "the HSI_CONNECTION edge-write cut-off; a pair at or below this score is never written to the graph",
      "kind": "floor",
      "env_override": null,
      "env_read": null,
      "status": "disclosed",
      "provenance": null,
      "dependent_outputs": ["hsi"]
    },
    {
      "id": "compute-whitespace-gaps.percentile",
      "file": "scripts/compute-whitespace-gaps.py",
      "line_anchor": "re:np\\.percentile\\(room_densities, 10\\)",
      "value": 10,
      "gates": "the 10th-percentile room-density cut-off used to threshold brain-position gap detection (Python, untouched this phase, ledger row only)",
      "kind": "floor",
      "env_override": null,
      "env_read": null,
      "status": "disclosed",
      "provenance": null,
      "dependent_outputs": ["whitespace"]
    },
    {
      "id": "whitespace-command.novelty-bands",
      "file": "scripts/whitespace-command.cjs",
      "line_anchor": "re:(>=?\\s*0?\\.8|>=?\\s*0?\\.4|<\\s*0?\\.4)",
      "value": [0.8, 0.4],
      "gates": "the novelty-score bands that bucket an artifact as Novel (>=0.8), Moderate, or Covered (<0.4) in the whitespace summary table, one anchor covering both the comparison and the render label text so a future text-only edit never stales this row",
      "kind": "band",
      "env_override": null,
      "env_read": null,
      "status": "disclosed",
      "provenance": null,
      "dependent_outputs": ["whitespace"]
    },
    {
      "id": "interpret-whitespace.thresholds",
      "file": "scripts/interpret-whitespace.cjs",
      "line_anchor": "re:(CONFIDENCE_THRESHOLD|SPREAD_THRESHOLD) = (0?\\.[0-9]+|1\\.0+)",
      "value": [0.6, 1.0],
      "gates": "the confidence gate for chain-interpretation lookups (0.6) and the UMAP spread gate for multi-cluster detection (1.0)",
      "kind": "floor",
      "env_override": null,
      "env_read": "load",
      "status": "disclosed",
      "provenance": null,
      "dependent_outputs": ["whitespace"]
    },
    {
      "id": "eureka-critic.stage-a-gates",
      "file": "lib/core/eureka-critic.cjs",
      "line_anchor": "re:env(Float|Int)\\('(EUREKA_SWAP_INVARIANCE_FLOOR|EUREKA_SWAP_K|EUREKA_NN_DELTA_FLOOR|EUREKA_ENTITY_MIN)'",
      "value": [0.05, 3, 0.10, 2],
      "gates": "Stage A's four env-tunable gates: swap-invariance floor, swap K, nearest-neighbor delta floor, minimum entity count",
      "kind": "floor",
      "env_override": "EUREKA_SWAP_INVARIANCE_FLOOR, EUREKA_SWAP_K, EUREKA_NN_DELTA_FLOOR, EUREKA_ENTITY_MIN",
      "env_read": "call",
      "status": "disclosed",
      "provenance": null,
      "dependent_outputs": ["eureka"]
    },
    {
      "id": "eureka-critic.confidence-bands",
      "file": "lib/core/eureka-critic.cjs",
      "line_anchor": "re:acc >= 0\\.[79]",
      "value": [0.9, 0.7],
      "gates": "the gold-set accuracy bands (correct/n) that convert a calibration bucket into high/medium/low confidence, never the model's self-report",
      "kind": "band",
      "env_override": null,
      "env_read": null,
      "status": "disclosed",
      "provenance": null,
      "dependent_outputs": ["eureka"]
    },
    {
      "id": "tail-quadrant.constants",
      "file": "lib/core/eureka/tail-quadrant.cjs",
      "line_anchor": "re:(ATTN_Q|GROWTH_Q|MAX_TAIL_FRACTION) = (0?\\.[0-9]+|1\\.0+)",
      "value": [0.25, 0.75, 0.25],
      "gates": "the attention/growth quantile cut-offs (bottom-quartile attention, top-quartile growth) and the max-tail-fraction noise guard for the weak-signal gem classifier",
      "kind": "band",
      "env_override": null,
      "env_read": null,
      "status": "disclosed",
      "provenance": null,
      "dependent_outputs": ["eureka"]
    },
    {
      "id": "analogy-fitness.thresholds",
      "file": "lib/core/semantic-index/analogy-fitness.cjs",
      "line_anchor": "re:resolveFloat\\('MINDRIAN_ANALOGY_",
      "value": [0.5, 0.5, 0.8],
      "gates": "the three env-tunable analogy-fitness gates: layer threshold, text weight, restatement floor",
      "kind": "floor",
      "env_override": "MINDRIAN_ANALOGY_LAYER_THRESHOLD, MINDRIAN_ANALOGY_TEXT_WEIGHT, MINDRIAN_ANALOGY_RESTATEMENT_FLOOR",
      "env_read": "call",
      "status": "disclosed",
      "provenance": null,
      "dependent_outputs": ["eureka"]
    },
    {
      "id": "analogy-fitness.bands",
      "file": "lib/core/semantic-index/analogy-fitness.cjs",
      "line_anchor": "BANDS",
      "value": [0, 0.1, 0.2, 0.3, 0.5, 0.6, 0.8, 1.0],
      "gates": "the five fitness-band ranges (none/surface/behavioral/structural/deep) an analogy pair's composite score is bucketed into",
      "kind": "band",
      "env_override": null,
      "env_read": "load",
      "status": "disclosed",
      "provenance": null,
      "dependent_outputs": ["eureka"]
    },
    {
      "id": "ahp-weights.CR_MAX",
      "file": "lib/core/eureka/ahp-weights.cjs",
      "line_anchor": "CR_MAX",
      "value": 0.1,
      "gates": "the AHP consistency-ratio ceiling above which a pairwise comparison matrix is rejected as incoherent",
      "kind": "policy",
      "env_override": null,
      "env_read": "load",
      "status": "disclosed",
      "provenance": null,
      "dependent_outputs": []
    },
    {
      "id": "compression-meter.MIN_LURED_MAGNITUDE",
      "file": "lib/core/eureka/compression-meter.cjs",
      "line_anchor": "MIN_LURED_MAGNITUDE",
      "value": 0.25,
      "gates": "the minimum lure magnitude a compression signal must clear to count",
      "kind": "floor",
      "env_override": null,
      "env_read": "load",
      "status": "disclosed",
      "provenance": null,
      "dependent_outputs": []
    },
    {
      "id": "embedding-classifier.DEFAULT_MARGIN",
      "file": "lib/core/semantic-index/embedding-classifier.cjs",
      "line_anchor": "DEFAULT_MARGIN",
      "value": 0.10,
      "gates": "the default classification margin the embedding classifier requires between top two candidates",
      "kind": "floor",
      "env_override": null,
      "env_read": "load",
      "status": "disclosed",
      "provenance": null,
      "dependent_outputs": []
    },
    {
      "id": "opportunity-harvest.bands",
      "file": "lib/core/eureka/opportunity-harvest.cjs",
      "line_anchor": "re:(BAND_HIGH|BAND_MEDIUM) = 0\\.[0-9]+",
      "value": [0.6, 0.35],
      "gates": "the high/medium opportunity-score band cut-offs",
      "kind": "band",
      "env_override": null,
      "env_read": "load",
      "status": "disclosed",
      "provenance": null,
      "dependent_outputs": []
    },
    {
      "id": "opportunity-statement.tiers",
      "file": "lib/core/eureka/opportunity-statement.cjs",
      "line_anchor": "re:s >= 0\\.(75|5|25)\\b",
      "value": [0.75, 0.5, 0.25],
      "gates": "the tier-1 (portfolio-lead) / tier-2 (develop) / tier-3 (watch) score bands",
      "kind": "band",
      "env_override": null,
      "env_read": null,
      "status": "disclosed",
      "provenance": null,
      "dependent_outputs": []
    },
    {
      "id": "portfolio-dimensions.bands",
      "file": "lib/core/eureka/portfolio-dimensions.cjs",
      "line_anchor": "re:(DEFAULT_TIER_SCORE|BRIDGE_BAND_LO|BRIDGE_BAND_HI|WEAK_FLOOR) = 0\\.[0-9]+",
      "value": [0.25, 0.16, 0.25, 0.4],
      "gates": "the portfolio-dimension default tier score, the bridge-band range, and the weak-signal floor",
      "kind": "band",
      "env_override": null,
      "env_read": "load",
      "status": "disclosed",
      "provenance": null,
      "dependent_outputs": []
    },
    {
      "id": "qualify-opportunity.threshold",
      "file": "lib/core/eureka/qualify-opportunity.cjs",
      "line_anchor": "re:v >= 0\\.5",
      "value": 0.5,
      "gates": "the numeric-field qualification floor a candidate opportunity's scored value must clear",
      "kind": "floor",
      "env_override": null,
      "env_read": null,
      "status": "disclosed",
      "provenance": null,
      "dependent_outputs": []
    },
    {
      "id": "reasoning-mode.max-pairs",
      "file": "lib/core/eureka/reasoning-mode.cjs",
      "line_anchor": "re:envInt\\('MINDRIAN_EUREKA_REASONING_MAX_PAIRS'",
      "value": 25,
      "gates": "the max pair count the reasoning mode processes per call",
      "kind": "policy",
      "env_override": "MINDRIAN_EUREKA_REASONING_MAX_PAIRS",
      "env_read": "call",
      "status": "disclosed",
      "provenance": null,
      "dependent_outputs": []
    },
    {
      "id": "hsi-spectral.absorbing-baseline",
      "file": "lib/core/hsi-spectral.cjs",
      "line_anchor": "re:baseline < 1\\.0",
      "value": 1.0,
      "gates": "the spectral absorbing-score baseline comparison (definitional, not a rendered verdict floor)",
      "kind": "definitional",
      "env_override": null,
      "env_read": null,
      "status": "disclosed",
      "provenance": null,
      "dependent_outputs": []
    },
    {
      "id": "rs-domain-analyzer.BOUNDARY_THRESHOLD_DEFAULT",
      "file": "lib/core/rs-domain-analyzer.cjs",
      "line_anchor": "BOUNDARY_THRESHOLD_DEFAULT",
      "value": 0.5,
      "gates": "the default domain-boundary similarity threshold",
      "kind": "floor",
      "env_override": null,
      "env_read": "load",
      "status": "disclosed",
      "provenance": null,
      "dependent_outputs": []
    },
    {
      "id": "rs-math.definitional",
      "file": "lib/core/rs-math.cjs",
      "line_anchor": "re:(DEFAULT_MAX_DF = 0\\.5|maxVal <= 0\\.0|> 0\\.0 \\?)",
      "value": [0.5, 0.0, 0.0],
      "gates": "the TFIDF max-document-frequency default and the zero-sign comparisons used for degenerate-matrix and direction-sign checks (definitional, not a rendered verdict floor)",
      "kind": "definitional",
      "env_override": null,
      "env_read": null,
      "status": "disclosed",
      "provenance": null,
      "dependent_outputs": []
    },
    {
      "id": "rs-mind-map.sql-filters",
      "file": "lib/core/rs-mind-map.cjs",
      "line_anchor": "re:> 0\\.6",
      "value": 0.6,
      "gates": "SQL query literals mirroring the LSA/BERT high-band filter, duplicated inside ad hoc query strings rather than reusing rs-innovation-classifier's LSA_HIGH/BERT_HIGH constants",
      "kind": "floor",
      "env_override": null,
      "env_read": null,
      "status": "disclosed",
      "provenance": null,
      "dependent_outputs": []
    },
    {
      "id": "rs-preprocessor.BOUNDARY_THRESHOLD",
      "file": "lib/core/rs-preprocessor.cjs",
      "line_anchor": "BOUNDARY_THRESHOLD",
      "value": 0.5,
      "gates": "the preprocessor's own boundary-similarity threshold copy",
      "kind": "floor",
      "env_override": null,
      "env_read": "load",
      "status": "disclosed",
      "provenance": null,
      "dependent_outputs": []
    },
    {
      "id": "sensor-room-delta.CLAIM_FLOOR_N",
      "file": "lib/core/sensors/sensor-room-delta.cjs",
      "line_anchor": "CLAIM_FLOOR_N",
      "value": 5,
      "gates": "the minimum count of claim nodes added since the last ambient run that counts as delta class (a) (Phase 355.1 AMB-01); proposed at the measured median claims per active room-hour (p50 5) across 31 live rooms over 90 days; approved at the 355.1 checkpoint 2026-09-27",
      "kind": "floor",
      "env_override": null,
      "env_read": "load",
      "status": "disclosed",
      "provenance": null,
      "dependent_outputs": []
    },
    {
      "id": "scout-cadence-guard.AMBIENT_MAX_RUNS_PER_HOUR",
      "file": "scripts/scout-cadence-guard.cjs",
      "line_anchor": "AMBIENT_MAX_RUNS_PER_HOUR",
      "value": 1,
      "gates": "the most ambient breakthrough runs started per room within one hour (Phase 355.1 AMB-04 throttle); proposed so Theo stamping load stays bounded while a working session is never starved (child runtime p90 about 12 s); approved at the 355.1 checkpoint 2026-09-27",
      "kind": "policy",
      "env_override": null,
      "env_read": "load",
      "status": "disclosed",
      "provenance": null,
      "dependent_outputs": []
    },
    {
      "id": "research-planner-grants.GRANT_EXPIRY_DAYS",
      "file": "lib/core/research-planner/grants.cjs",
      "line_anchor": "GRANT_EXPIRY_DAYS",
      "value": 30,
      "gates": "how many days a standing research grant stays valid before the room must ask again (Phase 363 D-11); mirrors the 30-day research cache TTL; re-measured at 363-20",
      "kind": "policy",
      "env_override": null,
      "env_read": "load",
      "status": "disclosed",
      "provenance": "363-ACCEPTANCE.md 2026-09-30: kept at 30 (mirrors the 30-day cache TTL); no offline measure of consent staleness, live use pending; still disclosed, not calibrated",
      "dependent_outputs": ["research_run"]
    },
    {
      "id": "research-planner-grants.RESEARCH_RUNS_PER_HOUR",
      "file": "lib/core/research-planner/grants.cjs",
      "line_anchor": "RESEARCH_RUNS_PER_HOUR",
      "value": 1,
      "gates": "the most room-started quick research runs per room per hour under a standing grant (Phase 363 D-11); reuses the 355.1 ambient throttle value; re-measured at 363-20",
      "kind": "policy",
      "env_override": null,
      "env_read": "load",
      "status": "disclosed",
      "provenance": "363-ACCEPTANCE.md 2026-09-30: kept at 1; offline quick run is 108 to 165 ms p50 engine time and 3 searches, so the throttle is cost policy not throughput; live pending",
      "dependent_outputs": ["research_run"]
    },
    {
      "id": "research-planner-plan.QUICK_MAX_QUERIES",
      "file": "lib/core/research-planner/plan.cjs",
      "line_anchor": "QUICK_MAX_QUERIES",
      "value": 3,
      "gates": "the most audited searches one quick research run may send (Phase 363 D-03 proposed default); re-measured at 363-20",
      "kind": "policy",
      "env_override": null,
      "env_read": "load",
      "status": "disclosed",
      "provenance": "363-ACCEPTANCE.md 2026-09-30: kept at 3; the whitespace plurality rule needs exactly exact, synonym cover and prior attempts (W1, W2)",
      "dependent_outputs": ["research_run"]
    },
    {
      "id": "research-planner-plan.QUICK_TOP_ROWS",
      "file": "lib/core/research-planner/plan.cjs",
      "line_anchor": "QUICK_TOP_ROWS",
      "value": 5,
      "gates": "the most records kept per search in a quick research run (Phase 363 D-03 proposed default); re-measured at 363-20",
      "kind": "policy",
      "env_override": null,
      "env_read": "load",
      "status": "disclosed",
      "provenance": "363-ACCEPTANCE.md 2026-09-30: kept at 5; replay bodies hold 5 results so the fixture cannot show a shortfall; live yield pending",
      "dependent_outputs": ["research_run"]
    },
    {
      "id": "research-planner-plan.QUICK_TIME_BUDGET_MS",
      "file": "lib/core/research-planner/plan.cjs",
      "line_anchor": "QUICK_TIME_BUDGET_MS",
      "value": 60000,
      "gates": "the wall-clock budget in milliseconds for one quick research run (Phase 363 D-03 proposed default); re-measured at 363-20",
      "kind": "policy",
      "env_override": null,
      "env_read": "load",
      "status": "disclosed",
      "provenance": "363-ACCEPTANCE.md 2026-09-30: kept at 60000; offline quick run p50 108 to 165 ms (no network time); live latency pending",
      "dependent_outputs": ["research_run"]
    },
    {
      "id": "research-planner-plan.DEEP_LANES_REQUESTED",
      "file": "lib/core/research-planner/plan.cjs",
      "line_anchor": "DEEP_LANES_REQUESTED",
      "value": 4,
      "gates": "the most evidence lanes a deep research run requests (clamped at run time by resolveFanoutCap) (Phase 363 D-03 proposed default); re-measured at 363-20",
      "kind": "policy",
      "env_override": null,
      "env_read": "load",
      "status": "disclosed",
      "provenance": "363-ACCEPTANCE.md 2026-09-30: kept at 4; the scientific deep run used four limiter lanes in round one (E3, F3)",
      "dependent_outputs": ["research_run"]
    },
    {
      "id": "research-planner-plan.DEEP_ROUNDS",
      "file": "lib/core/research-planner/plan.cjs",
      "line_anchor": "DEEP_ROUNDS",
      "value": 2,
      "gates": "the most search rounds in a deep research run (Phase 363 D-03 proposed default); re-measured at 363-20",
      "kind": "policy",
      "env_override": null,
      "env_read": "load",
      "status": "disclosed",
      "provenance": "363-ACCEPTANCE.md 2026-09-30: kept at 2; round two is where the S-curve and prior-attack reads happen (F3)",
      "dependent_outputs": ["research_run"]
    },
    {
      "id": "research-planner-plan.DEEP_R1_QUERIES_PER_LANE",
      "file": "lib/core/research-planner/plan.cjs",
      "line_anchor": "DEEP_R1_QUERIES_PER_LANE",
      "value": 2,
      "gates": "the round-one searches per lane in a deep research run (Phase 363 D-03 proposed default); re-measured at 363-20",
      "kind": "policy",
      "env_override": null,
      "env_read": "load",
      "status": "disclosed",
      "provenance": "363-ACCEPTANCE.md 2026-09-30: kept at 2; whitespace and scientific lanes both fill it exactly",
      "dependent_outputs": ["research_run"]
    },
    {
      "id": "research-planner-plan.DEEP_RESULTS_PER_QUERY",
      "file": "lib/core/research-planner/plan.cjs",
      "line_anchor": "DEEP_RESULTS_PER_QUERY",
      "value": 5,
      "gates": "the most records kept per search in a deep research run (Phase 363 D-03 proposed default); re-measured at 363-20",
      "kind": "policy",
      "env_override": null,
      "env_read": "load",
      "status": "disclosed",
      "provenance": "363-ACCEPTANCE.md 2026-09-30: kept at 5; same fixture limit as the quick row cap, live yield pending",
      "dependent_outputs": ["research_run"]
    },
    {
      "id": "research-planner-plan.DEEP_MAX_SEARCHES",
      "file": "lib/core/research-planner/plan.cjs",
      "line_anchor": "DEEP_MAX_SEARCHES",
      "value": 16,
      "gates": "the most searches one deep research run may send in total (Phase 363 D-03 proposed default); re-measured at 363-20",
      "kind": "policy",
      "env_override": null,
      "env_read": "load",
      "status": "disclosed",
      "provenance": "363-ACCEPTANCE.md 2026-09-30: kept at 16; binds for scientific runs (15 used, stop cap), not for whitespace (3 used, stop saturation)",
      "dependent_outputs": ["research_run"]
    },
    {
      "id": "research-planner-plan.DEEP_TIME_BUDGET_MS",
      "file": "lib/core/research-planner/plan.cjs",
      "line_anchor": "DEEP_TIME_BUDGET_MS",
      "value": 1200000,
      "gates": "the wall-clock budget in milliseconds (20 minutes) for one deep research run (Phase 363 D-03 proposed default); re-measured at 363-20",
      "kind": "policy",
      "env_override": null,
      "env_read": "load",
      "status": "disclosed",
      "provenance": "363-ACCEPTANCE.md 2026-09-30: kept at 1200000; offline deep loop is 1.19 to 1.50 s p50 (no network, no analyst model time); live pending",
      "dependent_outputs": ["research_run"]
    },
    {
      "id": "research-planner-plan.MAX_PLAN_REVISIONS",
      "file": "lib/core/research-planner/plan.cjs",
      "line_anchor": "MAX_PLAN_REVISIONS",
      "value": 3,
      "gates": "the most times the navigator may revise a research plan before it must run or stop (Phase 363 D-03 proposed default); re-measured at 363-20",
      "kind": "policy",
      "env_override": null,
      "env_read": "load",
      "status": "disclosed",
      "provenance": "363-ACCEPTANCE.md 2026-09-30: kept at 3; no measurement bears on it",
      "dependent_outputs": ["research_run"]
    },
    {
      "id": "research-planner-plan.PYRAMID_DEPTH_CAP",
      "file": "lib/core/research-planner/plan.cjs",
      "line_anchor": "PYRAMID_DEPTH_CAP",
      "value": 3,
      "gates": "the deepest level of sub-questions a research pyramid may reach (Phase 363 D-03 proposed default); re-measured at 363-20",
      "kind": "policy",
      "env_override": null,
      "env_read": "load",
      "status": "disclosed",
      "provenance": "363-ACCEPTANCE.md 2026-09-30: kept at 3; no measurement bears on it",
      "dependent_outputs": ["research_run"]
    },
    {
      "id": "research-planner-verdict.GAP_COUNT_FLOOR",
      "file": "lib/core/research-planner/verdict.cjs",
      "line_anchor": "GAP_COUNT_FLOOR",
      "value": 3,
      "gates": "the exact-phrase OpenAlex count at or below which a search counts as finding nothing when the quick verdict decides gap-confirmed (Phase 363 D-03 proposed default); re-measured at 363-20",
      "kind": "floor",
      "env_override": null,
      "env_read": "load",
      "status": "disclosed",
      "provenance": "363-ACCEPTANCE.md 2026-09-30: kept at 3, still unmeasured on real OpenAlex; fixture counts sit on both sides (gap 0 to 2, hits 9 to 240); live smoke and a labelled sample decide",
      "dependent_outputs": ["research_run"]
    },
    {
      "id": "verification-signals.STALL_WEEKS",
      "file": "lib/core/navigation/verification-signals.cjs",
      "line_anchor": "STALL_WEEKS",
      "value": 4,
      "gates": "the number of flat weekly verification snapshots, with checks still being recorded, before the room says checks moved no claim past asking a model (Phase 365 D-17)",
      "kind": "floor",
      "env_override": null,
      "env_read": "load",
      "status": "disclosed",
      "provenance": "365-CONTEXT.md D-23 navigator ruling (N = 4 weeks), unmeasured; the signal is suppressed below 2 snapshots (D-17)",
      "dependent_outputs": ["room_proactive"]
    },
    {
      "id": "eureka-recall.lexical_floor",
      "file": "lib/core/research-planner/perspectives/eureka-recall.cjs",
      "line_anchor": "re:lexical_floor: 0\\.08",
      "value": 0.08,
      "gates": "the minimum lexical (token Jaccard) score a thing pair must clear for the eureka recall to keep it as a lexical-lane candidate, before the per-thing top-K cut",
      "kind": "floor",
      "env_override": null,
      "env_read": "load",
      "status": "disclosed",
      "provenance": "wave 1 recall budget, SEED-103 (Phase 366); the 366 spike (tests/fixtures/366-spike/record.json, 2026-10-02) measured eureka-graph-lexical at 3 useful of 7 shown, all above the floor by construction, so no below-floor bucket could be measured",
      "dependent_outputs": ["research_run"]
    },
    {
      "id": "eureka-recall.BUDGETS",
      "file": "lib/core/research-planner/perspectives/eureka-recall.cjs",
      "line_anchor": "re:max_candidates: 200",
      "value": [200, 5, 2000, 8],
      "gates": "the eureka recall caps in order: max_candidates, lexical_top_k (candidates kept per thing), body_cap (characters of a thing body read), max_leaves (pair leaves in the plan)",
      "kind": "policy",
      "env_override": null,
      "env_read": "load",
      "status": "disclosed",
      "provenance": "wave 1 recall budget, SEED-103 (Phase 366); the 366 spike (tests/fixtures/366-spike/record.json, 2026-10-02) showed 7 pairs on the 355 fixture copies, far under every cap, so no cap-edge bucket could be measured",
      "dependent_outputs": ["research_run"]
    },
    {
      "id": "rs-recall.BUDGETS",
      "file": "lib/core/research-planner/perspectives/rs-recall.cjs",
      "line_anchor": "re:max_candidates: 200, max_leaves: 8, pairs_per_boundary: 10",
      "value": [200, 8, 10],
      "gates": "the reverse-salient recall caps in order: max_candidates, max_leaves (the rs-known leaf is added on top), pairs_per_boundary (also the per-side cap per section boundary); the lag score has no absolute floor, it is rank-normalized within the room (355 D-46)",
      "kind": "policy",
      "env_override": null,
      "env_read": "load",
      "status": "disclosed",
      "provenance": "capped recall budget; the 366 spike (tests/fixtures/366-spike/record.json, 2026-10-02) could not measure a bucket: rs-graph surfaced 0 pairs on the 355 fixture copies (no INFORMS-style flow edges, no declared feeds), and the lag score has no absolute floor to bucket against",
      "dependent_outputs": ["research_run"]
    },
    {
      "id": "hsi-recall.BUDGETS",
      "file": "lib/core/research-planner/perspectives/hsi-recall.cjs",
      "line_anchor": "re:max_candidates: 200, max_leaves: 8, per_thing_top_k: 5, body_cap: 2000",
      "value": [200, 8, 5, 2000],
      "gates": "the HSI recall caps in order: max_candidates, max_leaves (including the hsi-known leaf), per_thing_top_k (pairs kept per thing, ranked by absolute divergence), body_cap (characters of a thing body read); no divergence floor",
      "kind": "policy",
      "env_override": null,
      "env_read": "load",
      "status": "disclosed",
      "provenance": "capped recall budget; the 366 spike (tests/fixtures/366-spike/record.json, 2026-10-02) measured hsi-graph at 4 useful of 7 shown (navigator blind gold) but no above/below bucket exists: there is no divergence floor, and every shown pair sits inside the caps (7 pairs, far under max_candidates and per_thing_top_k)",
      "dependent_outputs": ["research_run"]
    },
    {
      "id": "whitespace-recall.BUDGETS",
      "file": "lib/core/research-planner/perspectives/whitespace-recall.cjs",
      "line_anchor": "re:max_candidates: 100, max_leaves: 8, max_term_words: 4",
      "value": [100, 8, 4],
      "gates": "the whitespace recall caps in order: max_candidates, max_leaves, max_term_words (a zone name longer than this is never offered as an exact search phrase, SEED-104)",
      "kind": "policy",
      "env_override": null,
      "env_read": "load",
      "status": "disclosed",
      "provenance": "capped recall budget, no measured bucket yet; re-measured by the 366 spike",
      "dependent_outputs": ["research_run"]
    },
    {
      "id": "analogies-recall.lexical_ceiling",
      "file": "lib/core/research-planner/perspectives/analogies-recall.cjs",
      "line_anchor": "re:lexical_ceiling: 0\\.15",
      "value": 0.15,
      "gates": "the lexical (token Jaccard) score above which a pair is dropped from the analogies recall because it shares words, not structure",
      "kind": "floor",
      "env_override": null,
      "env_read": "load",
      "status": "disclosed",
      "provenance": "capped recall budget, no measured bucket yet; re-measured by the 366 spike",
      "dependent_outputs": ["research_run"]
    },
    {
      "id": "analogies-recall.BUDGETS",
      "file": "lib/core/research-planner/perspectives/analogies-recall.cjs",
      "line_anchor": "re:max_candidates: 100, max_leaves: 8, lexical_ceiling",
      "value": [100, 8],
      "gates": "the analogies recall caps in order: max_candidates, max_leaves (the candidate pool is the eureka cap of 200 before the ceiling cut)",
      "kind": "policy",
      "env_override": null,
      "env_read": "load",
      "status": "disclosed",
      "provenance": "capped recall budget, no measured bucket yet; re-measured by the 366 spike",
      "dependent_outputs": ["research_run"]
    },
    {
      "id": "connections-recall.BUDGETS",
      "file": "lib/core/research-planner/perspectives/connections-recall.cjs",
      "line_anchor": "re:max_candidates: 100, max_leaves: 8, per_thing_top_k: 5",
      "value": [100, 8, 5],
      "gates": "the connections recall caps in order: max_candidates, max_leaves, per_thing_top_k (lateral pairs kept per framework)",
      "kind": "policy",
      "env_override": null,
      "env_read": "load",
      "status": "disclosed",
      "provenance": "capped recall budget, no measured bucket yet; re-measured by the 366 spike",
      "dependent_outputs": ["research_run"]
    },
    {
      "id": "eureka-judge.EUREKA_ENTITY_MIN",
      "file": "lib/core/research-planner/perspectives/eureka-judge.cjs",
      "line_anchor": "re:envInt\\('EUREKA_ENTITY_MIN'",
      "value": 2,
      "gates": "the entity-count threshold the research-planner Stage A gate reads (same env name and default as the eureka-critic gate); the gate applies min(threshold, 1), so a pair needs at least one shared entity or one credited lane",
      "kind": "floor",
      "env_override": "EUREKA_ENTITY_MIN",
      "env_read": "call",
      "status": "disclosed",
      "provenance": "Stage A default, disclosed not calibrated (355 D-19); re-measured by the 366 spike",
      "dependent_outputs": ["research_run"]
    },
    {
      "id": "ambient.EUREKA_OFFER_PAIRS",
      "file": "lib/core/research-planner/ambient.cjs",
      "line_anchor": "EUREKA_OFFER_PAIRS",
      "value": 3,
      "gates": "how many recalled pairs the ambient eureka offer shows the navigator in one turn",
      "kind": "policy",
      "env_override": null,
      "env_read": "load",
      "status": "disclosed",
      "provenance": "ambient offer cap (Phase 366 D-10), no measured bucket yet; the offer never files",
      "dependent_outputs": ["research_run"]
    }
  ]
}
