Files
SGF/docs/proofs/workshop-delivery-link-20261102.json
2026-11-02 20:29:34 +02:00

210 lines
10 KiB
JSON

{
"date": "2026-11-02",
"increment": "WORKSHOP-DELIVERY-LINK-SIM-v1",
"status": "implemented_and_proved_synthetically",
"tests": {
"affected_existing": {
"file": "workshop-stock-1793633268880.xml",
"sha256": "d5094fd19571c96190ae2fa1d2adadcf30d05add4372f6b02b169345fef98319",
"tests": 6,
"assertions": 222,
"cases": [
"test_individual_impact_independence_exact_issue_and_replay",
"test_client_unverified_fraction_and_unknown_delivery_do_not_debit",
"test_stale_book_mapping_permission_scope_and_failure_recovery",
"test_corrected_source_requires_review_and_never_consumes_the_same_origin_twice",
"test_other_company_cannot_read_or_confirm_origin_and_changed_command_is_refused",
"test_concurrent_confirmation_has_one_claim_and_movement"
],
"selected_cases_only": true,
"parent_run_errors": 3,
"parent_run_failures": 0
},
"delivery": {
"file": "workshop-stock-1793633372636.xml",
"sha256": "d660ba55ab6773efcacf0ba202e33f240b1332347a2609d7c9c9521159890ecb",
"tests": 5,
"assertions": 163,
"cases": [
"test_delivery_link_has_zero_effect_independent_decision_and_no_duplicate",
"test_delivery_link_refuses_mismatch_stale_book_and_recovers_from_failure",
"test_delivery_link_can_reconcile_fully_depleted_stock_without_new_issue",
"test_delivery_link_rejects_reversal_and_does_not_adopt_history",
"test_delivery_link_concurrent_confirmation_has_one_claim_without_movement"
],
"selected_cases_only": false,
"parent_run_errors": 0,
"parent_run_failures": 0
},
"additional_integrity_and_isolation": {
"file": "workshop-stock-1793633481884.xml",
"sha256": "0789b68768ce2f21c02b7d694c03681edd293e89dfdb657955b18390880874a4",
"tests": 2,
"assertions": 47,
"cases": [
"test_delivery_link_refuses_missing_original_hash",
"test_delivery_link_other_company_cannot_prepare_or_confirm"
],
"selected_cases_only": false,
"parent_run_errors": 0,
"parent_run_failures": 0
}
},
"totals": {
"tests": 13,
"assertions": 432
},
"selection_note": "Six affected existing cases passed in a run containing three new fixture-bootstrap errors; those errored cases are excluded. The five delivery cases then passed after bootstrap correction and stricter integrity checks; two additional integrity/isolation cases passed separately. Valid native proofs reused without rerunning unchanged native code.",
"scenarios_asserted": {
"initial_milli": "10000",
"already_issued_milli": "2000",
"before_link_milli": "8000",
"after_link_milli": "8000",
"new_physical_movements": 0,
"total_physical_movements": 2,
"total_operations": 1,
"claims": 1,
"original_movement_unchanged": true,
"same_book_stock_read": true,
"preparer_cannot_confirm": true,
"replay_same_movement": true,
"competing_proposal_refused": true,
"quantity_mismatch_refused": true,
"stale_book_refused": true,
"eligibility_revocation_refused": true,
"permission_revocation_refused": true,
"missing_operation_hash_refused": true,
"reversal_book_refused": true,
"other_company_prepare_and_confirm_refused": true,
"other_company_list_empty": true,
"failure_rollback_and_retry_without_duplicate": true,
"fully_depleted_book_can_link_without_debit": true
},
"concurrency_asserted": {
"processes": 2,
"company_row_lock_observed": true,
"first_backend_identified_by_pg_blocking_pids": true,
"after_release": "200/replay/same movement",
"claims": 1,
"physical_milli": "8000"
},
"source_sha256": {
"app/Modules/Workshop/WorkshopStock.php": "ad8701485fdcdc39fad5d9befef2079aef0c5b84c2ade03e6c3600cc0bd879ac",
"app/Modules/Workshop/Http/WorkshopStockController.php": "6a960ab558f77094119993a4f9a7fb45beb69b04275122b80667313761f2794d",
"resources/js/WorkshopStockWorkspace.jsx": "150c265f31411142635d9f83d6bb6f9be26369aea1cb189b282fc2edec9ce88a",
"routes/web.php": "0340363a57dfd0be5e0f4207b54ea2fafaee32c1e8ec62efd927e89c7277f650",
"tests/Feature/WorkshopStockTest.php": "2dcd62fadd205cf6e567742d69a813e1c6a28fa4ee34616b82bd02c58f0ff80a",
"tests/Support/workshop-stock-worker.php": "bdad20fd4f58714c36c20d3c271ac31fdd92a4083cedf31341938b501fd73c2d"
},
"qa_postcheck": {
"qa_identity": {
"db": "sgf_tempo_test",
"role": "sgf_test_runner",
"port": 55439,
"cluster": "sgf_modular_regression_2576427d1939"
},
"temporary_grants_remaining": 0,
"constraint_sha256": "40046092cba51f1b46d26d5f0da8af47e8336e90a8d50b8de3a8c390758f1783",
"operational_workshop_stock_bindings": 0,
"read_only": true
},
"static_ui": {
"path": "docs/proofs/workshop-delivery-ui-20261102.json",
"sha256": "1c5bc4735e6a29d3ff3cab4c499ccc1d3567f0ce9dafa02a34d57c19ae5b3184",
"kind": "static_impact_render_and_source_checks",
"zero_new_physical_effect_visible": true,
"existing_movement_and_quantity_visible": true,
"explicit_treatment_selection_in_source": true,
"component_sha256": "150c265f31411142635d9f83d6bb6f9be26369aea1cb189b282fc2edec9ce88a",
"backend_requests": 0,
"visual_review": false,
"browser_interactions_tested": false
},
"build": {
"passed": true,
"node": "24.22.1",
"vite": "8.3.5",
"manifest_sha256": "81aa20db890f896c6bb10affc2ff1540d5851d876fb316269db649ee5784e896"
},
"reused_proofs": {
"workshop_stock": {
"path": "docs/proofs/workshop-stock-20261102.json",
"sha256": "c13b22eed190e379d8311a8e02586e201f993a89bfc4490be5d9d325d6ca00c3"
},
"shared_writer_manifest_sha256": "3c24d9e9fb99bfbb274077495c3a42ddb7eccab06b5c6a956cd739b2bc9b56f0",
"native_issue_tests": {
"file": "private/stock-receipt-54f39ed20d16/issue-affected-junit.xml",
"sha256": "aed6359ba4216e10bb89f34d40e0314fc9efb0f8dedeea40551c3302f31b8525",
"tests": 25,
"assertions": 125,
"cases": [
"issues are exact, idempotent and cannot make stock negative",
"transfer creates exactly two opposite ledger entries and rejects repeated references",
"counts preserve theoretical quantities and adjustments apply a justified difference once",
"intervening receipts and issues invalidate counts and stale count forms",
"operational role cannot be replaced by administration or other profiles with data set "(App\\Enums\\PurchasingRole Enum (Admin, 'admin'))"",
"operational role cannot be replaced by administration or other profiles with data set "(App\\Enums\\PurchasingRole Enum (Finance, 'finance'))"",
"operational role cannot be replaced by administration or other profiles with data set "(App\\Enums\\PurchasingRole Enum (Procurement, 'procurement'))"",
"operational role cannot be replaced by administration or other profiles with data set "(App\\Enums\\PurchasingRole Enum (DepartmentHead, 'department_head'))"",
"operational role cannot be replaced by administration or other profiles with data set "(App\\Enums\\PurchasingRole Enum (Requester, 'requester'))"",
"foreign company resources cannot be used with data set "('warehouse_id')"",
"foreign company resources cannot be used with data set "('destination_warehouse_id')"",
"foreign company resources cannot be used with data set "('stock_item_id')"",
"foreign company resources cannot be used with data set "('responsible_id')"",
"audit failure rolls back both halves of transfer and operation",
"operations are immutable and new public screen contains only demonstration props",
"invalid precision and missing justification or destination do not write with data set "('quantity', '-1')"",
"invalid precision and missing justification or destination do not write with data set "('quantity', '0')"",
"invalid precision and missing justification or destination do not write with data set "('quantity', '0.0001')"",
"invalid precision and missing justification or destination do not write with data set "('reason', ' ')"",
"invalid precision and missing justification or destination do not write with data set "('destination', '')"",
"invalid precision and missing justification or destination do not write with data set "('responsible_id', null)"",
"positive adjustments credit only the difference and matching counts create no movements",
"failure creating transfer credit rolls back its debit",
"stock views isolate operations and counts from other companies",
"form encoded retry identifiers and equivalent quantities retain idempotency"
],
"selection": false,
"whole_run_tests": 25,
"whole_run_failures": 0,
"whole_run_errors": 0
},
"native_lot_tests": {
"file": "private/stock-receipt-0119bb873c56/issue-lots-junit.xml",
"sha256": "4ea8597200ebd761cb9460acf165e1baaa4f7b7b1b84690a0bfe749b73ddf6dc",
"tests": 2,
"assertions": 10,
"cases": [
"FEFO consumes earliest expiry and preserves the single physical ledger with exact partitions",
"expiry and hold remove usable quantity without changing physical stock"
],
"selection": false,
"whole_run_tests": 2,
"whole_run_failures": 0,
"whole_run_errors": 0
}
},
"preservation": {
"new_synthetic_fixtures_only": true,
"regression_not_reset": true,
"temporary_rights_restored": true,
"six_protected_records_untouched": true,
"blocked_cache_untouched": true,
"demos_untouched": true,
"prior_association_proofs_unchanged": true,
"real_data_or_rights_changed": false,
"purchasing_activation": false,
"publication": false,
"checkpoint": false
},
"limits": [
"Only explicit QA movement-to-order eligibility; no automatic or historical adoption.",
"Only full equal quantities, simple unreversed common-writer issues, no lots/reservations/spare parts.",
"Partial allocations, returns, compensation and amendment of confirmed links not implemented.",
"Operational configuration/installation and one installed procurement-to-consumption scenario remain pending.",
"No new write-load/deployment capacity proof, no browser interaction or visual review."
],
"visual_review_pending": true,
"deployment_capacity_validated": false
}