{
  "shard_id": "FV-PROPFLOOR-SHARD-B20-1",
  "spec_anchor": "FV-PBT-FLOOR-BUILD-SPEC.md §2/§3/§4",
  "population_definition": "all kernels in shard FV-PROPFLOOR-SHARD-B20-1, enumerated below by kernel id and spec digest",
  "wu_reconciliation_note": "The WU row named 10 kernels (art-301, art-302, art-305, art-306, art-313, art-335, art-336, art-338, art-339, art-340). Per FIX-2-CARRY ('verify float-sensitivity and shape against the kernel before authoring, not inherited from the triage table alone'), each of the 10 was checked against the live tree before authoring: art-301-section125-ndt, art-302-401k-adp-acp-test, art-305-aiuc1-evidence-freshness-lint, art-306-agent-insurability-evidence-scorer, and art-313-traiga-exposure-assessor ALREADY carry `.proptest.mjs` floor files, landed by FV-PROPFLOOR-SHARD-B11-1 (PR #1118, `board/done/FV-PROPFLOOR-SHARD-B11-1.md`) before this shard's cutplan (FV-PHASE2-CUTPLAN-WAVE5-2026-08-10) was drawn — a stale-triage-table duplicate, not a misclassification of any individual kernel's float-sensitivity or shape. This row builds floor files for the 5 kernels confirmed actually unfloored (art-335, art-336, art-338, art-339, art-340) and does not re-author or touch the 5 already-floored kernels' existing files.",
  "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) across the full tree (338/338). All 5 rows in this shard are float-sensitive per the WU and carry mandatory ULP-boundary forcing, checked per-item below. 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. One property definition was corrected during authoring after direct measurement: art-339's boundedness property initially compared the kernel's r2-rounded ss_taxable_wages_this_period against an unrounded ssRoomRemaining reconstruction with a 1e-6 tolerance, which false-failed on rounding-scale noise (126/10000 trials) — the reconstruction was corrected to apply the same r2 rounding the kernel applies internally, with tolerance widened to 0.02 (one rounding unit), and re-measured clean (0/10000).",
  "items": [
    {
      "kernel_id": "art-335-compute-dti-ratios",
      "class": "B",
      "float_sensitive": true,
      "ulp_forcing_present": true,
      "kernel_digest": "sha256:2e686160add3cada6ff0482be86c0e368cd1680f7566f8deac31974459f9dc69",
      "proptest_file_digest": "sha256:c1b8998f1984eb1d4511a6fa6ec61a17f1cad842ac61c8a728af3d86d03daace",
      "proptest_file": "chaingraph/kernels/__proptests__/art-335-compute-dti-ratios.proptest.mjs",
      "properties_tested": ["back_end_dti_monotonic_nondecreasing_in_debt", "tier_and_within_max_agree_with_thresholds", "dti_percentages_scale_invariant_under_uniform_dollar_scaling", "ULP_boundary_forcing"],
      "fixture_oracle_result": "PASS (3/3 vectors)",
      "run_proptests_result": "PASS"
    },
    {
      "kernel_id": "art-336-compute-ltv-ratios",
      "class": "B",
      "float_sensitive": true,
      "ulp_forcing_present": true,
      "kernel_digest": "sha256:65a08e84465e1ec8ca4a01e9b4b0c7d7d5c566ca467f6efdf622598c36511706",
      "proptest_file_digest": "sha256:8d8bf19388d3eeb17f6a92367e5a34c1435a54541afa9a27cd612cc677f0ce28",
      "proptest_file": "chaingraph/kernels/__proptests__/art-336-compute-ltv-ratios.proptest.mjs",
      "properties_tested": ["ltv_cltv_hcltv_monotonic_nondecreasing_in_first_lien", "hcltv_gte_cltv_gte_ltv", "ltv_family_scale_invariant_under_uniform_dollar_scaling", "ULP_boundary_forcing"],
      "fixture_oracle_result": "PASS (3/3 vectors)",
      "run_proptests_result": "PASS"
    },
    {
      "kernel_id": "art-338-compute-federal-withholding",
      "class": "B",
      "float_sensitive": true,
      "ulp_forcing_present": true,
      "ulp_forcing_note": "includes exact-bracket-floor boundary cases (crafted gross wages landing adjusted_annual_wage_amount exactly on each of the 7 annual-bracket floors for single_or_mfs) since the schedule is piecewise-linear and rate changes discontinuously at each floor",
      "kernel_digest": "sha256:510689cdacc57d0934a872451735f41f2e58e4b71158ca7acf61f3738a74936b",
      "proptest_file_digest": "sha256:f2ee595313148bb2e4d51533c4a4d7f0657855d565a2ae8677f9224d5a3bead2",
      "proptest_file": "chaingraph/kernels/__proptests__/art-338-compute-federal-withholding.proptest.mjs",
      "properties_tested": ["withholding_monotonic_nondecreasing_in_gross_wages", "withholding_nonnegative_and_bracket_rate_in_range", "bracket_floor_boundary_agreement", "ULP_boundary_forcing"],
      "fixture_oracle_result": "PASS (3/3 vectors)",
      "run_proptests_result": "PASS"
    },
    {
      "kernel_id": "art-339-compute-gross-to-net",
      "class": "B",
      "float_sensitive": true,
      "ulp_forcing_present": true,
      "ulp_forcing_note": "includes ULP-adjacent cases at both hard-coded FICA cutoffs — the $176,100 Social Security wage base and the $200,000 Additional Medicare threshold — at, one cent below, and one cent above each",
      "kernel_digest": "sha256:949b39c2c3461b1855d81d48fe4f12b764bd6dca603183b7909b69d7b0dde81a",
      "proptest_file_digest": "sha256:44c680213ca3d2d2dfa21be233bea80f1ab1d9041516dcade528bcf40f77d09e",
      "proptest_file": "chaingraph/kernels/__proptests__/art-339-compute-gross-to-net.proptest.mjs",
      "properties_tested": ["net_pay_nonincreasing_in_post_tax_deductions", "fica_components_nonnegative_and_ss_taxable_bounded", "no_ss_tax_once_ytd_past_wage_base", "ULP_boundary_forcing"],
      "fixture_oracle_result": "PASS (4/4 vectors)",
      "run_proptests_result": "PASS"
    },
    {
      "kernel_id": "art-340-compute-flsa-regular-rate",
      "class": "B",
      "float_sensitive": true,
      "ulp_forcing_present": true,
      "ulp_forcing_note": "includes exact-40-hour overtime-threshold boundary cases (39.99, 40, 40.01 hours) since overtime_hours = max(0, hours-40) and the regular_rate denominator is hours_worked_week itself",
      "kernel_digest": "sha256:dc00a21aac85481160cee3c24ff63e9fae0faace62668602b069aab28cb7a06a",
      "proptest_file_digest": "sha256:d3012e990477dc917145982cb8d7e57e844054fc43e9f2c8266d35b2efe1417f",
      "proptest_file": "chaingraph/kernels/__proptests__/art-340-compute-flsa-regular-rate.proptest.mjs",
      "properties_tested": ["regular_rate_times_hours_equals_total_remuneration", "overtime_hours_equals_max_zero_hours_minus_40_and_nonneg_outputs", "total_pay_due_linear_homogeneous_in_rate_and_bonus_scaling", "ULP_boundary_forcing"],
      "fixture_oracle_result": "PASS (3/3 vectors)",
      "run_proptests_result": "PASS"
    }
  ],
  "ulp_forcing_summary": "All 5 shard kernels are float-sensitive per the WU and carry mandatory ULP-boundary forcing, checked in each item above.",
  "run_proptests_aggregate": "5/5 shard files passed (node scripts/run-proptests.mjs — 338/338 across the full tree, no regression in prior shards)",
  "fv_floor_coverage": "all 5 shard kernels confirmed absent from check-fv-floor-coverage.mjs prior to this shard and present after; coverage gate reports 308/582 live kernels floored, clean ratchet"
}
