{
  "version": "target_source_grounded_entity_registry_build.v1",
  "created_at": "2026-06-06T16:34:37.284137Z",
  "stage": "target_source_grounded_entity_registry_build",
  "stage_state": "target_source_grounded_current_registry_candidate_build_active",
  "primary_lane": "target_source_grounded_entity_registry_build_contract_before_uid_binding_replay_or_asset_binding",
  "project_root": "/wwwb/aitools/writer",
  "output_run_dir": "outputs/target_source_grounded_entity_registry_build_20260607_0032",
  "p2v17_run_dir": "/wwwb/aitools/writer/outputs/p_plan_v2_17_first20_scale_generation_calibration_density_repair_20260605_0505",
  "p2v22_run_dir": "/wwwb/aitools/writer/outputs/p_plan_v2_22_neutral_prompt_draft_hold_boundary_20260605_0713",
  "now33_run_dir": "/wwwb/aitools/writer/outputs/now33_entity_link_binding_advisory_20260606_1544",
  "now33a_run_dir": "/wwwb/aitools/writer/outputs/now33a_current_registry_preflight_20260606_1829",
  "artifact_refs": {
    "contract": {
      "path": "/wwwb/aitools/writer/docs/target_source_grounded_entity_registry_build_contract_20260606.md",
      "exists": true,
      "sha256": "77f4434d5127efe17acaa21f8cc6c147328c906e7b93c8bccf5a14a755125520",
      "size_bytes": 14524
    },
    "retrospective": {
      "path": "/wwwb/aitools/writer/docs/full_project_retrospective_post_now33a_registry_recalibration_20260606.md",
      "exists": true,
      "sha256": "44f53b63db6445c4a6c3c4d3c7b911db122c1107f953ceea24a93276d14f7a57",
      "size_bytes": 13556
    },
    "execution_state": {
      "path": "/wwwb/aitools/writer/execution_state.json",
      "exists": true,
      "sha256": "1c6884ed3d0753a907667ca140dd5e4f43af281a556a3db2f14d9d82e69351ec",
      "size_bytes": 74892
    },
    "p2v17_chapters": {
      "path": "/wwwb/aitools/writer/outputs/p_plan_v2_17_first20_scale_generation_calibration_density_repair_20260605_0505/P2V_17_chapters.jsonl",
      "exists": true,
      "sha256": "4df7569a63d5eac81668cf0ef3b663b0a53bd482e982f2bb5c85851d576776c5",
      "size_bytes": 8693
    },
    "p2v17_gate": {
      "path": "/wwwb/aitools/writer/outputs/p_plan_v2_17_first20_scale_generation_calibration_density_repair_20260605_0505/P2V_17_gate.json",
      "exists": true,
      "sha256": "2b06cc77b5570133cf1614df1842be937425c82c06f19c4ee8d04138d534f6dd",
      "size_bytes": 2948
    },
    "p2v22_draft_rows": {
      "path": "/wwwb/aitools/writer/outputs/p_plan_v2_22_neutral_prompt_draft_hold_boundary_20260605_0713/P2V_22_neutral_prompt_draft_rows.jsonl",
      "exists": true,
      "sha256": "1494f84aba637adec1f8d360d71e537f0490ca56aa1c288bf3a87b4f33c6265d",
      "size_bytes": 2395301
    },
    "p2v22_gate": {
      "path": "/wwwb/aitools/writer/outputs/p_plan_v2_22_neutral_prompt_draft_hold_boundary_20260605_0713/P2V_22_gate.json",
      "exists": true,
      "sha256": "aa22e6e9c5c1bd1690aa1b719207b622cb3f98f31014c712055176a8f4cd2126",
      "size_bytes": 2598
    },
    "now33_gate": {
      "path": "/wwwb/aitools/writer/outputs/now33_entity_link_binding_advisory_20260606_1544/NOW_33_entity_link_gate.json",
      "exists": true,
      "sha256": "83c491023bd542606b0afdc0f46121172ca9f269aa0d4063c6cfd42e7de8d936",
      "size_bytes": 3485
    },
    "now33_manifest": {
      "path": "/wwwb/aitools/writer/outputs/now33_entity_link_binding_advisory_20260606_1544/NOW_33_entity_link_advisory_manifest.jsonl",
      "exists": true,
      "sha256": "4c1fe210d37cb40ffa245fbceb65eba93c7b6ee4ca1cc0b7e1793fdaa428290a",
      "size_bytes": 2748532
    },
    "now33_gap": {
      "path": "/wwwb/aitools/writer/outputs/now33_entity_link_binding_advisory_20260606_1544/NOW_33_entity_gap_report.json",
      "exists": true,
      "sha256": "9b275dcf24921785bcedb11a720b337359dcc1f6c6f9981d2f1bb892076f2781",
      "size_bytes": 2741
    },
    "now33a_gate": {
      "path": "/wwwb/aitools/writer/outputs/now33a_current_registry_preflight_20260606_1829/NOW_33A_current_registry_gate.json",
      "exists": true,
      "sha256": "6838be9d2116e2f4540d67be81ab3fe03d51e71aa3d0c20acfba13ca954753e0",
      "size_bytes": 4052
    },
    "now33a_source_fingerprint": {
      "path": "/wwwb/aitools/writer/outputs/now33a_current_registry_preflight_20260606_1829/NOW_33A_source_fingerprint_report.json",
      "exists": true,
      "sha256": "afc022c7bf650201006f51f5d6b53585e68ceacbc7afe0955e3d7d7b410cd746",
      "size_bytes": 11589
    },
    "now33a_authority_gap": {
      "path": "/wwwb/aitools/writer/outputs/now33a_current_registry_preflight_20260606_1829/NOW_33A_registry_authority_gap_report.json",
      "exists": true,
      "sha256": "eb0fd43054fbe44a8cdc8d484fce24d2f35b959176b26d24360a508789f0b909",
      "size_bytes": 5192
    }
  },
  "source_authority": {
    "target_work_id": "hongloumeng_project_gutenberg_first20",
    "target_source_fingerprint": "c5d6ab4f5d8bc0aa4a018ebe6daec3315b0d646cb189b1a4fb28fe9a6e23ba34",
    "target_full_source_sha256s": [
      "72df08dce82c0be4622d16060725b0287b1badbb3a979756336148212d6f1d07"
    ],
    "target_chapter_sha256s": [
      "1332e845cec5b8d7ff61dac2ceae98c693fe1bf64370e88b82f6e303ac9047f2",
      "1c85a7ece733676be2d091577f93b2f6b0d8541e1974298717cf22eceacc370c",
      "3e8770935d757bf83b352a6ea21e8d5b03af9e4b77c601b6e247c1f29a5e80fe",
      "3fd156e7f5cd08ed3492bf7a9f1210c387ecf4d833f75d9c94c76552380c26ff",
      "41df92039afa9acc93ef9bf816a0b031e0216684e9d5b135c5e57222fd000e81",
      "58b36a47c007d472685f7384886b993ae840a2bf97e259046093fd84e5d665cd",
      "6e6dbe8165ee06a197cf4ab2f62ab464c8e5576120bc6792c9772d1055faf121",
      "805779eb5ab0b824bb22b7591487cb8abb3b94954b4a63c094ec56dc0b0179af",
      "8d35170e163c62b83f986ecfed1059d8c4426a923555190b87f2308386f223ff",
      "91ecc055d0da9056673680723a26c744c868a33fc84b326a83332826f731d1c1",
      "a39166617d940ff2333e96d9373f2872688501460a7221c99f4ac6ea505cc6bd",
      "a409de2ddbe16716dd1e9fd80a47f524c83bcbe872ade95463a6fa1cfe892e09",
      "a6e792c16408f864aa3c42b97c85adca594449113ed460c9b8f73de9b520942e",
      "b51df0f2c7294cf2d6deb2d858f24074edb5d7d40e353c444cdf319468488065",
      "bb2e7f53a00a8bd55533e220e74e58bad9d91c2b358034eba80c0f4c53c1eefb",
      "e7a761a1c4bfc94c94f12ad8d50fc6879979a1d6262d964af472f1a073085ce2",
      "f07ca4b18f3395c361ab7e781d46068429dc5af3747ed207256163236b998ee5",
      "f1d2f0a7f9fec4e08672a178bd78d04c72bacce341bdefe56616fe0b844e06f9",
      "f735aa14135262644063f01a6d03686b02e3c4a45409178a30419ceb4697db3b",
      "f919b015c5f38909b566c5a7681b6e9e5605bc3dfcb2b26c6612753fb420f6d4"
    ],
    "target_draft_source_sha256s": [
      "1332e845cec5b8d7ff61dac2ceae98c693fe1bf64370e88b82f6e303ac9047f2",
      "1c85a7ece733676be2d091577f93b2f6b0d8541e1974298717cf22eceacc370c",
      "3fd156e7f5cd08ed3492bf7a9f1210c387ecf4d833f75d9c94c76552380c26ff",
      "41df92039afa9acc93ef9bf816a0b031e0216684e9d5b135c5e57222fd000e81",
      "58b36a47c007d472685f7384886b993ae840a2bf97e259046093fd84e5d665cd",
      "6e6dbe8165ee06a197cf4ab2f62ab464c8e5576120bc6792c9772d1055faf121",
      "805779eb5ab0b824bb22b7591487cb8abb3b94954b4a63c094ec56dc0b0179af",
      "8d35170e163c62b83f986ecfed1059d8c4426a923555190b87f2308386f223ff",
      "91ecc055d0da9056673680723a26c744c868a33fc84b326a83332826f731d1c1",
      "a39166617d940ff2333e96d9373f2872688501460a7221c99f4ac6ea505cc6bd",
      "a409de2ddbe16716dd1e9fd80a47f524c83bcbe872ade95463a6fa1cfe892e09",
      "a6e792c16408f864aa3c42b97c85adca594449113ed460c9b8f73de9b520942e",
      "b51df0f2c7294cf2d6deb2d858f24074edb5d7d40e353c444cdf319468488065",
      "bb2e7f53a00a8bd55533e220e74e58bad9d91c2b358034eba80c0f4c53c1eefb",
      "e7a761a1c4bfc94c94f12ad8d50fc6879979a1d6262d964af472f1a073085ce2",
      "f07ca4b18f3395c361ab7e781d46068429dc5af3747ed207256163236b998ee5",
      "f1d2f0a7f9fec4e08672a178bd78d04c72bacce341bdefe56616fe0b844e06f9",
      "f735aa14135262644063f01a6d03686b02e3c4a45409178a30419ceb4697db3b",
      "f919b015c5f38909b566c5a7681b6e9e5605bc3dfcb2b26c6612753fb420f6d4"
    ],
    "target_source_path": "/wwwb/aitools/writer/input/红楼梦（原文版）.txt",
    "p2v17_chapter_count": 20,
    "p2v22_draft_row_count": 1638,
    "now33_manifest_row_count": 1638,
    "historical_registry_candidates_reference_only": true
  },
  "active_route": {
    "next_entrypoint_id": "platform_neutral_prompt_readiness_manual_execution_log_contract",
    "current_status": "post_now33a_full_project_recalibration_landed_validated",
    "current_implementation_priority": "target_source_grounded_entity_registry_build_contract_landed_pending_implementation"
  },
  "deepseek_consultation": {
    "round1": {
      "round_id": "round1_options_risks_artifacts_gate",
      "path": "/wwwb/aitools/writer/outputs/target_source_grounded_entity_registry_deepseek_consultation_20260607_0027",
      "parsed_ref": {
        "path": "/wwwb/aitools/writer/outputs/target_source_grounded_entity_registry_deepseek_consultation_20260607_0027/consultation_parsed.json",
        "exists": true,
        "sha256": "b864cf73724b098a87dfcfd51db43b72c8ca5847947ab9cb00027cb7081089bc",
        "size_bytes": 3764
      },
      "record_ref": {
        "path": "/wwwb/aitools/writer/outputs/target_source_grounded_entity_registry_deepseek_consultation_20260607_0027/consultation_record.json",
        "exists": true,
        "sha256": "d4f53d0618dbd0570a1a67c6b78b079c4a92d5d2adc39c9cb31988aafa44559d",
        "size_bytes": 764
      },
      "parse_status": "pass",
      "call_status": "success",
      "provider_meta": {
        "provider": "deepseek_reviewer",
        "model": "deepseek-v4-pro",
        "base_url": "https://api.deepseek.com/chat/completions",
        "thinking_type": "enabled",
        "reasoning_effort": "max",
        "max_tokens": 32000,
        "timeout_seconds": 600,
        "temperature": 0.0,
        "skipped": false
      },
      "message_fingerprint": "ceb136f92dd3779d3be628d1973dfb7c68155fddb5e74b3cb9a4e788e90b25c1",
      "round1_overall_verdict": "supports_target_source_grounded_registry_build",
      "round2_verdict": "",
      "confidence": "high",
      "finding_counts": {
        "low": 3
      },
      "findings": [
        {
          "category": "uid",
          "description": "UID fingerprint rule references 'strongest source refs' without a precise deterministic rule; ambiguity may lead to UID instability across rebuilds.",
          "required_fix": "Define 'strongest source refs' as the sorted, deduplicated list of all source-evidence ref IDs for the candidate, or adopt a canonical subset selection rule.",
          "severity": "low"
        },
        {
          "category": "uid",
          "description": "The disambiguator for duplicate (name, type) pairs is mentioned but not algorithmically defined; inconsistent disambiguation could cause collision or drift.",
          "required_fix": "Specify a deterministic disambiguator, e.g., appended '-<ref_hash>' based on the sorted set of source refs or an ordinal within the equivalence class.",
          "severity": "low"
        },
        {
          "category": "extraction",
          "description": "Semantic type/subtype assignment relies on LLM advisory; while constrained by validators, it may produce many blocked entries (884) and occasional misclassifications.",
          "required_fix": "Ensure all LLM-assigned types/subtypes are validated against the allowed ontology. For uncertain cases, default to '其他' and mark for review; this is already partially addressed by the blocked-review mechanism.",
          "severity": "low"
        }
      ],
      "required_corrections": [],
      "advisory_only": true,
      "not_evidence_or_acceptance_or_route_authority": true
    },
    "round2": {
      "round_id": "round2_critique_overreach_boundaries",
      "path": "/wwwb/aitools/writer/outputs/target_source_grounded_entity_registry_deepseek_consultation_round2_20260607_0027",
      "parsed_ref": {
        "path": "/wwwb/aitools/writer/outputs/target_source_grounded_entity_registry_deepseek_consultation_round2_20260607_0027/consultation_parsed.json",
        "exists": true,
        "sha256": "12aeebe7bb01ea98c473fe035308007898aeae2c4ae24c3326ff5075144f8577",
        "size_bytes": 6207
      },
      "record_ref": {
        "path": "/wwwb/aitools/writer/outputs/target_source_grounded_entity_registry_deepseek_consultation_round2_20260607_0027/consultation_record.json",
        "exists": true,
        "sha256": "8e2e9fcaacb96076041905fd517464991f142c108c8dc9da6a619fb78a1f9288",
        "size_bytes": 764
      },
      "parse_status": "pass",
      "call_status": "success",
      "provider_meta": {
        "provider": "deepseek_reviewer",
        "model": "deepseek-v4-pro",
        "base_url": "https://api.deepseek.com/chat/completions",
        "thinking_type": "enabled",
        "reasoning_effort": "max",
        "max_tokens": 32000,
        "timeout_seconds": 600,
        "temperature": 0.0,
        "skipped": false
      },
      "message_fingerprint": "6f965360bfdbb526bca9cadc77411f7c5e08bf654f710ae667b699183c3baf56",
      "round1_overall_verdict": "",
      "round2_verdict": "round1_supported_with_corrections",
      "confidence": "medium",
      "finding_counts": {
        "medium": 1,
        "low": 2
      },
      "findings": [
        {
          "category": "extraction",
          "description": "Entity extraction from prompt-draft rows frequently captures short action phrases, stage directions, or adverbial fragments rather than core narrative entities (e.g., '一手扶丰儿', '倒酒', '低声细'). This inflates the blocked-for-review count to 884/912 and may hinder the registry's practical utility for entity linking.",
          "required_fix": "Tighten extraction logic to distinguish content-bearing entities from transient linguistic fragments. Consider filtering out items below a minimum semantic weight or those that are solely meta-instructions.",
          "severity": "medium"
        },
        {
          "category": "extraction",
          "description": "Type/subtype classification relies heavily on LLM advisory with limited validation, resulting in 185 candidates marked 'type_subtype_uncertain' and a large '其他' category. This increases manual review burden and may propagate misclassifications downstream.",
          "required_fix": "Improve the LLM prompt with explicit examples and enforce stricter mapping to the allowed ontology. For ambiguous cases, default to '其他' but flag for review, and consider a secondary human-in-the-loop refinement pass before the registry is considered authority-satisfying.",
          "severity": "low"
        },
        {
          "category": "source_authority",
          "description": "Many blocked candidates have only a single P2V-22 draft row as source evidence, which is marked as 'insufficient_source_evidence'. While the contract permits draft rows as evidence, the extraction does not always verify whether the entity originates from the underlying novel text, weakening the 'source-grounded' claim for low-evidence items.",
          "required_fix": "Add an optional cross-reference step against the original novel text or P2V-17 chapter rows to boost evidence confidence for critical entities. Retain the blocked status unless such corroboration is obtainable.",
          "severity": "low"
        }
      ],
      "required_corrections": [
        "Refine entity extraction criteria to reduce non-entity phrase collection.",
        "Enhance LLM type/subtype classification with stricter guidelines and validation.",
        "Optionally cross-check low-evidence candidates against original source or P2V-17 rows."
      ],
      "advisory_only": true,
      "not_evidence_or_acceptance_or_route_authority": true
    }
  },
  "build_policy": {
    "extractor_mode": "deterministic_surface_aggregation_with_review_blocks",
    "llm_semantic_advisory_allowed": true,
    "llm_uid_authority_allowed": false,
    "authority_satisfying_threshold": {
      "minimum_distinct_draft_rows": 2,
      "minimum_distinct_chapters": 1,
      "no_alias_collision": true,
      "type_must_not_be_other": true
    },
    "blocked_candidate_policy": {
      "blocked_for_review_required": true,
      "review_status_when_blocked": "needs_review",
      "locked_when_blocked": false
    }
  },
  "policy": {
    "stage": "target_source_grounded_entity_registry_build",
    "candidate_registry_build_only": true,
    "candidate_registry_is_not_canonical_authority": true,
    "source_ref_manifest_is_source_validation_data_not_manual_provider_evidence": true,
    "route_transition_allowed": false,
    "provider_specific_prompt_allowed": false,
    "adapter_payload_allowed": false,
    "provider_job_execution_allowed": false,
    "media_generation_allowed": false,
    "manual_provider_evidence_creation_allowed": false,
    "operator_evidence_creation_allowed": false,
    "feedback_intake_allowed": false,
    "repair_execution_allowed": false,
    "replay_execution_allowed": false,
    "accepted_overlay_writeback_allowed": false,
    "operator_overlay_writeback_allowed": false,
    "canonical_kg_writeback_allowed": false,
    "raw_kg_writeback_allowed": false,
    "entity_store_writeback_allowed": false,
    "row_mutation_allowed": false,
    "held_row_promotion_allowed": false,
    "asset_generation_or_acquisition_allowed": false,
    "asset_binding_allowed": false,
    "uid_binding_replay_allowed": false,
    "outputs_index_mutation_allowed": false,
    "operator_production_acceptance_claimed": false,
    "deepseek_advisory_may_substitute_for_expert_advice": true,
    "deepseek_advisory_is_operator_production_acceptance": false,
    "deepseek_findings_are_program_validator_inputs": true,
    "deepseek_findings_have_direct_state_authority": false,
    "runtime_branch_by_work_title_entity_name_or_sample_text_allowed": false,
    "active_route_authority": "execution_state.json.next_entrypoint",
    "execution_state_next_entrypoint_unchanged": true
  },
  "input_fingerprint": "5305a4fc34b2561158599d3fd28c1b427e6bea5a53480e25c61fb88f915cac8a"
}