217 lines
9.7 KiB
JSON
217 lines
9.7 KiB
JSON
{
|
|
"date": "2026-11-03T15:18:35.661Z",
|
|
"increment": "SGF-PURCHASING-DOSSIER-QA-v1",
|
|
"passed": true,
|
|
"functional_code": true,
|
|
"checks": 49,
|
|
"tests": {
|
|
"read_reuse": {
|
|
"file": "private/dossier-read-8e26a5037442/dossier-read-result.json",
|
|
"sha256": "d3323770741882c7b33af278a8f60e44d017ae1c34c99b907246068cf1884694",
|
|
"checks": 30,
|
|
"result": {
|
|
"passed": true,
|
|
"checks": [
|
|
"read proof reuses already-proven canonical responsibility without replaying commands",
|
|
"dossier list applies current origin and server status filter",
|
|
"literal process number search returns existing source",
|
|
"second dossier list page contains no repeated source",
|
|
"finance dossier identifies exact source and visible-page revision",
|
|
"canonical quotes evidence is present with independent page",
|
|
"canonical awards evidence is present with independent page",
|
|
"canonical orders evidence is present with independent page",
|
|
"canonical receipts evidence is present with independent page",
|
|
"canonical invoices evidence is present with independent page",
|
|
"dossier correlations use actual original order and invoice ids",
|
|
"canonical kernel supplies current balance with unknown due date",
|
|
"financial pagination describes bounded source window rather than invented global total",
|
|
"authorised event timeline uses server pagination",
|
|
"older event page preserves distinct existing history",
|
|
"independent later evidence pages do not reload earlier records",
|
|
"buyer sees procurement evidence without invoice or payable economics",
|
|
"request-only profile sees no downstream rows counts or amounts",
|
|
"request-only history excludes hidden-stage activity",
|
|
"event projection never embeds unrestricted before-after payloads",
|
|
"physical-only and invoice-only profiles do not inherit request dossier rights",
|
|
"unsupported filters and evidence pages refused",
|
|
"foreign or unknown request exposes no dossier",
|
|
"different available module cannot inspect dossier",
|
|
"unmapped unit cannot inspect known dossier",
|
|
"stale context generation cannot mix dossier reads",
|
|
"authorised dossier screen is connected to common navigation",
|
|
"physical-only navigation does not advertise request dossier",
|
|
"dossier has no mutation endpoint",
|
|
"all original regression tables and sequences remain unchanged after read proof"
|
|
],
|
|
"reused_proof": "purchasing-integrated-composition-20261103.json",
|
|
"financial_commands_repeated": 0,
|
|
"before_sha256": "7d462b3aa3eb941cc83ca61ef4272478cc5554fa8f8660378786764c704a7a5c",
|
|
"after_sha256": "7d462b3aa3eb941cc83ca61ef4272478cc5554fa8f8660378786764c704a7a5c",
|
|
"tables_checked": 142,
|
|
"new_right_names": [],
|
|
"visual_review": false,
|
|
"deployment_capacity_validated": false
|
|
}
|
|
},
|
|
"guards": {
|
|
"file": "private/receipt-composition-4ee6fd6867a4/dossier-guard-result.json",
|
|
"sha256": "93bbe527897a01f737c3d2d0e692dec9d9019755541d4b61ee3375de7866c8e9",
|
|
"checks": 4,
|
|
"result": {
|
|
"passed": true,
|
|
"checks": [
|
|
"disabled dossier list refuses before SQL",
|
|
"disabled dossier detail refuses before SQL",
|
|
"production refuses synthetic dossier before SQL",
|
|
"dossier route belongs to purchasing and guard probes issue zero SQL"
|
|
],
|
|
"database_queries": 0
|
|
}
|
|
},
|
|
"demo": {
|
|
"file": "private/receipt-composition-4ee6fd6867a4/dossier-demo-result.json",
|
|
"sha256": "12869ed113b6a67e290e8d4eb18374a9da11cd540af1aca0d85fb73f370a1cb3",
|
|
"checks": 12,
|
|
"result": {
|
|
"passed": true,
|
|
"checks": [
|
|
"live dossier starts without invented process or responsibility",
|
|
"live dossier list respects requester",
|
|
"live dossier list respects approver",
|
|
"live dossier list respects actor",
|
|
"live dossier page served",
|
|
"revoked existing request right immediately removes dossier access",
|
|
"restored fixture grant recovers consultation",
|
|
"live dossier list respects issuer",
|
|
"live dossier list respects validator",
|
|
"live dossier list respects reviewer",
|
|
"served dossier script matches delivery",
|
|
"live checks preserve process grants and geographical evidence"
|
|
],
|
|
"before": "17197268c93d424d00953db277f5c124235f340ef282392884ebaf674764730e",
|
|
"after": "17197268c93d424d00953db277f5c124235f340ef282392884ebaf674764730e",
|
|
"visual_review": false
|
|
}
|
|
},
|
|
"assets": {
|
|
"file": "private/receipt-composition-4ee6fd6867a4/dossier-assets.json",
|
|
"sha256": "02ed5d9a1eca0d12273fce2b61db8d3b21feb70fca91b2451a13dbec9ea44ba8",
|
|
"checks": 3,
|
|
"result": {
|
|
"passed": true,
|
|
"checks": [
|
|
"private frontend build succeeds",
|
|
"served built assets match private build",
|
|
"dossier module is served through private static whitelist"
|
|
],
|
|
"assets": [
|
|
"assets/app-rwyn9RPO.js",
|
|
"assets/app-BLSNCrO7.css"
|
|
],
|
|
"visual_review": false
|
|
}
|
|
}
|
|
},
|
|
"sources": [
|
|
{
|
|
"file": "app/Modules/Purchasing/DossierController.php",
|
|
"sha256": "c44d04e08a1496b9c2262131a4909430c6e7a63264f3bb392df38bb47bae575e"
|
|
},
|
|
{
|
|
"file": "app/Modules/Purchasing/WorkspaceNavigation.php",
|
|
"sha256": "2e4fa17a60b718eda505b619859f9743517716eba573a382c54a95377254ccc8"
|
|
},
|
|
{
|
|
"file": "app/Shared/Context/ModuleNavigation.php",
|
|
"sha256": "397d7a4af7d16547ff60ea20a6733aa994d98a6ecf0cbca4b1437da14c3c55a1"
|
|
},
|
|
{
|
|
"file": "config/receipt_qa.php",
|
|
"sha256": "4971a1847478a6e8ba118af0e433655514a7425ce8056e8408fc8bec9c599c9f"
|
|
},
|
|
{
|
|
"file": "routes/web.php",
|
|
"sha256": "ec6096504638d6b174e6ca726fcefcc0a30c4203d945534a4a4f32040164d6f7"
|
|
},
|
|
{
|
|
"file": "resources/views/purchasing-dossier.blade.php",
|
|
"sha256": "8fc5a0f4d7b93e83064952d2ae57b1bf43f77744b2b2b070fa9185698762c741"
|
|
},
|
|
{
|
|
"file": "public/purchasing-dossier.mjs",
|
|
"sha256": "4d0d5eb4887630107bbc2fed8567d461dfd9c319199764d7e6612b10004fa5a1"
|
|
}
|
|
],
|
|
"pinned_native_manifests": {
|
|
"bundle": "7709a3d447d54c17d2fb4be4f9a0f70455c4a38c34e4bb8c643f6b5169071556",
|
|
"economic": "8b2d3aa61054e0edc54fcd818467eb2bacb5e1178f903b12ab44119e0f2e8d2e",
|
|
"internal": "2343af71f72259dd705f4cc3a3b163c90edf331a5b6ebe173531aeb341649e1b"
|
|
},
|
|
"read_reuse": {
|
|
"source_regression": "purchasing-integrated-composition-20261103.json",
|
|
"original_application_preserved": true,
|
|
"new_application_and_sessions": true,
|
|
"all142_tables_and_sequences_unchanged": true,
|
|
"financial_commands_repeated": 0
|
|
},
|
|
"authority": {
|
|
"entry_right": "purchasing_requests.view",
|
|
"per_stage_rights": true,
|
|
"native_visibility": true,
|
|
"hidden_stages_have_no_counts_or_rows": true,
|
|
"history_excludes_hidden_stages_and_payloads": true,
|
|
"new_right_names": [],
|
|
"page_size": 25,
|
|
"financial_page_scope": "source_invoice_window",
|
|
"view_revision_scope": "visible_pages_only"
|
|
},
|
|
"demo": {
|
|
"port": 8074,
|
|
"entry": "http://127.0.0.1:8074/qa/enter/requester?open=1",
|
|
"initial_main_operations": 0,
|
|
"prepared_suppliers": 3,
|
|
"approved_budget_minor": 100000,
|
|
"locations": 0
|
|
},
|
|
"prior_proofs_preserved": [
|
|
{
|
|
"file": "docs/proofs/purchasing-integrated-composition-20261103.json",
|
|
"sha256": "10e8a7862a5a96cac6ec03dece68743605fd0ca98313c38070797fe40fcd2396"
|
|
},
|
|
{
|
|
"file": "docs/proofs/supplier-search-composition-20261103.json",
|
|
"sha256": "388e738da7e9b3e7f521c8d67f85dd4ef34869c74daf0c04c09067b9fbde5242"
|
|
},
|
|
{
|
|
"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": [
|
|
"Read dossier only: not a universal task queue, workflow readiness decision, approval or automatic execution.",
|
|
"Entry requires request view. Warehouse-only or invoice-only reviewers retain their own screens; dossier does not grant cross-stage rights.",
|
|
"Pagination of obligations is a25-invoice source window, not a global debt count. Empty page and inaccessible stage are distinct.",
|
|
"The regression read uses current application code against the original owned completed QA book, preserving its original profile/source identity. It does not clone or rewrite financial facts.",
|
|
"Only the new empty demonstration temporarily revokes/restores an existing QA grant; its final fingerprint is unchanged.",
|
|
"The extra supplier volume fixture remains8073;8074 starts with three prepared suppliers and the current paged selector.",
|
|
"Original native runtime pins are preserved; current schema provisioning and previous owner/runtime caveats are not converted into deployment evidence.",
|
|
"Visual review, sustained load and general deployment capability remain pending."
|
|
],
|
|
"visual_review_pending": true,
|
|
"deployment_capacity_validated": false
|
|
}
|