Files
SGF/docs/proofs/supplier-composition-20261103.json
2026-11-04 09:37:20 +02:00

314 lines
13 KiB
JSON

{
"date": "2026-11-03T11:17:50.348Z",
"increment": "SGF-SUPPLIER-REGISTRY-QA-v1",
"passed": true,
"functional_code": true,
"checks": 64,
"tests": {
"workflow": {
"file": "private/receipt-composition-bead400917da/supplier-result.json",
"sha256": "84cad0ab602624680416ffcaf408c6cd3e6649023f9d90c1534000ea0e623147",
"checks": 34,
"result": {
"passed": true,
"checks": [
"supplier workspace served",
"only three explicitly bound seed suppliers are listed",
"warehouse cannot view supplier economic registry",
"foreign tenant supplier is inaccessible",
"unmapped unit is refused",
"outdated company context is refused",
"invalid status filter is rejected",
"native create preview displays pending state without activation",
"supplier preview commits neither supplier nor history",
"tampered preview is refused",
"history receipt failure aborts supplier confirmation",
"supplier and original audit roll back together",
"independent workers recover one supplier after failure",
"one supplier and one immutable command receipt",
"same key with other contents is refused",
"distinct finance identity can inspect newly prepared supplier without rebinding",
"preparer cannot review own supplier",
"pending supplier is neither selectable nor accepted by native quotation rules",
"independent review displays before and after states",
"native update increments version and retains pending review",
"review prepared against old version is refused",
"review right revalidated on confirmation",
"finance activates exact current version",
"review repetition does not increment version twice",
"reviewed supplier automatically becomes eligible in the same scoped sourcing registry",
"reviewed supplier reaches original quotation pricing",
"finance suspension is explicit and versioned",
"supplier suspension after preview is revalidated before quote commit",
"new supplier reviewed in SGF supplies an actual native quotation",
"blocked supplier cannot be reactivated",
"editing active supplier clears earlier reviewer and status",
"server filters and stable pagination produce 15 plus 1 disjoint rows",
"original and SGF history retain author date before and after without unrelated suppliers",
"supplier integration adds no order stock or budget commitment"
],
"concurrency_statuses": [
200,
201
],
"preview_no_persistent_changes": true,
"atomic_failure_recovery": true,
"new_supplier_reaches_native_quotation": true,
"selected_supplier_history_count": 12,
"visual_review": false,
"deployment_capacity_validated": false
}
},
"boundaries": {
"file": "private/receipt-composition-bead400917da/supplier-boundary.json",
"sha256": "0f120500699a3d284e059f74f15dd971583bbbac50be262ef25399a7981c13bd",
"checks": 6,
"result": {
"passed": true,
"checks": [
"native finance role cannot review a record last changed by the same identity",
"expired diligence cannot be activated",
"bound supplier still reaches the original preview after access guard extension",
"changed explicit binding invalidates prepared quotation",
"same-tenant supplier outside the company-unit binding cannot bypass selector through API",
"boundary probes restore all injected fixture facts and commit no proposal"
],
"new_boundary_only": true,
"valid_34_checks_not_repeated": true
}
},
"guards": {
"file": "private/receipt-composition-bead400917da/supplier-guards.json",
"sha256": "73949c1ea064793872ab1aa4da31b3c409e681340011d396bef34df9e70433b4",
"checks": 3,
"result": {
"passed": true,
"checks": [
"disabled suppliers runtime refuses before SQL",
"disabled suppliers preview refuses before validation or SQL",
"production cannot activate synthetic suppliers"
],
"database_queries": 0,
"business_writes": 0
}
},
"demonstration": {
"file": "private/receipt-composition-2b4c91ddbd16/supplier-demo-smoke.json",
"sha256": "953bc5f419cb2e3b9ab7ce78b07d20c6c5bff44b7e29d5c79eb1d75d00fb724b",
"checks": 12,
"result": {
"passed": true,
"checks": [
"demo has no proposals evaluations awards orders receipts or movements",
"registry capability matches actor",
"review capability matches actor",
"supplier workspace is live",
"sourcing links to supplier review",
"creation sentinel has no readable supplier record or history",
"new supplier preview omits temporary sequence identifier and commits nothing",
"registry capability matches issuer",
"review capability matches issuer",
"warehouse is denied supplier registry",
"live supplier script matches delivery",
"read and rollback-only preview preserve demo business facts"
],
"before": "1f751ee5de55546639d6fb56dffd9296828b2a13ba624f58a9b5b3d342159cc5",
"after": "1f751ee5de55546639d6fb56dffd9296828b2a13ba624f58a9b5b3d342159cc5",
"visual_review": false,
"persistent_changes": false,
"preview_sequence_may_advance": true
}
},
"assets": {
"file": "private/receipt-composition-2b4c91ddbd16/supplier-demo-assets.json",
"sha256": "8f84b03fb1cce408a0d79af15a764e569168f0ae916b53516d4b9e9eb04c2b23",
"checks": 3,
"result": {
"passed": true,
"checks": [
"private frontend build succeeds",
"served built assets match private build",
"supplier module is served through private static whitelist"
],
"assets": [
"assets/app-gjzvo3Kh.js",
"assets/app-BLSNCrO7.css"
],
"visual_review": false
}
},
"navigation": {
"file": "docs/proofs/supplier-home-20261103.json",
"sha256": "079cb7655964988bf5c0cd1a852772a9c770f0efde8865f2f87d216f533a2f82",
"checks": 6,
"result": {
"passed": true,
"checks": 6,
"names": [
"scoped right and capability expose suppliers link",
"absent right hides suppliers link",
"foreign unit right hides suppliers link",
"disabled composition hides suppliers link",
"unit selection is required",
"order and receipt links remain available"
],
"source": "resources/js/PurchasingHome.jsx",
"sha256": "260a86ad58c9357784e1af3f850dc5ab788f79d0c507f23eaf797f5b91107e0c",
"visual_review": false
}
}
},
"sources": [
{
"file": "app/Modules/Purchasing/SupplierController.php",
"sha256": "86fdec283bb409f1b96f1d98bd6759350004a4445ba48484427920111863b0fd"
},
{
"file": "app/Modules/Purchasing/SupplierAccess.php",
"sha256": "b823189d10e8ecf9a55e9021bffce023a7e6d4e2b0db2710c32910591968d814"
},
{
"file": "app/Modules/Purchasing/SourcingController.php",
"sha256": "1c31ffb5a3294a427aab90587bfb3dcd7d65c98cc5f1666d6478f23056ea4b39"
},
{
"file": "app/Modules/Purchasing/ReceiptRuntime.php",
"sha256": "1c75c3fc47626d30e2fabf679a0ff725621ab794c92c8e89038ace4a3d14aae8"
},
{
"file": "config/receipt_qa.php",
"sha256": "69c0e169d9d869216d117195bec63455cf465aaa10e2049c56de88f7f4ae197c"
},
{
"file": "routes/web.php",
"sha256": "9b1b0e35c8a819dd37d025b5e6e318296747017feec71b4a981a11fdc5ff1c4a"
},
{
"file": "app/Shared/Context/ModuleNavigation.php",
"sha256": "dbf5215a7c30797f5559ead7527fab4f86d8d68185b48eb758a038b6ab7c34f5"
},
{
"file": "app/Modules/Identity/Services/IdentityWorkflow.php",
"sha256": "46473afce1d6634ff6fac3ccadab9c60bb77fb37b1ea2ab2a377ad5ae20b3177"
},
{
"file": "resources/js/PurchasingHome.jsx",
"sha256": "260a86ad58c9357784e1af3f850dc5ab788f79d0c507f23eaf797f5b91107e0c"
},
{
"file": "resources/views/supplier-workspace.blade.php",
"sha256": "50df84132c27351cc9e43e38d55599fe64912aa0f50bb78a560b14f5f1445fc6"
},
{
"file": "resources/views/sourcing-workspace.blade.php",
"sha256": "922883253058514f7a8712c463e9f4f03d4fb7c786827a1dce85176cbf9bba46"
},
{
"file": "public/supplier-workspace.mjs",
"sha256": "c721f275317d581ccd72b1f68e0ae82fce977d4a3d0ab34b2c67533567370932"
},
{
"file": "scripts/supplier-host-setup.php",
"sha256": "50dc12483d35e71e9ea6ea2fbff07faf97fbfce63dcd75fd1c2a4c2a3ab9ca07"
},
{
"file": "scripts/supplier-composition-proof.php",
"sha256": "4bb8a14d73a24252fedd75a2d8833519aebc5cf4fbfb7faeab1f24a910da46ea"
},
{
"file": "scripts/supplier-boundary-proof.php",
"sha256": "66fc45c9142fcf8c977dc3403196ff17909ac70c358a7760ec839124eedf9aae"
},
{
"file": "scripts/supplier-guard-proof.php",
"sha256": "71658721f379aa54446f917fef0014b052f813a28d6e30bb23dad5278218b79e"
},
{
"file": "scripts/supplier-demo-smoke.php",
"sha256": "41080a184b12a27618ff951930c7820e7a1d12fb7cc30ea380f59e054ae28c71"
},
{
"file": "scripts/supplier-demo-assets.mjs",
"sha256": "8b07e804fd0ecdaade73bb6286b5e7951df5ad4b7fc55e305efdf8d9029565b3"
},
{
"file": "scripts/order-native-setup.php",
"sha256": "7e055e895d82095b863bd1456e821022f25f27137d37e8332d1fb08a063ffc0b"
},
{
"file": "scripts/receipt-composition-run.mjs",
"sha256": "85bd679a9fe0472cf833d282b98ae2f9d8bdbfe9547fac9d63a69d8d1f4e8da3"
},
{
"file": "scripts/receipt-composition-http.php",
"sha256": "35901f596e7d928d38cf3be059d092d349898f31e06026fffc2320ca1b719e79"
},
{
"file": "scripts/receipt-composition-extra.mjs",
"sha256": "a711a44993aaa15e9a1caf46f2b2282a053f610abbc505ba1db210b8153fdccc"
}
],
"workflow_package": {
"native_sha256": "7709a3d447d54c17d2fb4be4f9a0f70455c4a38c34e4bb8c643f6b5169071556",
"economic_sha256": "8b2d3aa61054e0edc54fcd818467eb2bacb5e1178f903b12ab44119e0f2e8d2e",
"original_sources": {
"app/Http/Controllers/SupplierController.php": "e47f3951fc7eba5e27c3e94ddbb3e513af049fa1aeec29a230ae82517a3f9204",
"app/Http/Requests/SaveSupplierRequest.php": "537511f7d34f1a1a1fd370d295e8e55f0e95e3b5aa32442b193ec1a581a9f557",
"app/Services/SupplierParticipation.php": "43808a5fbae0ff67c8b967a320e0a65b7e524f6a742716b3c505b67355164ceb",
"app/Policies/SupplierPolicy.php": "7182d55be88fa4bdd748d8c407f008d63bc25aec1d9a0c84f45d925c04f73fdd"
}
},
"demo": {
"url": "http://127.0.0.1:8067/qa/enter/actor?open=1",
"reviewer_url": "http://127.0.0.1:8067/qa/enter/issuer?open=1",
"warehouse_url": "http://127.0.0.1:8067/qa/enter/validator?open=1",
"initial_prepared_seed_suppliers": 3,
"initial_sgf_supplier_decisions": 0,
"initial_quotes": 0,
"initial_orders": 0,
"initial_receipts": 0
},
"qa_rights": [
"purchasing_suppliers.view",
"purchasing_suppliers.prepare",
"purchasing_suppliers.review"
],
"reused_valid_proofs": [
{
"file": "docs/proofs/sourcing-composition-20261103.json",
"sha256": "405c0288aface14cc9f1f417e46cf899b3656e1cbb2617120c048cde17b93191",
"checks": 74,
"scope": "original source-to-receipt scenario; not rerun as supplier tests"
}
],
"test_scope": "34 workflow checks retained; six new access/review boundaries plus12 live demonstration checks cover later access and presentation adjustments. No unrelated business suites repeated.",
"preview": {
"mode": "original_controller_in_rollback_only_savepoint",
"persistent_records_unchanged": true,
"sequence_may_advance": true,
"temporary_supplier_id_not_exposed": true
},
"preservation": {
"installed_purchasing_sha256": "81899e531e9eec449717e694d8bdc106a9e220a828f5491ce918c1d2dc612787",
"old_sourcing_demo_native_bundle_intact": true,
"protected_six_records_changed": false,
"blocked_cache_cleared": false,
"real_rights_changed": false,
"target_database_connected": false,
"existing_demo_business_data_written": false,
"activation_at_destination": false,
"publication": false,
"checkpoint": false
},
"limitations": [
"QA owner roles and copied composition are not a generally installed or deployment-validated module.",
"Native supplier field validation, preparation and distinct review are reused; document references are declared text, not attachment upload or verified external evidence.",
"Index search/status/pagination15 and per-supplier history15 are server-side; sourcing picker retains its100-supplier cap.",
"New suppliers are scoped by audited company/unit origin; prepared seed suppliers stay explicitly bound. Operational registry sharing policy is not inferred.",
"SGF internal requisition handoff with one budget authority, formal tender regimes and later procurement corrections remain separate gaps.",
"No visual review, sustained-load claim or real fiscal/operational activation."
],
"visual_review_pending": true,
"deployment_capacity_validated": false
}