{
  "shard_id": "FV-PROPFLOOR-SHARD-B23-1",
  "spec_anchor": "FV-PBT-FLOOR-BUILD-SPEC.md §2/§3/§4",
  "population_definition": "all kernels in shard FV-PROPFLOOR-SHARD-B23-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() (or, for the two §25 private-input kernels, buildArtifact() driven by the matching *.disclosure.json test-only witness) output diffed against the kernel's own existing golden fixtures before any property was trusted, and (2) run-proptests.mjs green (process exit 0; confirmed 358/358 across the full tree including this shard's 10). CLASSIFICATION CORRECTED FROM THE WU FOR THREE OF THE TEN KERNELS, per the spec's FIX-2 carry instruction to verify float-sensitivity against the kernel source rather than inherit the triage table: art-411-ai-addendum-assembler was listed float:yes but has no numeric fields at all (boolean/string assembler only) — corrected to float:no, categorical boundary forcing used. art-428-cyber-incident-clock was listed float:yes but performs only integer-millisecond timestamp arithmetic (Date.parse results plus fixed HOUR_MS/DAY_MS constants, strict integer `>` comparisons, no division/multiplication producing an inexact double) — corrected to float:no, categorical timestamp-boundary forcing used instead. art-434-call-report-edit-check-gate was listed float:no but its EDIT-RCR-04/05 checks perform raw float division (cet1Usd/totalRwaUsd, totalCapitalUsd/totalRwaUsd) compared against a fixed 0.0005 tolerance band — corrected to float:yes, ULP-boundary forcing added at that 0.0005 boundary. Net float-sensitive set for this shard after correction: {art-414, art-415, art-432, art-433, art-434, art-435} (6, ULP-forced) vs {art-409, art-411, art-412, art-428} (4, categorical-forced) — same 7-vs-3 split size as the WU stated, membership corrected. Two property-derivation bugs were found and fixed during authoring by direct measurement against the kernel (art-433's P1/P2 initially recomputed total_capital_usd and the cet1 ratio from the kernel's already-r2/r6-ROUNDED display fields, double-rounding against the kernel's own unrounded internal derivation — corrected to recompute from raw policy_parameters exactly as the kernel does, per the same shape B12's art-327/328 corrections took). 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-409-dpa-art28-completeness-checker",
      "class": "B",
      "float_sensitive": false,
      "ulp_forcing_present": false,
      "ulp_forcing_note": "stated float:no exception per the WU row, confirmed on read — all inputs/outputs are enum status strings and integer counts, no arithmetic. Forced CATEGORICAL boundary cases used instead (all-present, all-missing, all-weak, empty/null clause_status, mixed statuses, unrecognized status strings).",
      "kernel_digest": "sha256:640dfd01155c133e833f96c9b7304ae863c00abeb361a3d1d707e96fc85e9b40",
      "proptest_file": "chaingraph/kernels/__proptests__/art-409-dpa-art28-completeness-checker.proptest.mjs",
      "properties_tested": ["art28_complete_exact_rule", "counts_partition_and_verdict_bounded", "coverage_pct_exact_and_bounded", "categorical_boundary_forcing"],
      "fixture_oracle_result": "PASS (4/4 vectors)",
      "run_proptests_result": "PASS"
    },
    {
      "kernel_id": "art-411-ai-addendum-assembler",
      "class": "B",
      "float_sensitive": false,
      "ulp_forcing_present": false,
      "ulp_forcing_note": "CORRECTED FROM float:yes IN THE WU — direct read of the kernel found no numeric fields whatsoever (boolean/string template assembler only); reclassified float:no. Forced CATEGORICAL boundary cases used instead (training-fields-required-if-training-permitted, non-boolean truthy string rejected, missing/whitespace-only required fields, fully empty policy_parameters).",
      "kernel_digest": "sha256:acbbbf9e75cae616381dcbdd06684f7b930a4717cb5966d6de4438ede3f04201",
      "proptest_file": "chaingraph/kernels/__proptests__/art-411-ai-addendum-assembler.proptest.mjs",
      "properties_tested": ["invalid_checks_imply_null_markdown_and_vice_versa", "template_constants_stable", "ai_training_flag_matches_input_exactly", "categorical_boundary_forcing"],
      "fixture_oracle_result": "PASS (3/3 vectors)",
      "run_proptests_result": "PASS"
    },
    {
      "kernel_id": "art-412-ai-act-procurement-clause-mapper",
      "class": "B",
      "float_sensitive": false,
      "ulp_forcing_present": false,
      "ulp_forcing_note": "stated float:no exception per the WU row, confirmed on read — risk_tier is a normalized enum string, clause sets are fixed arrays. Forced CATEGORICAL boundary cases used instead (case/whitespace normalization, unrecognized tier strings, missing risk_tier).",
      "kernel_digest": "sha256:892f0f32b3889153f5a40251ad7cf96f85b3588942c675d4f91008061a33927a",
      "proptest_file": "chaingraph/kernels/__proptests__/art-412-ai-act-procurement-clause-mapper.proptest.mjs",
      "properties_tested": ["risk_tier_bounded_to_null_or_two_enum_values", "clause_set_exact_per_normalized_tier", "reapplying_compute_to_normalized_output_is_idempotent", "categorical_boundary_forcing"],
      "fixture_oracle_result": "PASS (3/3 vectors)",
      "run_proptests_result": "PASS"
    },
    {
      "kernel_id": "art-414-compute-rbc-action-level-private",
      "class": "B",
      "float_sensitive": true,
      "ulp_forcing_present": true,
      "ulp_forcing_note": "§25 ocg-private-input@1 kernel — compute(pp) never recomputes the tier from policy_parameters alone by design, so the fixture-oracle and every property drives buildArtifact(raw) with the matching out-of-band disclosure witness ({rbc_components, salt}) instead, the kernel's only real compute path. ULP forcing at the 70/100/150/200 five-tier threshold ladder over the private rbc_ratio_pct = (tac/acl)*100.",
      "kernel_digest": "sha256:f2beca9ef027189ddc810d8ad3f1f3fb2105ee53a8a4e810241c8ca132b5194a",
      "proptest_file": "chaingraph/kernels/__proptests__/art-414-compute-rbc-action-level-private.proptest.mjs",
      "properties_tested": ["action_level_code_bounded_to_5_declared_tiers", "tier_matches_independently_recomputed_ratio", "tier_rank_nondecreasing_as_capital_increases", "ULP_boundary_forcing", "compute_decoy_never_fabricates_a_tier"],
      "fixture_oracle_result": "PASS (2/2 vectors, via buildArtifact + disclosure.json witness)",
      "run_proptests_result": "PASS"
    },
    {
      "kernel_id": "art-415-check-capital-adequacy-private",
      "class": "B",
      "float_sensitive": true,
      "ulp_forcing_present": true,
      "ulp_forcing_note": "§25 ocg-private-input@1 kernel — same shape as art-414: every property drives buildArtifact(raw) with the matching {capital_inputs, salt} disclosure witness. ULP forcing at the caller-declared regulatory minimum and minimum+2.5pp well-capitalized buffer boundaries over the private ratio_pct = (capital/rwa)*100.",
      "kernel_digest": "sha256:2ea7eb0372ecebf09f65212f7005ce7e5e31c1e0b784b1a8e55b057cc5f98846",
      "proptest_file": "chaingraph/kernels/__proptests__/art-415-check-capital-adequacy-private.proptest.mjs",
      "properties_tested": ["tier_bounded_to_3_declared_values", "above_minimum_and_tier_match_recomputed_ratio", "tier_rank_nondecreasing_as_capital_increases", "ULP_boundary_forcing", "compute_decoy_never_fabricates_a_verdict"],
      "fixture_oracle_result": "PASS (2/2 vectors, via buildArtifact + disclosure.json witness)",
      "run_proptests_result": "PASS"
    },
    {
      "kernel_id": "art-428-cyber-incident-clock",
      "class": "B",
      "float_sensitive": false,
      "ulp_forcing_present": false,
      "ulp_forcing_note": "CORRECTED FROM float:yes IN THE WU — direct read found only integer-millisecond timestamp arithmetic (Date.parse results plus fixed HOUR_MS/DAY_MS constants, strict integer `>` comparisons); no division/multiplication producing an inexact double anywhere in compute(). Reclassified float:no. Forced CATEGORICAL timestamp-boundary cases used instead (completed-at exactly-at-deadline vs 1ms-late, evaluated-at exactly-at-deadline vs 1ms-missed, unparseable determination_at, SEC weekend business-day-arithmetic walk).",
      "kernel_digest": "sha256:6bbd5af5d5a8f8a001a6b5e62fde257a5a22943d218e038ce6c4ae78bb142c8e",
      "proptest_file": "chaingraph/kernels/__proptests__/art-428-cyber-incident-clock.proptest.mjs",
      "properties_tested": ["banking_deadline_exact_36h_or_null", "nydfs_deadline_exact_72h_or_null", "item_state_bounded_to_3_declared_values", "categorical_timestamp_boundary_forcing"],
      "fixture_oracle_result": "PASS (4/4 vectors)",
      "run_proptests_result": "PASS"
    },
    {
      "kernel_id": "art-432-call-report-rc-balance-sheet",
      "class": "B",
      "float_sensitive": true,
      "ulp_forcing_present": true,
      "kernel_digest": "sha256:ebdcc54a5a9f44bae3307929b2c226e91666a2929a99fb42e15eb5f0df79c7d1",
      "proptest_file": "chaingraph/kernels/__proptests__/art-432-call-report-rc-balance-sheet.proptest.mjs",
      "properties_tested": ["total_assets_exact_r2_sum", "forced_balanced_inputs_always_report_identity_balanced", "identity_balanced_exact_tolerance_rule_never_negative", "ULP_boundary_forcing"],
      "fixture_oracle_result": "PASS (2/2 vectors)",
      "run_proptests_result": "PASS"
    },
    {
      "kernel_id": "art-433-call-report-rcr-capital",
      "class": "B",
      "float_sensitive": true,
      "ulp_forcing_present": true,
      "ulp_forcing_note": "P1/P2 property definitions were corrected during authoring after direct measurement against the kernel found the initial recompute wrong: the kernel derives total_capital_usd and the ratio divisions from UNROUNDED internal tier1/cet1/RWA values, then independently r2/r6-rounds each for DISPLAY — recomputing 'expected' from the already-rounded output fields double-rounds and produced spurious violations (2483/10000 and 6/10000 respectively) near cent/ppm boundaries. Corrected to recompute from raw policy_parameters exactly as the kernel does.",
      "kernel_digest": "sha256:c62ba6456819dce8756770a395024a9508cf9685dd9d3ca1409ebe2d6e01546c",
      "proptest_file": "chaingraph/kernels/__proptests__/art-433-call-report-rcr-capital.proptest.mjs",
      "properties_tested": ["total_capital_exact_r2_tier1_plus_tier2_from_raw_inputs", "pass_flags_and_ratios_match_recomputed_division_from_raw_inputs", "cet1_ratio_nondecreasing_as_cet1_capital_increases", "ULP_boundary_forcing"],
      "fixture_oracle_result": "PASS (2/2 vectors)",
      "run_proptests_result": "PASS"
    },
    {
      "kernel_id": "art-434-call-report-edit-check-gate",
      "class": "B",
      "float_sensitive": true,
      "ulp_forcing_present": true,
      "ulp_forcing_note": "CORRECTED FROM float:no IN THE WU — direct read found EDIT-RCR-04/05 perform raw float division (cet1Usd/totalRwaUsd, totalCapitalUsd/totalRwaUsd) compared against a fixed 0.0005 tolerance band, a genuine ULP-sensitive threshold comparison. Reclassified float:yes; ULP forcing added at the 0.0005 consistency-check boundary plus the pre-existing balance-identity rounding-tolerance boundary.",
      "kernel_digest": "sha256:fc730e1410814863f534802d3bcd7d948ac232f8f1fb5ddcf9078e4c97dd075d",
      "proptest_file": "chaingraph/kernels/__proptests__/art-434-call-report-edit-check-gate.proptest.mjs",
      "properties_tested": ["gate_status_exact_rule", "check_count_fixed_and_gate_status_bounded", "edit_rc01_balance_identity_exact_tolerance_rule", "ULP_boundary_forcing"],
      "fixture_oracle_result": "PASS (2/2 vectors)",
      "run_proptests_result": "PASS"
    },
    {
      "kernel_id": "art-435-bhc-schedule-hc-balance-sheet",
      "class": "B",
      "float_sensitive": true,
      "ulp_forcing_present": true,
      "kernel_digest": "sha256:82f0207a25a6122e68a398fa7e274529843c39c73a82287c072e77a414b0e7fe",
      "proptest_file": "chaingraph/kernels/__proptests__/art-435-bhc-schedule-hc-balance-sheet.proptest.mjs",
      "properties_tested": ["total_assets_exact_r2_sum", "forced_balanced_inputs_always_report_identity_balanced", "identity_balanced_exact_tolerance_rule_never_negative", "ULP_boundary_forcing"],
      "fixture_oracle_result": "PASS (2/2 vectors)",
      "run_proptests_result": "PASS"
    }
  ]
}
