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

230 lines
9.7 KiB
JSON

{
"date": "2026-11-03T15:05:42.317Z",
"increment": "SGF-SOURCING-SUPPLIER-SEARCH-QA-v1",
"passed": true,
"functional_code": true,
"checks": 51,
"tests": {
"api": {
"file": "private/receipt-composition-ce396aec18ee/supplier-search-result.json",
"sha256": "dc8e8bfd011eecdc22744071b21a39dcce68b20a78146b515caf2f61aa91bdfd",
"checks": 31,
"result": {
"passed": true,
"checks": [
"selector source uses genuinely prepared and approved request",
"server supplier page1 contains authorised bounded window",
"server supplier page2 contains authorised bounded window",
"server supplier page3 contains authorised bounded window",
"server supplier page4 contains authorised bounded window",
"server supplier page5 contains authorised bounded window",
"all125 suppliers reachable beyond previous100 cap without overlap",
"explicit and current-unit audited suppliers admitted; unbound and another-unit origins excluded",
"blocked suspended overdue and foreign-tenant suppliers excluded",
"pages100 and25 cover same eligible universe",
"NUIT search reaches supplier beyond old cap with exact selection revision",
"selector response exposes no contact bank or diligence details",
"percent and underscore search are literal rather than wildcards",
"name search ignores case without broadening scope",
"empty search returns no invented alternative selection",
"invalid pages sizes and unsupported filters rejected",
"browse requires existing scoped sourcing preparation right",
"foreign request cannot be used as catalogue entry point",
"stale or substituted selection revision requires new lookup",
"forged foreign supplier id cannot bypass selector",
"forged blocked id remains refused by original native workflow",
"supplier beyond100 receives original pricing and impact preview",
"selector browsing and quotation preview persist no business decision",
"supplier change after preview refuses confirmation without quote",
"eligibility change after preview requires fresh conference",
"revoked right prevents browsing and confirmation",
"concurrent same-key confirmation still produces exactly one native quote",
"explicit beyond100 choice and historical receipt recover without duplication",
"different available module cannot browse procurement catalogue",
"unmapped unit cannot reuse supplier search",
"selection adds no order invoice debt payment or localisation"
],
"eligible_suppliers": 125,
"page_sizes": [
25,
100
],
"beyond100_selected": true,
"quote_count": 1,
"concurrency_statuses": [
200,
201
],
"new_right_names": [],
"visual_review": false,
"deployment_capacity_validated": false
}
},
"guards": {
"file": "private/receipt-composition-ce396aec18ee/supplier-search-guard.json",
"sha256": "b4cb3f0fbf743fdddc5cf650cc2d01b5625eb625dd0bf2bf7f0b3b1ee294a89e",
"checks": 3,
"result": {
"passed": true,
"checks": [
"disabled supplier lookup refuses before SQL",
"production refuses synthetic selector before SQL",
"lookup belongs to purchasing and guard probes issue zero SQL"
],
"database_queries": 0
}
},
"selection_model": {
"file": "docs/proofs/supplier-picker-model-20261103.json",
"sha256": "689d14df3fa24e8e38b6e1afae1e7e10dd5b5f1cdee9674932ce769530f4502f",
"checks": 8,
"result": {
"passed": true,
"checks": [
"late older query cannot overwrite newer results",
"results never automatically select first supplier",
"individual choice retains exact supplier revision",
"changing page immediately invalidates previous choice",
"failed request keeps no stale selectable options",
"query editing invalidates choice and options",
"departed workspace ignores outstanding response",
"unknown id cannot become a selection"
],
"visual_review": false
}
},
"demo": {
"file": "private/receipt-composition-4f0cc899a103/supplier-search-demo.json",
"sha256": "b103c4dae9020952553865976bdb5eb62e0003e891e05f9f57ad60884896eae1",
"checks": 6,
"result": {
"passed": true,
"checks": [
"new live demo starts before source request and proposal",
"sourcing screen serves in new composition",
"common integrated navigation preserved",
"served selector source matches sourcing-workspace.mjs",
"served selector source matches supplier-picker-model.mjs",
"live screen and source checks leave operations and locations intact"
],
"before": "b23efb2e45a4c182efd487e62289658699cf79e22091716f2cd2ea2c5b057bd2",
"after": "b23efb2e45a4c182efd487e62289658699cf79e22091716f2cd2ea2c5b057bd2",
"visual_review": false
}
},
"assets": {
"file": "private/receipt-composition-4f0cc899a103/supplier-search-assets.json",
"sha256": "4682a3c84651fc08694754dde531aec6a90670a10a71dcef816e1c8ecf682200",
"checks": 3,
"result": {
"passed": true,
"checks": [
"private frontend build succeeds",
"served built assets match private build",
"obligation module is served through private static whitelist"
],
"assets": [
"assets/app-rwyn9RPO.js",
"assets/app-BLSNCrO7.css"
],
"visual_review": false
}
}
},
"sources": [
{
"file": "app/Modules/Purchasing/SourcingController.php",
"sha256": "7b5ed82ee1b336b7a5f8ccf8a989d52ca4ccdcf321d0c92fd3385689151489f3"
},
{
"file": "app/Modules/Purchasing/SupplierAccess.php",
"sha256": "b823189d10e8ecf9a55e9021bffce023a7e6d4e2b0db2710c32910591968d814"
},
{
"file": "app/Modules/Purchasing/ReceiptRuntime.php",
"sha256": "9b426476b2805094fb317cc753385ef43882fb4964883e880eac287eed89d9e0"
},
{
"file": "public/sourcing-workspace.mjs",
"sha256": "9eb38e43626d96d71c0cbaf6c00700ab9fdaf06dd82d8405ba04b13cd2f86548"
},
{
"file": "public/supplier-picker-model.mjs",
"sha256": "7eda0e980a0d7c88a8fbf6ea446de2d169df22138a9fb6f62ecfa50b10506bde"
},
{
"file": "routes/web.php",
"sha256": "5a86c394ca72e0939c15333ff27097889d60e4d4a6aeb373020bdbd2a872c5d7"
}
],
"pinned_native_manifests": {
"bundle": "7709a3d447d54c17d2fb4be4f9a0f70455c4a38c34e4bb8c643f6b5169071556",
"economic": "8b2d3aa61054e0edc54fcd818467eb2bacb5e1178f903b12ab44119e0f2e8d2e",
"internal": "2343af71f72259dd705f4cc3a3b163c90edf331a5b6ebe173531aeb341649e1b"
},
"selector": {
"eligible_suppliers": 125,
"synthetic_extra_directory_rows": 127,
"server_page_sizes": [
25,
100
],
"literal_name_or_nuit_search": true,
"manual_choice": true,
"selected_revision_rechecked": true,
"request_scope_reused": true,
"new_permission_names": [],
"api_projection": [
"id",
"name",
"nuit",
"version",
"selection_revision"
]
},
"demo": {
"port": 8073,
"entry": "http://127.0.0.1:8073/qa/enter/requester?open=1",
"buyer": "http://127.0.0.1:8073/qa/enter/actor?open=1",
"initial_main_requests": 0,
"initial_quotes": 0,
"locations": 0,
"synthetic_directory_seed": true
},
"prior_proofs_preserved": [
{
"file": "docs/proofs/purchasing-integrated-composition-20261103.json",
"sha256": "10e8a7862a5a96cac6ec03dece68743605fd0ca98313c38070797fe40fcd2396"
},
{
"file": "docs/proofs/supplier-obligation-composition-20261103.json",
"sha256": "d8e7efeddd52cdf89bf6a1637ff323d6e39a2acaecbf591c054ee108ce1c1011"
},
{
"file": "docs/proofs/module-association-consolidation-summary-20261102.json",
"sha256": "8f693f39763ee21a22ebd3929d95ba1480f339eca18742fa53055c69eb5219ef"
}
],
"preservation": {
"installed_purchasing_sha256": "81899e531e9eec449717e694d8bdc106a9e220a828f5491ce918c1d2dc612787",
"target_database_connected": false,
"protected_six_records_changed": false,
"blocked_cache_cleared": false,
"previous_demo_data_written": false,
"public_rights_changed": false,
"publication": false,
"checkpoint": false
},
"limitations": [
"Selector and quotation boundary verified; existing downstream suites were reused rather than repeated.",
"Legacy show response retains a bounded25-row supplier summary. The current interface uses the paged endpoint and never treats that summary as the complete directory.",
"Older direct clients may omit supplier_revision when preparing; the server still captures the current supplier fingerprint in every new preview and rechecks it before a new confirmation. Current interface also sends the fingerprint selected from the page.",
"Recorded same-key command receipts remain historical results, after current rights and origin checks; they do not execute a new quote when supplier facts subsequently change.",
"Extra directory records and scope audit markers are explicit synthetic fixture data, not130 newly onboarded supplier reviews or real company associations.",
"No new indexes, deployment activation, payment, accounting or real operations.",
"Visual review, sustained-load measurements and deployment/least-privilege capability remain pending."
],
"visual_review_pending": true,
"deployment_capacity_validated": false
}