{
  "shard_id": "FV-PROPFLOOR-SHARD-B5-1",
  "spec_anchor": "FV-PBT-FLOOR-BUILD-SPEC.md §2/§3/§4",
  "population_definition": "all kernels in shard FV-PROPFLOOR-SHARD-B5-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-180, art-181, art-183, art-184, art-185, art-186, art-197, art-212 — each involves a real-number division, ratio, or clamp comparison confirmed on direct kernel read), checked below. The other 2 rows (art-187, art-207) are the row's stated float:no exceptions — art-187's only numeric use is a summed >0 scope-amount gate with no division/rounding chain, and art-207 is pure string/set-membership formatting with no numeric computation at all — both confirmed on direct kernel read and instead carry forced CATEGORICAL boundary cases (empty/negative inputs, missing required fields, unrecognized enum values, exact fixed-threshold ties). No row beyond these two 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-180-solvency2-scr-ratio-calculator",
      "class": "B",
      "float_sensitive": true,
      "ulp_forcing_present": true,
      "kernel_digest": "sha256:58ddc09d3c1b6bccab424d5392e51c690e34d0466a76b885b19a819ef7f7875f",
      "proptest_file_digest": "sha256:f135ad758b174dc86f3b061d79fc72fdf7baa351292a4bee2cfb2aa444ae5c90",
      "proptest_file": "chaingraph/kernels/__proptests__/art-180-solvency2-scr-ratio-calculator.proptest.mjs",
      "properties_tested": ["monotone_ratio_vs_funds_and_scr", "boundedness_nonneg_and_tier1_total_formula", "breach_and_tiering_matches_raw_threshold_formula", "ULP_boundary_forcing"],
      "fixture_oracle_result": "PASS (3/3 vectors)",
      "run_proptests_result": "PASS"
    },
    {
      "kernel_id": "art-181-sii-ifrs17-reconciliation-bridger",
      "class": "B",
      "float_sensitive": true,
      "ulp_forcing_present": true,
      "kernel_digest": "sha256:83afe488b0820b034337102a6031f5e0e2ead582faf4d3998b0d65dabc2def33",
      "proptest_file_digest": "sha256:5f480b2d12e3ef33ec95e5f94104938be8282664ba702eaf54dc6779f510a4dd",
      "proptest_file": "chaingraph/kernels/__proptests__/art-181-sii-ifrs17-reconciliation-bridger.proptest.mjs",
      "properties_tested": ["boundedness_relative_pcts_nonneg", "sums_and_tolerance_flag_match_raw_formula", "monotone_widening_gap_never_restores_tolerance", "ULP_boundary_forcing"],
      "fixture_oracle_result": "PASS (3/3 vectors)",
      "run_proptests_result": "PASS"
    },
    {
      "kernel_id": "art-183-irrbb-eve-shock-calculator",
      "class": "B",
      "float_sensitive": true,
      "ulp_forcing_present": true,
      "kernel_digest": "sha256:688cc0519d212cdc48f08b6a4d5ebce07750de7562edc9abad7f91202ba38bf9",
      "proptest_file_digest": "sha256:b0917a6ccc71685ab3bc119ef29910ddedd569232bd5753a9b0eaa0f36bbf0f0",
      "proptest_file": "chaingraph/kernels/__proptests__/art-183-irrbb-eve-shock-calculator.proptest.mjs",
      "properties_tested": ["total_net_gap_matches_raw_sum", "scenario_delta_eve_matches_independent_formula", "worst_scenario_matches_min_of_shocks", "ULP_boundary_forcing"],
      "fixture_oracle_result": "PASS (2/2 vectors)",
      "run_proptests_result": "PASS"
    },
    {
      "kernel_id": "art-184-irrbb-sot-eve-evaluator",
      "class": "B",
      "float_sensitive": true,
      "ulp_forcing_present": true,
      "kernel_digest": "sha256:83f3aad85600dfd0e80b47b86e5d42e5774e39b792077038e2debae508d10ed5",
      "proptest_file_digest": "sha256:60a6335bd35181095b489341198d4259b4452e6b272c20182b460ad9edea5b91",
      "proptest_file": "chaingraph/kernels/__proptests__/art-184-irrbb-sot-eve-evaluator.proptest.mjs",
      "properties_tested": ["eve_outlier_matches_raw_threshold_formula", "boundedness_pct_nonneg_and_echoed_fields", "monotone_pct_nondecreasing_with_larger_decline", "ULP_boundary_forcing"],
      "fixture_oracle_result": "PASS (3/3 vectors)",
      "run_proptests_result": "PASS"
    },
    {
      "kernel_id": "art-185-irrbb-sot-nii-evaluator",
      "class": "B",
      "float_sensitive": true,
      "ulp_forcing_present": true,
      "kernel_digest": "sha256:2d05e7c0659fd1f50c44dfda82c85033da1c389295bdad27c99998a4077f98cc",
      "proptest_file_digest": "sha256:26f34dff0bf0c113ba2d67efc5924b0f3a2d187ec526adb5ddcd676e97e596ec",
      "proptest_file": "chaingraph/kernels/__proptests__/art-185-irrbb-sot-nii-evaluator.proptest.mjs",
      "properties_tested": ["nii_outlier_matches_raw_threshold_formula", "boundedness_pct_nonneg_and_echoed_fields", "monotone_pct_nondecreasing_with_larger_decline", "ULP_boundary_forcing"],
      "fixture_oracle_result": "PASS (3/3 vectors)",
      "run_proptests_result": "PASS"
    },
    {
      "kernel_id": "art-186-irrbb-standardised-approach-mapper",
      "class": "B",
      "float_sensitive": true,
      "ulp_forcing_present": true,
      "kernel_digest": "sha256:3687fcacedfebe176360464c1aaed42703249cb1305e2538b3058ef6a417c271",
      "proptest_file_digest": "sha256:f995f937c5e87d152d1d3bbac689c16f9b3117d20a03207af7237f04742c902a",
      "proptest_file": "chaingraph/kernels/__proptests__/art-186-irrbb-standardised-approach-mapper.proptest.mjs",
      "properties_tested": ["unrecognized_category_falls_back_to_retail_transactional", "cap_application_matches_raw_comparison_and_stays_bounded", "addon_required_iff_prepay_pct_positive", "ULP_boundary_forcing"],
      "fixture_oracle_result": "PASS (3/3 vectors)",
      "run_proptests_result": "PASS"
    },
    {
      "kernel_id": "art-187-irrbb-csrbb-scope-checker",
      "class": "B",
      "float_sensitive": false,
      "ulp_forcing_present": false,
      "ulp_forcing_note": "stated float:no exception per the WU row, confirmed on direct kernel read — the only numeric use is a summed >0 scope-amount gate, no real-division/rounding chain. Forced CATEGORICAL boundary cases (smallest-possible positive in-scope amount, negative instrument amount, non-boolean truthy governance value, all-empty input) used instead of ULP forcing",
      "kernel_digest": "sha256:fea6edb4b186ef335fd7e3df37d128065a18992ad5cfb21893345d0ed47e2a22",
      "proptest_file_digest": "sha256:e0d2eb20fa679266f9bacbb3e913fd2623960711914e6673a2b3bfa408a00d38",
      "proptest_file": "chaingraph/kernels/__proptests__/art-187-irrbb-csrbb-scope-checker.proptest.mjs",
      "properties_tested": ["monotone_full_governance_never_worsens_gaps", "boundedness_gaps_known_set_and_conformant_iff_empty"],
      "fixture_oracle_result": "PASS (3/3 vectors)",
      "run_proptests_result": "PASS"
    },
    {
      "kernel_id": "art-197-pil-flavor-mapper",
      "class": "B",
      "float_sensitive": true,
      "ulp_forcing_present": true,
      "kernel_digest": "sha256:56ca92d4607a236ab837bea0ab681065f309ac7343457a9f057e4b1fcc7a9ae9",
      "proptest_file_digest": "sha256:28490078531d273ca6da509b9efc9f8007be545f954f1a7a1b3a9f7bc1a8b847",
      "proptest_file": "chaingraph/kernels/__proptests__/art-197-pil-flavor-mapper.proptest.mjs",
      "properties_tested": ["flavor_is_pure_function_of_commercial_and_derivatives", "boundedness_revshare_0_100_and_fee_nonneg_integer", "fee_and_revshare_match_raw_floor_clamp_formula", "ULP_boundary_forcing"],
      "notes": "compute() is async in this kernel — every call in the floor file awaits it.",
      "fixture_oracle_result": "PASS (4/4 vectors)",
      "run_proptests_result": "PASS"
    },
    {
      "kernel_id": "art-207-attribution-string-generator",
      "class": "B",
      "float_sensitive": false,
      "ulp_forcing_present": false,
      "ulp_forcing_note": "stated float:no exception per the WU row, confirmed on direct kernel read — pure string/set-membership formatting (TASL line, ccREL JSON-LD, RDFa) over a fixed license table, no numeric computation at all. Forced CATEGORICAL boundary cases (all-empty input, CC0 vs standard-license phrasing branch, whitespace-padded fields, unrecognized license id, work_url override) used instead of ULP forcing",
      "kernel_digest": "sha256:93ef8ec9fa4ffdc03b213bad686e8ed98f183bbb707fce9629bf0721e6cff2a5",
      "proptest_file_digest": "sha256:cceeeca9ab31ed6d177e75d305a6fa979e53f92bbde85fb2940c26a922057ff1",
      "proptest_file": "chaingraph/kernels/__proptests__/art-207-attribution-string-generator.proptest.mjs",
      "properties_tested": ["valid_iff_all_required_fields_present_and_license_known", "boundedness_output_fields_empty_iff_invalid"],
      "fixture_oracle_result": "PASS (4/4 vectors)",
      "run_proptests_result": "PASS"
    },
    {
      "kernel_id": "art-212-prediction-market-arbitrage",
      "class": "B",
      "float_sensitive": true,
      "ulp_forcing_present": true,
      "kernel_digest": "sha256:50383b30da28ddff91ea438dbd7fb49e6a9688b10a493a72d42811a35733f2b9",
      "proptest_file_digest": "sha256:a40cd6df72baa8a90a26b49e263e822f22433db8b6496ee8a39c93a170d54e2b",
      "proptest_file": "chaingraph/kernels/__proptests__/art-212-prediction-market-arbitrage.proptest.mjs",
      "properties_tested": ["boundedness_clamped_prices_and_nonneg_fees", "arb_exists_matches_gross_spread_sign", "net_profit_reconstructs_from_gross_and_fees", "metamorphic_stake_scale_linearity_on_capital_deployed", "ULP_boundary_forcing"],
      "fixture_oracle_result": "PASS (3/3 vectors)",
      "run_proptests_result": "PASS"
    }
  ],
  "ulp_forcing_summary": "8 of 10 kernels required ULP-boundary forcing (art-180, art-181, art-183, art-184, art-185, art-186, art-197, art-212 — each named in the WU row and confirmed on direct kernel read: real-number division, ratio, or clamp comparisons) and carry it, checked per-item above. The other 2 (art-187, art-207) are the row's stated float:no exceptions, confirmed on direct kernel read, and carry forced categorical boundary cases instead.",
  "run_proptests_aggregate": "10/10 shard files passed (node scripts/run-proptests.mjs — 99/99 across the full tree, no regression in prior shards)",
  "fv_floor_coverage": "all 10 shard kernels confirmed floored via check-fv-floor-coverage.mjs; coverage gate reports 99/582 live kernels floored, clean ratchet (483 unfloored, at or under baseline)"
}
