257 lines
11 KiB
JSON
257 lines
11 KiB
JSON
{
|
|
"date": "2026-11-03T16:26:17.508Z",
|
|
"increment": "SGF-SUPPLIER-DOCUMENTS-QA-v1",
|
|
"passed": true,
|
|
"functional_code": true,
|
|
"checks": 52,
|
|
"tests": {
|
|
"documents": {
|
|
"file": "private/receipt-composition-d4d3650fc49f/supplier-documents-result.json",
|
|
"sha256": "c64ceaac8b178be40a25bdf03a416001aff253da4d4f1bec61b2fc6cba22aa90",
|
|
"checks": 28,
|
|
"result": {
|
|
"passed": true,
|
|
"checks": [
|
|
"new supplier attachment book begins empty",
|
|
"financial reviewer can inspect paginated private metadata",
|
|
"unrelated physical/request roles cannot read supplier documents",
|
|
"original upload preview captures actual bytes and review invalidation without temporary document id",
|
|
"preview rolls back supplier document and audit and removes only its private staged file",
|
|
"native MIME and extension checks reject disguised or executable attachments",
|
|
"native document type catalogue remains authoritative",
|
|
"independent sessions prepare same-key upload with their own context-bound previews",
|
|
"confirmation refuses substituted file bytes",
|
|
"existing preparation right rechecked at confirmation",
|
|
"provenance failure rolls back native records and compensates only verified uncommitted file",
|
|
"concurrent same-key recovery stores one native document and one permanent file",
|
|
"new attachment invalidates previous review and advances supplier version once",
|
|
"review prepared before new evidence requires fresh conference",
|
|
"distinct native review reactivates exact supplier version",
|
|
"historical upload replay preserves subsequent approved review without another file",
|
|
"metadata projection hides storage path and native tenant",
|
|
"private download returns exact original bytes as sandboxed attachment",
|
|
"original download audit recorded for authorised reviewer",
|
|
"altered stored bytes are not silently served as original evidence",
|
|
"document id cannot cross supplier or tenant boundary",
|
|
"new attachment preserves prior original and sanitises client filename",
|
|
"all16 immutable document records accessible in distinct15/1 pages",
|
|
"permanent files match recorded volume and preview staging contains no files",
|
|
"supplier history exposes original document evidence in existing administrative timeline",
|
|
"another available module cannot read supplier documents",
|
|
"unmapped unit cannot reuse document metadata",
|
|
"document workflow creates no order invoice debt payment or localisation"
|
|
],
|
|
"transport_documents": 2,
|
|
"native_volume_documents": 14,
|
|
"documents": 16,
|
|
"permanent_files": 16,
|
|
"staged_files": 0,
|
|
"concurrency_statuses": [
|
|
200,
|
|
201
|
|
],
|
|
"new_right_names": [],
|
|
"visual_review": false,
|
|
"deployment_capacity_validated": false
|
|
}
|
|
},
|
|
"integration": {
|
|
"file": "private/receipt-composition-d4d3650fc49f/supplier-documents-integration.json",
|
|
"sha256": "f843b916226554ff554f6fb3bc8b745f4841e32cfbbde8fa7e403a18d1bab1f7",
|
|
"checks": 9,
|
|
"result": {
|
|
"passed": true,
|
|
"checks": [
|
|
"new session context invalidates an uncommitted document preview",
|
|
"changed supplier-origin binding requires fresh file conference",
|
|
"supplier awaiting document review is excluded from proposal selector",
|
|
"forged pending supplier id is refused by original quotation workflow",
|
|
"distinct original review reactivates exact evidence version for sourcing",
|
|
"review between file preview and confirmation forces new file conference",
|
|
"reviewed supplier reappears in same scoped proposal selector",
|
|
"new evidence permits original quotation preview without automatic proposal",
|
|
"context probes preserve binding files and all original attachments"
|
|
],
|
|
"source_request_setup_only": true,
|
|
"source_request_reserved_minor": 100,
|
|
"document_workflow_creates_reservation": false,
|
|
"documents": 16,
|
|
"new_orders": 0,
|
|
"new_quotes": 0,
|
|
"new_right_names": [],
|
|
"visual_review": false,
|
|
"deployment_capacity_validated": false
|
|
}
|
|
},
|
|
"guards": {
|
|
"file": "private/receipt-composition-6a55cbf089ba/supplier-documents-guards.json",
|
|
"sha256": "a84f8ab5e6d268bb037fc5422772817ccc54d05d5ec4b07a3f6a548003394f20",
|
|
"checks": 4,
|
|
"result": {
|
|
"passed": true,
|
|
"checks": [
|
|
"disabled document metadata refuses before SQL",
|
|
"disabled upload refuses before validation storage and SQL",
|
|
"production refuses synthetic document adapter before SQL",
|
|
"document route belongs to purchasing and guard probes issue zero SQL"
|
|
],
|
|
"database_queries": 0
|
|
}
|
|
},
|
|
"demo": {
|
|
"file": "private/receipt-composition-6a55cbf089ba/supplier-documents-demo.json",
|
|
"sha256": "adec6e751793002805d5546528a95f73d3800cea7cde3565812cc51f0e05eef6",
|
|
"checks": 8,
|
|
"result": {
|
|
"passed": true,
|
|
"checks": [
|
|
"live demo starts without attachments or main requests",
|
|
"private document list respects actor",
|
|
"supplier screen capability exposes document module only in new composition",
|
|
"private document list respects issuer",
|
|
"private document list respects validator",
|
|
"served document source matches supplier-workspace.mjs",
|
|
"served document source matches supplier-documents.mjs",
|
|
"live metadata checks preserve supplier versions attachments and audit"
|
|
],
|
|
"before": "cf9ffe4986cc4b40ebec46427379cfe00a7559339ad1d6afd527f20748adf0b0",
|
|
"after": "cf9ffe4986cc4b40ebec46427379cfe00a7559339ad1d6afd527f20748adf0b0",
|
|
"visual_review": false
|
|
}
|
|
},
|
|
"assets": {
|
|
"file": "private/receipt-composition-6a55cbf089ba/supplier-documents-assets.json",
|
|
"sha256": "fac39bfeea24042f5f55c959fca4c970139b814724f7e6fd68aa78316642989f",
|
|
"checks": 3,
|
|
"result": {
|
|
"passed": true,
|
|
"checks": [
|
|
"private frontend build succeeds",
|
|
"served built assets match private build",
|
|
"supplier document module is served through private static whitelist"
|
|
],
|
|
"assets": [
|
|
"assets/app-rwyn9RPO.js",
|
|
"assets/app-BLSNCrO7.css"
|
|
],
|
|
"visual_review": false
|
|
}
|
|
}
|
|
},
|
|
"sources": [
|
|
{
|
|
"file": "app/Modules/Purchasing/SupplierDocumentsController.php",
|
|
"sha256": "4f5c6b3ee9d6608cffb1f8db24552902c4d2b6044e36e00932157c0b05e3e3c6"
|
|
},
|
|
{
|
|
"file": "app/Modules/Purchasing/SupplierDocumentFiles.php",
|
|
"sha256": "a8c7fbe18d9ccd6a7e6fd27275e8827ac6a75f4b147ec02b06fabc30a15f29c8"
|
|
},
|
|
{
|
|
"file": "app/Modules/Purchasing/SupplierController.php",
|
|
"sha256": "30d4ef72e079a63b470c952727aaa7c42a45302a58b50d085a53a57737a99048"
|
|
},
|
|
{
|
|
"file": "app/Modules/Purchasing/SupplierAccess.php",
|
|
"sha256": "b823189d10e8ecf9a55e9021bffce023a7e6d4e2b0db2710c32910591968d814"
|
|
},
|
|
{
|
|
"file": "config/receipt_qa.php",
|
|
"sha256": "49ad948ce83640a0b178382d5632d736aef7b77ebce6dc2881f3a890508edc27"
|
|
},
|
|
{
|
|
"file": "routes/web.php",
|
|
"sha256": "563c60a354624e552869c83529a2e23f9902b8650da8470283f9f5006423d6cf"
|
|
},
|
|
{
|
|
"file": "public/supplier-workspace.mjs",
|
|
"sha256": "5bcd02e4f45441bc6453b4d4dcb719f2467cec62e212f31b7d7feb05ca7f0c05"
|
|
},
|
|
{
|
|
"file": "public/supplier-documents.mjs",
|
|
"sha256": "70e96bc60238efe6bb8a65297f7412fee9abb143dd96805713bb1deafc784820"
|
|
}
|
|
],
|
|
"pinned_native_manifests": {
|
|
"bundle": "7709a3d447d54c17d2fb4be4f9a0f70455c4a38c34e4bb8c643f6b5169071556",
|
|
"economic": "8b2d3aa61054e0edc54fcd818467eb2bacb5e1178f903b12ab44119e0f2e8d2e",
|
|
"internal": "2343af71f72259dd705f4cc3a3b163c90edf331a5b6ebe173531aeb341649e1b"
|
|
},
|
|
"authority": {
|
|
"original_document_controller": true,
|
|
"private_qa_storage": true,
|
|
"source_company_unit_checked": true,
|
|
"existing_rights": [
|
|
"purchasing_suppliers.view",
|
|
"purchasing_suppliers.prepare"
|
|
],
|
|
"new_right_names": [],
|
|
"upload_invalidates_review": true,
|
|
"independent_review_reopens_sourcing": true,
|
|
"automatic_quote": false
|
|
},
|
|
"regression": {
|
|
"transport_documents": 2,
|
|
"native_volume_documents": 14,
|
|
"documents_and_files": 16,
|
|
"staged_files": 0,
|
|
"concurrency_statuses": [
|
|
200,
|
|
201
|
|
],
|
|
"prior_successful_checks_preserved": 17,
|
|
"resumed_after_download_adapter_fix": 11,
|
|
"source_request_setup_minor": 100,
|
|
"attachment_creates_budget_reservation": false
|
|
},
|
|
"demo": {
|
|
"port": 8076,
|
|
"entry": "http://127.0.0.1:8076/qa/enter/actor?open=1",
|
|
"reviewer": "http://127.0.0.1:8076/qa/enter/issuer?open=1",
|
|
"initial_documents": 0,
|
|
"initial_main_requests": 0,
|
|
"prepared_suppliers": 3,
|
|
"locations": 0
|
|
},
|
|
"prior_proofs_preserved": [
|
|
{
|
|
"file": "docs/proofs/receipt-workspace-completion-20261103.json",
|
|
"sha256": "59bb66df5d5e12f898045669a0ad24664c3d09f2d3ab6cf70f4f13d6a34c6548"
|
|
},
|
|
{
|
|
"file": "docs/proofs/purchasing-dossier-composition-20261103.json",
|
|
"sha256": "15686bc54488be2aa342c899f82a683ee43674621a8c4678b5ba6c34d08e6a62"
|
|
},
|
|
{
|
|
"file": "docs/proofs/supplier-search-composition-20261103.json",
|
|
"sha256": "388e738da7e9b3e7f521c8d67f85dd4ef34869c74daf0c04c09067b9fbde5242"
|
|
},
|
|
{
|
|
"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": [
|
|
"Positive binary fixture is PNG. Allowed PDF/JPEG rules are original native rules, not a new full-format reader regression.",
|
|
"Validation does not certify authenticity, fiscal validity or universally required document types.",
|
|
"Ordinary rollback compensation is tested. If commit outcome cannot be verified, files are retained; crash-orphan reconciliation and retention/quota maintenance are not declared delivered.",
|
|
"Preview sequence values may advance and empty private staging directories may remain; staged file count is zero.",
|
|
"Same key is idempotent; another key is another explicit upload intent. The original mechanism does not perform global content-hash deduplication.",
|
|
"Fourteen native-controller volume uploads are fixture preparation, not14 independent HTTP transport confirmations.",
|
|
"Native schema provisioning remains current while runtime is pinned; general installation/least-privilege deployment is not validated.",
|
|
"Visual review, sustained load and storage capacity remain pending."
|
|
],
|
|
"visual_review_pending": true,
|
|
"deployment_capacity_validated": false
|
|
}
|