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

232 lines
12 KiB
JSON

{
"date": "2026-11-02",
"increment": "WORKSHOP-STOCK-ISSUE-SIM-v1",
"status": "local_synthetic_implementation",
"tests": {
"reused_passing_cases": {
"file": "workshop-stock-1793632450233.xml",
"sha256": "8623c2a85428491d04eb90c0f162a1587226f9ab9c276534463f019472fc0f68",
"tests": 4,
"assertions": 154,
"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_concurrent_confirmation_has_one_claim_and_movement"
],
"selection": true,
"whole_run_tests": 5,
"whole_run_failures": 1,
"whole_run_errors": 0
},
"corrected_source": {
"file": "workshop-stock-1793632791460.xml",
"sha256": "9141a3b9cba9255b6ce34abf1167cfc45151546d26ec3253ee240785ad246e1f",
"tests": 1,
"assertions": 39,
"cases": [
"test_corrected_source_requires_review_and_never_consumes_the_same_origin_twice"
],
"selection": false,
"whole_run_tests": 1,
"whole_run_failures": 0,
"whole_run_errors": 0
},
"scope_and_command": {
"file": "workshop-stock-1793633025634.xml",
"sha256": "cf0643f3c5444efc3e65294790fd3e111e3e9a14a30af4a6f9399bbf93c04c4c",
"tests": 1,
"assertions": 29,
"cases": [
"test_other_company_cannot_read_or_confirm_origin_and_changed_command_is_refused"
],
"selection": false,
"whole_run_tests": 1,
"whole_run_failures": 0,
"whole_run_errors": 0
},
"native_issues": {
"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_lots": {
"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
},
"navigation": {
"file": "junit-focused.xml",
"sha256": "1452d1702bae6c8c3162750030b76c1167b88250ac03766fb8cba5fc4cae3549",
"tests": 8,
"assertions": 90,
"cases": [
"test_explicit_selection_direct_access_and_old_generation",
"test_company_configuration_and_revocation_are_checked_again",
"test_development_discovery_never_grants_operations_or_applies_in_production",
"test_failed_selection_preserves_context_and_audit_contains_module_without_token",
"test_local_environment_and_copied_profile_cannot_enable_discovery_for_client_database_configuration",
"test_shared_records_require_explicit_association_and_company_scope",
"test_unassociated_legacy_records_remain_in_explicit_administrative_inventory",
"test_draft_creation_preserves_source_history_and_does_not_share_dependencies_implicitly"
],
"selection": false,
"whole_run_tests": 8,
"whole_run_failures": 0,
"whole_run_errors": 0
}
},
"totals": {
"tests": 41,
"assertions": 447
},
"proof_selection": "Four passing cases reused from an intermediate five-case run with one fixture-date failure. Only the corrected case and the additional scope case were rerun; the failed case is excluded from reused results.",
"scenario_asserted": {
"initial_physical_milli": "10000",
"consumption_milli": "2000",
"final_physical_milli": "8000",
"movements_added": 1,
"claims_added": 1,
"same_book_observed_by_stock": true,
"preparer_cannot_confirm": true,
"replay_original_movement": true,
"stale_book_map_rights_context_refused": true,
"unknown_previous_issue_refused": true,
"client_delivered_unverified_fraction_insufficient_refused": true,
"failure_after_claim_insert_atomic_and_recovered": true,
"other_company_sources_and_proposals_not_visible": true,
"other_company_prepare_and_confirm_refused": true,
"wrong_module_context_refused": true,
"changed_idempotency_body_refused": true
},
"concurrency_asserted": {
"processes": 2,
"lock": "company row held by first transaction",
"pg_blocking_pids_observed": true,
"second_after_release": "200 replay same movement",
"one_movement_and_claim": true
},
"correction_asserted": {
"old_proposal_after_source_correction": "409",
"verified_v2_after_new_review_physical_milli": "7000",
"verified_v3_after_consumption": "409 without second effect"
},
"package": {
"id": "tempo-inventory-issue",
"version": "0.1.0",
"files": {
"bootstrap.php": "3e6c7c698279f3ffb865131e79b3f89e5ec3e4aa9114782df62e17712f48df6b",
"src/IssueMovementWriter.php": "36d59bce53b8447516399974fc7d08beaa5d92b7b45a416014bd855e03fdf409"
},
"manifest_sha256": "3c24d9e9fb99bfbb274077495c3a42ddb7eccab06b5c6a956cd739b2bc9b56f0",
"source_and_artifact_equal": true
},
"source_sha256": {
"app/Modules/Workshop/WorkshopStock.php": "bfbcc17b9ff0caa4ed46dad7d1276dd8e508166eecafd2a3c6cbb4c5b54fbab0",
"app/Modules/Workshop/Http/WorkshopStockController.php": "c6116f317a8ef6dd74f66599797b77da990f26aa9b6279142804f4974bf0d00d",
"resources/js/WorkshopStockWorkspace.jsx": "7bbc2c5c8a6360b601b9c00772fcd9bbf16722cd087431ecc4274ef1c5031338",
"resources/js/WorkshopMenuWorkspace.jsx": "098b990adcbafc387bd447e77f3238a8ec984218812d736bcb33e3da22f4937c",
"config/workshop_stock.php": "603c5ea718e59b9e43c6dc01a4238813a56a63755fe60b63354b3957f6a0af49",
"tests/Feature/WorkshopStockTest.php": "450f15558cb2727db8e1f60ab95ffaf12124dacf6c9e561611d82e56bdd17fd4",
"tests/Support/workshop-stock-worker.php": "bdad20fd4f58714c36c20d3c271ac31fdd92a4083cedf31341938b501fd73c2d",
"../compras/app/Services/StockIssueMovement.php": "61a649d26f4bf1e96becc3ff213bab0a029c47040d1368e99cc558bd98649de6",
"../compras/app/Services/StockWorkflow.php": "18ddaa075432b84c0b0ee5241ff56ab9de9aa8e8db4e6132693bc7fd904b3a58"
},
"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": {
"proof": "docs/proofs/workshop-stock-ui-20261102.json",
"sha256": "65aca7809af88f80e50c52e9ab13ee9ba52e047b17b183c048c8e1c0dd03b3fc",
"kind": "static_render",
"permission_separation": true,
"pending_notice_removed_for_authorized_view": true,
"loading_not_zero": true,
"backend_requests": 0,
"visual_review": false
},
"build": {
"tool": "pinned Node 24.22.1 / Vite 8.3.5",
"passed": true,
"manifest_sha256": "205a739db091d58850827051e840cbf367437595c370418b2d6475848497be04",
"visual_review": false
},
"reused_evidence_sha256": {
"docs/proofs/stock-receipt-link-20261102.json": "b763ab326abf49271d16b32d22f01a8a8d31d1ab015141e42dcf5963ee914143",
"docs/proofs/stock-read-load-20261102.json": "4fc1d7d13d480a30966b259611de1066fc22ef31f7a0e782da4872211801c72e",
"docs/proofs/stock-read-composition-20261102.json": "bb129ab22f424a5d3333f9b851062bc6284fd514b9962e0df04b3efd22d951a6"
},
"preservation": {
"writes_confined_to_new_synthetic_fixtures": true,
"regression_not_reset": true,
"six_protected_records_untouched": true,
"blocked_cache_untouched": true,
"demos_untouched": true,
"previous_association_proofs_unchanged": true,
"real_grants_or_data_changed": false,
"purchasing_candidate_activation": false,
"publication": false,
"checkpoint": false
},
"limits": [
"Quantity-only new eligible workshop origins; lots/reservations/spare parts refused.",
"Reconciliation of existing deliveries, partial allocation, returns and compensation not implemented.",
"Initial stock in workshop fixture is synthetic; previous native receipt proof is separate, not an installed single end-to-end ERP scenario.",
"Conference tables are QA fixture only; operational installer and real rights not applied.",
"Source list paginated 25, latest 25 proposals only.",
"PostgreSQL tested; new write-load capacity and other drivers unvalidated."
],
"visual_review_pending": true,
"deployment_capacity_validated": false
}