357 lines
15 KiB
JSON
357 lines
15 KiB
JSON
{
|
|
"date": "2026-11-03T09:27:15.755Z",
|
|
"increment": "SGF-RECEIPT-WORKFLOW-QA-v1",
|
|
"functional_code": true,
|
|
"passed": true,
|
|
"checks": 68,
|
|
"tests": {
|
|
"workflow": {
|
|
"file": "private/receipt-composition-0e6d9e9dfb39/result.json",
|
|
"sha256": "813b28724a3891c94ce8022286566909f3588afb5ea0ffff828dbf8a5728afd7",
|
|
"checks": 30,
|
|
"result": {
|
|
"passed": true,
|
|
"checks": [
|
|
"fresh canonical book contains no receipt or movement",
|
|
"SGF lists only explicitly mapped canonical order",
|
|
"SGF receipt workspace is mounted",
|
|
"native workflow supplies actual pending quantities",
|
|
"unmapped order from another tenant refused",
|
|
"stale context token refused on read",
|
|
"reader cannot prepare a confirmation",
|
|
"original order issuer cannot receive the same order",
|
|
"explicit impact preview without financial effects",
|
|
"preview creates neither receipt nor physical movement",
|
|
"tampered preview refused",
|
|
"SGF confirmation invokes original workflow and shared writer exactly once",
|
|
"same confirmation recovers original receipt without duplication",
|
|
"canonical source remains sole physical authority",
|
|
"SGF history preserves accepted and rejected evidence with actual movement",
|
|
"original append-only receipt audit created once",
|
|
"next SGF read reflects cumulative native quantities",
|
|
"stale order revision requires renewed conference",
|
|
"second intent remains an uncommitted preview",
|
|
"native cumulative limit rejects over-receipt atomically",
|
|
"refused confirmation leaves all physical and receipt records unchanged",
|
|
"warehouse outside mapped unit refused",
|
|
"revoked host permission is rechecked at confirmation",
|
|
"preview cannot transfer authority to a reader",
|
|
"other SGF unit cannot reuse source mapping",
|
|
"remaining authorized quantity receives through same native workflow",
|
|
"quality shortfall stays visible rather than falsely completing order",
|
|
"two receipts and two unique movements; only1750 milli accepted",
|
|
"host session and database restored after native success and refusals",
|
|
"receipt did not create a supplier invoice"
|
|
],
|
|
"http": true,
|
|
"canonical_receipts": 2,
|
|
"canonical_movements": 2,
|
|
"physical_milli": 1750,
|
|
"quality_pending": true,
|
|
"original_workflow": true,
|
|
"namespace_only_bundle": true,
|
|
"real_rights_changed": false,
|
|
"publication": false,
|
|
"deployment_capacity_validated": false
|
|
}
|
|
},
|
|
"concurrency_recovery": {
|
|
"file": "private/receipt-composition-0e6d9e9dfb39/extra.json",
|
|
"sha256": "7e5168436f9907c4aa1ce39f7da0bc5b3fef4e9cdd2b6948de14603c9f749e62",
|
|
"checks": 10,
|
|
"result": {
|
|
"passed": true,
|
|
"checks": [
|
|
"two independent HTTP workers recover the same key once",
|
|
"concurrent repetition has one canonical receipt and movement",
|
|
"different intentions on one revision serialize and stale intention is refused",
|
|
"competing decisions do not duplicate accepted physical quantity",
|
|
"injected failure after physical insert returns an unsuccessful response",
|
|
"native transaction rolls back parent, items, movement, audit and work signal together",
|
|
"same prepared intention succeeds after the cause is removed",
|
|
"recovery repetition returns the same immutable receipt",
|
|
"recovery leaves exactly three half-unit movements",
|
|
"read-only SGF profile receives no confirmation capability"
|
|
],
|
|
"two_independent_http_workers": true,
|
|
"same_key_statuses": [
|
|
200,
|
|
201
|
|
],
|
|
"competing_key_statuses": [
|
|
201,
|
|
409
|
|
],
|
|
"fault_after_insert": true,
|
|
"rollback_fingerprint_equal": true,
|
|
"recovery_receipts": 3,
|
|
"recovery_quantity_milli": 1500,
|
|
"host_profile_changes_real": false
|
|
}
|
|
},
|
|
"origin_audit": {
|
|
"file": "private/receipt-composition-0e6d9e9dfb39/origin.json",
|
|
"sha256": "60c40568db2b27c100ef1d2e2d7576449f4d6d0bc913e8b084ea0e3c162fbf92",
|
|
"checks": 6,
|
|
"result": {
|
|
"passed": true,
|
|
"checks": [
|
|
"failure to record SGF provenance refuses the whole confirmation",
|
|
"physical receipt and original audit roll back when provenance fails",
|
|
"same intention recovers after provenance failure",
|
|
"same transaction records exact SGF context, actor mapping and workflow manifest",
|
|
"repetition duplicates neither business effect nor SGF provenance",
|
|
"fully accepted cumulative order reaches complete through SGF"
|
|
],
|
|
"origin_audit_atomic": true,
|
|
"same_key_recovery": true,
|
|
"complete_order": true
|
|
}
|
|
},
|
|
"runtime_contract": {
|
|
"file": "private/receipt-composition-0e6d9e9dfb39/runtime-contract.json",
|
|
"sha256": "004b34fa0fb582f8ca8d1855402fb855e03ccb400e77e7270f9e9311bdddfd17",
|
|
"checks": 4,
|
|
"result": {
|
|
"passed": true,
|
|
"checks": [
|
|
"disabled/production guard refuses before database access 404",
|
|
"disabled/production guard refuses before database access 403",
|
|
"original replenishment execution context keeps native singleton semantics",
|
|
"local composition restores host database auth environment and transaction ownership"
|
|
],
|
|
"business_writes": 0
|
|
}
|
|
},
|
|
"demonstration": {
|
|
"file": "private/receipt-composition-304b80f5a05f/demo-smoke.json",
|
|
"sha256": "b3f0137b86497796659cbf12ff4bee843d500b8fdf86794882b4da3bfdc8b457",
|
|
"checks": 9,
|
|
"result": {
|
|
"passed": true,
|
|
"checks": [
|
|
"new demonstration starts with unconsumed receipt and movement decisions",
|
|
"demo exposes exact receipt capability for actor",
|
|
"functional screen available for actor",
|
|
"demo exposes exact receipt capability for validator",
|
|
"functional screen available for validator",
|
|
"demo exposes exact receipt capability for issuer",
|
|
"functional screen available for issuer",
|
|
"live receipt interface matches delivered source",
|
|
"read-only smoke preserves all initial business evidence"
|
|
],
|
|
"before": "8f6ff38ca8faca3f2dcd2008045273d4130f6fcedbfe49e464bc05dc6b5071a4",
|
|
"after": "8f6ff38ca8faca3f2dcd2008045273d4130f6fcedbfe49e464bc05dc6b5071a4",
|
|
"receipts": 0,
|
|
"movements": 0,
|
|
"visual_review": false
|
|
}
|
|
},
|
|
"compiled_assets": {
|
|
"file": "private/receipt-composition-304b80f5a05f/demo-assets.json",
|
|
"sha256": "be29d5c3d933f4f8ba3effddb05c1936932cbd35e295af567f4599fdc6a6abaf",
|
|
"checks": 3,
|
|
"result": {
|
|
"passed": true,
|
|
"checks": 3,
|
|
"root_status": 200,
|
|
"assets": [
|
|
{
|
|
"file": "assets/app-B2i8GsyG.js",
|
|
"sha256": "af8caf2fa6310506f3b2c89af1a402f13bcdc4262e3f86c657f1cacfd071d7a6"
|
|
},
|
|
{
|
|
"file": "assets/app-BLSNCrO7.css",
|
|
"sha256": "ad7650d0b0f7cc40783126a677d419b058f9f1494ae25f194c6d4b32f87ce657"
|
|
}
|
|
],
|
|
"build_compiler": "vite8.3.5",
|
|
"visual_review": false
|
|
}
|
|
},
|
|
"navigation": {
|
|
"file": "docs/proofs/receipt-home-20261103.json",
|
|
"sha256": "8f8bd5459f952a3285539a1c9d6cd7c23b37c168cd87ed118cea9a814e44ac11",
|
|
"checks": 6,
|
|
"result": {
|
|
"passed": true,
|
|
"checks": 6,
|
|
"names": [
|
|
"explicit capability and scoped right expose receipt link",
|
|
"no receipt right hides link",
|
|
"other unit right cannot expose link",
|
|
"disabled composition hides link",
|
|
"no selected unit hides link",
|
|
"existing requisition link remains available"
|
|
],
|
|
"source": "resources/js/PurchasingHome.jsx",
|
|
"sha256": "ff9b36b31b870112673eb4482858b34941c21e835e12fcbaab4c67236368a6fd",
|
|
"visual_review": false
|
|
}
|
|
}
|
|
},
|
|
"sources": [
|
|
{
|
|
"file": "app/Modules/Purchasing/ReceiptRuntime.php",
|
|
"sha256": "2e1f08c7d79c89bce99244a810dcc6dbbb61a6cd8cc90e4f2b505d1fd9298a78"
|
|
},
|
|
{
|
|
"file": "app/Modules/Purchasing/ReceiptController.php",
|
|
"sha256": "93378e80afcab17b51826fd592683f47c4425818e11d0506ee2498a86953fbab"
|
|
},
|
|
{
|
|
"file": "config/receipt_qa.php",
|
|
"sha256": "3b14467f57a460e10bd6dbc04554500d98c99f78239b4231b952520189e33273"
|
|
},
|
|
{
|
|
"file": "routes/web.php",
|
|
"sha256": "2f7d64b793787ba68a1d55d3630d1fc00ed0d481d331adcf093db6c6876eb781"
|
|
},
|
|
{
|
|
"file": "app/Shared/Context/ModuleNavigation.php",
|
|
"sha256": "2acfd28a98f2a4ab5d52d314f193e720c6445ac742edb591ac7c1bdaa53205ab"
|
|
},
|
|
{
|
|
"file": "app/Modules/Identity/Services/IdentityWorkflow.php",
|
|
"sha256": "4e595d4efcea168b4498c8023ad74bf38b24eba69607d0bd5158e7cb31b8180a"
|
|
},
|
|
{
|
|
"file": "resources/js/PurchasingHome.jsx",
|
|
"sha256": "ff9b36b31b870112673eb4482858b34941c21e835e12fcbaab4c67236368a6fd"
|
|
},
|
|
{
|
|
"file": "resources/views/receipt-workspace.blade.php",
|
|
"sha256": "8a0d15a6a6bde34a6aca4ddae3f7e0219f951c109a16e6ad9b5f0a69e678e1e8"
|
|
},
|
|
{
|
|
"file": "public/receipt-workspace.mjs",
|
|
"sha256": "f286a99bb0df5c6080e8104d501707e5a9e13046d5dd7144dec32bf0817a92a0"
|
|
},
|
|
{
|
|
"file": "scripts/build-receipt-runtime.php",
|
|
"sha256": "2a0c461fd4aeaa1f222dd634255e5c0b5bd78ee3325d09bcf9a6fc1e930afa5b"
|
|
},
|
|
{
|
|
"file": "scripts/receipt-composition-run.mjs",
|
|
"sha256": "bb67688a7b748ec4795b17864e69b7966cc7bed95ae87ab6994e9b5b3647e02a"
|
|
},
|
|
{
|
|
"file": "scripts/receipt-composition-proof.php",
|
|
"sha256": "6c0377ffd6fd082b889a7c830849bcdde3c336259a07bd69ac88c3286695def6"
|
|
},
|
|
{
|
|
"file": "scripts/receipt-composition-extra.php",
|
|
"sha256": "20d3f3aea0cd0322e6b2bd04b322bee2685aa8573304db83578f389a40bb3793"
|
|
},
|
|
{
|
|
"file": "scripts/receipt-origin-proof.php",
|
|
"sha256": "980c06cc2d133957c7ada96495e0f117ed4a01814133f2d2d430c5d679b55a3a"
|
|
},
|
|
{
|
|
"file": "scripts/receipt-runtime-contract.php",
|
|
"sha256": "aa0164f153709d83144163ee2b64c019aa74858c37daa8e6b11647c3eda31180"
|
|
},
|
|
{
|
|
"file": "scripts/receipt-composition-http.php",
|
|
"sha256": "6d8c2b7004c82d8b910c6af9c337805b79ccf190dc02e994fc058d92e7b1d315"
|
|
},
|
|
{
|
|
"file": "scripts/receipt-native-setup.php",
|
|
"sha256": "4c7c714742cda62b3e3654a6fc4136948ea6571f1b6ab7b0ef59023ff635206a"
|
|
},
|
|
{
|
|
"file": "scripts/receipt-native-extra.php",
|
|
"sha256": "05153a45d349e370851c57d937c9a1d320e0711deceb41026669db4ccf059ea9"
|
|
},
|
|
{
|
|
"file": "scripts/receipt-demo-smoke.php",
|
|
"sha256": "4331fefa219f41fdee1323fe9727736083271121ff43b24df66d707eebfa6ed0"
|
|
}
|
|
],
|
|
"native_workflow": {
|
|
"original_source": "../compras/app/Services/ReceiptWorkflow.php",
|
|
"original_sha256": "a7325d4fdb09d1767d0d4fa3661bcf9b254e8506285080d6063bbed487bb522c",
|
|
"namespace_only_bundle_manifest_sha256": "5035f3e5c2ad5f5813604c3c3fe5342e784c8e8f22df3b4dea2379254d51879c",
|
|
"files_verified": 371,
|
|
"business_rules_reimplemented": false,
|
|
"parallel_source_changes": [
|
|
{
|
|
"file": "app/Http/Controllers/GoodsReceiptController.php",
|
|
"archived_sha256": "8cd20b3028184020f42369dd3977415ac49285641c4cd833f3e61f81d4bcbfed",
|
|
"current_sha256": "828af3af530b3aaa4aa04b65c6e21f8c7b0e2ad3f459179669b1a8fd60a8ff63",
|
|
"used_by_adapter": false,
|
|
"preserved_without_changes": true
|
|
}
|
|
],
|
|
"writer_manifest_sha256": "f0b99e591f9a4df135e685f64ceffad77bed259222debe0f34c20f95e3cad800"
|
|
},
|
|
"demo": {
|
|
"url": "http://127.0.0.1:8064/qa/enter/actor?open=1",
|
|
"reader_url": "http://127.0.0.1:8064/qa/enter/validator?open=1",
|
|
"issuer_url": "http://127.0.0.1:8064/qa/enter/issuer?open=1",
|
|
"initial_receipts": 0,
|
|
"initial_movements": 0,
|
|
"port": 8064,
|
|
"synthetic_only": true
|
|
},
|
|
"qa_rights": [
|
|
"purchasing_receipts.view",
|
|
"purchasing_receipts.confirm"
|
|
],
|
|
"prior_proofs_preserved": [
|
|
{
|
|
"file": "docs/proofs/requisition-composition-20261103.json",
|
|
"sha256": "8e4e7a113274b16f9e1d6882ae4f0bf04eb3e9c0d580cf1743fdfe248458f67e"
|
|
},
|
|
{
|
|
"file": "docs/proofs/stock-period-batches-20261103.json",
|
|
"sha256": "07c437ca7604d4c8164f386caab5efec99e0985d410d0a3e201b1a22fb5d8ed5"
|
|
},
|
|
{
|
|
"file": "docs/proofs/stock-prefix-stream-20261103.json",
|
|
"sha256": "81ecffdf877015d74b35ed7cd38804b63001fe031c613fdb0b20ff37cb9a3998"
|
|
},
|
|
{
|
|
"file": "docs/proofs/module-association-consolidation-summary-20261102.json",
|
|
"sha256": "8f693f39763ee21a22ebd3929d95ba1480f339eca18742fa53055c69eb5219ef"
|
|
},
|
|
{
|
|
"file": "docs/proofs/common-ledger-stock-valuation-20261103.json",
|
|
"sha256": "a4eed51a66988ab103770a4be789952b2f377a8e7c41608bbf34662a80745124"
|
|
}
|
|
],
|
|
"preservation": {
|
|
"installed_purchasing_pointer_sha256": "81899e531e9eec449717e694d8bdc106a9e220a828f5491ce918c1d2dc612787",
|
|
"old_stock_demo_manifest_sha256": "8b3ad1c600b84c8526b2d9f453a1c5c4e174a69d6acc78ace2af4f52a25dd762",
|
|
"protected_six_records_changed": false,
|
|
"blocked_cache_cleared": false,
|
|
"real_rights_changed": false,
|
|
"existing_demos_written": false,
|
|
"destination_migrated": false,
|
|
"purchasing_activated_at_destination": false,
|
|
"publication": false,
|
|
"checkpoint": false
|
|
},
|
|
"selected_evidence_reuse": {
|
|
"first_21": "7251beec04b9d435c3bbf72052818dd5ab2e6626e530b1c45a2442d533defd7a",
|
|
"first_29": "41a12b8a719edc70b8feaa4cabe825d51bc5f1fde9323a463f1d17d0b5905739",
|
|
"failed_attempts_preserved": true,
|
|
"causes": [
|
|
"Foreign warehouse was rejected422 by the original tenant validator; harness initially expected403.",
|
|
"Final assertion used supplier_invoices instead of the native invoices table."
|
|
],
|
|
"accepted_tests_not_repeated": true
|
|
},
|
|
"limitations": [
|
|
"Explicit local QA identity/order/warehouse binding; no automatic tenant/company/unit equivalence.",
|
|
"Original source is packaged with namespace-only adaptation to coexist with SGF models; one bundle version per process. No general installation or long-lived Octane worker validation.",
|
|
"Host authority is held in a read/lock transaction; all receipt, movement and origin audit writes commit together in the native transaction. Host database has no receipt business copy.",
|
|
"New QA roles own their databases; deployment owner/runtime separation is not validated.",
|
|
"Order and receipt history are server-paginated; stock selector currently exposes at most100 source items and this is not a full catalogue search interface.",
|
|
"No new invoice, payment, accounting recognition, real fiscal emission, stock-cost composition or review of real associations.",
|
|
"No browser visual review, sustained load or deployment capacity evidence."
|
|
],
|
|
"deployment_capacity_validated": false,
|
|
"visual_review_pending": true
|
|
}
|