{
  "shard_id": "FV-PROPFLOOR-SHARD-B12-1",
  "spec_anchor": "FV-PBT-FLOOR-BUILD-SPEC.md §2/§3/§4",
  "population_definition": "all kernels in shard FV-PROPFLOOR-SHARD-B12-1, enumerated below by kernel id and spec digest",
  "human_sign_off": {
    "status": "PENDING",
    "name": null,
    "date": null
  },
  "independence_sentence": "Each item listed was reviewed and attested independently; the single signature is a mechanical convenience over the enumerated digests, not a bulk review.",
  "per_item_basis_of_review": "Every row ran the same two mechanical checks unconditionally: (1) the fixture-oracle gate — compute() output diffed against the kernel's own existing golden fixtures before any property was trusted, and (2) run-proptests.mjs green (process exit 0). ULP-boundary forcing was mandatory and present for the 8 float-sensitive rows named in the WU (art-319, art-320, art-321, art-327, art-328, art-329, art-330, art-331 — the five tvm-* rows additionally force near-zero-rate and near-zero-duration edge cases per the WU's explicit instruction, since TVM formulas divide by rate/duration terms). The other 2 rows (art-314, art-316) are the row's stated float:no exceptions and instead carry forced CATEGORICAL boundary cases (missing/non-object policy_parameters fields, unrecognized enum strings, exact threshold-string boundaries) in place of ULP forcing. Three monotonicity/round-trip property definitions were corrected during authoring after direct measurement against the kernel found the initial tolerance or domain assumption false: art-327's annuity-identity tolerance needed to scale with annuity_factor to absorb r2-rounding amplification; art-328's round-trip check needed to reconstruct unit_contribution from raw (unrounded) inputs rather than the r4-rounded output field; art-331's maturity-monotonicity property is restricted to the short/medium-maturity regime ([0.25,10]yr +2yr) because measurement showed convexity legitimately humps and can decrease at long-maturity/high-yield combinations for deep-discount bonds — a real financial effect, not a floor defect, so the property was narrowed rather than the kernel. No row beyond these mechanical checks received a separate in-depth human review in this pass — that is exactly the gap human_sign_off.status=PENDING names.",
  "items": [
    {
      "kernel_id": "art-314-traiga-safe-harbor-pack-builder",
      "class": "B",
      "float_sensitive": false,
      "ulp_forcing_present": false,
      "ulp_forcing_note": "stated float:no exception per the WU row — forced CATEGORICAL boundary cases (both evidence objects absent, one absent, coverage_band at each qualifying/non-qualifying boundary, non-object rmf_mapping, prohibited_use_detected exactly true) used instead of ULP forcing",
      "kernel_digest": "sha256:cda8ec3e208db10583b64a541b161952225891579c887aa1c900f1ab1e317f20",
      "proptest_file_digest": "sha256:868d0140abfebd95ff7bfe388ea6f12e12647d6cae82b9ab12901c3dce41dafc",
      "proptest_file": "chaingraph/kernels/__proptests__/art-314-traiga-safe-harbor-pack-builder.proptest.mjs",
      "properties_tested": ["insufficient_evidence_exact_negation_of_both_objects_present", "meets_substantial_bar_bounded_to_qualifying_bands", "eligible_equals_bar_met_and_not_prohibited"],
      "fixture_oracle_result": "PASS (4/4 vectors)",
      "run_proptests_result": "PASS"
    },
    {
      "kernel_id": "art-316-sb53-frontier-scope-checker",
      "class": "B",
      "float_sensitive": false,
      "ulp_forcing_present": false,
      "ulp_forcing_note": "stated float:no exception per the WU row — compute_flops travels as a decimal STRING (RFC 7493 I-JSON safe-integer rule) compared only via Number() parsing against a fixed threshold string, never raw arithmetic; forced CATEGORICAL boundary cases (flops exactly at threshold string, revenue exactly at $500M threshold, non-numeric flops string) used instead of ULP forcing",
      "kernel_digest": "sha256:bf76db6dbd58cc21042569b32a4e5b60d9f4e3b31a1cded90fb40558f07ff584",
      "proptest_file_digest": "sha256:1b44050fb10fc61de271efa78c23412c0400749582686477883b56320b5fc945",
      "proptest_file": "chaingraph/kernels/__proptests__/art-316-sb53-frontier-scope-checker.proptest.mjs",
      "properties_tested": ["large_frontier_developer_implies_frontier_model", "obligation_set_matches_fixed_0_2_6_tiers", "is_frontier_model_matches_flop_threshold_and_revenue_gate"],
      "fixture_oracle_result": "PASS (4/4 vectors)",
      "run_proptests_result": "PASS"
    },
    {
      "kernel_id": "art-319-rhc-valuation-linter",
      "class": "B",
      "float_sensitive": true,
      "ulp_forcing_present": true,
      "kernel_digest": "sha256:1b2549c6c23eeff309d070117288897e871490b446375f87875bd6d973e25a31",
      "proptest_file_digest": "sha256:7ea3547aeccb2677dfc530d290cce7d359f9304e28a90b871ede31a5dbee41f0",
      "proptest_file": "chaingraph/kernels/__proptests__/art-319-rhc-valuation-linter.proptest.mjs",
      "properties_tested": ["delta_exact_computed_minus_correct", "verdict_bounded_to_declared_enum", "correct_value_exact_unrounded_double_product", "ULP_boundary_forcing"],
      "fixture_oracle_result": "PASS (2/2 vectors)",
      "run_proptests_result": "PASS"
    },
    {
      "kernel_id": "art-320-rhc-collateral-haircut",
      "class": "B",
      "float_sensitive": true,
      "ulp_forcing_present": true,
      "kernel_digest": "sha256:fd8a869feabce17a886f3ccfab9cd1934a02f866b36883269c186a0af544c5a0",
      "proptest_file_digest": "sha256:59f571edfc4021d917c98876a0c609de2a4c23122f5af95a32b3e408f320fa44",
      "proptest_file": "chaingraph/kernels/__proptests__/art-320-rhc-collateral-haircut.proptest.mjs",
      "properties_tested": ["final_haircut_clamped_0_to_1", "extra_haircut_exact_fixed_addon_sum", "final_haircut_nondecreasing_in_base_haircut", "ULP_boundary_forcing"],
      "fixture_oracle_result": "PASS (3/3 vectors)",
      "run_proptests_result": "PASS"
    },
    {
      "kernel_id": "art-321-rhc-bold-finality-classifier",
      "class": "B",
      "float_sensitive": true,
      "ulp_forcing_present": true,
      "kernel_digest": "sha256:843562f81f65f23041c7aed365bb1e7119591065931b82e37682c2ad6489ea93",
      "proptest_file_digest": "sha256:a9ec59d969d6f04dbcbd23822a1b05f260335018b81990333915713d179b6167",
      "proptest_file": "chaingraph/kernels/__proptests__/art-321-rhc-bold-finality-classifier.proptest.mjs",
      "properties_tested": ["finality_class_bounded_to_fixed_4_state_set", "claim_verdict_matches_rank_comparison_exactly", "finality_class_rank_nondecreasing_soft_to_posted_to_asserted", "ULP_boundary_forcing"],
      "fixture_oracle_result": "PASS (2/2 vectors)",
      "run_proptests_result": "PASS"
    },
    {
      "kernel_id": "art-327-tvm-annuity",
      "class": "B",
      "float_sensitive": true,
      "ulp_forcing_present": true,
      "ulp_forcing_note": "includes near-zero-rate cases (rate_pct=0, rate_pct=1e-13, rate_pct=-0) per the WU's mandatory TVM near-zero-rate instruction, since the annuity factor divides by rate outside the limit branch",
      "kernel_digest": "sha256:165274b6b7aaf7bdd149aa20b208b60dd4d5a632e159d6801d213a8808b2e4e9",
      "proptest_file_digest": "sha256:3abc05304c9e8ac47292360b060fcda1745c67544874ca1b63bcd76f0ae77aac",
      "proptest_file": "chaingraph/kernels/__proptests__/art-327-tvm-annuity.proptest.mjs",
      "properties_tested": ["annuity_equation_holds_for_solved_value", "solved_outputs_and_annuity_factor_finite", "due_annuity_factor_equals_ordinary_times_1_plus_rate", "ULP_boundary_forcing"],
      "fixture_oracle_result": "PASS (2/2 vectors)",
      "run_proptests_result": "PASS"
    },
    {
      "kernel_id": "art-328-tvm-breakeven",
      "class": "B",
      "float_sensitive": true,
      "ulp_forcing_present": true,
      "ulp_forcing_note": "includes near-zero-unit-contribution cases (price exactly equals variable cost, variable cost 1 ULP above price) — this kernel has no rate/duration term, so its analogue of the mandatory near-zero-rate/duration TVM boundary is the near-zero denominator in fixed_costs/unit_contribution",
      "kernel_digest": "sha256:8ee3fde4026fd67095856d912a31f30448034efb23fcf876c670c518b1e1cb54",
      "proptest_file_digest": "sha256:56fb067fafd503b29e19a82a41427b8f1ea76bb163d6dc1c1bbb5a9bdfc9c135",
      "proptest_file": "chaingraph/kernels/__proptests__/art-328-tvm-breakeven.proptest.mjs",
      "properties_tested": ["breakeven_units_times_unit_contribution_roundtrips_to_fixed_costs", "contribution_margin_ratio_bounded_0_to_1", "breakeven_units_nondecreasing_in_fixed_costs", "ULP_boundary_forcing"],
      "fixture_oracle_result": "PASS (1/1 vectors)",
      "run_proptests_result": "PASS"
    },
    {
      "kernel_id": "art-329-tvm-bond-duration",
      "class": "B",
      "float_sensitive": true,
      "ulp_forcing_present": true,
      "ulp_forcing_note": "includes near-zero-rate (ytm_pct=0) and near-zero-duration (years_to_maturity=1/365) cases per the WU's mandatory TVM instruction, since modified duration divides by (1+periodic yield) and Macaulay duration divides by price",
      "kernel_digest": "sha256:1a9ea550792a2f97b68467d9ee4ba5672eb14643c70df767526da61b7913d531",
      "proptest_file_digest": "sha256:a0034d42c314ca523a4c4079ffb3b41a000e7ad84782e607cfeec389b6331ce7",
      "proptest_file": "chaingraph/kernels/__proptests__/art-329-tvm-bond-duration.proptest.mjs",
      "properties_tested": ["macaulay_duration_bounded_by_maturity_plus_one_period", "modified_duration_equals_macaulay_over_1_plus_periodic_yield", "price_nonincreasing_as_ytm_rises", "ULP_boundary_forcing"],
      "fixture_oracle_result": "PASS (1/1 vectors)",
      "run_proptests_result": "PASS"
    },
    {
      "kernel_id": "art-330-tvm-dv01",
      "class": "B",
      "float_sensitive": true,
      "ulp_forcing_present": true,
      "ulp_forcing_note": "includes near-zero-rate (ytm_pct=0) and near-zero-duration (years_to_maturity=1/365) cases per the WU's mandatory TVM instruction; also exercises basis_points=0 and a fractional basis_points shock, directly relevant to this kernel's fixture-documented prior 100x scale bug (CC-G-RECOVER-1) in the shock-size calculation",
      "kernel_digest": "sha256:76262e8984a1549f9ff95eb1312333c269fc15afbeb9c2f7fc6a7364393ef966",
      "proptest_file_digest": "sha256:2031f41265f814be9b00d4d92449cba92672f8712bdfbe51283829eb2e774725",
      "proptest_file": "chaingraph/kernels/__proptests__/art-330-tvm-dv01.proptest.mjs",
      "properties_tested": ["dv01_non_negative_for_vanilla_bullet_bond", "price_up_shock_never_exceeds_price_down_shock", "dv01_exactly_half_price_down_minus_price_up", "ULP_boundary_forcing"],
      "fixture_oracle_result": "PASS (1/1 vectors)",
      "run_proptests_result": "PASS"
    },
    {
      "kernel_id": "art-331-tvm-convexity",
      "class": "B",
      "float_sensitive": true,
      "ulp_forcing_present": true,
      "ulp_forcing_note": "includes near-zero-rate (ytm_pct=0) and near-zero-duration (years_to_maturity=1/365) cases per the WU's mandatory TVM instruction; maturity-monotonicity property restricted to the [0.25,10]yr+2yr short/medium regime after measurement showed convexity legitimately humps and decreases at long-maturity/high-yield deep-discount combinations",
      "kernel_digest": "sha256:56d259be1b9261ab5eb2f2370e7965b48ec47f329ad585c5e980a327525262c5",
      "proptest_file_digest": "sha256:a43e2513d40d0803d1d2bb41b260c5c8ac7a55ee992b7af31431503f2ab00c65",
      "proptest_file": "chaingraph/kernels/__proptests__/art-331-tvm-convexity.proptest.mjs",
      "properties_tested": ["convexity_non_negative_for_vanilla_bullet_bond", "convexity_price_adjustment_pct_matches_half_convexity_dy_squared", "convexity_nondecreasing_as_maturity_extends_short_medium_regime", "ULP_boundary_forcing"],
      "fixture_oracle_result": "PASS (1/1 vectors)",
      "run_proptests_result": "PASS"
    }
  ],
  "ulp_forcing_summary": "8 of 10 kernels required ULP-boundary forcing (art-319, art-320, art-321, art-327, art-328, art-329, art-330, art-331, as named in the WU row) and carry it, checked in each item above — the five tvm-* rows (art-327/328/329/330/331) additionally force near-zero-rate/near-zero-duration edge cases per the WU's explicit instruction. The other 2 (art-314, art-316) are the row's stated float:no exceptions and carry forced categorical boundary cases instead.",
  "run_proptests_aggregate": "10/10 shard files passed (node scripts/run-proptests.mjs — 229/229 across the full tree, no regression in prior shards)",
  "fv_floor_coverage": "all 10 shard kernels confirmed absent from check-fv-floor-coverage.mjs --list-unfloored (grepped by exact mcp_name); coverage gate reports 209/582 live kernels floored, clean ratchet"
}
