commit15
This commit is contained in:
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,300 @@
|
||||
{
|
||||
"date": "2026-11-02",
|
||||
"source_sha256": "b901bccc73a59e80d98d32a56532e9300a55ba9a216e5ac5a0ce84d78f976397",
|
||||
"test": {
|
||||
"tests": 1,
|
||||
"assertions": 346,
|
||||
"errors": 0,
|
||||
"failures": 0,
|
||||
"junit_sha256": "217e4ff8096d985a523748a9b98bc3b573614c8dbe2318e1a0a2b7a26798cc1d"
|
||||
},
|
||||
"method": {
|
||||
"independent_php_workers": true,
|
||||
"distinct_synthetic_identities": 4,
|
||||
"requests_per_worker": 5,
|
||||
"waves_per_case": 3,
|
||||
"percentiles": "Nearest rank; descriptive samples of 15/30/60 requests only",
|
||||
"warm_in_process_http": true,
|
||||
"login_network_tls_browser_measured": false,
|
||||
"read_only_reader_transactions": true,
|
||||
"records_per_area": 3000,
|
||||
"lines_per_wide_draft": 100,
|
||||
"description_bytes": 1000
|
||||
},
|
||||
"results": [
|
||||
{
|
||||
"index_mode": "none",
|
||||
"workload": "clients",
|
||||
"workers": 1,
|
||||
"complete_requests": 15,
|
||||
"limited_requests": 0,
|
||||
"p50_ms": 35.86,
|
||||
"p95_sample_ms": 51.068,
|
||||
"closed_loop_observed_rps": 24.61,
|
||||
"observed_max_inflight": [
|
||||
1,
|
||||
1,
|
||||
1
|
||||
],
|
||||
"queries": [
|
||||
11
|
||||
],
|
||||
"max_incremental_php_bytes": 91240,
|
||||
"mean_startup_to_ready_ms": 978.556
|
||||
},
|
||||
{
|
||||
"index_mode": "none",
|
||||
"workload": "clients",
|
||||
"workers": 2,
|
||||
"complete_requests": 30,
|
||||
"limited_requests": 0,
|
||||
"p50_ms": 35.73,
|
||||
"p95_sample_ms": 39.455,
|
||||
"closed_loop_observed_rps": 50.32,
|
||||
"observed_max_inflight": [
|
||||
2,
|
||||
2,
|
||||
2
|
||||
],
|
||||
"queries": [
|
||||
11
|
||||
],
|
||||
"max_incremental_php_bytes": 91240,
|
||||
"mean_startup_to_ready_ms": 1300.194
|
||||
},
|
||||
{
|
||||
"index_mode": "none",
|
||||
"workload": "clients",
|
||||
"workers": 4,
|
||||
"complete_requests": 60,
|
||||
"limited_requests": 0,
|
||||
"p50_ms": 37.99,
|
||||
"p95_sample_ms": 60.81,
|
||||
"closed_loop_observed_rps": 80.58,
|
||||
"observed_max_inflight": [
|
||||
4,
|
||||
4,
|
||||
4
|
||||
],
|
||||
"queries": [
|
||||
11
|
||||
],
|
||||
"max_incremental_php_bytes": 91240,
|
||||
"mean_startup_to_ready_ms": 1527.093
|
||||
},
|
||||
{
|
||||
"index_mode": "none",
|
||||
"workload": "billing_drafts",
|
||||
"workers": 1,
|
||||
"complete_requests": 15,
|
||||
"limited_requests": 0,
|
||||
"p50_ms": 298.013,
|
||||
"p95_sample_ms": 476.933,
|
||||
"closed_loop_observed_rps": 3.11,
|
||||
"observed_max_inflight": [
|
||||
1,
|
||||
1,
|
||||
1
|
||||
],
|
||||
"queries": [
|
||||
31
|
||||
],
|
||||
"max_incremental_php_bytes": 5088608,
|
||||
"mean_startup_to_ready_ms": 1430.336
|
||||
},
|
||||
{
|
||||
"index_mode": "none",
|
||||
"workload": "billing_drafts",
|
||||
"workers": 2,
|
||||
"complete_requests": 30,
|
||||
"limited_requests": 0,
|
||||
"p50_ms": 264.367,
|
||||
"p95_sample_ms": 358.295,
|
||||
"closed_loop_observed_rps": 6.92,
|
||||
"observed_max_inflight": [
|
||||
2,
|
||||
2,
|
||||
2
|
||||
],
|
||||
"queries": [
|
||||
31
|
||||
],
|
||||
"max_incremental_php_bytes": 5088608,
|
||||
"mean_startup_to_ready_ms": 1504.95
|
||||
},
|
||||
{
|
||||
"index_mode": "none",
|
||||
"workload": "billing_drafts",
|
||||
"workers": 4,
|
||||
"complete_requests": 60,
|
||||
"limited_requests": 0,
|
||||
"p50_ms": 429.457,
|
||||
"p95_sample_ms": 495.43,
|
||||
"closed_loop_observed_rps": 9.57,
|
||||
"observed_max_inflight": [
|
||||
4,
|
||||
4,
|
||||
4
|
||||
],
|
||||
"queries": [
|
||||
31
|
||||
],
|
||||
"max_incremental_php_bytes": 5088608,
|
||||
"mean_startup_to_ready_ms": 1353.583
|
||||
},
|
||||
{
|
||||
"index_mode": "revision",
|
||||
"workload": "clients",
|
||||
"workers": 1,
|
||||
"complete_requests": 15,
|
||||
"limited_requests": 0,
|
||||
"p50_ms": 11.544,
|
||||
"p95_sample_ms": 13.478,
|
||||
"closed_loop_observed_rps": 65.64,
|
||||
"observed_max_inflight": [
|
||||
1,
|
||||
1,
|
||||
1
|
||||
],
|
||||
"queries": [
|
||||
11
|
||||
],
|
||||
"max_incremental_php_bytes": 91240,
|
||||
"mean_startup_to_ready_ms": 846.268
|
||||
},
|
||||
{
|
||||
"index_mode": "revision",
|
||||
"workload": "clients",
|
||||
"workers": 2,
|
||||
"complete_requests": 30,
|
||||
"limited_requests": 0,
|
||||
"p50_ms": 11.079,
|
||||
"p95_sample_ms": 12.162,
|
||||
"closed_loop_observed_rps": 132.32,
|
||||
"observed_max_inflight": [
|
||||
2,
|
||||
2,
|
||||
2
|
||||
],
|
||||
"queries": [
|
||||
11
|
||||
],
|
||||
"max_incremental_php_bytes": 91240,
|
||||
"mean_startup_to_ready_ms": 852.6
|
||||
},
|
||||
{
|
||||
"index_mode": "revision",
|
||||
"workload": "clients",
|
||||
"workers": 4,
|
||||
"complete_requests": 60,
|
||||
"limited_requests": 0,
|
||||
"p50_ms": 14.79,
|
||||
"p95_sample_ms": 21.402,
|
||||
"closed_loop_observed_rps": 207.56,
|
||||
"observed_max_inflight": [
|
||||
4,
|
||||
4,
|
||||
4
|
||||
],
|
||||
"queries": [
|
||||
11
|
||||
],
|
||||
"max_incremental_php_bytes": 91240,
|
||||
"mean_startup_to_ready_ms": 1313.81
|
||||
},
|
||||
{
|
||||
"index_mode": "revision",
|
||||
"workload": "billing_drafts",
|
||||
"workers": 1,
|
||||
"complete_requests": 15,
|
||||
"limited_requests": 0,
|
||||
"p50_ms": 99.513,
|
||||
"p95_sample_ms": 157.652,
|
||||
"closed_loop_observed_rps": 8.47,
|
||||
"observed_max_inflight": [
|
||||
1,
|
||||
1,
|
||||
1
|
||||
],
|
||||
"queries": [
|
||||
31
|
||||
],
|
||||
"max_incremental_php_bytes": 5088608,
|
||||
"mean_startup_to_ready_ms": 920.204
|
||||
},
|
||||
{
|
||||
"index_mode": "revision",
|
||||
"workload": "billing_drafts",
|
||||
"workers": 2,
|
||||
"complete_requests": 30,
|
||||
"limited_requests": 0,
|
||||
"p50_ms": 102.922,
|
||||
"p95_sample_ms": 188.288,
|
||||
"closed_loop_observed_rps": 14.36,
|
||||
"observed_max_inflight": [
|
||||
2,
|
||||
2,
|
||||
2
|
||||
],
|
||||
"queries": [
|
||||
31
|
||||
],
|
||||
"max_incremental_php_bytes": 5088608,
|
||||
"mean_startup_to_ready_ms": 1097.493
|
||||
},
|
||||
{
|
||||
"index_mode": "revision",
|
||||
"workload": "billing_drafts",
|
||||
"workers": 4,
|
||||
"complete_requests": 60,
|
||||
"limited_requests": 0,
|
||||
"p50_ms": 102.861,
|
||||
"p95_sample_ms": 121.342,
|
||||
"closed_loop_observed_rps": 33.81,
|
||||
"observed_max_inflight": [
|
||||
4,
|
||||
4,
|
||||
4
|
||||
],
|
||||
"queries": [
|
||||
31
|
||||
],
|
||||
"max_incremental_php_bytes": 5088608,
|
||||
"mean_startup_to_ready_ms": 1123.177
|
||||
}
|
||||
],
|
||||
"matrix_complete_requests": 420,
|
||||
"matrix_limited_requests": 0,
|
||||
"mixed_read_complete_requests": 20,
|
||||
"mixed_read_max_inflight": 4,
|
||||
"workload_response_hashes": {
|
||||
"clients": "f5e976b68ab0c70cb2fbd6e70e7533175755e6767c3bcbb588ce6e5c7dbd99b6",
|
||||
"billing_drafts": "302a56e89bec837712c0e2e598a12aa02482c4ad932f64baee92595ce1311bd4"
|
||||
},
|
||||
"competing_confirmation": {
|
||||
"actual_lock_wait_observed": true,
|
||||
"status": "database_error",
|
||||
"sqlstate": "55P03",
|
||||
"elapsed_ms": 1044.222
|
||||
},
|
||||
"preservation": {
|
||||
"previous_qa_rows_and_indexes_unchanged": true,
|
||||
"new_qa_fixture_retained": true,
|
||||
"private_manifest_kept": true,
|
||||
"synthetic_confirmation_rolled_back": true,
|
||||
"test_index_removed": true,
|
||||
"protected_six_records_untouched": true,
|
||||
"blocked_cache_untouched": true,
|
||||
"destination_connected": false,
|
||||
"production_rights_changed": false,
|
||||
"publication": false,
|
||||
"purchasing_activation": false,
|
||||
"checkpoint_created": false
|
||||
},
|
||||
"artifact": {
|
||||
"path": "module-association-concurrency-20261102.json",
|
||||
"sha256": "bd75881c7c60cf5c2acf4fb256d83e090b07f112becbf30c8620cbb81432546a"
|
||||
},
|
||||
"deployment_capacity_validated": false,
|
||||
"visual_review_pending": true
|
||||
}
|
||||
@@ -0,0 +1,900 @@
|
||||
{
|
||||
"date": "2026-11-02",
|
||||
"joint_page_read_implemented": true,
|
||||
"source_sha256": "b901bccc73a59e80d98d32a56532e9300a55ba9a216e5ac5a0ce84d78f976397",
|
||||
"controller_sha256": "6c16481f7e3f4355ba60ca22bc67385ec3b3113b4784e5d9f57025618e1735a9",
|
||||
"method": {
|
||||
"new_database_connections": 0,
|
||||
"new_measurements": 0,
|
||||
"valid_proofs_reused": true,
|
||||
"reason": "All 24 required area/volume/page combinations have measured A/B/C outcomes, including explicitly bounded baseline attempts; no dimension is untested.",
|
||||
"historical_batch_before_projection_sha256": "6df1a85af8ea3112ff8e61741408158cd0444944cc3e0b407ad5bd4ad8043361",
|
||||
"current_projection_all_three_volume_matrix_measured": false,
|
||||
"current_projection_scope": "Separate 10000-record-per-area, 100-line profiles; do not present historical B as current projected-code measurements.",
|
||||
"memory_unit": "bytes",
|
||||
"memory_metric": "incremental_php_used_bytes; peak_php_used_bytes also retained",
|
||||
"latency_metric": "median_ms only for complete samples"
|
||||
},
|
||||
"coverage": [
|
||||
{
|
||||
"records_per_area": 1000,
|
||||
"area": "clients",
|
||||
"page_size": 25,
|
||||
"before": {
|
||||
"completed_samples": 3,
|
||||
"median_ms": 1986.496,
|
||||
"queries": 185,
|
||||
"peak_php_used_bytes": 43887296,
|
||||
"incremental_php_used_bytes": 88576,
|
||||
"censored": false,
|
||||
"last_observed_ms": 1975.37
|
||||
},
|
||||
"after_joint_read": {
|
||||
"completed_samples": 3,
|
||||
"median_ms": 36.773,
|
||||
"queries": 11,
|
||||
"peak_php_used_bytes": 43903208,
|
||||
"incremental_php_used_bytes": 102696,
|
||||
"censored": false,
|
||||
"last_observed_ms": 29.283
|
||||
},
|
||||
"after_joint_read_with_indexes": {
|
||||
"completed_samples": 3,
|
||||
"median_ms": 10.664,
|
||||
"queries": 11,
|
||||
"peak_php_used_bytes": 44039280,
|
||||
"incremental_php_used_bytes": 102536,
|
||||
"censored": false,
|
||||
"last_observed_ms": 11.516
|
||||
}
|
||||
},
|
||||
{
|
||||
"records_per_area": 1000,
|
||||
"area": "clients",
|
||||
"page_size": 100,
|
||||
"before": {
|
||||
"completed_samples": 3,
|
||||
"median_ms": 7407.368,
|
||||
"queries": 710,
|
||||
"peak_php_used_bytes": 43974712,
|
||||
"incremental_php_used_bytes": 162416,
|
||||
"censored": false,
|
||||
"last_observed_ms": 7358.838
|
||||
},
|
||||
"after_joint_read": {
|
||||
"completed_samples": 3,
|
||||
"median_ms": 29.77,
|
||||
"queries": 11,
|
||||
"peak_php_used_bytes": 44074560,
|
||||
"incremental_php_used_bytes": 260472,
|
||||
"censored": false,
|
||||
"last_observed_ms": 29.77
|
||||
},
|
||||
"after_joint_read_with_indexes": {
|
||||
"completed_samples": 3,
|
||||
"median_ms": 12.854,
|
||||
"queries": 11,
|
||||
"peak_php_used_bytes": 44205112,
|
||||
"incremental_php_used_bytes": 260312,
|
||||
"censored": false,
|
||||
"last_observed_ms": 12.607
|
||||
}
|
||||
},
|
||||
{
|
||||
"records_per_area": 1000,
|
||||
"area": "services",
|
||||
"page_size": 25,
|
||||
"before": {
|
||||
"completed_samples": 3,
|
||||
"median_ms": 1924.424,
|
||||
"queries": 185,
|
||||
"peak_php_used_bytes": 43914616,
|
||||
"incremental_php_used_bytes": 88632,
|
||||
"censored": false,
|
||||
"last_observed_ms": 1940.761
|
||||
},
|
||||
"after_joint_read": {
|
||||
"completed_samples": 3,
|
||||
"median_ms": 30.091,
|
||||
"queries": 11,
|
||||
"peak_php_used_bytes": 43929712,
|
||||
"incremental_php_used_bytes": 101944,
|
||||
"censored": false,
|
||||
"last_observed_ms": 27.823
|
||||
},
|
||||
"after_joint_read_with_indexes": {
|
||||
"completed_samples": 3,
|
||||
"median_ms": 10.811,
|
||||
"queries": 11,
|
||||
"peak_php_used_bytes": 44054264,
|
||||
"incremental_php_used_bytes": 101776,
|
||||
"censored": false,
|
||||
"last_observed_ms": 9.826
|
||||
}
|
||||
},
|
||||
{
|
||||
"records_per_area": 1000,
|
||||
"area": "services",
|
||||
"page_size": 100,
|
||||
"before": {
|
||||
"completed_samples": 3,
|
||||
"median_ms": 7778.431,
|
||||
"queries": 710,
|
||||
"peak_php_used_bytes": 44001528,
|
||||
"incremental_php_used_bytes": 162504,
|
||||
"censored": false,
|
||||
"last_observed_ms": 7778.431
|
||||
},
|
||||
"after_joint_read": {
|
||||
"completed_samples": 3,
|
||||
"median_ms": 31.962,
|
||||
"queries": 11,
|
||||
"peak_php_used_bytes": 44100504,
|
||||
"incremental_php_used_bytes": 259680,
|
||||
"censored": false,
|
||||
"last_observed_ms": 31.962
|
||||
},
|
||||
"after_joint_read_with_indexes": {
|
||||
"completed_samples": 3,
|
||||
"median_ms": 11.898,
|
||||
"queries": 11,
|
||||
"peak_php_used_bytes": 44219696,
|
||||
"incremental_php_used_bytes": 259528,
|
||||
"censored": false,
|
||||
"last_observed_ms": 10.903
|
||||
}
|
||||
},
|
||||
{
|
||||
"records_per_area": 1000,
|
||||
"area": "service_drafts",
|
||||
"page_size": 25,
|
||||
"before": {
|
||||
"completed_samples": 3,
|
||||
"median_ms": 3905.946,
|
||||
"queries": 435,
|
||||
"peak_php_used_bytes": 43973256,
|
||||
"incremental_php_used_bytes": 119760,
|
||||
"censored": false,
|
||||
"last_observed_ms": 3935.114
|
||||
},
|
||||
"after_joint_read": {
|
||||
"completed_samples": 3,
|
||||
"median_ms": 77.228,
|
||||
"queries": 19,
|
||||
"peak_php_used_bytes": 44081976,
|
||||
"incremental_php_used_bytes": 226664,
|
||||
"censored": false,
|
||||
"last_observed_ms": 72.522
|
||||
},
|
||||
"after_joint_read_with_indexes": {
|
||||
"completed_samples": 3,
|
||||
"median_ms": 16.649,
|
||||
"queries": 19,
|
||||
"peak_php_used_bytes": 44194464,
|
||||
"incremental_php_used_bytes": 226528,
|
||||
"censored": false,
|
||||
"last_observed_ms": 15.141
|
||||
}
|
||||
},
|
||||
{
|
||||
"records_per_area": 1000,
|
||||
"area": "service_drafts",
|
||||
"page_size": 100,
|
||||
"before": {
|
||||
"completed_samples": 0,
|
||||
"median_ms": null,
|
||||
"queries": null,
|
||||
"peak_php_used_bytes": null,
|
||||
"incremental_php_used_bytes": null,
|
||||
"censored": true,
|
||||
"last_observed_ms": 15014.911
|
||||
},
|
||||
"after_joint_read": {
|
||||
"completed_samples": 3,
|
||||
"median_ms": 77.016,
|
||||
"queries": 19,
|
||||
"peak_php_used_bytes": 44626272,
|
||||
"incremental_php_used_bytes": 762504,
|
||||
"censored": false,
|
||||
"last_observed_ms": 77.016
|
||||
},
|
||||
"after_joint_read_with_indexes": {
|
||||
"completed_samples": 3,
|
||||
"median_ms": 22.162,
|
||||
"queries": 19,
|
||||
"peak_php_used_bytes": 44738048,
|
||||
"incremental_php_used_bytes": 762368,
|
||||
"censored": false,
|
||||
"last_observed_ms": 22.115
|
||||
}
|
||||
},
|
||||
{
|
||||
"records_per_area": 1000,
|
||||
"area": "billing_drafts",
|
||||
"page_size": 25,
|
||||
"before": {
|
||||
"completed_samples": 3,
|
||||
"median_ms": 5014.745,
|
||||
"queries": 560,
|
||||
"peak_php_used_bytes": 44010024,
|
||||
"incremental_php_used_bytes": 134904,
|
||||
"censored": false,
|
||||
"last_observed_ms": 4823.376
|
||||
},
|
||||
"after_joint_read": {
|
||||
"completed_samples": 3,
|
||||
"median_ms": 96.212,
|
||||
"queries": 23,
|
||||
"peak_php_used_bytes": 44178416,
|
||||
"incremental_php_used_bytes": 301480,
|
||||
"censored": false,
|
||||
"last_observed_ms": 94.739
|
||||
},
|
||||
"after_joint_read_with_indexes": {
|
||||
"completed_samples": 3,
|
||||
"median_ms": 19.615,
|
||||
"queries": 23,
|
||||
"peak_php_used_bytes": 44284608,
|
||||
"incremental_php_used_bytes": 301344,
|
||||
"censored": false,
|
||||
"last_observed_ms": 22.34
|
||||
}
|
||||
},
|
||||
{
|
||||
"records_per_area": 1000,
|
||||
"area": "billing_drafts",
|
||||
"page_size": 100,
|
||||
"before": {
|
||||
"completed_samples": 0,
|
||||
"median_ms": null,
|
||||
"queries": null,
|
||||
"peak_php_used_bytes": null,
|
||||
"incremental_php_used_bytes": null,
|
||||
"censored": true,
|
||||
"last_observed_ms": 15001.514
|
||||
},
|
||||
"after_joint_read": {
|
||||
"completed_samples": 3,
|
||||
"median_ms": 100.602,
|
||||
"queries": 23,
|
||||
"peak_php_used_bytes": 44947480,
|
||||
"incremental_php_used_bytes": 1062088,
|
||||
"censored": false,
|
||||
"last_observed_ms": 107.698
|
||||
},
|
||||
"after_joint_read_with_indexes": {
|
||||
"completed_samples": 3,
|
||||
"median_ms": 28.94,
|
||||
"queries": 23,
|
||||
"peak_php_used_bytes": 45053120,
|
||||
"incremental_php_used_bytes": 1061952,
|
||||
"censored": false,
|
||||
"last_observed_ms": 30.172
|
||||
}
|
||||
},
|
||||
{
|
||||
"records_per_area": 5000,
|
||||
"area": "clients",
|
||||
"page_size": 25,
|
||||
"before": {
|
||||
"completed_samples": 3,
|
||||
"median_ms": 6295.358,
|
||||
"queries": 185,
|
||||
"peak_php_used_bytes": 44891080,
|
||||
"incremental_php_used_bytes": 88832,
|
||||
"censored": false,
|
||||
"last_observed_ms": 6312.188
|
||||
},
|
||||
"after_joint_read": {
|
||||
"completed_samples": 3,
|
||||
"median_ms": 97.221,
|
||||
"queries": 11,
|
||||
"peak_php_used_bytes": 44906744,
|
||||
"incremental_php_used_bytes": 102704,
|
||||
"censored": false,
|
||||
"last_observed_ms": 112.29
|
||||
},
|
||||
"after_joint_read_with_indexes": {
|
||||
"completed_samples": 3,
|
||||
"median_ms": 18.454,
|
||||
"queries": 11,
|
||||
"peak_php_used_bytes": 45025520,
|
||||
"incremental_php_used_bytes": 102544,
|
||||
"censored": false,
|
||||
"last_observed_ms": 18.454
|
||||
}
|
||||
},
|
||||
{
|
||||
"records_per_area": 5000,
|
||||
"area": "clients",
|
||||
"page_size": 100,
|
||||
"before": {
|
||||
"completed_samples": 0,
|
||||
"median_ms": null,
|
||||
"queries": null,
|
||||
"peak_php_used_bytes": null,
|
||||
"incremental_php_used_bytes": null,
|
||||
"censored": true,
|
||||
"last_observed_ms": 15035.078
|
||||
},
|
||||
"after_joint_read": {
|
||||
"completed_samples": 3,
|
||||
"median_ms": 87.006,
|
||||
"queries": 11,
|
||||
"peak_php_used_bytes": 45073320,
|
||||
"incremental_php_used_bytes": 260736,
|
||||
"censored": false,
|
||||
"last_observed_ms": 87.006
|
||||
},
|
||||
"after_joint_read_with_indexes": {
|
||||
"completed_samples": 3,
|
||||
"median_ms": 19.76,
|
||||
"queries": 11,
|
||||
"peak_php_used_bytes": 45191232,
|
||||
"incremental_php_used_bytes": 260576,
|
||||
"censored": false,
|
||||
"last_observed_ms": 20.742
|
||||
}
|
||||
},
|
||||
{
|
||||
"records_per_area": 5000,
|
||||
"area": "services",
|
||||
"page_size": 25,
|
||||
"before": {
|
||||
"completed_samples": 3,
|
||||
"median_ms": 5238.39,
|
||||
"queries": 185,
|
||||
"peak_php_used_bytes": 44912728,
|
||||
"incremental_php_used_bytes": 88888,
|
||||
"censored": false,
|
||||
"last_observed_ms": 5101.054
|
||||
},
|
||||
"after_joint_read": {
|
||||
"completed_samples": 3,
|
||||
"median_ms": 92.186,
|
||||
"queries": 11,
|
||||
"peak_php_used_bytes": 44928392,
|
||||
"incremental_php_used_bytes": 102768,
|
||||
"censored": false,
|
||||
"last_observed_ms": 92.186
|
||||
},
|
||||
"after_joint_read_with_indexes": {
|
||||
"completed_samples": 3,
|
||||
"median_ms": 17.112,
|
||||
"queries": 11,
|
||||
"peak_php_used_bytes": 45040784,
|
||||
"incremental_php_used_bytes": 102600,
|
||||
"censored": false,
|
||||
"last_observed_ms": 17.112
|
||||
}
|
||||
},
|
||||
{
|
||||
"records_per_area": 5000,
|
||||
"area": "services",
|
||||
"page_size": 100,
|
||||
"before": {
|
||||
"completed_samples": 0,
|
||||
"median_ms": null,
|
||||
"queries": null,
|
||||
"peak_php_used_bytes": null,
|
||||
"incremental_php_used_bytes": null,
|
||||
"censored": true,
|
||||
"last_observed_ms": 15008.401
|
||||
},
|
||||
"after_joint_read": {
|
||||
"completed_samples": 3,
|
||||
"median_ms": 77.976,
|
||||
"queries": 11,
|
||||
"peak_php_used_bytes": 45094784,
|
||||
"incremental_php_used_bytes": 260816,
|
||||
"censored": false,
|
||||
"last_observed_ms": 79.222
|
||||
},
|
||||
"after_joint_read_with_indexes": {
|
||||
"completed_samples": 3,
|
||||
"median_ms": 18.127,
|
||||
"queries": 11,
|
||||
"peak_php_used_bytes": 45206688,
|
||||
"incremental_php_used_bytes": 260664,
|
||||
"censored": false,
|
||||
"last_observed_ms": 17.877
|
||||
}
|
||||
},
|
||||
{
|
||||
"records_per_area": 5000,
|
||||
"area": "service_drafts",
|
||||
"page_size": 25,
|
||||
"before": {
|
||||
"completed_samples": 3,
|
||||
"median_ms": 10553.094,
|
||||
"queries": 435,
|
||||
"peak_php_used_bytes": 44965376,
|
||||
"incremental_php_used_bytes": 120016,
|
||||
"censored": false,
|
||||
"last_observed_ms": 11120.366
|
||||
},
|
||||
"after_joint_read": {
|
||||
"completed_samples": 3,
|
||||
"median_ms": 216.018,
|
||||
"queries": 19,
|
||||
"peak_php_used_bytes": 45074096,
|
||||
"incremental_php_used_bytes": 226920,
|
||||
"censored": false,
|
||||
"last_observed_ms": 216.018
|
||||
},
|
||||
"after_joint_read_with_indexes": {
|
||||
"completed_samples": 3,
|
||||
"median_ms": 36.972,
|
||||
"queries": 19,
|
||||
"peak_php_used_bytes": 45180416,
|
||||
"incremental_php_used_bytes": 226784,
|
||||
"censored": false,
|
||||
"last_observed_ms": 36.972
|
||||
}
|
||||
},
|
||||
{
|
||||
"records_per_area": 5000,
|
||||
"area": "service_drafts",
|
||||
"page_size": 100,
|
||||
"before": {
|
||||
"completed_samples": 0,
|
||||
"median_ms": null,
|
||||
"queries": null,
|
||||
"peak_php_used_bytes": null,
|
||||
"incremental_php_used_bytes": null,
|
||||
"censored": true,
|
||||
"last_observed_ms": 15047.893
|
||||
},
|
||||
"after_joint_read": {
|
||||
"completed_samples": 3,
|
||||
"median_ms": 232.943,
|
||||
"queries": 19,
|
||||
"peak_php_used_bytes": 45618392,
|
||||
"incremental_php_used_bytes": 762760,
|
||||
"censored": false,
|
||||
"last_observed_ms": 232.943
|
||||
},
|
||||
"after_joint_read_with_indexes": {
|
||||
"completed_samples": 3,
|
||||
"median_ms": 44.376,
|
||||
"queries": 19,
|
||||
"peak_php_used_bytes": 45724160,
|
||||
"incremental_php_used_bytes": 762624,
|
||||
"censored": false,
|
||||
"last_observed_ms": 51.99
|
||||
}
|
||||
},
|
||||
{
|
||||
"records_per_area": 5000,
|
||||
"area": "billing_drafts",
|
||||
"page_size": 25,
|
||||
"before": {
|
||||
"completed_samples": 3,
|
||||
"median_ms": 13947.252,
|
||||
"queries": 560,
|
||||
"peak_php_used_bytes": 45002488,
|
||||
"incremental_php_used_bytes": 135504,
|
||||
"censored": false,
|
||||
"last_observed_ms": 14018.632
|
||||
},
|
||||
"after_joint_read": {
|
||||
"completed_samples": 3,
|
||||
"median_ms": 377.178,
|
||||
"queries": 23,
|
||||
"peak_php_used_bytes": 45170280,
|
||||
"incremental_php_used_bytes": 301480,
|
||||
"censored": false,
|
||||
"last_observed_ms": 452.889
|
||||
},
|
||||
"after_joint_read_with_indexes": {
|
||||
"completed_samples": 3,
|
||||
"median_ms": 33.662,
|
||||
"queries": 23,
|
||||
"peak_php_used_bytes": 45270464,
|
||||
"incremental_php_used_bytes": 301344,
|
||||
"censored": false,
|
||||
"last_observed_ms": 31.493
|
||||
}
|
||||
},
|
||||
{
|
||||
"records_per_area": 5000,
|
||||
"area": "billing_drafts",
|
||||
"page_size": 100,
|
||||
"before": {
|
||||
"completed_samples": 0,
|
||||
"median_ms": null,
|
||||
"queries": null,
|
||||
"peak_php_used_bytes": null,
|
||||
"incremental_php_used_bytes": null,
|
||||
"censored": true,
|
||||
"last_observed_ms": 15014.771
|
||||
},
|
||||
"after_joint_read": {
|
||||
"completed_samples": 3,
|
||||
"median_ms": 322.135,
|
||||
"queries": 23,
|
||||
"peak_php_used_bytes": 45939344,
|
||||
"incremental_php_used_bytes": 1062088,
|
||||
"censored": false,
|
||||
"last_observed_ms": 346.88
|
||||
},
|
||||
"after_joint_read_with_indexes": {
|
||||
"completed_samples": 3,
|
||||
"median_ms": 65.664,
|
||||
"queries": 23,
|
||||
"peak_php_used_bytes": 46038976,
|
||||
"incremental_php_used_bytes": 1061952,
|
||||
"censored": false,
|
||||
"last_observed_ms": 67.107
|
||||
}
|
||||
},
|
||||
{
|
||||
"records_per_area": 10000,
|
||||
"area": "clients",
|
||||
"page_size": 25,
|
||||
"before": {
|
||||
"completed_samples": 3,
|
||||
"median_ms": 9683.039,
|
||||
"queries": 185,
|
||||
"peak_php_used_bytes": 45757968,
|
||||
"incremental_php_used_bytes": 88832,
|
||||
"censored": false,
|
||||
"last_observed_ms": 9162.265
|
||||
},
|
||||
"after_joint_read": {
|
||||
"completed_samples": 3,
|
||||
"median_ms": 156.317,
|
||||
"queries": 11,
|
||||
"peak_php_used_bytes": 45773632,
|
||||
"incremental_php_used_bytes": 102704,
|
||||
"censored": false,
|
||||
"last_observed_ms": 122.2
|
||||
},
|
||||
"after_joint_read_with_indexes": {
|
||||
"completed_samples": 3,
|
||||
"median_ms": 13.88,
|
||||
"queries": 11,
|
||||
"peak_php_used_bytes": 45886464,
|
||||
"incremental_php_used_bytes": 102544,
|
||||
"censored": false,
|
||||
"last_observed_ms": 13.88
|
||||
}
|
||||
},
|
||||
{
|
||||
"records_per_area": 10000,
|
||||
"area": "clients",
|
||||
"page_size": 100,
|
||||
"before": {
|
||||
"completed_samples": 0,
|
||||
"median_ms": null,
|
||||
"queries": null,
|
||||
"peak_php_used_bytes": null,
|
||||
"incremental_php_used_bytes": null,
|
||||
"censored": true,
|
||||
"last_observed_ms": 15162.011
|
||||
},
|
||||
"after_joint_read": {
|
||||
"completed_samples": 3,
|
||||
"median_ms": 203.094,
|
||||
"queries": 11,
|
||||
"peak_php_used_bytes": 45948400,
|
||||
"incremental_php_used_bytes": 260736,
|
||||
"censored": false,
|
||||
"last_observed_ms": 203.094
|
||||
},
|
||||
"after_joint_read_with_indexes": {
|
||||
"completed_samples": 3,
|
||||
"median_ms": 14.52,
|
||||
"queries": 11,
|
||||
"peak_php_used_bytes": 46052176,
|
||||
"incremental_php_used_bytes": 260576,
|
||||
"censored": false,
|
||||
"last_observed_ms": 13.473
|
||||
}
|
||||
},
|
||||
{
|
||||
"records_per_area": 10000,
|
||||
"area": "services",
|
||||
"page_size": 25,
|
||||
"before": {
|
||||
"completed_samples": 3,
|
||||
"median_ms": 9385.151,
|
||||
"queries": 185,
|
||||
"peak_php_used_bytes": 45787552,
|
||||
"incremental_php_used_bytes": 88632,
|
||||
"censored": false,
|
||||
"last_observed_ms": 9819.329
|
||||
},
|
||||
"after_joint_read": {
|
||||
"completed_samples": 3,
|
||||
"median_ms": 117.184,
|
||||
"queries": 11,
|
||||
"peak_php_used_bytes": 45802648,
|
||||
"incremental_php_used_bytes": 101944,
|
||||
"censored": false,
|
||||
"last_observed_ms": 133.623
|
||||
},
|
||||
"after_joint_read_with_indexes": {
|
||||
"completed_samples": 3,
|
||||
"median_ms": 11.662,
|
||||
"queries": 11,
|
||||
"peak_php_used_bytes": 45900904,
|
||||
"incremental_php_used_bytes": 101776,
|
||||
"censored": false,
|
||||
"last_observed_ms": 11.772
|
||||
}
|
||||
},
|
||||
{
|
||||
"records_per_area": 10000,
|
||||
"area": "services",
|
||||
"page_size": 100,
|
||||
"before": {
|
||||
"completed_samples": 0,
|
||||
"median_ms": null,
|
||||
"queries": null,
|
||||
"peak_php_used_bytes": null,
|
||||
"incremental_php_used_bytes": null,
|
||||
"censored": true,
|
||||
"last_observed_ms": 15016.685
|
||||
},
|
||||
"after_joint_read": {
|
||||
"completed_samples": 3,
|
||||
"median_ms": 109.768,
|
||||
"queries": 11,
|
||||
"peak_php_used_bytes": 45968728,
|
||||
"incremental_php_used_bytes": 259680,
|
||||
"censored": false,
|
||||
"last_observed_ms": 109.768
|
||||
},
|
||||
"after_joint_read_with_indexes": {
|
||||
"completed_samples": 3,
|
||||
"median_ms": 14.871,
|
||||
"queries": 11,
|
||||
"peak_php_used_bytes": 46066496,
|
||||
"incremental_php_used_bytes": 259528,
|
||||
"censored": false,
|
||||
"last_observed_ms": 14.871
|
||||
}
|
||||
},
|
||||
{
|
||||
"records_per_area": 10000,
|
||||
"area": "service_drafts",
|
||||
"page_size": 25,
|
||||
"before": {
|
||||
"completed_samples": 0,
|
||||
"median_ms": null,
|
||||
"queries": null,
|
||||
"peak_php_used_bytes": null,
|
||||
"incremental_php_used_bytes": null,
|
||||
"censored": true,
|
||||
"last_observed_ms": 15036.425
|
||||
},
|
||||
"after_joint_read": {
|
||||
"completed_samples": 3,
|
||||
"median_ms": 333.786,
|
||||
"queries": 19,
|
||||
"peak_php_used_bytes": 45943832,
|
||||
"incremental_php_used_bytes": 226288,
|
||||
"censored": false,
|
||||
"last_observed_ms": 333.786
|
||||
},
|
||||
"after_joint_read_with_indexes": {
|
||||
"completed_samples": 3,
|
||||
"median_ms": 20.321,
|
||||
"queries": 19,
|
||||
"peak_php_used_bytes": 46040728,
|
||||
"incremental_php_used_bytes": 226152,
|
||||
"censored": false,
|
||||
"last_observed_ms": 20.321
|
||||
}
|
||||
},
|
||||
{
|
||||
"records_per_area": 10000,
|
||||
"area": "service_drafts",
|
||||
"page_size": 100,
|
||||
"before": {
|
||||
"completed_samples": 0,
|
||||
"median_ms": null,
|
||||
"queries": null,
|
||||
"peak_php_used_bytes": null,
|
||||
"incremental_php_used_bytes": null,
|
||||
"censored": true,
|
||||
"last_observed_ms": 15103.593
|
||||
},
|
||||
"after_joint_read": {
|
||||
"completed_samples": 3,
|
||||
"median_ms": 399.873,
|
||||
"queries": 19,
|
||||
"peak_php_used_bytes": 46488128,
|
||||
"incremental_php_used_bytes": 762128,
|
||||
"censored": false,
|
||||
"last_observed_ms": 399.873
|
||||
},
|
||||
"after_joint_read_with_indexes": {
|
||||
"completed_samples": 3,
|
||||
"median_ms": 26.888,
|
||||
"queries": 19,
|
||||
"peak_php_used_bytes": 46584312,
|
||||
"incremental_php_used_bytes": 761992,
|
||||
"censored": false,
|
||||
"last_observed_ms": 26.621
|
||||
}
|
||||
},
|
||||
{
|
||||
"records_per_area": 10000,
|
||||
"area": "billing_drafts",
|
||||
"page_size": 25,
|
||||
"before": {
|
||||
"completed_samples": 0,
|
||||
"median_ms": null,
|
||||
"queries": null,
|
||||
"peak_php_used_bytes": null,
|
||||
"incremental_php_used_bytes": null,
|
||||
"censored": true,
|
||||
"last_observed_ms": 15034.132
|
||||
},
|
||||
"after_joint_read": {
|
||||
"completed_samples": 3,
|
||||
"median_ms": 592.801,
|
||||
"queries": 23,
|
||||
"peak_php_used_bytes": 46035560,
|
||||
"incremental_php_used_bytes": 301104,
|
||||
"censored": false,
|
||||
"last_observed_ms": 684.446
|
||||
},
|
||||
"after_joint_read_with_indexes": {
|
||||
"completed_samples": 3,
|
||||
"median_ms": 28.728,
|
||||
"queries": 23,
|
||||
"peak_php_used_bytes": 46131032,
|
||||
"incremental_php_used_bytes": 300968,
|
||||
"censored": false,
|
||||
"last_observed_ms": 23.471
|
||||
}
|
||||
},
|
||||
{
|
||||
"records_per_area": 10000,
|
||||
"area": "billing_drafts",
|
||||
"page_size": 100,
|
||||
"before": {
|
||||
"completed_samples": 0,
|
||||
"median_ms": null,
|
||||
"queries": null,
|
||||
"peak_php_used_bytes": null,
|
||||
"incremental_php_used_bytes": null,
|
||||
"censored": true,
|
||||
"last_observed_ms": 15151.598
|
||||
},
|
||||
"after_joint_read": {
|
||||
"completed_samples": 3,
|
||||
"median_ms": 451.128,
|
||||
"queries": 23,
|
||||
"peak_php_used_bytes": 46804624,
|
||||
"incremental_php_used_bytes": 1061712,
|
||||
"censored": false,
|
||||
"last_observed_ms": 449.233
|
||||
},
|
||||
"after_joint_read_with_indexes": {
|
||||
"completed_samples": 3,
|
||||
"median_ms": 35.65,
|
||||
"queries": 23,
|
||||
"peak_php_used_bytes": 46899384,
|
||||
"incremental_php_used_bytes": 1061576,
|
||||
"censored": false,
|
||||
"last_observed_ms": 35.65
|
||||
}
|
||||
}
|
||||
],
|
||||
"missing_combinations": [],
|
||||
"additional_filter_cases": 9,
|
||||
"complete_measured_requests": 258,
|
||||
"bounded_baseline_attempts": 13,
|
||||
"current_projection": {
|
||||
"all_complete_responses_identical": true,
|
||||
"records_per_area": 10000,
|
||||
"limited_attempts": 0,
|
||||
"lines_per_draft": 100,
|
||||
"description_bytes": [
|
||||
128,
|
||||
1000
|
||||
],
|
||||
"scenarios": 44,
|
||||
"complete_scenarios": 44,
|
||||
"memory_budget_diagnostic_bytes": 201326592,
|
||||
"capacity_validated": false,
|
||||
"complete_measured_requests": 132,
|
||||
"page_sizes": [
|
||||
25,
|
||||
100
|
||||
],
|
||||
"variants": [
|
||||
"pre_projection",
|
||||
"none",
|
||||
"revision_only",
|
||||
"pair"
|
||||
],
|
||||
"php_memory_limit": "512M"
|
||||
},
|
||||
"concurrency": {
|
||||
"test": {
|
||||
"tests": 1,
|
||||
"assertions": 346,
|
||||
"errors": 0,
|
||||
"failures": 0,
|
||||
"junit_sha256": "217e4ff8096d985a523748a9b98bc3b573614c8dbe2318e1a0a2b7a26798cc1d"
|
||||
},
|
||||
"matrix_reads": 420,
|
||||
"mixed_reads": 20
|
||||
},
|
||||
"release": {
|
||||
"tests": 1,
|
||||
"assertions": 79,
|
||||
"failures": 0,
|
||||
"errors": 0,
|
||||
"junit_sha256": "b2fcb62f49a1f13e0b14882a8d68c45cf2c634d9f7f7094083e917d7175f9d3a"
|
||||
},
|
||||
"http": {
|
||||
"http_lock": {
|
||||
"tests": 1,
|
||||
"assertions": 54,
|
||||
"errors": 0,
|
||||
"failures": 0,
|
||||
"sha256": "87dfb60f41c12a2c7b34c2236d8d2af631b6737360637347017351e946e5b69c"
|
||||
},
|
||||
"affected_queue": {
|
||||
"tests": 13,
|
||||
"assertions": 232,
|
||||
"errors": 0,
|
||||
"failures": 0,
|
||||
"sha256": "e226bed0ab078a35175ac031e46441c229e833069ab5d0229cbd117041d8e284"
|
||||
}
|
||||
},
|
||||
"validated_existing_proofs": [
|
||||
{
|
||||
"path": "docs/proofs/module-association-http-lock-20261102.json",
|
||||
"sha256": "fa3d95ba919d23b6269e6a27f5f085718247e9ba0d06291c3276db62c04d9286"
|
||||
},
|
||||
{
|
||||
"path": "docs/proofs/module-association-release-20261102.json",
|
||||
"sha256": "a4017200b2ce7d60efcc3590780019309850f3c864f90ba0b3c786382fae4f28"
|
||||
},
|
||||
{
|
||||
"path": "docs/proofs/module-association-optimization-comparison-20261102.json",
|
||||
"sha256": "2f24696cd4282856151c044de4830f77d12ae618430461b2202360a30215580a"
|
||||
},
|
||||
{
|
||||
"path": "docs/proofs/module-association-optimization-summary-20261102.json",
|
||||
"sha256": "6371512a070c3ae71872eeb76fae6f04d7a1aeeffc97510a3ea8e5e263396591"
|
||||
},
|
||||
{
|
||||
"path": "docs/proofs/module-association-projection-fanout-20261102.json",
|
||||
"sha256": "e0353b7925a997a8a067a996d20bf462cd89c75b4eb3e302629015297a356f2d"
|
||||
},
|
||||
{
|
||||
"path": "docs/proofs/module-association-projection-summary-20261102.json",
|
||||
"sha256": "171309fd4ca204e6e485e1790b1892d63e5f0ad13b494bd6d09434c5c9e8a193"
|
||||
},
|
||||
{
|
||||
"path": "docs/proofs/module-association-concurrency-20261102.json",
|
||||
"sha256": "bd75881c7c60cf5c2acf4fb256d83e090b07f112becbf30c8620cbb81432546a"
|
||||
},
|
||||
{
|
||||
"path": "docs/proofs/module-association-concurrency-summary-20261102.json",
|
||||
"sha256": "bb12a5fd566d8c606a7a0e082256ad82a4b399929755c60f8be69bf1bcd6b239"
|
||||
}
|
||||
],
|
||||
"preservation": {
|
||||
"existing_proofs_unchanged": true,
|
||||
"protected_six_records_untouched": true,
|
||||
"blocked_cache_untouched": true,
|
||||
"destination_connected": false,
|
||||
"application_code_changed": false,
|
||||
"indexes_created": false,
|
||||
"rights_changed": false,
|
||||
"purchasing_activated": false,
|
||||
"publication": false,
|
||||
"checkpoint": false
|
||||
},
|
||||
"visual_review_pending": true,
|
||||
"deployment_capacity_validated": false
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,69 @@
|
||||
{
|
||||
"identity": {
|
||||
"database": "sgf_tempo_test",
|
||||
"role": "sgf_test_runner",
|
||||
"port": 55439,
|
||||
"cluster": "sgf_modular_regression_2576427d1939"
|
||||
},
|
||||
"run_tag": "f6668b16cd7e",
|
||||
"source_sha256": "b901bccc73a59e80d98d32a56532e9300a55ba9a216e5ac5a0ce84d78f976397",
|
||||
"controller_sha256": "6c16481f7e3f4355ba60ca22bc67385ec3b3113b4784e5d9f57025618e1735a9",
|
||||
"cases": [
|
||||
{
|
||||
"case": "confirm_rollback",
|
||||
"wait_event": "transactionid",
|
||||
"blocking_parent_verified": true,
|
||||
"timeout": {
|
||||
"status": "http_busy",
|
||||
"http_status": 423,
|
||||
"code": "association_busy",
|
||||
"body_keys": [
|
||||
"code",
|
||||
"message"
|
||||
],
|
||||
"elapsed_ms": 1086.658
|
||||
},
|
||||
"recovery": "200_then_idempotent_replay",
|
||||
"decision_events_after_retry": 1,
|
||||
"duplicate_decision": false
|
||||
},
|
||||
{
|
||||
"case": "confirm_commit",
|
||||
"wait_event": "transactionid",
|
||||
"blocking_parent_verified": true,
|
||||
"timeout": {
|
||||
"status": "http_busy",
|
||||
"http_status": 423,
|
||||
"code": "association_busy",
|
||||
"body_keys": [
|
||||
"code",
|
||||
"message"
|
||||
],
|
||||
"elapsed_ms": 1093.136
|
||||
},
|
||||
"recovery": "409_then_new_preview",
|
||||
"decision_events_after_retry": 1,
|
||||
"duplicate_decision": false
|
||||
},
|
||||
{
|
||||
"case": "preview_rollback",
|
||||
"wait_event": "transactionid",
|
||||
"blocking_parent_verified": true,
|
||||
"timeout": {
|
||||
"status": "http_busy",
|
||||
"http_status": 423,
|
||||
"code": "association_busy",
|
||||
"body_keys": [
|
||||
"code",
|
||||
"message"
|
||||
],
|
||||
"elapsed_ms": 1083.944
|
||||
},
|
||||
"recovery": "200_then_idempotent_replay",
|
||||
"decision_events_after_retry": 1,
|
||||
"duplicate_decision": false
|
||||
}
|
||||
],
|
||||
"completed": true,
|
||||
"previous_qa_rows_and_index_catalog_preserved": true
|
||||
}
|
||||
@@ -0,0 +1,134 @@
|
||||
{
|
||||
"date": "2026-11-02",
|
||||
"source_sha256": "b901bccc73a59e80d98d32a56532e9300a55ba9a216e5ac5a0ce84d78f976397",
|
||||
"controller_sha256": "6c16481f7e3f4355ba60ca22bc67385ec3b3113b4784e5d9f57025618e1735a9",
|
||||
"tests": {
|
||||
"http_lock": {
|
||||
"tests": 1,
|
||||
"assertions": 54,
|
||||
"errors": 0,
|
||||
"failures": 0,
|
||||
"sha256": "87dfb60f41c12a2c7b34c2236d8d2af631b6737360637347017351e946e5b69c"
|
||||
},
|
||||
"affected_queue": {
|
||||
"tests": 13,
|
||||
"assertions": 232,
|
||||
"errors": 0,
|
||||
"failures": 0,
|
||||
"sha256": "e226bed0ab078a35175ac031e46441c229e833069ab5d0229cbd117041d8e284"
|
||||
}
|
||||
},
|
||||
"cases": [
|
||||
{
|
||||
"case": "confirm_rollback",
|
||||
"wait_event": "transactionid",
|
||||
"blocking_parent_verified": true,
|
||||
"timeout": {
|
||||
"status": "http_busy",
|
||||
"http_status": 423,
|
||||
"code": "association_busy",
|
||||
"body_keys": [
|
||||
"code",
|
||||
"message"
|
||||
],
|
||||
"elapsed_ms": 1086.658
|
||||
},
|
||||
"recovery": "200_then_idempotent_replay",
|
||||
"decision_events_after_retry": 1,
|
||||
"duplicate_decision": false
|
||||
},
|
||||
{
|
||||
"case": "confirm_commit",
|
||||
"wait_event": "transactionid",
|
||||
"blocking_parent_verified": true,
|
||||
"timeout": {
|
||||
"status": "http_busy",
|
||||
"http_status": 423,
|
||||
"code": "association_busy",
|
||||
"body_keys": [
|
||||
"code",
|
||||
"message"
|
||||
],
|
||||
"elapsed_ms": 1093.136
|
||||
},
|
||||
"recovery": "409_then_new_preview",
|
||||
"decision_events_after_retry": 1,
|
||||
"duplicate_decision": false
|
||||
},
|
||||
{
|
||||
"case": "preview_rollback",
|
||||
"wait_event": "transactionid",
|
||||
"blocking_parent_verified": true,
|
||||
"timeout": {
|
||||
"status": "http_busy",
|
||||
"http_status": 423,
|
||||
"code": "association_busy",
|
||||
"body_keys": [
|
||||
"code",
|
||||
"message"
|
||||
],
|
||||
"elapsed_ms": 1083.944
|
||||
},
|
||||
"recovery": "200_then_idempotent_replay",
|
||||
"decision_events_after_retry": 1,
|
||||
"duplicate_decision": false
|
||||
}
|
||||
],
|
||||
"preservation": {
|
||||
"previous_qa_rows_and_index_catalog_preserved": true,
|
||||
"prior_proof_hashes_preserved": true,
|
||||
"protected_six_records_untouched": true,
|
||||
"blocked_cache_untouched": true,
|
||||
"destination_connected": false,
|
||||
"public_rights_changed": false,
|
||||
"indexes_created": false,
|
||||
"purchasing_activation": false,
|
||||
"publication": false,
|
||||
"checkpoint": false,
|
||||
"new_qa_fixture_retained": true
|
||||
},
|
||||
"proof": {
|
||||
"path": "docs/proofs/module-association-http-lock-20261102.json",
|
||||
"sha256": "fa3d95ba919d23b6269e6a27f5f085718247e9ba0d06291c3276db62c04d9286"
|
||||
},
|
||||
"previous_proofs": [
|
||||
{
|
||||
"path": "docs/proofs/module-association-release-20261102.json",
|
||||
"sha256": "a4017200b2ce7d60efcc3590780019309850f3c864f90ba0b3c786382fae4f28"
|
||||
},
|
||||
{
|
||||
"path": "docs/proofs/module-association-optimization-comparison-20261102.json",
|
||||
"sha256": "2f24696cd4282856151c044de4830f77d12ae618430461b2202360a30215580a"
|
||||
},
|
||||
{
|
||||
"path": "docs/proofs/module-association-optimization-summary-20261102.json",
|
||||
"sha256": "6371512a070c3ae71872eeb76fae6f04d7a1aeeffc97510a3ea8e5e263396591"
|
||||
},
|
||||
{
|
||||
"path": "docs/proofs/module-association-projection-fanout-20261102.json",
|
||||
"sha256": "e0353b7925a997a8a067a996d20bf462cd89c75b4eb3e302629015297a356f2d"
|
||||
},
|
||||
{
|
||||
"path": "docs/proofs/module-association-projection-summary-20261102.json",
|
||||
"sha256": "171309fd4ca204e6e485e1790b1892d63e5f0ad13b494bd6d09434c5c9e8a193"
|
||||
},
|
||||
{
|
||||
"path": "docs/proofs/module-association-concurrency-20261102.json",
|
||||
"sha256": "bd75881c7c60cf5c2acf4fb256d83e090b07f112becbf30c8620cbb81432546a"
|
||||
},
|
||||
{
|
||||
"path": "docs/proofs/module-association-concurrency-summary-20261102.json",
|
||||
"sha256": "bb12a5fd566d8c606a7a0e082256ad82a4b399929755c60f8be69bf1bcd6b239"
|
||||
}
|
||||
],
|
||||
"method": {
|
||||
"http_kernel_in_process": true,
|
||||
"independent_lock_contender": true,
|
||||
"test_lock_timeout_ms": 1000,
|
||||
"runtime_timeout_changed": false,
|
||||
"automatic_decision_retry_added": false,
|
||||
"network_browser_login_tls_tested": false
|
||||
},
|
||||
"deployment_capacity_validated": false,
|
||||
"visual_review_pending": true
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,77 @@
|
||||
{
|
||||
"identity": {
|
||||
"database": "sgf_tempo_test",
|
||||
"role": "sgf_test_runner",
|
||||
"port": 55439,
|
||||
"cluster": "sgf_modular_regression_2576427d1939",
|
||||
"postgres": "17.11"
|
||||
},
|
||||
"indexes": [
|
||||
{
|
||||
"tablename": "a_billing_drafts",
|
||||
"indexname": "a_billing_drafts_pkey",
|
||||
"indexdef": "CREATE UNIQUE INDEX a_billing_drafts_pkey ON public.a_billing_drafts USING btree (id)"
|
||||
},
|
||||
{
|
||||
"tablename": "a_billing_drafts",
|
||||
"indexname": "a_billing_drafts_tenant_id_company_id_id_unique",
|
||||
"indexdef": "CREATE UNIQUE INDEX a_billing_drafts_tenant_id_company_id_id_unique ON public.a_billing_drafts USING btree (tenant_id, company_id, id)"
|
||||
},
|
||||
{
|
||||
"tablename": "a_billing_drafts",
|
||||
"indexname": "a_billing_drafts_tenant_id_company_id_unit_id_id_unique",
|
||||
"indexdef": "CREATE UNIQUE INDEX a_billing_drafts_tenant_id_company_id_unit_id_id_unique ON public.a_billing_drafts USING btree (tenant_id, company_id, unit_id, id)"
|
||||
},
|
||||
{
|
||||
"tablename": "a_clients",
|
||||
"indexname": "a_clients_pkey",
|
||||
"indexdef": "CREATE UNIQUE INDEX a_clients_pkey ON public.a_clients USING btree (id)"
|
||||
},
|
||||
{
|
||||
"tablename": "a_clients",
|
||||
"indexname": "a_clients_tenant_id_company_id_id_unique",
|
||||
"indexdef": "CREATE UNIQUE INDEX a_clients_tenant_id_company_id_id_unique ON public.a_clients USING btree (tenant_id, company_id, id)"
|
||||
},
|
||||
{
|
||||
"tablename": "a_clients",
|
||||
"indexname": "a_clients_tenant_id_company_id_unit_id_id_unique",
|
||||
"indexdef": "CREATE UNIQUE INDEX a_clients_tenant_id_company_id_unit_id_id_unique ON public.a_clients USING btree (tenant_id, company_id, unit_id, id)"
|
||||
},
|
||||
{
|
||||
"tablename": "a_service_drafts",
|
||||
"indexname": "a_service_drafts_pkey",
|
||||
"indexdef": "CREATE UNIQUE INDEX a_service_drafts_pkey ON public.a_service_drafts USING btree (id)"
|
||||
},
|
||||
{
|
||||
"tablename": "a_service_drafts",
|
||||
"indexname": "a_service_drafts_tenant_id_company_id_id_unique",
|
||||
"indexdef": "CREATE UNIQUE INDEX a_service_drafts_tenant_id_company_id_id_unique ON public.a_service_drafts USING btree (tenant_id, company_id, id)"
|
||||
},
|
||||
{
|
||||
"tablename": "a_service_drafts",
|
||||
"indexname": "a_service_drafts_tenant_id_company_id_unit_id_id_unique",
|
||||
"indexdef": "CREATE UNIQUE INDEX a_service_drafts_tenant_id_company_id_unit_id_id_unique ON public.a_service_drafts USING btree (tenant_id, company_id, unit_id, id)"
|
||||
},
|
||||
{
|
||||
"tablename": "a_services",
|
||||
"indexname": "a_services_pkey",
|
||||
"indexdef": "CREATE UNIQUE INDEX a_services_pkey ON public.a_services USING btree (id)"
|
||||
},
|
||||
{
|
||||
"tablename": "a_services",
|
||||
"indexname": "a_services_tenant_id_company_id_id_unique",
|
||||
"indexdef": "CREATE UNIQUE INDEX a_services_tenant_id_company_id_id_unique ON public.a_services USING btree (tenant_id, company_id, id)"
|
||||
},
|
||||
{
|
||||
"tablename": "a_services",
|
||||
"indexname": "a_services_tenant_id_company_id_unit_id_id_unique",
|
||||
"indexdef": "CREATE UNIQUE INDEX a_services_tenant_id_company_id_unit_id_id_unique ON public.a_services USING btree (tenant_id, company_id, unit_id, id)"
|
||||
},
|
||||
{
|
||||
"tablename": "identity_audit",
|
||||
"indexname": "identity_audit_pkey",
|
||||
"indexdef": "CREATE UNIQUE INDEX identity_audit_pkey ON public.identity_audit USING btree (id)"
|
||||
}
|
||||
],
|
||||
"read_only": true
|
||||
}
|
||||
@@ -0,0 +1,43 @@
|
||||
{
|
||||
"identity": {
|
||||
"database": "sgf_tempo_test",
|
||||
"role": "sgf_test_runner",
|
||||
"port": 55439,
|
||||
"cluster": "sgf_modular_regression_2576427d1939"
|
||||
},
|
||||
"tables": {
|
||||
"a_clients": {
|
||||
"rows": 0,
|
||||
"fingerprint": "d41d8cd98f00b204e9800998ecf8427e"
|
||||
},
|
||||
"a_services": {
|
||||
"rows": 0,
|
||||
"fingerprint": "d41d8cd98f00b204e9800998ecf8427e"
|
||||
},
|
||||
"a_service_drafts": {
|
||||
"rows": 0,
|
||||
"fingerprint": "d41d8cd98f00b204e9800998ecf8427e"
|
||||
},
|
||||
"a_billing_drafts": {
|
||||
"rows": 0,
|
||||
"fingerprint": "d41d8cd98f00b204e9800998ecf8427e"
|
||||
},
|
||||
"identity_audit": {
|
||||
"rows": 0,
|
||||
"fingerprint": "d41d8cd98f00b204e9800998ecf8427e"
|
||||
},
|
||||
"users": {
|
||||
"rows": 0,
|
||||
"fingerprint": "d41d8cd98f00b204e9800998ecf8427e"
|
||||
},
|
||||
"permission_grants": {
|
||||
"rows": 0,
|
||||
"fingerprint": "d41d8cd98f00b204e9800998ecf8427e"
|
||||
},
|
||||
"company_memberships": {
|
||||
"rows": 0,
|
||||
"fingerprint": "d41d8cd98f00b204e9800998ecf8427e"
|
||||
}
|
||||
},
|
||||
"read_only": true
|
||||
}
|
||||
@@ -0,0 +1,43 @@
|
||||
{
|
||||
"identity": {
|
||||
"database": "sgf_tempo_test",
|
||||
"role": "sgf_test_runner",
|
||||
"port": 55439,
|
||||
"cluster": "sgf_modular_regression_2576427d1939"
|
||||
},
|
||||
"tables": {
|
||||
"a_clients": {
|
||||
"rows": 0,
|
||||
"fingerprint": "d41d8cd98f00b204e9800998ecf8427e"
|
||||
},
|
||||
"a_services": {
|
||||
"rows": 0,
|
||||
"fingerprint": "d41d8cd98f00b204e9800998ecf8427e"
|
||||
},
|
||||
"a_service_drafts": {
|
||||
"rows": 0,
|
||||
"fingerprint": "d41d8cd98f00b204e9800998ecf8427e"
|
||||
},
|
||||
"a_billing_drafts": {
|
||||
"rows": 0,
|
||||
"fingerprint": "d41d8cd98f00b204e9800998ecf8427e"
|
||||
},
|
||||
"identity_audit": {
|
||||
"rows": 0,
|
||||
"fingerprint": "d41d8cd98f00b204e9800998ecf8427e"
|
||||
},
|
||||
"users": {
|
||||
"rows": 0,
|
||||
"fingerprint": "d41d8cd98f00b204e9800998ecf8427e"
|
||||
},
|
||||
"permission_grants": {
|
||||
"rows": 0,
|
||||
"fingerprint": "d41d8cd98f00b204e9800998ecf8427e"
|
||||
},
|
||||
"company_memberships": {
|
||||
"rows": 0,
|
||||
"fingerprint": "d41d8cd98f00b204e9800998ecf8427e"
|
||||
}
|
||||
},
|
||||
"read_only": true
|
||||
}
|
||||
@@ -0,0 +1,56 @@
|
||||
{
|
||||
"date": "2026-11-02",
|
||||
"accepted_functional_checkpoint": "340f3bb5fa0e72d659abe43f3498b49e25ca3809",
|
||||
"functional_source_changed": false,
|
||||
"new_test": {
|
||||
"assertions": 2439,
|
||||
"errors": 0,
|
||||
"tests": 1,
|
||||
"junit_sha256": "658e67aae1fca715a45541cf3b7da6b6ff9c3a3a8181f9226d74af2f65e3c726",
|
||||
"failures": 0
|
||||
},
|
||||
"workload": {
|
||||
"concurrent_capacity_tested": false,
|
||||
"database_context": "sgf_tempo_test / sgf_test_runner / 55439 / sgf_modular_regression_2576427d1939",
|
||||
"postgres": "17.11",
|
||||
"diagnostic_budget_cases": 1,
|
||||
"budget_is_not_sla": true,
|
||||
"measured_complete_requests": 78,
|
||||
"diagnostic_request_budget_ms": 15000,
|
||||
"complete_cases": 26,
|
||||
"cases": 27
|
||||
},
|
||||
"rollback": {
|
||||
"snapshots": [
|
||||
"module-association-load-postcheck1-20261102.json",
|
||||
"module-association-load-postcheck2-20261102.json"
|
||||
],
|
||||
"observation": "Both snapshots were captured AFTER the run; they establish empty test tables and stability, not a pre-run fingerprint comparison.",
|
||||
"sequences_not_compared": true,
|
||||
"analyze_was_used": true,
|
||||
"post_run_empty_tables": 8
|
||||
},
|
||||
"source_artifact": {
|
||||
"sha256": "fde68e68e49ba81cc48e9d01455751c97e66489907f30b7b00c84ff34ca59a11",
|
||||
"report": "docs/proofs/module-association-load-20261102.json"
|
||||
},
|
||||
"method_limits": [
|
||||
"Sequential authenticated in-process HTTP kernel dispatch, no external network/login/browser latency",
|
||||
"Three samples per completed case; no p95, throughput or concurrent-user capacity conclusion",
|
||||
"Scales run serially in the same DB using rollback and ANALYZE; no fresh database or VACUUM between scales; physical table layout and cache can differ",
|
||||
"Peak PHP memory includes harness/fixture allocations; not PostgreSQL memory",
|
||||
"Generated history uses commercial association/removal cycles; not every possible module/history distribution"
|
||||
],
|
||||
"initial_harness_correction": "First fixture attempt failed with PostgreSQL 42P18; explicit text casts were added to synthetic JSON parameters. The failed transaction rolled back; accepted product code was unchanged.",
|
||||
"preserved": {
|
||||
"no_purchasing_activation": true,
|
||||
"blocked_cache_untouched": true,
|
||||
"public_rights_unchanged": true,
|
||||
"no_publication": true,
|
||||
"visual_review_pending": true,
|
||||
"real_associations_not_decided": true,
|
||||
"protected_six_records_not_accessed": true,
|
||||
"deployment_capacity_pending": true,
|
||||
"no_new_checkpoint": true
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,30 @@
|
||||
{
|
||||
"date": "2026-11-02",
|
||||
"variants": [
|
||||
{
|
||||
"experimental_indexes": false,
|
||||
"refusals_equal": {
|
||||
"reader": 403,
|
||||
"limited": 403,
|
||||
"unselected_unit": 403,
|
||||
"invalid_page_size": 422,
|
||||
"old_generation": 409
|
||||
},
|
||||
"revoked_dependency_response_identical": true,
|
||||
"response_sha256": "9390bf89fbd259d5dab9d282882d10e1ea4af089b2fb23d47d36fffa458110e0"
|
||||
},
|
||||
{
|
||||
"experimental_indexes": true,
|
||||
"refusals_equal": {
|
||||
"reader": 403,
|
||||
"limited": 403,
|
||||
"unselected_unit": 403,
|
||||
"invalid_page_size": 422,
|
||||
"old_generation": 409
|
||||
},
|
||||
"revoked_dependency_response_identical": true,
|
||||
"response_sha256": "9390bf89fbd259d5dab9d282882d10e1ea4af089b2fb23d47d36fffa458110e0"
|
||||
}
|
||||
],
|
||||
"indexes_rolled_back": true
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,672 @@
|
||||
{
|
||||
"date": "2026-11-02",
|
||||
"identity": {
|
||||
"database": "sgf_tempo_test",
|
||||
"role": "sgf_test_runner",
|
||||
"port": 55439,
|
||||
"cluster": "sgf_modular_regression_2576427d1939"
|
||||
},
|
||||
"records_per_area": 10000,
|
||||
"variants": {
|
||||
"batch": [
|
||||
{
|
||||
"signature": "50ff98a3116b073b1b26095ecaf597708917b73ca926112c977ec7507813bf3a",
|
||||
"shape": "WITH scoped AS MATERIALIZED (select id,action,details::jsonb->>'record_id' AS record_id,details::jsonb->>'module_id' AS module_id from \"identity_audit\" where (\"tenant_id\" = ? and \"company_id\" = ?) and \"action\" in (?, ?, ?) and details::jsonb->>'area' = ? and details::jsonb->>'record_id' in (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)),\n latest AS (SELECT DISTINCT ON (record_id,module_id) record_id,module_id,action FROM scoped\n WHERE action <> 'module.record.reviewed' ORDER BY record_id,module_id,id DESC),\n revisions AS (SELECT record_id,max(id) AS revision FROM scoped GROUP BY record_id)\n SELECT r.record_id,r.revision,coalesce(jsonb_agg(l.module_id ORDER BY l.module_id)\n FILTER (WHERE l.action='module.record.associated'),'[]'::jsonb) AS modules\n FROM revisions r LEFT JOIN latest l ON l.record_id=r.record_id GROUP BY r.record_id,r.revision",
|
||||
"execution_ms": 98.525,
|
||||
"nodes": [
|
||||
{
|
||||
"Node Type": "Aggregate",
|
||||
"Actual Rows": 67,
|
||||
"Actual Loops": 1,
|
||||
"Shared Hit Blocks": 7320,
|
||||
"Shared Read Blocks": 0,
|
||||
"Temp Read Blocks": 0,
|
||||
"Temp Written Blocks": 0
|
||||
},
|
||||
{
|
||||
"Node Type": "Gather",
|
||||
"Actual Rows": 569,
|
||||
"Actual Loops": 1,
|
||||
"Shared Hit Blocks": 7320,
|
||||
"Shared Read Blocks": 0,
|
||||
"Temp Read Blocks": 0,
|
||||
"Temp Written Blocks": 0
|
||||
},
|
||||
{
|
||||
"Node Type": "Seq Scan",
|
||||
"Relation Name": "identity_audit",
|
||||
"Actual Rows": 190,
|
||||
"Actual Loops": 3,
|
||||
"Rows Removed by Filter": 75367,
|
||||
"Shared Hit Blocks": 7320,
|
||||
"Shared Read Blocks": 0,
|
||||
"Temp Read Blocks": 0,
|
||||
"Temp Written Blocks": 0
|
||||
},
|
||||
{
|
||||
"Node Type": "Sort",
|
||||
"Actual Rows": 67,
|
||||
"Actual Loops": 1,
|
||||
"Shared Hit Blocks": 7320,
|
||||
"Shared Read Blocks": 0,
|
||||
"Temp Read Blocks": 0,
|
||||
"Temp Written Blocks": 0
|
||||
},
|
||||
{
|
||||
"Node Type": "Hash Join",
|
||||
"Actual Rows": 67,
|
||||
"Actual Loops": 1,
|
||||
"Shared Hit Blocks": 7320,
|
||||
"Shared Read Blocks": 0,
|
||||
"Temp Read Blocks": 0,
|
||||
"Temp Written Blocks": 0
|
||||
},
|
||||
{
|
||||
"Node Type": "Unique",
|
||||
"Actual Rows": 67,
|
||||
"Actual Loops": 1,
|
||||
"Shared Hit Blocks": 0,
|
||||
"Shared Read Blocks": 0,
|
||||
"Temp Read Blocks": 0,
|
||||
"Temp Written Blocks": 0
|
||||
},
|
||||
{
|
||||
"Node Type": "Sort",
|
||||
"Actual Rows": 569,
|
||||
"Actual Loops": 1,
|
||||
"Shared Hit Blocks": 0,
|
||||
"Shared Read Blocks": 0,
|
||||
"Temp Read Blocks": 0,
|
||||
"Temp Written Blocks": 0
|
||||
},
|
||||
{
|
||||
"Node Type": "CTE Scan",
|
||||
"Actual Rows": 569,
|
||||
"Actual Loops": 1,
|
||||
"Rows Removed by Filter": 0,
|
||||
"Shared Hit Blocks": 0,
|
||||
"Shared Read Blocks": 0,
|
||||
"Temp Read Blocks": 0,
|
||||
"Temp Written Blocks": 0
|
||||
},
|
||||
{
|
||||
"Node Type": "Hash",
|
||||
"Actual Rows": 67,
|
||||
"Actual Loops": 1,
|
||||
"Shared Hit Blocks": 7320,
|
||||
"Shared Read Blocks": 0,
|
||||
"Temp Read Blocks": 0,
|
||||
"Temp Written Blocks": 0
|
||||
},
|
||||
{
|
||||
"Node Type": "Aggregate",
|
||||
"Actual Rows": 67,
|
||||
"Actual Loops": 1,
|
||||
"Shared Hit Blocks": 7320,
|
||||
"Shared Read Blocks": 0,
|
||||
"Temp Read Blocks": 0,
|
||||
"Temp Written Blocks": 0
|
||||
},
|
||||
{
|
||||
"Node Type": "CTE Scan",
|
||||
"Actual Rows": 569,
|
||||
"Actual Loops": 1,
|
||||
"Shared Hit Blocks": 7320,
|
||||
"Shared Read Blocks": 0,
|
||||
"Temp Read Blocks": 0,
|
||||
"Temp Written Blocks": 0
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"signature": "10d02426d5830d39b0c3d99210b0d23d0023c3ee581a7885c043b23039fd95e3",
|
||||
"shape": "select count(*) as \"aggregate\" from \"a_clients\" where (\"tenant_id\" = ? and \"company_id\" = ? and \"unit_id\" is null) and NOT EXISTS (SELECT 1 FROM identity_audit me WHERE me.tenant_id=a_clients.tenant_id AND me.company_id=a_clients.company_id\n AND me.action IN ('module.record.associated','module.record.disassociated') AND me.details::jsonb->>'area'=? AND me.details::jsonb->>'record_id'=a_clients.id::text)",
|
||||
"execution_ms": 194.636,
|
||||
"nodes": [
|
||||
{
|
||||
"Node Type": "Aggregate",
|
||||
"Actual Rows": 1,
|
||||
"Actual Loops": 1,
|
||||
"Shared Hit Blocks": 7461,
|
||||
"Shared Read Blocks": 0,
|
||||
"Temp Read Blocks": 672,
|
||||
"Temp Written Blocks": 672
|
||||
},
|
||||
{
|
||||
"Node Type": "Hash Join",
|
||||
"Actual Rows": 3334,
|
||||
"Actual Loops": 1,
|
||||
"Shared Hit Blocks": 7461,
|
||||
"Shared Read Blocks": 0,
|
||||
"Temp Read Blocks": 672,
|
||||
"Temp Written Blocks": 672
|
||||
},
|
||||
{
|
||||
"Node Type": "Seq Scan",
|
||||
"Relation Name": "a_clients",
|
||||
"Actual Rows": 10000,
|
||||
"Actual Loops": 1,
|
||||
"Rows Removed by Filter": 104,
|
||||
"Shared Hit Blocks": 135,
|
||||
"Shared Read Blocks": 0,
|
||||
"Temp Read Blocks": 0,
|
||||
"Temp Written Blocks": 0
|
||||
},
|
||||
{
|
||||
"Node Type": "Hash",
|
||||
"Actual Rows": 56661,
|
||||
"Actual Loops": 1,
|
||||
"Shared Hit Blocks": 7326,
|
||||
"Shared Read Blocks": 0,
|
||||
"Temp Read Blocks": 0,
|
||||
"Temp Written Blocks": 610
|
||||
},
|
||||
{
|
||||
"Node Type": "Gather",
|
||||
"Actual Rows": 56661,
|
||||
"Actual Loops": 1,
|
||||
"Shared Hit Blocks": 7326,
|
||||
"Shared Read Blocks": 0,
|
||||
"Temp Read Blocks": 0,
|
||||
"Temp Written Blocks": 0
|
||||
},
|
||||
{
|
||||
"Node Type": "Seq Scan",
|
||||
"Relation Name": "identity_audit",
|
||||
"Actual Rows": 18887,
|
||||
"Actual Loops": 3,
|
||||
"Rows Removed by Filter": 56669,
|
||||
"Shared Hit Blocks": 7326,
|
||||
"Shared Read Blocks": 0,
|
||||
"Temp Read Blocks": 0,
|
||||
"Temp Written Blocks": 0
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"signature": "d829bbef004ef2eaed502b3df683fdde82e28f848a85c0e2202e743b86bc046d",
|
||||
"shape": "select * from \"a_clients\" where (\"tenant_id\" = ? and \"company_id\" = ? and \"unit_id\" is null) and NOT EXISTS (SELECT 1 FROM identity_audit me WHERE me.tenant_id=a_clients.tenant_id AND me.company_id=a_clients.company_id\n AND me.action IN ('module.record.associated','module.record.disassociated') AND me.details::jsonb->>'area'=? AND me.details::jsonb->>'record_id'=a_clients.id::text) order by \"id\" asc limit 25 offset 0",
|
||||
"execution_ms": 1323.111,
|
||||
"nodes": [
|
||||
{
|
||||
"Node Type": "Limit",
|
||||
"Actual Rows": 25,
|
||||
"Actual Loops": 1,
|
||||
"Shared Hit Blocks": 7332,
|
||||
"Shared Read Blocks": 0,
|
||||
"Temp Read Blocks": 29477,
|
||||
"Temp Written Blocks": 1162
|
||||
},
|
||||
{
|
||||
"Node Type": "Nested Loop",
|
||||
"Actual Rows": 25,
|
||||
"Actual Loops": 1,
|
||||
"Shared Hit Blocks": 7332,
|
||||
"Shared Read Blocks": 0,
|
||||
"Temp Read Blocks": 29477,
|
||||
"Temp Written Blocks": 1162
|
||||
},
|
||||
{
|
||||
"Node Type": "Index Scan",
|
||||
"Index Name": "a_clients_pkey",
|
||||
"Relation Name": "a_clients",
|
||||
"Actual Rows": 73,
|
||||
"Actual Loops": 1,
|
||||
"Rows Removed by Filter": 4,
|
||||
"Shared Hit Blocks": 6,
|
||||
"Shared Read Blocks": 0,
|
||||
"Temp Read Blocks": 0,
|
||||
"Temp Written Blocks": 0
|
||||
},
|
||||
{
|
||||
"Node Type": "Materialize",
|
||||
"Actual Rows": 20450,
|
||||
"Actual Loops": 73,
|
||||
"Shared Hit Blocks": 7326,
|
||||
"Shared Read Blocks": 0,
|
||||
"Temp Read Blocks": 29477,
|
||||
"Temp Written Blocks": 1162
|
||||
},
|
||||
{
|
||||
"Node Type": "Gather",
|
||||
"Actual Rows": 56661,
|
||||
"Actual Loops": 1,
|
||||
"Shared Hit Blocks": 7326,
|
||||
"Shared Read Blocks": 0,
|
||||
"Temp Read Blocks": 0,
|
||||
"Temp Written Blocks": 0
|
||||
},
|
||||
{
|
||||
"Node Type": "Seq Scan",
|
||||
"Relation Name": "identity_audit",
|
||||
"Actual Rows": 18887,
|
||||
"Actual Loops": 3,
|
||||
"Rows Removed by Filter": 56669,
|
||||
"Shared Hit Blocks": 7326,
|
||||
"Shared Read Blocks": 0,
|
||||
"Temp Read Blocks": 0,
|
||||
"Temp Written Blocks": 0
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"signature": "2cba1346e4495a631236b0eb5d232028dcb4c332321f9c0f6789c42055f3f90b",
|
||||
"shape": "WITH scoped AS MATERIALIZED (select id,action,details::jsonb->>'record_id' AS record_id,details::jsonb->>'module_id' AS module_id from \"identity_audit\" where (\"tenant_id\" = ? and \"company_id\" = ?) and \"action\" in (?, ?, ?) and details::jsonb->>'area' = ? and details::jsonb->>'record_id' in (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)),\n latest AS (SELECT DISTINCT ON (record_id,module_id) record_id,module_id,action FROM scoped\n WHERE action <> 'module.record.reviewed' ORDER BY record_id,module_id,id DESC),\n revisions AS (SELECT record_id,max(id) AS revision FROM scoped GROUP BY record_id)\n SELECT r.record_id,r.revision,coalesce(jsonb_agg(l.module_id ORDER BY l.module_id)\n FILTER (WHERE l.action='module.record.associated'),'[]'::jsonb) AS modules\n FROM revisions r LEFT JOIN latest l ON l.record_id=r.record_id GROUP BY r.record_id,r.revision",
|
||||
"execution_ms": 77.761,
|
||||
"nodes": [
|
||||
{
|
||||
"Node Type": "Aggregate",
|
||||
"Actual Rows": 0,
|
||||
"Actual Loops": 1,
|
||||
"Shared Hit Blocks": 7320,
|
||||
"Shared Read Blocks": 0,
|
||||
"Temp Read Blocks": 0,
|
||||
"Temp Written Blocks": 0
|
||||
},
|
||||
{
|
||||
"Node Type": "Gather",
|
||||
"Actual Rows": 0,
|
||||
"Actual Loops": 1,
|
||||
"Shared Hit Blocks": 7320,
|
||||
"Shared Read Blocks": 0,
|
||||
"Temp Read Blocks": 0,
|
||||
"Temp Written Blocks": 0
|
||||
},
|
||||
{
|
||||
"Node Type": "Seq Scan",
|
||||
"Relation Name": "identity_audit",
|
||||
"Actual Rows": 0,
|
||||
"Actual Loops": 3,
|
||||
"Rows Removed by Filter": 75556,
|
||||
"Shared Hit Blocks": 7320,
|
||||
"Shared Read Blocks": 0,
|
||||
"Temp Read Blocks": 0,
|
||||
"Temp Written Blocks": 0
|
||||
},
|
||||
{
|
||||
"Node Type": "Sort",
|
||||
"Actual Rows": 0,
|
||||
"Actual Loops": 1,
|
||||
"Shared Hit Blocks": 7320,
|
||||
"Shared Read Blocks": 0,
|
||||
"Temp Read Blocks": 0,
|
||||
"Temp Written Blocks": 0
|
||||
},
|
||||
{
|
||||
"Node Type": "Hash Join",
|
||||
"Actual Rows": 0,
|
||||
"Actual Loops": 1,
|
||||
"Shared Hit Blocks": 7320,
|
||||
"Shared Read Blocks": 0,
|
||||
"Temp Read Blocks": 0,
|
||||
"Temp Written Blocks": 0
|
||||
},
|
||||
{
|
||||
"Node Type": "Unique",
|
||||
"Actual Rows": 0,
|
||||
"Actual Loops": 0,
|
||||
"Shared Hit Blocks": 0,
|
||||
"Shared Read Blocks": 0,
|
||||
"Temp Read Blocks": 0,
|
||||
"Temp Written Blocks": 0
|
||||
},
|
||||
{
|
||||
"Node Type": "Sort",
|
||||
"Actual Rows": 0,
|
||||
"Actual Loops": 0,
|
||||
"Shared Hit Blocks": 0,
|
||||
"Shared Read Blocks": 0,
|
||||
"Temp Read Blocks": 0,
|
||||
"Temp Written Blocks": 0
|
||||
},
|
||||
{
|
||||
"Node Type": "CTE Scan",
|
||||
"Actual Rows": 0,
|
||||
"Actual Loops": 0,
|
||||
"Rows Removed by Filter": 0,
|
||||
"Shared Hit Blocks": 0,
|
||||
"Shared Read Blocks": 0,
|
||||
"Temp Read Blocks": 0,
|
||||
"Temp Written Blocks": 0
|
||||
},
|
||||
{
|
||||
"Node Type": "Hash",
|
||||
"Actual Rows": 0,
|
||||
"Actual Loops": 1,
|
||||
"Shared Hit Blocks": 7320,
|
||||
"Shared Read Blocks": 0,
|
||||
"Temp Read Blocks": 0,
|
||||
"Temp Written Blocks": 0
|
||||
},
|
||||
{
|
||||
"Node Type": "Aggregate",
|
||||
"Actual Rows": 0,
|
||||
"Actual Loops": 1,
|
||||
"Shared Hit Blocks": 7320,
|
||||
"Shared Read Blocks": 0,
|
||||
"Temp Read Blocks": 0,
|
||||
"Temp Written Blocks": 0
|
||||
},
|
||||
{
|
||||
"Node Type": "CTE Scan",
|
||||
"Actual Rows": 0,
|
||||
"Actual Loops": 1,
|
||||
"Shared Hit Blocks": 7320,
|
||||
"Shared Read Blocks": 0,
|
||||
"Temp Read Blocks": 0,
|
||||
"Temp Written Blocks": 0
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"indexed_batch": [
|
||||
{
|
||||
"signature": "50ff98a3116b073b1b26095ecaf597708917b73ca926112c977ec7507813bf3a",
|
||||
"shape": "WITH scoped AS MATERIALIZED (select id,action,details::jsonb->>'record_id' AS record_id,details::jsonb->>'module_id' AS module_id from \"identity_audit\" where (\"tenant_id\" = ? and \"company_id\" = ?) and \"action\" in (?, ?, ?) and details::jsonb->>'area' = ? and details::jsonb->>'record_id' in (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)),\n latest AS (SELECT DISTINCT ON (record_id,module_id) record_id,module_id,action FROM scoped\n WHERE action <> 'module.record.reviewed' ORDER BY record_id,module_id,id DESC),\n revisions AS (SELECT record_id,max(id) AS revision FROM scoped GROUP BY record_id)\n SELECT r.record_id,r.revision,coalesce(jsonb_agg(l.module_id ORDER BY l.module_id)\n FILTER (WHERE l.action='module.record.associated'),'[]'::jsonb) AS modules\n FROM revisions r LEFT JOIN latest l ON l.record_id=r.record_id GROUP BY r.record_id,r.revision",
|
||||
"execution_ms": 1.563,
|
||||
"nodes": [
|
||||
{
|
||||
"Node Type": "Aggregate",
|
||||
"Actual Rows": 67,
|
||||
"Actual Loops": 1,
|
||||
"Shared Hit Blocks": 576,
|
||||
"Shared Read Blocks": 0,
|
||||
"Temp Read Blocks": 0,
|
||||
"Temp Written Blocks": 0
|
||||
},
|
||||
{
|
||||
"Node Type": "Index Scan",
|
||||
"Index Name": "sgf_qa_assoc_revision",
|
||||
"Relation Name": "identity_audit",
|
||||
"Actual Rows": 569,
|
||||
"Actual Loops": 1,
|
||||
"Shared Hit Blocks": 576,
|
||||
"Shared Read Blocks": 0,
|
||||
"Temp Read Blocks": 0,
|
||||
"Temp Written Blocks": 0
|
||||
},
|
||||
{
|
||||
"Node Type": "Sort",
|
||||
"Actual Rows": 67,
|
||||
"Actual Loops": 1,
|
||||
"Shared Hit Blocks": 576,
|
||||
"Shared Read Blocks": 0,
|
||||
"Temp Read Blocks": 0,
|
||||
"Temp Written Blocks": 0
|
||||
},
|
||||
{
|
||||
"Node Type": "Hash Join",
|
||||
"Actual Rows": 67,
|
||||
"Actual Loops": 1,
|
||||
"Shared Hit Blocks": 576,
|
||||
"Shared Read Blocks": 0,
|
||||
"Temp Read Blocks": 0,
|
||||
"Temp Written Blocks": 0
|
||||
},
|
||||
{
|
||||
"Node Type": "Unique",
|
||||
"Actual Rows": 67,
|
||||
"Actual Loops": 1,
|
||||
"Shared Hit Blocks": 0,
|
||||
"Shared Read Blocks": 0,
|
||||
"Temp Read Blocks": 0,
|
||||
"Temp Written Blocks": 0
|
||||
},
|
||||
{
|
||||
"Node Type": "Sort",
|
||||
"Actual Rows": 569,
|
||||
"Actual Loops": 1,
|
||||
"Shared Hit Blocks": 0,
|
||||
"Shared Read Blocks": 0,
|
||||
"Temp Read Blocks": 0,
|
||||
"Temp Written Blocks": 0
|
||||
},
|
||||
{
|
||||
"Node Type": "CTE Scan",
|
||||
"Actual Rows": 569,
|
||||
"Actual Loops": 1,
|
||||
"Rows Removed by Filter": 0,
|
||||
"Shared Hit Blocks": 0,
|
||||
"Shared Read Blocks": 0,
|
||||
"Temp Read Blocks": 0,
|
||||
"Temp Written Blocks": 0
|
||||
},
|
||||
{
|
||||
"Node Type": "Hash",
|
||||
"Actual Rows": 67,
|
||||
"Actual Loops": 1,
|
||||
"Shared Hit Blocks": 576,
|
||||
"Shared Read Blocks": 0,
|
||||
"Temp Read Blocks": 0,
|
||||
"Temp Written Blocks": 0
|
||||
},
|
||||
{
|
||||
"Node Type": "Aggregate",
|
||||
"Actual Rows": 67,
|
||||
"Actual Loops": 1,
|
||||
"Shared Hit Blocks": 576,
|
||||
"Shared Read Blocks": 0,
|
||||
"Temp Read Blocks": 0,
|
||||
"Temp Written Blocks": 0
|
||||
},
|
||||
{
|
||||
"Node Type": "CTE Scan",
|
||||
"Actual Rows": 569,
|
||||
"Actual Loops": 1,
|
||||
"Shared Hit Blocks": 576,
|
||||
"Shared Read Blocks": 0,
|
||||
"Temp Read Blocks": 0,
|
||||
"Temp Written Blocks": 0
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"signature": "10d02426d5830d39b0c3d99210b0d23d0023c3ee581a7885c043b23039fd95e3",
|
||||
"shape": "select count(*) as \"aggregate\" from \"a_clients\" where (\"tenant_id\" = ? and \"company_id\" = ? and \"unit_id\" is null) and NOT EXISTS (SELECT 1 FROM identity_audit me WHERE me.tenant_id=a_clients.tenant_id AND me.company_id=a_clients.company_id\n AND me.action IN ('module.record.associated','module.record.disassociated') AND me.details::jsonb->>'area'=? AND me.details::jsonb->>'record_id'=a_clients.id::text)",
|
||||
"execution_ms": 104.319,
|
||||
"nodes": [
|
||||
{
|
||||
"Node Type": "Aggregate",
|
||||
"Actual Rows": 1,
|
||||
"Actual Loops": 1,
|
||||
"Shared Hit Blocks": 57204,
|
||||
"Shared Read Blocks": 0,
|
||||
"Temp Read Blocks": 672,
|
||||
"Temp Written Blocks": 672
|
||||
},
|
||||
{
|
||||
"Node Type": "Hash Join",
|
||||
"Actual Rows": 3334,
|
||||
"Actual Loops": 1,
|
||||
"Shared Hit Blocks": 57204,
|
||||
"Shared Read Blocks": 0,
|
||||
"Temp Read Blocks": 672,
|
||||
"Temp Written Blocks": 672
|
||||
},
|
||||
{
|
||||
"Node Type": "Seq Scan",
|
||||
"Relation Name": "a_clients",
|
||||
"Actual Rows": 10000,
|
||||
"Actual Loops": 1,
|
||||
"Rows Removed by Filter": 104,
|
||||
"Shared Hit Blocks": 135,
|
||||
"Shared Read Blocks": 0,
|
||||
"Temp Read Blocks": 0,
|
||||
"Temp Written Blocks": 0
|
||||
},
|
||||
{
|
||||
"Node Type": "Hash",
|
||||
"Actual Rows": 56661,
|
||||
"Actual Loops": 1,
|
||||
"Shared Hit Blocks": 57069,
|
||||
"Shared Read Blocks": 0,
|
||||
"Temp Read Blocks": 0,
|
||||
"Temp Written Blocks": 610
|
||||
},
|
||||
{
|
||||
"Node Type": "Index Scan",
|
||||
"Index Name": "sgf_qa_assoc_revision",
|
||||
"Relation Name": "identity_audit",
|
||||
"Actual Rows": 56661,
|
||||
"Actual Loops": 1,
|
||||
"Rows Removed by Filter": 0,
|
||||
"Shared Hit Blocks": 57069,
|
||||
"Shared Read Blocks": 0,
|
||||
"Temp Read Blocks": 0,
|
||||
"Temp Written Blocks": 0
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"signature": "d829bbef004ef2eaed502b3df683fdde82e28f848a85c0e2202e743b86bc046d",
|
||||
"shape": "select * from \"a_clients\" where (\"tenant_id\" = ? and \"company_id\" = ? and \"unit_id\" is null) and NOT EXISTS (SELECT 1 FROM identity_audit me WHERE me.tenant_id=a_clients.tenant_id AND me.company_id=a_clients.company_id\n AND me.action IN ('module.record.associated','module.record.disassociated') AND me.details::jsonb->>'area'=? AND me.details::jsonb->>'record_id'=a_clients.id::text) order by \"id\" asc limit 25 offset 0",
|
||||
"execution_ms": 0.368,
|
||||
"nodes": [
|
||||
{
|
||||
"Node Type": "Limit",
|
||||
"Actual Rows": 25,
|
||||
"Actual Loops": 1,
|
||||
"Shared Hit Blocks": 273,
|
||||
"Shared Read Blocks": 0,
|
||||
"Temp Read Blocks": 0,
|
||||
"Temp Written Blocks": 0
|
||||
},
|
||||
{
|
||||
"Node Type": "Nested Loop",
|
||||
"Actual Rows": 25,
|
||||
"Actual Loops": 1,
|
||||
"Shared Hit Blocks": 273,
|
||||
"Shared Read Blocks": 0,
|
||||
"Temp Read Blocks": 0,
|
||||
"Temp Written Blocks": 0
|
||||
},
|
||||
{
|
||||
"Node Type": "Index Scan",
|
||||
"Index Name": "a_clients_pkey",
|
||||
"Relation Name": "a_clients",
|
||||
"Actual Rows": 73,
|
||||
"Actual Loops": 1,
|
||||
"Rows Removed by Filter": 4,
|
||||
"Shared Hit Blocks": 6,
|
||||
"Shared Read Blocks": 0,
|
||||
"Temp Read Blocks": 0,
|
||||
"Temp Written Blocks": 0
|
||||
},
|
||||
{
|
||||
"Node Type": "Index Scan",
|
||||
"Index Name": "sgf_qa_assoc_revision",
|
||||
"Relation Name": "identity_audit",
|
||||
"Actual Rows": 1,
|
||||
"Actual Loops": 73,
|
||||
"Rows Removed by Filter": 0,
|
||||
"Shared Hit Blocks": 267,
|
||||
"Shared Read Blocks": 0,
|
||||
"Temp Read Blocks": 0,
|
||||
"Temp Written Blocks": 0
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"signature": "2cba1346e4495a631236b0eb5d232028dcb4c332321f9c0f6789c42055f3f90b",
|
||||
"shape": "WITH scoped AS MATERIALIZED (select id,action,details::jsonb->>'record_id' AS record_id,details::jsonb->>'module_id' AS module_id from \"identity_audit\" where (\"tenant_id\" = ? and \"company_id\" = ?) and \"action\" in (?, ?, ?) and details::jsonb->>'area' = ? and details::jsonb->>'record_id' in (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)),\n latest AS (SELECT DISTINCT ON (record_id,module_id) record_id,module_id,action FROM scoped\n WHERE action <> 'module.record.reviewed' ORDER BY record_id,module_id,id DESC),\n revisions AS (SELECT record_id,max(id) AS revision FROM scoped GROUP BY record_id)\n SELECT r.record_id,r.revision,coalesce(jsonb_agg(l.module_id ORDER BY l.module_id)\n FILTER (WHERE l.action='module.record.associated'),'[]'::jsonb) AS modules\n FROM revisions r LEFT JOIN latest l ON l.record_id=r.record_id GROUP BY r.record_id,r.revision",
|
||||
"execution_ms": 0.167,
|
||||
"nodes": [
|
||||
{
|
||||
"Node Type": "Aggregate",
|
||||
"Actual Rows": 0,
|
||||
"Actual Loops": 1,
|
||||
"Shared Hit Blocks": 12,
|
||||
"Shared Read Blocks": 0,
|
||||
"Temp Read Blocks": 0,
|
||||
"Temp Written Blocks": 0
|
||||
},
|
||||
{
|
||||
"Node Type": "Index Scan",
|
||||
"Index Name": "sgf_qa_assoc_revision",
|
||||
"Relation Name": "identity_audit",
|
||||
"Actual Rows": 0,
|
||||
"Actual Loops": 1,
|
||||
"Shared Hit Blocks": 12,
|
||||
"Shared Read Blocks": 0,
|
||||
"Temp Read Blocks": 0,
|
||||
"Temp Written Blocks": 0
|
||||
},
|
||||
{
|
||||
"Node Type": "Sort",
|
||||
"Actual Rows": 0,
|
||||
"Actual Loops": 1,
|
||||
"Shared Hit Blocks": 12,
|
||||
"Shared Read Blocks": 0,
|
||||
"Temp Read Blocks": 0,
|
||||
"Temp Written Blocks": 0
|
||||
},
|
||||
{
|
||||
"Node Type": "Hash Join",
|
||||
"Actual Rows": 0,
|
||||
"Actual Loops": 1,
|
||||
"Shared Hit Blocks": 12,
|
||||
"Shared Read Blocks": 0,
|
||||
"Temp Read Blocks": 0,
|
||||
"Temp Written Blocks": 0
|
||||
},
|
||||
{
|
||||
"Node Type": "Unique",
|
||||
"Actual Rows": 0,
|
||||
"Actual Loops": 0,
|
||||
"Shared Hit Blocks": 0,
|
||||
"Shared Read Blocks": 0,
|
||||
"Temp Read Blocks": 0,
|
||||
"Temp Written Blocks": 0
|
||||
},
|
||||
{
|
||||
"Node Type": "Sort",
|
||||
"Actual Rows": 0,
|
||||
"Actual Loops": 0,
|
||||
"Shared Hit Blocks": 0,
|
||||
"Shared Read Blocks": 0,
|
||||
"Temp Read Blocks": 0,
|
||||
"Temp Written Blocks": 0
|
||||
},
|
||||
{
|
||||
"Node Type": "CTE Scan",
|
||||
"Actual Rows": 0,
|
||||
"Actual Loops": 0,
|
||||
"Rows Removed by Filter": 0,
|
||||
"Shared Hit Blocks": 0,
|
||||
"Shared Read Blocks": 0,
|
||||
"Temp Read Blocks": 0,
|
||||
"Temp Written Blocks": 0
|
||||
},
|
||||
{
|
||||
"Node Type": "Hash",
|
||||
"Actual Rows": 0,
|
||||
"Actual Loops": 1,
|
||||
"Shared Hit Blocks": 12,
|
||||
"Shared Read Blocks": 0,
|
||||
"Temp Read Blocks": 0,
|
||||
"Temp Written Blocks": 0
|
||||
},
|
||||
{
|
||||
"Node Type": "Aggregate",
|
||||
"Actual Rows": 0,
|
||||
"Actual Loops": 1,
|
||||
"Shared Hit Blocks": 12,
|
||||
"Shared Read Blocks": 0,
|
||||
"Temp Read Blocks": 0,
|
||||
"Temp Written Blocks": 0
|
||||
},
|
||||
{
|
||||
"Node Type": "CTE Scan",
|
||||
"Actual Rows": 0,
|
||||
"Actual Loops": 1,
|
||||
"Shared Hit Blocks": 12,
|
||||
"Shared Read Blocks": 0,
|
||||
"Temp Read Blocks": 0,
|
||||
"Temp Written Blocks": 0
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
"indexes_rolled_back": true
|
||||
}
|
||||
@@ -0,0 +1,92 @@
|
||||
{
|
||||
"date": "2026-11-02",
|
||||
"baseline_checkpoint": "340f3bb5fa0e72d659abe43f3498b49e25ca3809",
|
||||
"baseline_service_sha256": "44a2c75d6a2ecaddc151b3c92175324e15ca4e2664a87a4d50c093913adb4114",
|
||||
"optimized_service_sha256": "6df1a85af8ea3112ff8e61741408158cd0444944cc3e0b407ad5bd4ad8043361",
|
||||
"preview_and_confirmation_source_unchanged": true,
|
||||
"tests": {
|
||||
"affected": {
|
||||
"assertions": 312,
|
||||
"errors": 0,
|
||||
"tests": 20,
|
||||
"junit_sha256": "50a8e14b026ad20977ddc7257f48c2e74b2a7b50c4d355a6587d2d112201202b",
|
||||
"failures": 0
|
||||
},
|
||||
"comparison": {
|
||||
"assertions": 25521,
|
||||
"errors": 0,
|
||||
"tests": 1,
|
||||
"junit_sha256": "c03ef9cd43057272696b459af4be553f9bf6d11ee40ed1db4601621e6f00d0e6",
|
||||
"failures": 0
|
||||
},
|
||||
"plans": {
|
||||
"assertions": 11,
|
||||
"errors": 0,
|
||||
"tests": 1,
|
||||
"junit_sha256": "0726779185752aa0729a3d9a7e23ea7a4fb63c65ae7bed4ba861a3825497b73c",
|
||||
"failures": 0
|
||||
},
|
||||
"access_parity": {
|
||||
"assertions": 238,
|
||||
"errors": 0,
|
||||
"tests": 1,
|
||||
"junit_sha256": "bd8564781ded7fdb4154245d4bb70a55a441eaa9ffdf62acf9e2ae06b988bd4c",
|
||||
"failures": 0
|
||||
}
|
||||
},
|
||||
"experiment": {
|
||||
"repetitions": 3,
|
||||
"records_in_each_area": true,
|
||||
"pre_sample_garbage_collection": true,
|
||||
"limited_indexed_attempts": 0,
|
||||
"statement_budget_ms": 3000,
|
||||
"limited_baseline_attempts": 13,
|
||||
"successful_measured_requests": 258,
|
||||
"limited_batch_attempts": 0,
|
||||
"page_sizes": [
|
||||
25,
|
||||
100
|
||||
],
|
||||
"variants": [
|
||||
"baseline",
|
||||
"batch",
|
||||
"indexed_batch"
|
||||
],
|
||||
"budget_ms": 15000,
|
||||
"no_failed_sql_statements": true,
|
||||
"timing_is_warm_in_process_http": true,
|
||||
"scales": [
|
||||
1000,
|
||||
5000,
|
||||
10000
|
||||
],
|
||||
"all_complete_responses_byte_identical": true,
|
||||
"capacity_approved": false,
|
||||
"cases_per_variant": 33
|
||||
},
|
||||
"preservation": {
|
||||
"new_checkpoint": false,
|
||||
"real_or_demo_database_connected": false,
|
||||
"blocked_cache_untouched": true,
|
||||
"synthetic_indexes_rolled_back_in_all_scales": true,
|
||||
"new_public_rights": false,
|
||||
"publication": false,
|
||||
"committed_test_records_and_index_catalog_preserved": true,
|
||||
"purchasing_activation": false,
|
||||
"protected_six_records_untouched": true
|
||||
},
|
||||
"artifacts": {
|
||||
"comparison_sha256": "2f24696cd4282856151c044de4830f77d12ae618430461b2202360a30215580a",
|
||||
"plans": "module-association-optimization-plans-20261102.json",
|
||||
"access": "module-association-optimization-access-20261102.json",
|
||||
"comparison": "docs/proofs/module-association-optimization-comparison-20261102.json"
|
||||
},
|
||||
"limitations": [
|
||||
"Same fixture A/B/C per scale; A/B alternate order; C follows with warm buffers and tested indexes",
|
||||
"Scales run serially in the same database with rollback/ANALYZE; physical layout and cache may vary; no cold-start or pure cardinality curve claim",
|
||||
"Incremental PHP memory is instrumented request peak minus baseline; process memory includes fixtures and kernel",
|
||||
"One line per draft; maximum document fan-out and long/multi-module historical distributions not load-tested",
|
||||
"No concurrent-user capacity, p95, throughput, write-cost or index deployment/recovery validation",
|
||||
"Visual review remains separate"
|
||||
]
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,73 @@
|
||||
{
|
||||
"date": "2026-11-02",
|
||||
"tests": {
|
||||
"affected": {
|
||||
"assertions": 322,
|
||||
"errors": 0,
|
||||
"tests": 21,
|
||||
"junit_sha256": "389a48ec91396c1af7ac2b05a8c6c359891a99d8ad51c4c1b88ed4df3662b14e",
|
||||
"failures": 0
|
||||
},
|
||||
"fanout": {
|
||||
"assertions": 25499,
|
||||
"errors": 0,
|
||||
"tests": 1,
|
||||
"junit_sha256": "c768c145739a2d580cf3d9d4b408138c0015aec18bba5f0dbacb942df9f0fa39",
|
||||
"failures": 0
|
||||
}
|
||||
},
|
||||
"source": {
|
||||
"pre_projection_sha256": "6df1a85af8ea3112ff8e61741408158cd0444944cc3e0b407ad5bd4ad8043361",
|
||||
"final_sha256": "b901bccc73a59e80d98d32a56532e9300a55ba9a216e5ac5a0ce84d78f976397",
|
||||
"baseline_recovered_from_measured_pre_projection_code": true,
|
||||
"preview_and_confirmation_unchanged_from_340f3bb": true
|
||||
},
|
||||
"experiment": {
|
||||
"all_complete_responses_identical": true,
|
||||
"records_per_area": 10000,
|
||||
"limited_attempts": 0,
|
||||
"lines_per_draft": 100,
|
||||
"description_bytes": [
|
||||
128,
|
||||
1000
|
||||
],
|
||||
"scenarios": 44,
|
||||
"complete_scenarios": 44,
|
||||
"memory_budget_diagnostic_bytes": 201326592,
|
||||
"capacity_validated": false,
|
||||
"complete_measured_requests": 132,
|
||||
"page_sizes": [
|
||||
25,
|
||||
100
|
||||
],
|
||||
"variants": [
|
||||
"pre_projection",
|
||||
"none",
|
||||
"revision_only",
|
||||
"pair"
|
||||
],
|
||||
"php_memory_limit": "512M"
|
||||
},
|
||||
"preservation": {
|
||||
"protected_six_records_untouched": true,
|
||||
"no_destination_connection": true,
|
||||
"no_public_rights_granted": true,
|
||||
"original_test_rows_and_index_catalog_preserved": true,
|
||||
"blocked_cache_untouched": true,
|
||||
"no_purchasing_activation": true,
|
||||
"no_checkpoint": true,
|
||||
"no_publication": true
|
||||
},
|
||||
"artifacts": {
|
||||
"measurement": "docs/proofs/module-association-projection-fanout-20261102.json",
|
||||
"sha256": "e0353b7925a997a8a067a996d20bf462cd89c75b4eb3e302629015297a356f2d"
|
||||
},
|
||||
"limits": [
|
||||
"Sequential phases and three warm in-process samples; not concurrent-user capacity or cold-start latency",
|
||||
"Descriptions are repetitive synthetic text of 128/1000 bytes; not every document payload or full 2000-character text limit",
|
||||
"Fixed phase order and shared cluster can influence latency; memory and response equality are the primary projection comparison",
|
||||
"EXPLAIN without ANALYZE records planned index selection, not proof of cost under every production history",
|
||||
"Index creation/size is measured only in transactionally disposable synthetic data; write costs and production rollout/recovery not validated",
|
||||
"Visual review remains pending"
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,120 @@
|
||||
{
|
||||
"date": "2026-11-02",
|
||||
"run_tag": "d9db8f8ac6c0",
|
||||
"identity": {
|
||||
"database": "sgf_tempo_test",
|
||||
"role": "sgf_test_runner",
|
||||
"port": 55439,
|
||||
"cluster": "sgf_modular_regression_2576427d1939"
|
||||
},
|
||||
"source_sha256": "b901bccc73a59e80d98d32a56532e9300a55ba9a216e5ac5a0ce84d78f976397",
|
||||
"fixture_policy": "Four new QA-only clients committed for worker visibility; fixture and synthetic results retained in regression DB with private manifest.",
|
||||
"cases": [
|
||||
{
|
||||
"case": "rollback_then_complete",
|
||||
"release": "rollback",
|
||||
"wait": {
|
||||
"actual_wait_observed": true,
|
||||
"blocking_parent_verified": true,
|
||||
"statement_table": "companies",
|
||||
"statement_for_update": true,
|
||||
"wait_event_type": "Lock",
|
||||
"wait_event": "transactionid",
|
||||
"ungranted_locks": [
|
||||
{
|
||||
"locktype": "transactionid",
|
||||
"mode": "ShareLock"
|
||||
}
|
||||
]
|
||||
},
|
||||
"second_status": "completed",
|
||||
"second_http_status": 200,
|
||||
"second_replayed": false,
|
||||
"elapsed_ms": 352.387,
|
||||
"record_version_after": 1,
|
||||
"decision_events_after_retry": 1,
|
||||
"first_event_persisted": false,
|
||||
"duplicate_decision": false
|
||||
},
|
||||
{
|
||||
"case": "commit_then_stale_revision",
|
||||
"release": "commit",
|
||||
"wait": {
|
||||
"actual_wait_observed": true,
|
||||
"blocking_parent_verified": true,
|
||||
"statement_table": "companies",
|
||||
"statement_for_update": true,
|
||||
"wait_event_type": "Lock",
|
||||
"wait_event": "transactionid",
|
||||
"ungranted_locks": [
|
||||
{
|
||||
"locktype": "transactionid",
|
||||
"mode": "ShareLock"
|
||||
}
|
||||
]
|
||||
},
|
||||
"second_status": "refused",
|
||||
"second_http_status": 409,
|
||||
"second_replayed": null,
|
||||
"elapsed_ms": 338.389,
|
||||
"record_version_after": 1,
|
||||
"decision_events_after_retry": 1,
|
||||
"first_event_persisted": true,
|
||||
"duplicate_decision": false
|
||||
},
|
||||
{
|
||||
"case": "commit_then_same_token",
|
||||
"release": "commit",
|
||||
"wait": {
|
||||
"actual_wait_observed": true,
|
||||
"blocking_parent_verified": true,
|
||||
"statement_table": "companies",
|
||||
"statement_for_update": true,
|
||||
"wait_event_type": "Lock",
|
||||
"wait_event": "transactionid",
|
||||
"ungranted_locks": [
|
||||
{
|
||||
"locktype": "transactionid",
|
||||
"mode": "ShareLock"
|
||||
}
|
||||
]
|
||||
},
|
||||
"second_status": "completed",
|
||||
"second_http_status": 200,
|
||||
"second_replayed": true,
|
||||
"elapsed_ms": 333.37,
|
||||
"record_version_after": 1,
|
||||
"decision_events_after_retry": 1,
|
||||
"first_event_persisted": true,
|
||||
"duplicate_decision": false
|
||||
},
|
||||
{
|
||||
"case": "commit_record_change_then_stale_version",
|
||||
"release": "commit",
|
||||
"wait": {
|
||||
"actual_wait_observed": true,
|
||||
"blocking_parent_verified": true,
|
||||
"statement_table": "companies",
|
||||
"statement_for_update": true,
|
||||
"wait_event_type": "Lock",
|
||||
"wait_event": "transactionid",
|
||||
"ungranted_locks": [
|
||||
{
|
||||
"locktype": "transactionid",
|
||||
"mode": "ShareLock"
|
||||
}
|
||||
]
|
||||
},
|
||||
"second_status": "refused",
|
||||
"second_http_status": 409,
|
||||
"second_replayed": null,
|
||||
"elapsed_ms": 335.546,
|
||||
"record_version_after": 2,
|
||||
"decision_events_after_retry": 0,
|
||||
"first_event_persisted": null,
|
||||
"duplicate_decision": false
|
||||
}
|
||||
],
|
||||
"completed": true,
|
||||
"previous_qa_rows_and_index_catalog_preserved": true
|
||||
}
|
||||
@@ -0,0 +1,162 @@
|
||||
{
|
||||
"date": "2026-11-02",
|
||||
"source_sha256": "b901bccc73a59e80d98d32a56532e9300a55ba9a216e5ac5a0ce84d78f976397",
|
||||
"test": {
|
||||
"tests": 1,
|
||||
"assertions": 79,
|
||||
"failures": 0,
|
||||
"errors": 0,
|
||||
"junit_sha256": "b2fcb62f49a1f13e0b14882a8d68c45cf2c634d9f7f7094083e917d7175f9d3a"
|
||||
},
|
||||
"cases": [
|
||||
{
|
||||
"case": "rollback_then_complete",
|
||||
"release": "rollback",
|
||||
"wait": {
|
||||
"actual_wait_observed": true,
|
||||
"blocking_parent_verified": true,
|
||||
"statement_table": "companies",
|
||||
"statement_for_update": true,
|
||||
"wait_event_type": "Lock",
|
||||
"wait_event": "transactionid",
|
||||
"ungranted_locks": [
|
||||
{
|
||||
"locktype": "transactionid",
|
||||
"mode": "ShareLock"
|
||||
}
|
||||
]
|
||||
},
|
||||
"second_status": "completed",
|
||||
"second_http_status": 200,
|
||||
"second_replayed": false,
|
||||
"elapsed_ms": 352.387,
|
||||
"record_version_after": 1,
|
||||
"decision_events_after_retry": 1,
|
||||
"first_event_persisted": false,
|
||||
"duplicate_decision": false
|
||||
},
|
||||
{
|
||||
"case": "commit_then_stale_revision",
|
||||
"release": "commit",
|
||||
"wait": {
|
||||
"actual_wait_observed": true,
|
||||
"blocking_parent_verified": true,
|
||||
"statement_table": "companies",
|
||||
"statement_for_update": true,
|
||||
"wait_event_type": "Lock",
|
||||
"wait_event": "transactionid",
|
||||
"ungranted_locks": [
|
||||
{
|
||||
"locktype": "transactionid",
|
||||
"mode": "ShareLock"
|
||||
}
|
||||
]
|
||||
},
|
||||
"second_status": "refused",
|
||||
"second_http_status": 409,
|
||||
"second_replayed": null,
|
||||
"elapsed_ms": 338.389,
|
||||
"record_version_after": 1,
|
||||
"decision_events_after_retry": 1,
|
||||
"first_event_persisted": true,
|
||||
"duplicate_decision": false
|
||||
},
|
||||
{
|
||||
"case": "commit_then_same_token",
|
||||
"release": "commit",
|
||||
"wait": {
|
||||
"actual_wait_observed": true,
|
||||
"blocking_parent_verified": true,
|
||||
"statement_table": "companies",
|
||||
"statement_for_update": true,
|
||||
"wait_event_type": "Lock",
|
||||
"wait_event": "transactionid",
|
||||
"ungranted_locks": [
|
||||
{
|
||||
"locktype": "transactionid",
|
||||
"mode": "ShareLock"
|
||||
}
|
||||
]
|
||||
},
|
||||
"second_status": "completed",
|
||||
"second_http_status": 200,
|
||||
"second_replayed": true,
|
||||
"elapsed_ms": 333.37,
|
||||
"record_version_after": 1,
|
||||
"decision_events_after_retry": 1,
|
||||
"first_event_persisted": true,
|
||||
"duplicate_decision": false
|
||||
},
|
||||
{
|
||||
"case": "commit_record_change_then_stale_version",
|
||||
"release": "commit",
|
||||
"wait": {
|
||||
"actual_wait_observed": true,
|
||||
"blocking_parent_verified": true,
|
||||
"statement_table": "companies",
|
||||
"statement_for_update": true,
|
||||
"wait_event_type": "Lock",
|
||||
"wait_event": "transactionid",
|
||||
"ungranted_locks": [
|
||||
{
|
||||
"locktype": "transactionid",
|
||||
"mode": "ShareLock"
|
||||
}
|
||||
]
|
||||
},
|
||||
"second_status": "refused",
|
||||
"second_http_status": 409,
|
||||
"second_replayed": null,
|
||||
"elapsed_ms": 335.546,
|
||||
"record_version_after": 2,
|
||||
"decision_events_after_retry": 0,
|
||||
"first_event_persisted": null,
|
||||
"duplicate_decision": false
|
||||
}
|
||||
],
|
||||
"preservation": {
|
||||
"previous_qa_rows_and_index_catalog_preserved": true,
|
||||
"protected_six_records_untouched": true,
|
||||
"blocked_cache_untouched": true,
|
||||
"destination_connected": false,
|
||||
"public_rights_changed": false,
|
||||
"indexes_created": false,
|
||||
"publication": false,
|
||||
"purchasing_activation": false,
|
||||
"new_qa_fixture_retained": true,
|
||||
"private_manifest_retained": true,
|
||||
"functional_code_changed_in_this_followup": false
|
||||
},
|
||||
"proof": {
|
||||
"path": "docs/proofs/module-association-release-20261102.json",
|
||||
"sha256": "a4017200b2ce7d60efcc3590780019309850f3c864f90ba0b3c786382fae4f28"
|
||||
},
|
||||
"reused_proofs": [
|
||||
{
|
||||
"path": "docs/proofs/module-association-optimization-comparison-20261102.json",
|
||||
"sha256": "2f24696cd4282856151c044de4830f77d12ae618430461b2202360a30215580a"
|
||||
},
|
||||
{
|
||||
"path": "docs/proofs/module-association-optimization-summary-20261102.json",
|
||||
"sha256": "6371512a070c3ae71872eeb76fae6f04d7a1aeeffc97510a3ea8e5e263396591"
|
||||
},
|
||||
{
|
||||
"path": "docs/proofs/module-association-projection-fanout-20261102.json",
|
||||
"sha256": "e0353b7925a997a8a067a996d20bf462cd89c75b4eb3e302629015297a356f2d"
|
||||
},
|
||||
{
|
||||
"path": "docs/proofs/module-association-projection-summary-20261102.json",
|
||||
"sha256": "171309fd4ca204e6e485e1790b1892d63e5f0ad13b494bd6d09434c5c9e8a193"
|
||||
},
|
||||
{
|
||||
"path": "docs/proofs/module-association-concurrency-20261102.json",
|
||||
"sha256": "bd75881c7c60cf5c2acf4fb256d83e090b07f112becbf30c8620cbb81432546a"
|
||||
},
|
||||
{
|
||||
"path": "docs/proofs/module-association-concurrency-summary-20261102.json",
|
||||
"sha256": "bb12a5fd566d8c606a7a0e082256ad82a4b399929755c60f8be69bf1bcd6b239"
|
||||
}
|
||||
],
|
||||
"deployment_capacity_validated": false,
|
||||
"visual_review_pending": true
|
||||
}
|
||||
@@ -0,0 +1,58 @@
|
||||
{
|
||||
"captured_at": "2026-11-02T08:55:28+00:00",
|
||||
"target": "demo",
|
||||
"identity": {
|
||||
"database": "sgf_modules_dev_2576427d1939",
|
||||
"role": "sgf_modules_qa_2576427d1939",
|
||||
"port": 55439,
|
||||
"read_only": "on"
|
||||
},
|
||||
"method": "Repeatable-read read-only transaction; latest explicit event per module; no business names or document contents exported.",
|
||||
"classification_limit": "Never associated is a current state, not evidence of age or an inferred destination. Removed links require separate review.",
|
||||
"areas": {
|
||||
"clients": {
|
||||
"scopes": [
|
||||
{
|
||||
"tenant_id": 1,
|
||||
"company_id": 1,
|
||||
"unit_id": null,
|
||||
"total": 1,
|
||||
"associated": 0,
|
||||
"never_associated": 1,
|
||||
"all_links_removed": 0
|
||||
}
|
||||
],
|
||||
"pending_total": 1,
|
||||
"pending_sample": [
|
||||
{
|
||||
"id": 1,
|
||||
"tenant_id": 1,
|
||||
"company_id": 1,
|
||||
"unit_id": null,
|
||||
"version": 1,
|
||||
"reason": "never_associated"
|
||||
}
|
||||
],
|
||||
"sample_truncated": false
|
||||
},
|
||||
"services": {
|
||||
"scopes": [],
|
||||
"pending_total": 0,
|
||||
"pending_sample": [],
|
||||
"sample_truncated": false
|
||||
},
|
||||
"service_drafts": {
|
||||
"scopes": [],
|
||||
"pending_total": 0,
|
||||
"pending_sample": [],
|
||||
"sample_truncated": false
|
||||
},
|
||||
"billing_drafts": {
|
||||
"scopes": [],
|
||||
"pending_total": 0,
|
||||
"pending_sample": [],
|
||||
"sample_truncated": false
|
||||
}
|
||||
},
|
||||
"writes_performed": false
|
||||
}
|
||||
@@ -0,0 +1,137 @@
|
||||
{
|
||||
"captured_at": "2026-11-02T08:55:29+00:00",
|
||||
"target": "installed",
|
||||
"identity": {
|
||||
"database": "sgf_tempo_dev",
|
||||
"role": "sgf_dev_app",
|
||||
"port": 55432,
|
||||
"read_only": "on"
|
||||
},
|
||||
"method": "Repeatable-read read-only transaction; latest explicit event per module; no business names or document contents exported.",
|
||||
"classification_limit": "Never associated is a current state, not evidence of age or an inferred destination. Removed links require separate review.",
|
||||
"areas": {
|
||||
"clients": {
|
||||
"scopes": [
|
||||
{
|
||||
"tenant_id": 1,
|
||||
"company_id": 1,
|
||||
"unit_id": null,
|
||||
"total": 1,
|
||||
"associated": 0,
|
||||
"never_associated": 1,
|
||||
"all_links_removed": 0
|
||||
}
|
||||
],
|
||||
"pending_total": 1,
|
||||
"pending_sample": [
|
||||
{
|
||||
"id": 1,
|
||||
"tenant_id": 1,
|
||||
"company_id": 1,
|
||||
"unit_id": null,
|
||||
"version": 1,
|
||||
"reason": "never_associated"
|
||||
}
|
||||
],
|
||||
"sample_truncated": false
|
||||
},
|
||||
"services": {
|
||||
"scopes": [
|
||||
{
|
||||
"tenant_id": 1,
|
||||
"company_id": 1,
|
||||
"unit_id": null,
|
||||
"total": 2,
|
||||
"associated": 0,
|
||||
"never_associated": 2,
|
||||
"all_links_removed": 0
|
||||
}
|
||||
],
|
||||
"pending_total": 2,
|
||||
"pending_sample": [
|
||||
{
|
||||
"id": 1,
|
||||
"tenant_id": 1,
|
||||
"company_id": 1,
|
||||
"unit_id": null,
|
||||
"version": 1,
|
||||
"reason": "never_associated"
|
||||
},
|
||||
{
|
||||
"id": 2,
|
||||
"tenant_id": 1,
|
||||
"company_id": 1,
|
||||
"unit_id": null,
|
||||
"version": 1,
|
||||
"reason": "never_associated"
|
||||
}
|
||||
],
|
||||
"sample_truncated": false
|
||||
},
|
||||
"service_drafts": {
|
||||
"scopes": [
|
||||
{
|
||||
"tenant_id": 1,
|
||||
"company_id": 1,
|
||||
"unit_id": 1,
|
||||
"total": 1,
|
||||
"associated": 0,
|
||||
"never_associated": 1,
|
||||
"all_links_removed": 0
|
||||
}
|
||||
],
|
||||
"pending_total": 1,
|
||||
"pending_sample": [
|
||||
{
|
||||
"id": 1,
|
||||
"tenant_id": 1,
|
||||
"company_id": 1,
|
||||
"unit_id": 1,
|
||||
"version": 1,
|
||||
"reason": "never_associated",
|
||||
"references": {
|
||||
"client_id": 1,
|
||||
"service_ids": [
|
||||
2
|
||||
]
|
||||
}
|
||||
}
|
||||
],
|
||||
"sample_truncated": false
|
||||
},
|
||||
"billing_drafts": {
|
||||
"scopes": [
|
||||
{
|
||||
"tenant_id": 1,
|
||||
"company_id": 1,
|
||||
"unit_id": 1,
|
||||
"total": 1,
|
||||
"associated": 0,
|
||||
"never_associated": 1,
|
||||
"all_links_removed": 0
|
||||
}
|
||||
],
|
||||
"pending_total": 1,
|
||||
"pending_sample": [
|
||||
{
|
||||
"id": 1,
|
||||
"tenant_id": 1,
|
||||
"company_id": 1,
|
||||
"unit_id": 1,
|
||||
"version": 1,
|
||||
"reason": "never_associated",
|
||||
"references": {
|
||||
"client_id": 1,
|
||||
"service_ids": [
|
||||
2
|
||||
],
|
||||
"source_id": 1,
|
||||
"source_version": 1
|
||||
}
|
||||
}
|
||||
],
|
||||
"sample_truncated": false
|
||||
}
|
||||
},
|
||||
"writes_performed": false
|
||||
}
|
||||
@@ -0,0 +1,300 @@
|
||||
{
|
||||
"id": "SGF-MODULE-FLOW-PREPARATION-v1",
|
||||
"date": "2026-11-02",
|
||||
"kind": "static_preparation_inventory",
|
||||
"plan_sha256": "5843f9d7ee4dcabbf1ba078744257dbe32fe3476d6d4641a2614aa90b50bec61",
|
||||
"sources": [
|
||||
{
|
||||
"id": "requisitions_delivery",
|
||||
"repository": "sgf",
|
||||
"path": "docs/SGF_REQUISITIONS_8039_DELIVERY.md",
|
||||
"sha256": "9c0bc172b91314c54e67ac1f547ce64cf2ce97d2df285172ad5d99eee554b167",
|
||||
"meaning": "source_present_only_not_operational_proof"
|
||||
},
|
||||
{
|
||||
"id": "receipt_workflow",
|
||||
"repository": "compras",
|
||||
"path": "app/Services/ReceiptWorkflow.php",
|
||||
"sha256": "95d71faa860547c3838a72f8aeaf75cc73bf298eb3e61acadcd3f3fc732f8e79",
|
||||
"meaning": "source_present_only_not_operational_proof"
|
||||
},
|
||||
{
|
||||
"id": "stock_workflow",
|
||||
"repository": "compras",
|
||||
"path": "app/Services/StockWorkflow.php",
|
||||
"sha256": "773d9434095c8e98aeaeb0279f62e7a53a4e06f9aab61313194573d20ec3ec5a",
|
||||
"meaning": "source_present_only_not_operational_proof"
|
||||
},
|
||||
{
|
||||
"id": "stock_controller",
|
||||
"repository": "compras",
|
||||
"path": "app/Http/Controllers/StockController.php",
|
||||
"sha256": "79aa0f96da7b8290b23489bdaa5c45a4d9f122483dbc0b4132793f76e4f97d0b",
|
||||
"meaning": "source_present_only_not_operational_proof"
|
||||
},
|
||||
{
|
||||
"id": "inventory_lots",
|
||||
"repository": "compras",
|
||||
"path": "app/Services/InventoryLots.php",
|
||||
"sha256": "6b35ea424a0b424823d02486910e90304384254dc11c37b6f3545f92f5647b08",
|
||||
"meaning": "source_present_only_not_operational_proof"
|
||||
},
|
||||
{
|
||||
"id": "inventory_counts",
|
||||
"repository": "compras",
|
||||
"path": "app/Services/InventoryCounts.php",
|
||||
"sha256": "0c1b0d5e795a15b4d762c47fcdbeb19f225aa933b4507938f310ff25026afa11",
|
||||
"meaning": "source_present_only_not_operational_proof"
|
||||
},
|
||||
{
|
||||
"id": "inventory_dispositions",
|
||||
"repository": "compras",
|
||||
"path": "app/Services/InventoryDispositions.php",
|
||||
"sha256": "1cf64babc5659a3c056600a2e8abcc7b88d11e37097ab3ed6e339313c392749f",
|
||||
"meaning": "source_present_only_not_operational_proof"
|
||||
},
|
||||
{
|
||||
"id": "inventory_reversals",
|
||||
"repository": "compras",
|
||||
"path": "app/Services/InventoryReversals.php",
|
||||
"sha256": "aa17b3f30f65a855173dffef0f4659b7716d54d9cd622feb5e3cc44208ceebee",
|
||||
"meaning": "source_present_only_not_operational_proof"
|
||||
},
|
||||
{
|
||||
"id": "warehouse_reservations",
|
||||
"repository": "compras",
|
||||
"path": "app/Services/WarehouseReservations.php",
|
||||
"sha256": "3120eaf6d9c8cedf3c991edcb41133f5107ca62736cea7e082ae4773755ffb54",
|
||||
"meaning": "source_present_only_not_operational_proof"
|
||||
},
|
||||
{
|
||||
"id": "stock_menu",
|
||||
"repository": "sgf",
|
||||
"path": "resources/js/stock-menu.js",
|
||||
"sha256": "776360166b0fdacad343853eb335044306f078acb8da1439715010b4713dc4ff",
|
||||
"meaning": "source_present_only_not_operational_proof"
|
||||
},
|
||||
{
|
||||
"id": "invoice_workflow",
|
||||
"repository": "compras",
|
||||
"path": "app/Services/InvoiceWorkflow.php",
|
||||
"sha256": "d25604134529a5217438385ff4ff70779b9962dbf3ca65929fe4e516153e6e30",
|
||||
"meaning": "source_present_only_not_operational_proof"
|
||||
},
|
||||
{
|
||||
"id": "supplier_adapter",
|
||||
"repository": "sgf",
|
||||
"path": "app/Modules/Purchasing/SupplierPayables.php",
|
||||
"sha256": "120513ffc2588f9897c574dcfdaba68966315f207b3cf887b1d6e080ecc11a6a",
|
||||
"meaning": "source_present_only_not_operational_proof"
|
||||
},
|
||||
{
|
||||
"id": "payables",
|
||||
"repository": "sgf",
|
||||
"path": "packages/payables/src/Payables.php",
|
||||
"sha256": "dafc76371767b0a9794f0822553e60392a8aa2c270dea8d78ff701a56f5f5bc9",
|
||||
"meaning": "source_present_only_not_operational_proof"
|
||||
},
|
||||
{
|
||||
"id": "settlements",
|
||||
"repository": "sgf",
|
||||
"path": "packages/payables/src/SupplierSettlements.php",
|
||||
"sha256": "4a719ae1456df974877e2555dd6d559f26ebc40b90ae3ff7e11874cfbf2f106b",
|
||||
"meaning": "source_present_only_not_operational_proof"
|
||||
},
|
||||
{
|
||||
"id": "settlement_delivery",
|
||||
"repository": "sgf",
|
||||
"path": "docs/SUPPLIER_SETTLEMENT_DELIVERY.md",
|
||||
"sha256": "46d9836e70b17a78acb2230f76122de38096384e55b4b2f5298aa9c73ab1fd20",
|
||||
"meaning": "source_present_only_not_operational_proof"
|
||||
},
|
||||
{
|
||||
"id": "workshop_workflow",
|
||||
"repository": "sgf",
|
||||
"path": "app/Modules/Workshop/WorkshopWorkflow.php",
|
||||
"sha256": "a09d7c14c7101c36a2539f346494584340493a56ca951c7b1e66418f43d80adb",
|
||||
"meaning": "source_present_only_not_operational_proof"
|
||||
},
|
||||
{
|
||||
"id": "direct_costs",
|
||||
"repository": "sgf",
|
||||
"path": "app/Modules/Workshop/DirectCosts.php",
|
||||
"sha256": "b6c10cb71c30361013f33a11ee8678bfa183737ed143186747793c95cd5eef95",
|
||||
"meaning": "source_present_only_not_operational_proof"
|
||||
},
|
||||
{
|
||||
"id": "industrial_costs",
|
||||
"repository": "sgf",
|
||||
"path": "app/Modules/Industry/IndustrialCosts.php",
|
||||
"sha256": "2c63f6dcd23f751fb7dce363c415fcc2a44e7dfcb54203dc0e4af55c3e9dbf07",
|
||||
"meaning": "source_present_only_not_operational_proof"
|
||||
},
|
||||
{
|
||||
"id": "workshop_billing",
|
||||
"repository": "sgf",
|
||||
"path": "app/Modules/Workshop/WorkshopBilling.php",
|
||||
"sha256": "039fdfdab77a8856b070249e028894a740222199969cabd614bfaab0c9e5a2d2",
|
||||
"meaning": "source_present_only_not_operational_proof"
|
||||
},
|
||||
{
|
||||
"id": "service_invoicing",
|
||||
"repository": "sgf",
|
||||
"path": "app/Modules/Services/ServiceInvoicing.php",
|
||||
"sha256": "b5ac9898f2089fad7799b9e62e5ce5db6df7fd64643e8e7e3b52c6a0e2d142a8",
|
||||
"meaning": "source_present_only_not_operational_proof"
|
||||
},
|
||||
{
|
||||
"id": "service_receivables",
|
||||
"repository": "sgf",
|
||||
"path": "app/Modules/Services/ServiceReceivables.php",
|
||||
"sha256": "fb4aab2d47c4e9e5fb1115a44e796669402b891b56ff3623db725b21b4bcf714",
|
||||
"meaning": "source_present_only_not_operational_proof"
|
||||
},
|
||||
{
|
||||
"id": "catalogue_accounting",
|
||||
"repository": "sgf",
|
||||
"path": "app/Modules/Services/CatalogueAccounting.php",
|
||||
"sha256": "15e72188334a0c6e9b65050e9609ac1c50a924899a753d47557e3375017e5d1c",
|
||||
"meaning": "source_present_only_not_operational_proof"
|
||||
},
|
||||
{
|
||||
"id": "accounting_menu",
|
||||
"repository": "sgf",
|
||||
"path": "docs/ACCOUNTING_MENU_DELIVERY.md",
|
||||
"sha256": "566ce398e2a8d92dced2547d3587647549170c4ddb1c056fda2249e59f572c34",
|
||||
"meaning": "source_present_only_not_operational_proof"
|
||||
}
|
||||
],
|
||||
"stages": [
|
||||
{
|
||||
"id": "requisition_order",
|
||||
"owner": "purchasing",
|
||||
"effect": "approved_procurement_origin",
|
||||
"state": "partial_synthetic",
|
||||
"operational_integration_validated": false,
|
||||
"gap": "Only basic requisitions demonstrated in 8039; full procurement composition not transferred."
|
||||
},
|
||||
{
|
||||
"id": "accepted_receipt",
|
||||
"owner": "purchasing",
|
||||
"effect": "accepted_physical_receipt",
|
||||
"state": "source_not_integrated",
|
||||
"operational_integration_validated": false,
|
||||
"gap": "No common SGF receipt/stock adapter demonstrated."
|
||||
},
|
||||
{
|
||||
"id": "physical_stock",
|
||||
"owner": "stock",
|
||||
"effect": "physical_movement_once",
|
||||
"state": "source_not_integrated",
|
||||
"operational_integration_validated": false,
|
||||
"gap": "Common scoped reader, authoritative writer and SGF warehouse mapping pending."
|
||||
},
|
||||
{
|
||||
"id": "supplier_invoice",
|
||||
"owner": "purchasing",
|
||||
"effect": "verified_supplier_document",
|
||||
"state": "partial_synthetic",
|
||||
"operational_integration_validated": false,
|
||||
"gap": "Does not assume every purchase is stock; existing eligibility/partial receipt rules must be preserved."
|
||||
},
|
||||
{
|
||||
"id": "supplier_payable",
|
||||
"owner": "finance",
|
||||
"effect": "supplier_obligation_once",
|
||||
"state": "partial_synthetic",
|
||||
"operational_integration_validated": false,
|
||||
"gap": "Synthetic core exists; common operational composition and historical source mapping remain delimited."
|
||||
},
|
||||
{
|
||||
"id": "supplier_settlement",
|
||||
"owner": "finance",
|
||||
"effect": "confirmed_allocation_once",
|
||||
"state": "partial_synthetic",
|
||||
"operational_integration_validated": false,
|
||||
"gap": "Synthetic payments/allocations exist; no bank execution or complete bank reconciliation delivered."
|
||||
},
|
||||
{
|
||||
"id": "workshop_execution",
|
||||
"owner": "workshop",
|
||||
"effect": "verified_work_record",
|
||||
"state": "partial_synthetic",
|
||||
"operational_integration_validated": false,
|
||||
"gap": "Verified observations exist; no automatic physical stock movement."
|
||||
},
|
||||
{
|
||||
"id": "workshop_stock_consumption",
|
||||
"owner": "stock",
|
||||
"effect": "company_material_consumption_once",
|
||||
"state": "planned",
|
||||
"operational_integration_validated": false,
|
||||
"gap": "Linking observed material to a physical movement is not implemented; do not replay old observations."
|
||||
},
|
||||
{
|
||||
"id": "verified_cost",
|
||||
"owner": "finance",
|
||||
"effect": "validated_cost_version",
|
||||
"state": "partial_synthetic",
|
||||
"operational_integration_validated": false,
|
||||
"gap": "Current costs are synthetic; physical movement linkage is future and absence of rate stays visible."
|
||||
},
|
||||
{
|
||||
"id": "sales_draft",
|
||||
"owner": "commercial",
|
||||
"effect": "commercial_draft_from_unique_origins",
|
||||
"state": "partial_synthetic",
|
||||
"operational_integration_validated": false,
|
||||
"gap": "Draft integration exists; cost is not sale price and draft does not decrement stock."
|
||||
},
|
||||
{
|
||||
"id": "sales_invoice",
|
||||
"owner": "commercial",
|
||||
"effect": "issued_sales_document",
|
||||
"state": "partial_synthetic",
|
||||
"operational_integration_validated": false,
|
||||
"gap": "Test issuance exists; real fiscal issuance remains guarded. Direct service origins remain valid."
|
||||
},
|
||||
{
|
||||
"id": "customer_receivable",
|
||||
"owner": "finance",
|
||||
"effect": "customer_receipt_allocation_once",
|
||||
"state": "partial_synthetic",
|
||||
"operational_integration_validated": false,
|
||||
"gap": "Synthetic receipts exist; fiscal receipt/bank reconciliation not presumed."
|
||||
},
|
||||
{
|
||||
"id": "general_ledger",
|
||||
"owner": "accounting",
|
||||
"effect": "balanced_journal_once",
|
||||
"state": "planned",
|
||||
"operational_integration_validated": false,
|
||||
"gap": "Classification/menu exist; journal, ledger, accounting periods, close and reporting engine absent."
|
||||
}
|
||||
],
|
||||
"checks": {
|
||||
"source_paths_and_hashes": true,
|
||||
"single_owner_per_stage": true,
|
||||
"mandatory_dependency_graph_acyclic": true,
|
||||
"planned_consumers_explicit": true
|
||||
},
|
||||
"limitations": [
|
||||
"Source existence is not execution, parity, acceptance or deployment evidence.",
|
||||
"Dependencies represent the selected synthetic path, not universal product eligibility rules.",
|
||||
"No stage transition engine, inventory adapter or journal engine implemented by this inventory."
|
||||
],
|
||||
"preservation": {
|
||||
"database_connections": 0,
|
||||
"source_execution": false,
|
||||
"application_routes_changed": false,
|
||||
"rights_changed": false,
|
||||
"protected_six_records_untouched": true,
|
||||
"blocked_cache_untouched": true,
|
||||
"demos_changed": false,
|
||||
"purchasing_activated": false,
|
||||
"publication": false,
|
||||
"checkpoint": false
|
||||
},
|
||||
"visual_review_pending": true,
|
||||
"deployment_capacity_validated": false
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"kind": "server_render_of_actual_native_stock_history_props",
|
||||
"page_sha256": "fafd870e129cb169216bd2a7d13a547adaab410d24195f950327eb14af57e10f",
|
||||
"component_sha256": "3c6d68bac8db5c7e0ac7f518fd07e8b3a6a4f0f704ea7612e332b457ee9a0938",
|
||||
"render_passed": true,
|
||||
"return_human_label_visible": true,
|
||||
"author_and_responsible_rendered": true,
|
||||
"actual_http_props_used": true,
|
||||
"visual_review": false,
|
||||
"browser_interactions_tested": false
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"kind": "isolated_changed_entry_browser_bundle_and_types",
|
||||
"inputs_sha256": {
|
||||
"resources/js/pages/stock/returns.tsx": "e9fc4183b07f7cbebce83f770dc2958536905b0b4c2796c8065031e35aa9b1e7",
|
||||
"resources/js/pages/stock/request.tsx": "f59a72c78f8c94260c5b64cad0d26cca08c8379726ad61c9b869e0a667c00f60",
|
||||
"resources/js/pages/stock/operations.tsx": "3c6d68bac8db5c7e0ac7f518fd07e8b3a6a4f0f704ea7612e332b457ee9a0938"
|
||||
},
|
||||
"entry_bundle_passed": true,
|
||||
"type_check_exit": 0,
|
||||
"type_output_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
|
||||
"explicit_source_selection": true,
|
||||
"unused_declaration_required_in_source": true,
|
||||
"independent_receiving_declaration_required_in_source": true,
|
||||
"live_or_demo_build_touched": false,
|
||||
"full_application_build": false,
|
||||
"browser_interactions_tested": false,
|
||||
"visual_review": false
|
||||
}
|
||||
@@ -0,0 +1,413 @@
|
||||
{
|
||||
"date": "2026-11-02",
|
||||
"increment": "NATIVE-WAREHOUSE-UNUSED-RETURN-SIM-v1",
|
||||
"status": "local_synthetic_implementation",
|
||||
"proofs": [
|
||||
{
|
||||
"file": "private/stock-receipt-115c5b17e171/return-native-1793639486315-junit.xml",
|
||||
"sha256": "54a1436b5e76096ea9184af600215d004b316108e9cb79cfe6c86c3c5211948a",
|
||||
"tests": 18,
|
||||
"assertions": 420,
|
||||
"errors": 0,
|
||||
"failures": 0
|
||||
},
|
||||
{
|
||||
"file": "private/stock-receipt-115c5b17e171/return-native-1793640514403-junit.xml",
|
||||
"sha256": "dcbbfa2303ed213d93eab8a6533e25e23751dcdfb1594bdb5c3835221ddb6237",
|
||||
"tests": 1,
|
||||
"assertions": 20,
|
||||
"errors": 0,
|
||||
"failures": 0
|
||||
},
|
||||
{
|
||||
"file": "private/stock-receipt-cc99dcb17e19/return-reversals-junit.xml",
|
||||
"sha256": "b38945a85e73e6d78f4770a58f4577b8511b7a15f3523b13e157638b4ecdd0f2",
|
||||
"tests": 16,
|
||||
"assertions": 81,
|
||||
"errors": 0,
|
||||
"failures": 0
|
||||
},
|
||||
{
|
||||
"file": "stock-read-1793636847404.xml",
|
||||
"sha256": "88604d1110b31bd0906d3a139a29a95a662341936044eb8fb0757e12e04ab900",
|
||||
"tests": 1,
|
||||
"assertions": 23,
|
||||
"errors": 0,
|
||||
"failures": 0
|
||||
}
|
||||
],
|
||||
"totals": {
|
||||
"distinct_tests": 36,
|
||||
"assertions": 544
|
||||
},
|
||||
"selected_cases": [
|
||||
{
|
||||
"name": "test_native_receipt_issue_acknowledgement_and_return_same_book_once",
|
||||
"assertions": 54,
|
||||
"proof": "private/stock-receipt-115c5b17e171/return-native-1793639486315-junit.xml"
|
||||
},
|
||||
{
|
||||
"name": "test_stale_capacity_idempotency_versions_rights_and_context_refuse_effect",
|
||||
"assertions": 22,
|
||||
"proof": "private/stock-receipt-115c5b17e171/return-native-1793639486315-junit.xml"
|
||||
},
|
||||
{
|
||||
"name": "test_decision_failure_rolls_back_physical_movement_and_retry_recovers",
|
||||
"assertions": 15,
|
||||
"proof": "private/stock-receipt-115c5b17e171/return-native-1793639486315-junit.xml"
|
||||
},
|
||||
{
|
||||
"name": "test_undeclared_fraction_and_foreign_delivery_are_refused",
|
||||
"assertions": 13,
|
||||
"proof": "private/stock-receipt-115c5b17e171/return-native-1793639486315-junit.xml"
|
||||
},
|
||||
{
|
||||
"name": "test_source_options_and_page_reuse_request_and_acknowledged_line",
|
||||
"assertions": 54,
|
||||
"proof": "private/stock-receipt-115c5b17e171/return-native-1793639486315-junit.xml"
|
||||
},
|
||||
{
|
||||
"name": "test_source_issue_with_return_cannot_be_reversed_as_a_whole",
|
||||
"assertions": 12,
|
||||
"proof": "private/stock-receipt-115c5b17e171/return-native-1793639486315-junit.xml"
|
||||
},
|
||||
{
|
||||
"name": "test_concurrent_native_confirmation_waits_then_replays_one_movement",
|
||||
"assertions": 21,
|
||||
"proof": "private/stock-receipt-115c5b17e171/return-native-1793639486315-junit.xml"
|
||||
},
|
||||
{
|
||||
"name": "test_competing_native_returns_cannot_exceed_the_original_delivery",
|
||||
"assertions": 20,
|
||||
"proof": "private/stock-receipt-115c5b17e171/return-native-1793639486315-junit.xml"
|
||||
},
|
||||
{
|
||||
"name": "test_expired_and_maintenance_profiles_are_revalidated_at_confirmation",
|
||||
"assertions": 14,
|
||||
"proof": "private/stock-receipt-115c5b17e171/return-native-1793639486315-junit.xml"
|
||||
},
|
||||
{
|
||||
"name": "test_configured_context_and_permissions_cannot_be_inherited_from_people_profile",
|
||||
"assertions": 19,
|
||||
"proof": "private/stock-receipt-115c5b17e171/return-native-1793639486315-junit.xml"
|
||||
},
|
||||
{
|
||||
"name": "test_return_signals_existing_replenishment_only_once_and_inside_transaction",
|
||||
"assertions": 18,
|
||||
"proof": "private/stock-receipt-115c5b17e171/return-native-1793639486315-junit.xml"
|
||||
},
|
||||
{
|
||||
"name": "test_catalogue_rename_requires_new_review_preserving_original_and_unit_change_refuses",
|
||||
"assertions": 18,
|
||||
"proof": "private/stock-receipt-115c5b17e171/return-native-1793639486315-junit.xml"
|
||||
},
|
||||
{
|
||||
"name": "test_unavailable_private_package_returns_503_and_rolls_back_before_recovery",
|
||||
"assertions": 17,
|
||||
"proof": "private/stock-receipt-115c5b17e171/return-native-1793639486315-junit.xml"
|
||||
},
|
||||
{
|
||||
"name": "test_http_busy_response_leaves_proposal_unconfirmed_then_manual_retry_succeeds",
|
||||
"assertions": 21,
|
||||
"proof": "private/stock-receipt-115c5b17e171/return-native-1793639486315-junit.xml"
|
||||
},
|
||||
{
|
||||
"name": "test_withdrawal_and_independent_rejection_close_pending_without_stock_effect",
|
||||
"assertions": 37,
|
||||
"proof": "private/stock-receipt-115c5b17e171/return-native-1793639486315-junit.xml"
|
||||
},
|
||||
{
|
||||
"name": "test_withdrawal_wins_before_confirmation_without_a_movement",
|
||||
"assertions": 19,
|
||||
"proof": "private/stock-receipt-115c5b17e171/return-native-1793639486315-junit.xml"
|
||||
},
|
||||
{
|
||||
"name": "test_confirmation_wins_before_withdrawal_without_duplicate_terminal_state",
|
||||
"assertions": 19,
|
||||
"proof": "private/stock-receipt-115c5b17e171/return-native-1793639486315-junit.xml"
|
||||
},
|
||||
{
|
||||
"name": "test_history_pages_and_batch_preparer_lookup_cover_the_full_pending_universe",
|
||||
"assertions": 27,
|
||||
"proof": "private/stock-receipt-115c5b17e171/return-native-1793639486315-junit.xml"
|
||||
},
|
||||
{
|
||||
"name": "test_return_changes_physical_history_without_silently_changing_gross_issue_forecast",
|
||||
"assertions": 20,
|
||||
"proof": "private/stock-receipt-115c5b17e171/return-native-1793640514403-junit.xml"
|
||||
},
|
||||
{
|
||||
"name": "full issue reversal preserves the original and is exactly once even on an execution retry",
|
||||
"assertions": 5,
|
||||
"proof": "private/stock-receipt-cc99dcb17e19/return-reversals-junit.xml"
|
||||
},
|
||||
{
|
||||
"name": "a corrected issue no longer satisfies a reservation and the same need can use a new actual issue",
|
||||
"assertions": 10,
|
||||
"proof": "private/stock-receipt-cc99dcb17e19/return-reversals-junit.xml"
|
||||
},
|
||||
{
|
||||
"name": "a reversal outside a closed history period invalidates its signature and corrects effective consumption",
|
||||
"assertions": 3,
|
||||
"proof": "private/stock-receipt-cc99dcb17e19/return-reversals-junit.xml"
|
||||
},
|
||||
{
|
||||
"name": "receipt reversal restores authorised quantities without deleting acceptance and a new correction receipt is not a duplicate",
|
||||
"assertions": 8,
|
||||
"proof": "private/stock-receipt-cc99dcb17e19/return-reversals-junit.xml"
|
||||
},
|
||||
{
|
||||
"name": "receipt line reversal removes the full documentary quantities but only the accepted physical entry",
|
||||
"assertions": 3,
|
||||
"proof": "private/stock-receipt-cc99dcb17e19/return-reversals-junit.xml"
|
||||
},
|
||||
{
|
||||
"name": "tracked transfer reversal removes original destination lots and quarantines the restored source identity",
|
||||
"assertions": 8,
|
||||
"proof": "private/stock-receipt-cc99dcb17e19/return-reversals-junit.xml"
|
||||
},
|
||||
{
|
||||
"name": "mixed lot adjustments can be reversed without turning corrections into consumption",
|
||||
"assertions": 4,
|
||||
"proof": "private/stock-receipt-cc99dcb17e19/return-reversals-junit.xml"
|
||||
},
|
||||
{
|
||||
"name": "restoring an old untracked issue after cutover creates an unidentified held lot without fabricating receipt origin",
|
||||
"assertions": 6,
|
||||
"proof": "private/stock-receipt-cc99dcb17e19/return-reversals-junit.xml"
|
||||
},
|
||||
{
|
||||
"name": "receipt reversal cannot silently associate an old entry with a baseline lot",
|
||||
"assertions": 2,
|
||||
"proof": "private/stock-receipt-cc99dcb17e19/return-reversals-junit.xml"
|
||||
},
|
||||
{
|
||||
"name": "a supplier return reversal restores net receipt entitlement but cannot itself be reversed",
|
||||
"assertions": 6,
|
||||
"proof": "private/stock-receipt-cc99dcb17e19/return-reversals-junit.xml"
|
||||
},
|
||||
{
|
||||
"name": "an insufficient original lot or warehouse blocks an approved reversal without compensating from another lot",
|
||||
"assertions": 4,
|
||||
"proof": "private/stock-receipt-cc99dcb17e19/return-reversals-junit.xml"
|
||||
},
|
||||
{
|
||||
"name": "approval independence and source isolation apply even with accumulated roles",
|
||||
"assertions": 2,
|
||||
"proof": "private/stock-receipt-cc99dcb17e19/return-reversals-junit.xml"
|
||||
},
|
||||
{
|
||||
"name": "a reviewer cannot execute their own decision and duplicate approved plans cannot reverse the original twice",
|
||||
"assertions": 3,
|
||||
"proof": "private/stock-receipt-cc99dcb17e19/return-reversals-junit.xml"
|
||||
},
|
||||
{
|
||||
"name": "a final audit failure rolls back all reversal movements and leaves the original approval intact",
|
||||
"assertions": 4,
|
||||
"proof": "private/stock-receipt-cc99dcb17e19/return-reversals-junit.xml"
|
||||
},
|
||||
{
|
||||
"name": "HTTP permissions and source views expose the correction without changing original documents",
|
||||
"assertions": 8,
|
||||
"proof": "private/stock-receipt-cc99dcb17e19/return-reversals-junit.xml"
|
||||
},
|
||||
{
|
||||
"name": "voided receipt matching blocks new invoices while preserving invoice facts already registered",
|
||||
"assertions": 5,
|
||||
"proof": "private/stock-receipt-cc99dcb17e19/return-reversals-junit.xml"
|
||||
},
|
||||
{
|
||||
"name": "test_native_return_book_is_observed_without_copy_or_write",
|
||||
"assertions": 23,
|
||||
"proof": "stock-read-1793636847404.xml"
|
||||
}
|
||||
],
|
||||
"evidence_selection": "18 native cases, one new forecast-boundary case, 16 affected reversal cases, one SGF observer case. Valid overlapping earlier runs are not added. Observer binds an archived retained fixture; subsequent native tests used new isolated tenants.",
|
||||
"scenario": {
|
||||
"receipt_milli": "10000",
|
||||
"acknowledged_delivery_milli": "5000",
|
||||
"physical_after_delivery": "5000",
|
||||
"declared_unused_return_milli": "3000",
|
||||
"physical_after_return": "8000",
|
||||
"movements": 3,
|
||||
"one_shared_writer": true,
|
||||
"native_standalone_requires_sgf": false,
|
||||
"sgf_read_only_observes_same_movement": true
|
||||
},
|
||||
"controls": {
|
||||
"individual_unused_declaration": true,
|
||||
"independent_physical_receipt": true,
|
||||
"original_source_snapshots_preserved": true,
|
||||
"append_only_decisions": true,
|
||||
"versions_context_permissions_revalidated": true,
|
||||
"withdrawal_and_rejection_without_stock_effect": true,
|
||||
"source_reversal_after_partial_return_refused": true,
|
||||
"transaction_failure_recovery": true,
|
||||
"package_failure_503_recovery": true,
|
||||
"history_metadata_rendered": true,
|
||||
"replenishment_signal_once_inside_transaction": true
|
||||
},
|
||||
"concurrency": {
|
||||
"real_processes": 2,
|
||||
"company_row_blocker_observed": true,
|
||||
"after_release_same_proposal": "200 replay; one movement",
|
||||
"competing_returns": "one confirmed; second 409 after release",
|
||||
"withdraw_confirm": "one terminal state in both lock orders",
|
||||
"http_lock_timeout": "423 warehouse_return_busy; no effects; explicit retry after release succeeds"
|
||||
},
|
||||
"history": {
|
||||
"fixture_records": 51,
|
||||
"page_size": 25,
|
||||
"supply_record_selects_for_page": 3,
|
||||
"pages_disjoint": true,
|
||||
"state_filters_cover_latest_versions": true,
|
||||
"not_a_load_capacity_benchmark": true
|
||||
},
|
||||
"forecast_boundary": {
|
||||
"gross_issue_milli": 5000,
|
||||
"returned_milli": 3000,
|
||||
"physical_before_milli": 5000,
|
||||
"physical_after_milli": 8000,
|
||||
"historical_mean_unchanged": true,
|
||||
"source_hash_changed": true,
|
||||
"planning_convention_unchanged": true,
|
||||
"net_consumption_forecast_implemented": false
|
||||
},
|
||||
"package": {
|
||||
"manifest_sha256": "2850a4f5cb678acfe3a9dbc7a7d62eb233bc72722ad0de374681c2679c90557c",
|
||||
"canonical_matches_native_artifact": true,
|
||||
"writer_unchanged": true
|
||||
},
|
||||
"observer": {
|
||||
"proof_sha256": "69377ad1852f8299e37fdefc595c224c85412b02363d4bfa9070aa9e3c5c63ea",
|
||||
"fixture_archive_sha256": "a9a6f9f3360f9d01174bbafec05b6120fd11315d863c9e92d07861dd58e65acf",
|
||||
"kind": "native_return_same_book_sgf_observer",
|
||||
"physical_milli": "8000",
|
||||
"native_movements": 3,
|
||||
"same_return_movement": true,
|
||||
"observed_return_movement_id": 29,
|
||||
"native_fixture_sha256": "a9a6f9f3360f9d01174bbafec05b6120fd11315d863c9e92d07861dd58e65acf",
|
||||
"source_write_refused": true,
|
||||
"no_local_copy_or_second_effect": true,
|
||||
"return_manifest_sha256": "2850a4f5cb678acfe3a9dbc7a7d62eb233bc72722ad0de374681c2679c90557c"
|
||||
},
|
||||
"postchecks": {
|
||||
"native_retained_book": {
|
||||
"cluster": "sgf_modular_regression_2576427d1939",
|
||||
"database": "compras_receipts_test_115c5b17e171",
|
||||
"role": "stock_receipt_read_115c5b17e171",
|
||||
"read_only": "on",
|
||||
"elevated": false,
|
||||
"select_book": true,
|
||||
"can_write_book": false,
|
||||
"select_native_operations": false,
|
||||
"movements": 3,
|
||||
"physical_milli": "8000",
|
||||
"same_return": true
|
||||
},
|
||||
"sgf": {
|
||||
"qa_identity": {
|
||||
"db": "sgf_tempo_test",
|
||||
"role": "sgf_test_runner",
|
||||
"port": 55439,
|
||||
"cluster": "sgf_modular_regression_2576427d1939"
|
||||
},
|
||||
"temporary_grants_remaining": 0,
|
||||
"constraint_sha256": "40046092cba51f1b46d26d5f0da8af47e8336e90a8d50b8de3a8c390758f1783",
|
||||
"operational_workshop_stock_bindings": 0,
|
||||
"read_only": true
|
||||
}
|
||||
},
|
||||
"ui": {
|
||||
"proof": "docs/proofs/native-return-ui-20261102.json",
|
||||
"sha256": "61ad362980e92de76f64cd39bad2fbe0a78f950cffe0dc18a85af61a388cfb50",
|
||||
"kind": "isolated_changed_entry_browser_bundle_and_types",
|
||||
"inputs_sha256": {
|
||||
"resources/js/pages/stock/returns.tsx": "e9fc4183b07f7cbebce83f770dc2958536905b0b4c2796c8065031e35aa9b1e7",
|
||||
"resources/js/pages/stock/request.tsx": "f59a72c78f8c94260c5b64cad0d26cca08c8379726ad61c9b869e0a667c00f60",
|
||||
"resources/js/pages/stock/operations.tsx": "3c6d68bac8db5c7e0ac7f518fd07e8b3a6a4f0f704ea7612e332b457ee9a0938"
|
||||
},
|
||||
"entry_bundle_passed": true,
|
||||
"type_check_exit": 0,
|
||||
"type_output_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
|
||||
"explicit_source_selection": true,
|
||||
"unused_declaration_required_in_source": true,
|
||||
"independent_receiving_declaration_required_in_source": true,
|
||||
"live_or_demo_build_touched": false,
|
||||
"full_application_build": false,
|
||||
"browser_interactions_tested": false,
|
||||
"visual_review": false
|
||||
},
|
||||
"history_render": {
|
||||
"proof": "docs/proofs/native-return-history-render-20261102.json",
|
||||
"sha256": "71b8a50c96abc17fba71fb010afbcace8309c4976efb036d35220898cb777520",
|
||||
"kind": "server_render_of_actual_native_stock_history_props",
|
||||
"page_sha256": "fafd870e129cb169216bd2a7d13a547adaab410d24195f950327eb14af57e10f",
|
||||
"component_sha256": "3c6d68bac8db5c7e0ac7f518fd07e8b3a6a4f0f704ea7612e332b457ee9a0938",
|
||||
"render_passed": true,
|
||||
"return_human_label_visible": true,
|
||||
"author_and_responsible_rendered": true,
|
||||
"actual_http_props_used": true,
|
||||
"visual_review": false,
|
||||
"browser_interactions_tested": false
|
||||
},
|
||||
"qualified_private_build": {
|
||||
"kind": "private_application_asset_build_with_qa_configuration",
|
||||
"passed": true,
|
||||
"app_path_private": true,
|
||||
"manifest_sha256": "bda389a4cedc3ed5d2b4e02dda0487fa15e06924ef1ad5b85ca0981d71ec226e",
|
||||
"return_page_in_manifest": true,
|
||||
"configuration_difference": "Font downloading and optional React compiler omitted in QA; application entries, Inertia, React JSX, Tailwind and Wayfinder built. Does not validate the default optimized build.",
|
||||
"native_public_build_touched": false,
|
||||
"demo_assets_touched": false,
|
||||
"visual_review": false
|
||||
},
|
||||
"php_analysis": {
|
||||
"tool": "phpstan",
|
||||
"result": "passed",
|
||||
"errors": 0
|
||||
},
|
||||
"source_sha256": {
|
||||
"../compras/app/Services/WarehouseReturns.php": "0e3ba1f1b9547a9fc21ad85191ff2378a2e5da7d95aaf0625c55d69a5d7bc0d3",
|
||||
"../compras/app/Services/WarehouseReturnMovement.php": "0a4fae10c24319b6f5bd030e99fa4281e337aaae5777e8287e608752e51bb5a3",
|
||||
"../compras/app/Http/Controllers/WarehouseReturnController.php": "0bad62cfee16367507d0cd8c2d2c9da3b4a320728e4f2d94db72f39df1d2807d",
|
||||
"../compras/app/Services/InventoryReversals.php": "3af954cb2fa6ab950b80b9098c4bccfb8d099a247d13f4d64a8d0a76fec07295",
|
||||
"../compras/app/Services/SupplyHistory.php": "abc2598f20ccd66b6e3218bc4f9a5f3eab074b4f022cf8566da6c36003f9c041",
|
||||
"../compras/app/Services/OrganizationAccess.php": "2c7529a2118ab849fd3bc192045a460cca7787a06b84d481ba32e5a8f612a0a1",
|
||||
"../compras/config/stock_returns.php": "b46680d504945879bedd2910d2a0dd0164d13d331a6e85772edcdd182fddbd04",
|
||||
"../compras/routes/web.php": "9fbda27eb41da56c9b62a216c43bdcd99b66ffc230d9accd6866080f89130b54",
|
||||
"../compras/tests/Feature/WarehouseReturnIntegrationTest.php": "e4240a156ddef6184ef6f6ed4c35341dd6184332ef32d4487423c05bfd8a5f80",
|
||||
"../compras/tests/Support/warehouse-return-worker.php": "9f58ec6d45ec67c03ab2380e0f081a48eb0540d01603e68afa8608a90384a776",
|
||||
"resources/js/StockReadWorkspace.jsx": "ab29ffa445cfd68f5a9a2542dd4c375bff38e9f9a28cbf1cc033c3ceb76ea7e4",
|
||||
"tests/Feature/StockReadTest.php": "dbfaf026d912ff31ac73f8f84d3f318c67f24b5efbaaad85ccc4bca8bfdf5590"
|
||||
},
|
||||
"reused_proofs": {
|
||||
"docs/proofs/workshop-material-cycle-20261102.json": "4d79e563401df1e20d793ca8af9a1da228a24c86d6c887323a9e57c3ce65cc9a",
|
||||
"docs/proofs/stock-read-load-20261102.json": "4fc1d7d13d480a30966b259611de1066fc22ef31f7a0e782da4872211801c72e",
|
||||
"docs/proofs/module-association-http-lock-summary-20261102.json": "67547007f8f9df853639751983c5a6fd0841044cb0e04a7628db04c4b67692c6"
|
||||
},
|
||||
"preservation": {
|
||||
"six_pending_associations_untouched": true,
|
||||
"blocked_cache_untouched": true,
|
||||
"demos_and_real_data_untouched": true,
|
||||
"no_real_rights_granted": true,
|
||||
"native_synthetic_profiles_retained_in_separate_qa_database": true,
|
||||
"sgf_temporary_rights_restored": true,
|
||||
"regression_not_reset": true,
|
||||
"existing_proofs_preserved": true,
|
||||
"activation": false,
|
||||
"publication": false,
|
||||
"checkpoint": false
|
||||
},
|
||||
"limits": [
|
||||
"Native unused quantity is an explicit recipient declaration; no SGF technical-consumption register is consulted by the standalone native flow.",
|
||||
"Only internal warehouse deliveries; no lots, equipment/spare parts, reservation-bearing articles, quality or quarantine.",
|
||||
"No consumed-material compensation or automatic reversal of confirmed returns.",
|
||||
"Historical forecast preserves gross issue convention; net return forecasting is not implemented.",
|
||||
"SGF observation is isolated QA evidence, not installation of a full operational composition.",
|
||||
"No write-load capacity, visual review, browser interaction or deployment validation.",
|
||||
"Qualified private asset build omits optional React compiler and font downloading; default optimized build is not validated."
|
||||
],
|
||||
"visual_review_pending": true,
|
||||
"deployment_capacity_validated": false
|
||||
}
|
||||
@@ -0,0 +1,284 @@
|
||||
{
|
||||
"proposal_id": "SGF-IR-INSTALL-5FAE-20261102",
|
||||
"date": "2026-11-02",
|
||||
"state": "proposed_not_authorised",
|
||||
"destination": {
|
||||
"root": "C:/laragon/www/sgf-tempo",
|
||||
"environment": "local",
|
||||
"database": "sgf_tempo_dev",
|
||||
"host": "127.0.0.1",
|
||||
"port": 55432,
|
||||
"application_role": "sgf_dev_app",
|
||||
"migration_role": "sgf_dev_owner",
|
||||
"postgres_admin_for_isolated_restore": "sgf_local_admin",
|
||||
"expected_existing_tables": 87,
|
||||
"backup_root": "C:/laragon/data/sgf-tempo/backups/SGF-IR-INSTALL-5FAE-20261102",
|
||||
"restore_before": "sgf_restore_ir_5fae_pre",
|
||||
"restore_after": "sgf_restore_ir_5fae_post",
|
||||
"candidate_staging": "C:/laragon/data/sgf-tempo/install/SGF-IR-INSTALL-5FAE-20261102",
|
||||
"expected_existing_grants": 89,
|
||||
"expected_existing_memberships": 2
|
||||
},
|
||||
"candidate": {
|
||||
"id": "OPERATIONAL-CANDIDATE-5fae7cf7f99c42ba",
|
||||
"format": "tempo.operational-review.v1",
|
||||
"manifest_sha256": "b1ec47f7a9ad87e0b232bac41e402d4a00ee5f03f00a79b93effc692ce8b39a2",
|
||||
"archive": "C:/laragon/www/compras/storage/app/private/candidate-archives/OPERATIONAL-CANDIDATE-5fae7cf7f99c42ba.zip",
|
||||
"archive_sha256": "d14a3261d5aaab80f96250af781c700ab53376021f4638e3aee43c15ff37ceed",
|
||||
"support_files_verified": 36,
|
||||
"package_pointer_before": "0.1.1",
|
||||
"package_pointer_after": "0.1.1"
|
||||
},
|
||||
"read_only_plans": {
|
||||
"code": {
|
||||
"target_sha256": "bab719ee4e08555a8e1de694dd3a93df82680c7aba653613f0714dd76e4065d6",
|
||||
"pointer_sha256": "81899e531e9eec449717e694d8bdc106a9e220a828f5491ce918c1d2dc612787",
|
||||
"host_files": {
|
||||
"app/Modules/Identity/Services/Permissions.php": "97a860b632de0cb5022b2d9153261ecfa2211c100961eb6b9e6a09d30f798e63",
|
||||
"app/Modules/Identity/Services/IdentityWorkflow.php": "c4f4af9a7625778a408d881ba087502b116fa0ccb15f2f0311f5a0e8ad40ce73",
|
||||
"app/Modules/Purchasing/BudgetAdapter.php": "e8f261e2e6535973c72266cf5f448e24794e5c896a9910ca85468001fbc37116",
|
||||
"app/Providers/AppServiceProvider.php": "42705455c3f12233369275cbfd7d80781109135ca1ef2d3e3adc2fac8d675e8e",
|
||||
"app/Shared/Context/ModuleNavigation.php": "f75f323940e25826792dc88848fd2b77eb3325634100a86b14c60c5d381917a3"
|
||||
},
|
||||
"manifest_sha256": "b1ec47f7a9ad87e0b232bac41e402d4a00ee5f03f00a79b93effc692ce8b39a2",
|
||||
"previous": null,
|
||||
"deployment_id": "b1ec47f7a9ad87e0b232bac4",
|
||||
"writes": false
|
||||
},
|
||||
"schema": {
|
||||
"target_sha256": "169e6e863f28b67740f07b6e7cbc664fbe585a7760a83dccebc8d482ad8ab792",
|
||||
"manifest_sha256": "b1ec47f7a9ad87e0b232bac41e402d4a00ee5f03f00a79b93effc692ce8b39a2",
|
||||
"schema_prepared": false,
|
||||
"activated": false
|
||||
}
|
||||
},
|
||||
"migration_sha256": "c9e9f0ab3a561578de18c17d149d414640a4e594ef918ff393aecd8eee16e775",
|
||||
"navigation": {
|
||||
"functional_commit": "2a4169162bb4621a42a2ea1df627d52f860e7176",
|
||||
"documentary_acceptance_commit": "fcf0ada22701337acd4c84b404207b8400f490a2",
|
||||
"files": {
|
||||
"app/Shared/Context/ModuleNavigation.php": {
|
||||
"working_sha256": "f75f323940e25826792dc88848fd2b77eb3325634100a86b14c60c5d381917a3",
|
||||
"matches_functional_commit_normalized": true,
|
||||
"overlay": {
|
||||
"before_sha256": "f75f323940e25826792dc88848fd2b77eb3325634100a86b14c60c5d381917a3",
|
||||
"after_sha256": "f15a8dc725aa4c1c6ab7eab6799446b7c79b35df237c2791791e7fe3c3830568"
|
||||
}
|
||||
},
|
||||
"app/Shared/Context/ModuleRecords.php": {
|
||||
"working_sha256": "1813591487e3fb1885622f1078e80734d1745f427d2bf8fa93ebc0d96974b0d6",
|
||||
"matches_functional_commit_normalized": true,
|
||||
"overlay": null
|
||||
},
|
||||
"app/Shared/Context/RequireModuleContext.php": {
|
||||
"working_sha256": "610b65868ad25d1e6f736d03d7c1da44245648ff22873f1c957c794490009192",
|
||||
"matches_functional_commit_normalized": true,
|
||||
"overlay": null
|
||||
},
|
||||
"app/Modules/Identity/Http/RequireCompanyContext.php": {
|
||||
"working_sha256": "3fcc9d4d4466d3b6883dd60cc3e63e9bb2f58a43d13ca550d79e35882562db71",
|
||||
"matches_functional_commit_normalized": true,
|
||||
"overlay": null
|
||||
},
|
||||
"app/Modules/Identity/Http/ModuleRecordsController.php": {
|
||||
"working_sha256": "f10ee4a14ed19e461bfc819288cd2f701e9d73ce4421a18f1b11e1ca545726fb",
|
||||
"matches_functional_commit_normalized": true,
|
||||
"overlay": null
|
||||
},
|
||||
"app/Modules/Identity/Services/Audit.php": {
|
||||
"working_sha256": "89d69975b3059a3aedbeff0aca1febbb92c6c135030c31b0cc4bdd8d7e602ecb",
|
||||
"matches_functional_commit_normalized": true,
|
||||
"overlay": null
|
||||
},
|
||||
"app/Modules/Identity/Services/IdentityWorkflow.php": {
|
||||
"working_sha256": "c4f4af9a7625778a408d881ba087502b116fa0ccb15f2f0311f5a0e8ad40ce73",
|
||||
"matches_functional_commit_normalized": true,
|
||||
"overlay": {
|
||||
"before_sha256": "c4f4af9a7625778a408d881ba087502b116fa0ccb15f2f0311f5a0e8ad40ce73",
|
||||
"after_sha256": "e568e578dfc090a8df29b215c0196eacf3d472c32952c8422597b14c3a4a4038"
|
||||
}
|
||||
},
|
||||
"resources/js/ModuleNavigation.jsx": {
|
||||
"working_sha256": "b53ee2d9f69a96bdabf1d3074f8662fd204c447caf8f354aea4dcf921bd336be",
|
||||
"matches_functional_commit_normalized": true,
|
||||
"overlay": null
|
||||
},
|
||||
"resources/js/WorkspaceNavigation.jsx": {
|
||||
"working_sha256": "7be946f915e3dabfb511445f169fe822c2e558ca15fef6331c247af2a1643ebf",
|
||||
"matches_functional_commit_normalized": true,
|
||||
"overlay": null
|
||||
},
|
||||
"resources/js/app.jsx": {
|
||||
"working_sha256": "33f087da73fe80ca0ae6e7609e107b805b2c8a1f1863cc3a1b2c7886fe7d3c44",
|
||||
"matches_functional_commit_normalized": true,
|
||||
"overlay": null
|
||||
},
|
||||
"resources/js/WorkspaceHome.jsx": {
|
||||
"working_sha256": "c02d71c6e630f942c13562427c7256e1b7602c75b80b462d184d45852d9ea34a",
|
||||
"matches_functional_commit_normalized": true,
|
||||
"overlay": null
|
||||
},
|
||||
"resources/js/ModuleRecordsWorkspace.jsx": {
|
||||
"working_sha256": "24399a5e6a08c78357f23fc6d304a706f477f33db879a4cf52fc53511541b78c",
|
||||
"matches_functional_commit_normalized": true,
|
||||
"overlay": null
|
||||
},
|
||||
"resources/js/ContextTransitionDialog.jsx": {
|
||||
"working_sha256": "04bde71f2ea5d26185aae930bfcf8978e5d38d1637915073cacbc12033fe9780",
|
||||
"matches_functional_commit_normalized": true,
|
||||
"overlay": null
|
||||
},
|
||||
"resources/js/context-transition.js": {
|
||||
"working_sha256": "3d76e21eca185ae97c1a6a6f5965ab33c242a28391c8c50f5af30dfc0a4a3c6a",
|
||||
"matches_functional_commit_normalized": true,
|
||||
"overlay": null
|
||||
},
|
||||
"resources/css/tempo-theme.css": {
|
||||
"working_sha256": "4b961ce49b2bb50072ea1fcae0c0d168c9ada207f59323cc52205353b7871df9",
|
||||
"matches_functional_commit_normalized": true,
|
||||
"overlay": null
|
||||
},
|
||||
"public/sgf-module-context.js": {
|
||||
"working_sha256": "f465ea30ecea0acf3fc7b838b602ea881260d73b90aa48f587327b8ee1581dc7",
|
||||
"matches_functional_commit_normalized": true,
|
||||
"overlay": null
|
||||
},
|
||||
"config/modules.php": {
|
||||
"working_sha256": "31330076b98ca423acfef0fa4e1c87a3762e53a750bd3f94c2b5a7d53e3edde4",
|
||||
"matches_functional_commit_normalized": true,
|
||||
"overlay": null
|
||||
},
|
||||
"routes/web.php": {
|
||||
"working_sha256": "aa314a92c7f926c56699880d795286a0dd9659e6fbc0f653529e2f58a1bb326c",
|
||||
"matches_functional_commit_normalized": true,
|
||||
"overlay": null
|
||||
},
|
||||
"tests/Feature/ModuleNavigationTest.php": {
|
||||
"working_sha256": "7f7655950d5847ed5702f95613061e7591a353f97d3349921625b8805822bfd4",
|
||||
"matches_functional_commit_normalized": true,
|
||||
"overlay": null
|
||||
}
|
||||
}
|
||||
},
|
||||
"permissions": {
|
||||
"functional_user_grants": [],
|
||||
"new_users": [],
|
||||
"initialisation_scopes": [],
|
||||
"operational_scopes": [],
|
||||
"operational_enabled": false,
|
||||
"application_ddl_privileges_added": false
|
||||
},
|
||||
"cache_policy": "Preserve uncached multi-environment host; do not run global config:cache, route:cache or event:cache. Preserve/check existing packages.php and services.php.",
|
||||
"proofs_reused": [
|
||||
"modular-navigation-completion.json",
|
||||
"modular-navigation-recheck-20261102.json",
|
||||
"internal-requisitions-sgf.json",
|
||||
"internal-requisitions-validation.json",
|
||||
"sgf-access-delivery.json",
|
||||
"sgf-operational-delivery.json",
|
||||
"sgf-composition-delivery.json",
|
||||
"sgf-code-deploy-delivery.json",
|
||||
"sgf-update-cache-delivery.json"
|
||||
],
|
||||
"executed": {
|
||||
"read_only_plans": true,
|
||||
"installation": false,
|
||||
"migration": false,
|
||||
"grants": false,
|
||||
"maintenance": false,
|
||||
"service_stops": false,
|
||||
"backup": false,
|
||||
"publication": false,
|
||||
"owner_transaction_read_only": true
|
||||
},
|
||||
"schema": {
|
||||
"new_tables": [
|
||||
"cb_centres",
|
||||
"cb_origins",
|
||||
"cb_budgets",
|
||||
"cb_budget_entries",
|
||||
"cb_budget_consumptions",
|
||||
"cb_budget_reinforcements",
|
||||
"cb_audit",
|
||||
"ir_requests",
|
||||
"ir_steps",
|
||||
"ir_events",
|
||||
"ir_commands",
|
||||
"ir_policies",
|
||||
"ir_policy_versions",
|
||||
"sgc_installations"
|
||||
],
|
||||
"permission_column_after": "varchar(100)",
|
||||
"revision": 1,
|
||||
"expected_tables_after": 101,
|
||||
"transactional": true,
|
||||
"automatic_down": false
|
||||
},
|
||||
"operational_readiness": {
|
||||
"enabled": false,
|
||||
"basic_supported_types": [
|
||||
"consumable",
|
||||
"service",
|
||||
"other"
|
||||
],
|
||||
"equipment_parts_supported": false,
|
||||
"equipment_parts_block_basic_types": false,
|
||||
"backend_catalogue_included": true,
|
||||
"initial_authority_screen_included": true,
|
||||
"native_react_unit_permission_choices": [
|
||||
"unit.view",
|
||||
"unit.edit"
|
||||
],
|
||||
"native_admin_ui_complete_for_new_rights": false,
|
||||
"public_user_grants_proposed": 0,
|
||||
"open_for_business": false,
|
||||
"centres_and_approved_budget_bootstrap_available": false,
|
||||
"budget_workspace_support_tables_in_candidate": false,
|
||||
"missing_budget_workspace_tables": [
|
||||
"cb_ui_commands",
|
||||
"cb_consumption_sources"
|
||||
]
|
||||
},
|
||||
"recovery": {
|
||||
"fresh_before_dump_and_full_restore_required": true,
|
||||
"fresh_prepared_dump_and_full_restore_required": true,
|
||||
"restores_reconcile_tables": [
|
||||
87,
|
||||
101
|
||||
],
|
||||
"historical_restore_proof_tables": 22,
|
||||
"keep_additive_schema_on_code_rollback": true,
|
||||
"destructive_restore_over_live_database": false
|
||||
},
|
||||
"maintenance": {
|
||||
"stop_shared_postgres": false,
|
||||
"preserve_other_hosts": true,
|
||||
"stop_only_identified_destination_writers": true,
|
||||
"global_laravel_cache_build": false,
|
||||
"unknown_writer_or_restart_environment": "abort_before_changes"
|
||||
},
|
||||
"reused_proof_check_counts": {
|
||||
"internal-requisitions-sgf.json": 43,
|
||||
"sgf-access-delivery.json": 24,
|
||||
"sgf-operational-delivery.json": 20,
|
||||
"sgf-composition-delivery.json": 27,
|
||||
"sgf-code-deploy-delivery.json": 42,
|
||||
"sgf-update-cache-delivery.json": 32
|
||||
},
|
||||
"database_preflight": {
|
||||
"owner_connection_checked_read_only": true,
|
||||
"owner": "sgf_dev_owner",
|
||||
"database": "sgf_tempo_dev",
|
||||
"owner_can_create_schema": true,
|
||||
"owner_owns_permission_grants": true,
|
||||
"runtime_schema_usage": true,
|
||||
"runtime_schema_create": false,
|
||||
"verified_default_privileges": {
|
||||
"tables": "sgf_dev_app=arwd",
|
||||
"sequences": "sgf_dev_app=rU"
|
||||
},
|
||||
"new_object_privileges_must_match_verified_defaults": true
|
||||
},
|
||||
"superseded_by": "SGF-IR-USABLE-401C-20261102",
|
||||
"historical_only_do_not_execute": true
|
||||
}
|
||||
@@ -0,0 +1,72 @@
|
||||
{
|
||||
"passed": true,
|
||||
"checks": [
|
||||
"Host expl\u00edcito obrigat\u00f3rio",
|
||||
"Bundle expl\u00edcito obrigat\u00f3rio",
|
||||
"plan is read-only",
|
||||
"Manifesto divergente",
|
||||
"Cache Laravel personalizado",
|
||||
"manuten\u00e7\u00e3o activa",
|
||||
"servi\u00e7os de escrita parados",
|
||||
"Destino de c\u00f3digo divergente",
|
||||
"applied offline without activation",
|
||||
"invalidates known Laravel caches without touching unrelated files",
|
||||
"applied verified overlay app\/Modules\/Identity\/Services\/Permissions.php",
|
||||
"applied verified overlay app\/Modules\/Identity\/Services\/IdentityWorkflow.php",
|
||||
"applied verified overlay app\/Modules\/Purchasing\/BudgetAdapter.php",
|
||||
"applied verified overlay app\/Modules\/Purchasing\/BudgetWorkspace.php",
|
||||
"applied verified overlay app\/Providers\/AppServiceProvider.php",
|
||||
"applied verified overlay app\/Shared\/Context\/ModuleNavigation.php",
|
||||
"applied verified overlay resources\/js\/app.jsx",
|
||||
"applied verified overlay resources\/js\/PurchasingHome.jsx",
|
||||
"applied verified overlay public\/build\/manifest.json",
|
||||
"apply retry does not duplicate installation",
|
||||
"C\u00f3digo local alterado",
|
||||
"refused rollback preserves bundle and local code",
|
||||
"Cache recriado",
|
||||
"rollback preserves maintenance and never touches data schema",
|
||||
"rollback restores exact previous cache",
|
||||
"restored original overlay app\/Modules\/Identity\/Services\/Permissions.php",
|
||||
"restored original overlay app\/Modules\/Identity\/Services\/IdentityWorkflow.php",
|
||||
"restored original overlay app\/Modules\/Purchasing\/BudgetAdapter.php",
|
||||
"restored original overlay app\/Modules\/Purchasing\/BudgetWorkspace.php",
|
||||
"restored original overlay app\/Providers\/AppServiceProvider.php",
|
||||
"restored original overlay app\/Shared\/Context\/ModuleNavigation.php",
|
||||
"restored original overlay resources\/js\/app.jsx",
|
||||
"restored original overlay resources\/js\/PurchasingHome.jsx",
|
||||
"restored original overlay public\/build\/manifest.json",
|
||||
"withdrawn bundle preserved for diagnosis",
|
||||
"clone remains on original package pointer",
|
||||
"Injected deployment interruption",
|
||||
"interruption retains maintenance",
|
||||
"interrupted deployment recovers app\/Modules\/Identity\/Services\/Permissions.php",
|
||||
"interrupted deployment recovers app\/Modules\/Identity\/Services\/IdentityWorkflow.php",
|
||||
"interrupted deployment recovers app\/Modules\/Purchasing\/BudgetAdapter.php",
|
||||
"interrupted deployment recovers app\/Modules\/Purchasing\/BudgetWorkspace.php",
|
||||
"interrupted deployment recovers app\/Providers\/AppServiceProvider.php",
|
||||
"interrupted deployment recovers app\/Shared\/Context\/ModuleNavigation.php",
|
||||
"interrupted deployment recovers resources\/js\/app.jsx",
|
||||
"interrupted deployment recovers resources\/js\/PurchasingHome.jsx",
|
||||
"interrupted deployment recovers public\/build\/manifest.json",
|
||||
"destination pointer untouched",
|
||||
"Injected post-switch interruption",
|
||||
"post-switch interruption recovers without exposing partial code",
|
||||
"Outra implanta\u00e7\u00e3o em curso",
|
||||
"CLI plan verifies bundle without writes",
|
||||
"CLI apply leaves services and maintenance under operator control",
|
||||
"CLI rollback preserves 0.1.1 pointer"
|
||||
],
|
||||
"candidate": "C:\\laragon\\www\\compras\/storage\/app\/private\/candidates\/OPERATIONAL-CANDIDATE-401ce31ae5f2dd20",
|
||||
"clones": [
|
||||
"C:\\Users\\macbook\\AppData\\Local\\Temp\/sgf-code-deploy-f2382065595e",
|
||||
"C:\\Users\\macbook\\AppData\\Local\\Temp\/sgf-code-deploy-1de2f989fa65",
|
||||
"C:\\Users\\macbook\\AppData\\Local\\Temp\/sgf-code-deploy-7dd4d6ad2e94",
|
||||
"C:\\Users\\macbook\\AppData\\Local\\Temp\/sgf-code-deploy-eeca8efbf821"
|
||||
],
|
||||
"checked_at": "2026-11-02T07:09:25+00:00",
|
||||
"destination_version": "0.1.1",
|
||||
"destination_applied": false,
|
||||
"old_suites_repeated": false,
|
||||
"database_opened": false,
|
||||
"services_restarted": false
|
||||
}
|
||||
@@ -0,0 +1,41 @@
|
||||
{
|
||||
"passed": true,
|
||||
"checks": [
|
||||
"provider really loaded from isolated copy",
|
||||
"budget adapter really loaded from isolated copy",
|
||||
"new bundle bootstrap accepted by installer integrity check",
|
||||
"anonymous direct initialisation URL denied",
|
||||
"native clone authentication 1",
|
||||
"native clone context 1",
|
||||
"native clone authentication 2",
|
||||
"native clone context 2",
|
||||
"provider registers initial authority page without prior functional rights",
|
||||
"initial authority CSRF enforced",
|
||||
"initial authority through normal middleware",
|
||||
"work page requires explicit module selection",
|
||||
"new requisition view right makes purchasing selectable",
|
||||
"stale module generation refused",
|
||||
"provider registers operational work page",
|
||||
"different enterprise option refused by operational composition",
|
||||
"native administrative delegation purchasing_requisitions.view",
|
||||
"native administrative delegation purchasing_requisitions.approve.department_head",
|
||||
"operational policy configured via HTTP",
|
||||
"integrated operational draft",
|
||||
"integrated submit uses existing budget adapter",
|
||||
"integrated independent identity enforced",
|
||||
"integrated approval by another identity",
|
||||
"integrated authorised consultation and history",
|
||||
"native revocation applies to direct module URL",
|
||||
"uncontracted module refused at server",
|
||||
"disabled composition exposes no executable work page"
|
||||
],
|
||||
"clone": "C:\\Users\\macbook\\AppData\\Local\\Temp\/sgf-composition-f4de0d0473a5",
|
||||
"destination_activated": false,
|
||||
"normal_provider_routes": true,
|
||||
"browser_used": false,
|
||||
"overlay": "C:\\laragon\\www\\compras\/storage\/app\/private\/candidates\/OPERATIONAL-CANDIDATE-4b25f81932efd69d",
|
||||
"checked_at": "2026-11-02T06:07:41+00:00",
|
||||
"destination_version": "0.1.1",
|
||||
"prior_tests_repeated": false,
|
||||
"isolated_database_removed": true
|
||||
}
|
||||
@@ -0,0 +1,299 @@
|
||||
{
|
||||
"passed": true,
|
||||
"checks": [
|
||||
"reproduced current 87-table schema without source rows",
|
||||
"no accounts or grants imported from destination",
|
||||
"runtime cannot create schema objects",
|
||||
"injected dependency migration failure",
|
||||
"failed migration restores original schema and identity data",
|
||||
"successful migration preserves existing identity and grants",
|
||||
"installation creates empty centres and allocations",
|
||||
"runtime module SQL access denied before test-only privilege plan",
|
||||
"minimal runtime excludes historical update and requisition deletion",
|
||||
"runtime reads corrected revision without ownership",
|
||||
"provider really loaded from isolated copy",
|
||||
"new bundle bootstrap accepted by installer integrity check",
|
||||
"anonymous direct initialisation URL denied",
|
||||
"native clone authentication 1",
|
||||
"native clone context 1",
|
||||
"native clone authentication 2",
|
||||
"native clone context 2",
|
||||
"provider registers initial authority page without prior functional rights",
|
||||
"initial authority CSRF enforced",
|
||||
"initial authority through normal middleware",
|
||||
"work page requires explicit module selection",
|
||||
"new requisition view right makes purchasing selectable",
|
||||
"stale module generation refused",
|
||||
"provider registers operational work page",
|
||||
"different enterprise option refused by operational composition",
|
||||
"native administrative delegation purchasing_requisitions.view",
|
||||
"native administrative delegation purchasing_requisitions.approve.department_head",
|
||||
"native administrative delegation purchasing_budget.view",
|
||||
"native administrative delegation purchasing_budget.approve",
|
||||
"empty installation exposes authorised centre and budget preparation",
|
||||
"centre created through authorised UI API with runtime role",
|
||||
"centre retries preserve one source",
|
||||
"existing budget API prepares synthetic allocation",
|
||||
"budget approval requires independent identity",
|
||||
"independent allocation approval uses existing budget kernel",
|
||||
"workspace dependencies available on reproduced schema",
|
||||
"direct budget movements cannot bypass requisition lifecycle",
|
||||
"operational policy configured via HTTP",
|
||||
"integrated operational draft",
|
||||
"integrated submit uses existing budget adapter",
|
||||
"integrated independent identity enforced",
|
||||
"integrated approval by another identity",
|
||||
"integrated authorised consultation and history",
|
||||
"native administration receives complete unit catalogue",
|
||||
"native administration receives canonical server labels",
|
||||
"reviewer cannot inspect administrative catalogue without management right",
|
||||
"forged delegation of an unowned catalogue right refused",
|
||||
"packaged frontend dependency served before authentication",
|
||||
"packaged frontend dependency served before authentication",
|
||||
"native SGF entry renders the packaged frontend manifest",
|
||||
"undeclared frontend asset refused",
|
||||
"minimal plan removes inherited update and delete on new append-only sources",
|
||||
"runtime cannot truncate requisitions",
|
||||
"existing table ACL preserved a_billing_drafts",
|
||||
"existing table ACL preserved a_clients",
|
||||
"existing table ACL preserved a_commands",
|
||||
"existing table ACL preserved a_events",
|
||||
"existing table ACL preserved a_history",
|
||||
"existing table ACL preserved a_outbox",
|
||||
"existing table ACL preserved a_pending",
|
||||
"existing table ACL preserved a_service_drafts",
|
||||
"existing table ACL preserved a_services",
|
||||
"existing table ACL preserved b_internal_confirmations",
|
||||
"existing table ACL preserved ca_commands",
|
||||
"existing table ACL preserved ca_decisions",
|
||||
"existing table ACL preserved ca_proposals",
|
||||
"existing table ACL preserved ca_resolutions",
|
||||
"existing table ACL preserved ca_submissions",
|
||||
"existing table ACL preserved cache",
|
||||
"existing table ACL preserved cache_locks",
|
||||
"existing table ACL preserved companies",
|
||||
"existing table ACL preserved company_memberships",
|
||||
"existing table ACL preserved dc_calculations",
|
||||
"existing table ACL preserved dc_commands",
|
||||
"existing table ACL preserved dc_decisions",
|
||||
"existing table ACL preserved dc_events",
|
||||
"existing table ACL preserved dc_outbox",
|
||||
"existing table ACL preserved dc_rates",
|
||||
"existing table ACL preserved doc_history",
|
||||
"existing table ACL preserved doc_records",
|
||||
"existing table ACL preserved document_preview_model_history",
|
||||
"existing table ACL preserved document_preview_models",
|
||||
"existing table ACL preserved failed_jobs",
|
||||
"existing table ACL preserved ib_budgets",
|
||||
"existing table ACL preserved ib_commands",
|
||||
"existing table ACL preserved ib_comparisons",
|
||||
"existing table ACL preserved ib_decisions",
|
||||
"existing table ACL preserved ib_events",
|
||||
"existing table ACL preserved ib_outbox",
|
||||
"existing table ACL preserved ic_commands",
|
||||
"existing table ACL preserved ic_decisions",
|
||||
"existing table ACL preserved ic_events",
|
||||
"existing table ACL preserved ic_inputs",
|
||||
"existing table ACL preserved ic_lots",
|
||||
"existing table ACL preserved ic_outbox",
|
||||
"existing table ACL preserved ic_products",
|
||||
"existing table ACL preserved ic_results",
|
||||
"existing table ACL preserved identity_audit",
|
||||
"existing table ACL preserved job_batches",
|
||||
"existing table ACL preserved jobs",
|
||||
"existing table ACL preserved migrations",
|
||||
"existing table ACL preserved password_reset_tokens",
|
||||
"existing table ACL preserved permission_grants",
|
||||
"existing table ACL preserved service_calculation_profiles",
|
||||
"existing table ACL preserved service_calculation_results",
|
||||
"existing table ACL preserved sessions",
|
||||
"existing table ACL preserved sf_activation_events",
|
||||
"existing table ACL preserved sf_decisions",
|
||||
"existing table ACL preserved sf_proposals",
|
||||
"existing table ACL preserved si_commands",
|
||||
"existing table ACL preserved si_correction_requests",
|
||||
"existing table ACL preserved si_counters",
|
||||
"existing table ACL preserved si_decisions",
|
||||
"existing table ACL preserved si_events",
|
||||
"existing table ACL preserved si_invoices",
|
||||
"existing table ACL preserved si_outbox",
|
||||
"existing table ACL preserved si_proposals",
|
||||
"existing table ACL preserved sr_commands",
|
||||
"existing table ACL preserved sr_deliveries",
|
||||
"existing table ACL preserved sr_effects",
|
||||
"existing table ACL preserved sr_events",
|
||||
"existing table ACL preserved sr_outbox",
|
||||
"existing table ACL preserved sr_records",
|
||||
"existing table ACL preserved tenants",
|
||||
"existing table ACL preserved units",
|
||||
"existing table ACL preserved users",
|
||||
"existing table ACL preserved wb_claims",
|
||||
"existing table ACL preserved wb_commands",
|
||||
"existing table ACL preserved wb_decisions",
|
||||
"existing table ACL preserved wb_events",
|
||||
"existing table ACL preserved wb_generations",
|
||||
"existing table ACL preserved wb_outbox",
|
||||
"existing table ACL preserved wb_proposals",
|
||||
"existing table ACL preserved wo_commands",
|
||||
"existing table ACL preserved wo_decisions",
|
||||
"existing table ACL preserved wo_entries",
|
||||
"existing table ACL preserved wo_equipment",
|
||||
"existing table ACL preserved wo_events",
|
||||
"existing table ACL preserved wo_orders",
|
||||
"existing table ACL preserved wo_outbox",
|
||||
"actual runtime CREATE denied",
|
||||
"actual runtime ALTER of identity catalogue denied",
|
||||
"centre creation requires own configuration and budget rights",
|
||||
"centre context cannot be forged",
|
||||
"refused centre operations leave original source intact",
|
||||
"unsupported requisition type refused equipment",
|
||||
"unsupported requisition type refused part",
|
||||
"approved lifecycle covers the three supported basic types",
|
||||
"unsupported types create neither a second request nor reservation",
|
||||
"native revocation applies to direct module URL",
|
||||
"uncontracted module refused at server",
|
||||
"disabled composition exposes no executable work page",
|
||||
"code-only successor installed over existing provenance",
|
||||
"code-only successor rollback restores exact candidate",
|
||||
"code update and rollback preserve every reproduced data table",
|
||||
"code recovery preserves submitted origin decision and reservation",
|
||||
"code recovery leaves baseline and maintenance intact"
|
||||
],
|
||||
"clone": "C:\\Users\\macbook\\AppData\\Local\\Temp\/sgf-update-625f1bba6e30",
|
||||
"data_fingerprints": {
|
||||
"a_billing_drafts": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
|
||||
"a_clients": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
|
||||
"a_commands": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
|
||||
"a_events": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
|
||||
"a_history": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
|
||||
"a_outbox": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
|
||||
"a_pending": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
|
||||
"a_service_drafts": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
|
||||
"a_services": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
|
||||
"b_internal_confirmations": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
|
||||
"ca_commands": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
|
||||
"ca_decisions": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
|
||||
"ca_proposals": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
|
||||
"ca_resolutions": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
|
||||
"ca_submissions": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
|
||||
"cache": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
|
||||
"cache_locks": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
|
||||
"cb_audit": "ccf5b17cacb6e9d1cbbebdc55baca6b2b51103f3573c32dd1bddb24a055d2e2b",
|
||||
"cb_budget_consumptions": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
|
||||
"cb_budget_entries": "ba73d3b7eb20c25d833df7b3b85f7f1f7575d78365ee1a3c2246e7749f2448ad",
|
||||
"cb_budget_reinforcements": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
|
||||
"cb_budgets": "8df00e7e6b821e2767118c352f58391d4c44bb8df1fcc38a3d40a6a9989543a5",
|
||||
"cb_centres": "45bebc4ca0d417711e2a428b360c343e6dba17a64a4d799639165815e5aaef45",
|
||||
"cb_consumption_sources": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
|
||||
"cb_origins": "f470bed486f1955724e99cde0404445c4b9753320faee2d202289fedffc4d561",
|
||||
"cb_ui_commands": "424c4f2f643087911333a3ecf002bbb5fc5055c5ccf24f5cefd94c9db56b398b",
|
||||
"companies": "e5098861f02b2904e068c604ecbe1379ec6597b39fcdc9575c9d9eaa3b459aec",
|
||||
"company_memberships": "562084217604e0bd153e36375251db9e4e87f92c744c69d38d2a39c7821454e5",
|
||||
"dc_calculations": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
|
||||
"dc_commands": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
|
||||
"dc_decisions": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
|
||||
"dc_events": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
|
||||
"dc_outbox": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
|
||||
"dc_rates": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
|
||||
"doc_history": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
|
||||
"doc_records": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
|
||||
"document_preview_model_history": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
|
||||
"document_preview_models": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
|
||||
"failed_jobs": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
|
||||
"ib_budgets": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
|
||||
"ib_commands": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
|
||||
"ib_comparisons": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
|
||||
"ib_decisions": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
|
||||
"ib_events": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
|
||||
"ib_outbox": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
|
||||
"ic_commands": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
|
||||
"ic_decisions": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
|
||||
"ic_events": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
|
||||
"ic_inputs": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
|
||||
"ic_lots": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
|
||||
"ic_outbox": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
|
||||
"ic_products": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
|
||||
"ic_results": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
|
||||
"identity_audit": "b714264c1c89e456f9217c285169fa91bc379bb744684e39c2028bb48a025ca7",
|
||||
"ir_commands": "fa90f00d334ae11e38a4aea327720569da50f196ad5aa4876fcaa0b6154d78ad",
|
||||
"ir_events": "8379dcb6a4fb3d1cad80cab5a4afe9a49b86a7145e2dc613d6d5371d18e96051",
|
||||
"ir_policies": "7ff4f648cbf36386f78743ed2394eb12e6328fb6e7722c6ba1acb5fab36ca1d1",
|
||||
"ir_policy_versions": "7ff4f648cbf36386f78743ed2394eb12e6328fb6e7722c6ba1acb5fab36ca1d1",
|
||||
"ir_requests": "874bbaa494e41ddc2bee527f3660909123a19c270f7eaee0e19d534d8c355fd6",
|
||||
"ir_steps": "dcde70900864b1e974f66a4778e80e8317907c14a3dc0545afadb468c6f9eef6",
|
||||
"job_batches": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
|
||||
"jobs": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
|
||||
"migrations": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
|
||||
"password_reset_tokens": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
|
||||
"permission_grants": "2219ad7945c6cd3d4e28bfc4a06c04eb6141ceaa53097efd01ab5f89811fec13",
|
||||
"service_calculation_profiles": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
|
||||
"service_calculation_results": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
|
||||
"sessions": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
|
||||
"sf_activation_events": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
|
||||
"sf_decisions": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
|
||||
"sf_proposals": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
|
||||
"sgc_installations": "75449b61764076870970ddf93e9b987e6b7b24889de47fb8d9046a5345065f1c",
|
||||
"si_commands": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
|
||||
"si_correction_requests": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
|
||||
"si_counters": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
|
||||
"si_decisions": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
|
||||
"si_events": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
|
||||
"si_invoices": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
|
||||
"si_outbox": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
|
||||
"si_proposals": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
|
||||
"sr_commands": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
|
||||
"sr_deliveries": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
|
||||
"sr_effects": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
|
||||
"sr_events": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
|
||||
"sr_outbox": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
|
||||
"sr_records": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
|
||||
"tenants": "0487a4884eb77b28bd8c052e9d2bd1a8177bab511463657d326a17c0c77b3619",
|
||||
"units": "c0a43a3bf8907bcbebf727f089e8c75399ed7a94049ad85b666fe6b90851842e",
|
||||
"users": "ea313e4a8b0a16e17dc1b61cea28c6832a76feed78540fe40ab61bbf88c6200c",
|
||||
"wb_claims": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
|
||||
"wb_commands": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
|
||||
"wb_decisions": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
|
||||
"wb_events": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
|
||||
"wb_generations": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
|
||||
"wb_outbox": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
|
||||
"wb_proposals": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
|
||||
"wo_commands": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
|
||||
"wo_decisions": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
|
||||
"wo_entries": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
|
||||
"wo_equipment": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
|
||||
"wo_events": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
|
||||
"wo_orders": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
|
||||
"wo_outbox": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945"
|
||||
},
|
||||
"destination_activated": false,
|
||||
"normal_provider_routes": true,
|
||||
"browser_used": false,
|
||||
"data_recovery": {
|
||||
"verified": true,
|
||||
"tables_reconciled": 103,
|
||||
"approved_origin_reservation_versions_preserved": true,
|
||||
"runtime_read_verified": true,
|
||||
"runtime_ddl_denied": true,
|
||||
"schema_and_triggers_verified": true,
|
||||
"sql_acl_reapplied_only_to_isolated_role": true
|
||||
},
|
||||
"destination_security_and_schema_preserved": true,
|
||||
"artifact": {
|
||||
"directory": "C:\\laragon\\www\\compras\/storage\/app\/private\/candidates\/OPERATIONAL-CANDIDATE-401ce31ae5f2dd20",
|
||||
"archive": {
|
||||
"file": "C:\\laragon\\www\\compras\/storage\/app\/private\/candidate-archives\/OPERATIONAL-CANDIDATE-401ce31ae5f2dd20.zip",
|
||||
"sha256": "59dbdc64c4d9f14dfb4025a6177b829d136a4e2cb633ca036b10b5ae3197e703",
|
||||
"manifest_sha256": "a6478223e17a5430652f0fcbf31a44a931ae2a99cd90b151c98d2df5df43c10b"
|
||||
},
|
||||
"installed": false
|
||||
},
|
||||
"source_schema_tables": 87,
|
||||
"source_rows_exported": 0,
|
||||
"source_schema_sha256": "b530e03c759305247f46cdad5013e64a6caae00bded3d9d5ae5b7b5aa06a4647",
|
||||
"runtime_and_migrator_separate": true,
|
||||
"destination_version": "0.1.1",
|
||||
"destination_changed": false,
|
||||
"prior_proofs_reused": true,
|
||||
"checked_at": "2026-11-02T07:10:03+00:00",
|
||||
"test_database_and_roles_removed": true
|
||||
}
|
||||
@@ -0,0 +1,206 @@
|
||||
{
|
||||
"passed": true,
|
||||
"identity": {
|
||||
"db": "sgf_modules_dev_2576427d1939",
|
||||
"role": "sgf_modules_qa_2576427d1939",
|
||||
"cluster": "sgf_modular_regression_2576427d1939",
|
||||
"port": 55439
|
||||
},
|
||||
"scope": "1:1:1",
|
||||
"added_grants": [
|
||||
{
|
||||
"id": 103,
|
||||
"user_id": 1,
|
||||
"tenant_id": 1,
|
||||
"company_id": 1,
|
||||
"unit_id": 1,
|
||||
"permission": "purchasing_budget.approve",
|
||||
"created_at": "2026-11-02 07:25:53",
|
||||
"updated_at": "2026-11-02 07:25:53"
|
||||
},
|
||||
{
|
||||
"id": 104,
|
||||
"user_id": 1,
|
||||
"tenant_id": 1,
|
||||
"company_id": 1,
|
||||
"unit_id": 1,
|
||||
"permission": "purchasing_budget.create",
|
||||
"created_at": "2026-11-02 07:25:53",
|
||||
"updated_at": "2026-11-02 07:25:53"
|
||||
},
|
||||
{
|
||||
"id": 105,
|
||||
"user_id": 1,
|
||||
"tenant_id": 1,
|
||||
"company_id": 1,
|
||||
"unit_id": 1,
|
||||
"permission": "purchasing_budget.record",
|
||||
"created_at": "2026-11-02 07:25:53",
|
||||
"updated_at": "2026-11-02 07:25:53"
|
||||
},
|
||||
{
|
||||
"id": 106,
|
||||
"user_id": 1,
|
||||
"tenant_id": 1,
|
||||
"company_id": 1,
|
||||
"unit_id": 1,
|
||||
"permission": "purchasing_budget.view",
|
||||
"created_at": "2026-11-02 07:25:53",
|
||||
"updated_at": "2026-11-02 07:25:53"
|
||||
},
|
||||
{
|
||||
"id": 107,
|
||||
"user_id": 1,
|
||||
"tenant_id": 1,
|
||||
"company_id": 1,
|
||||
"unit_id": 1,
|
||||
"permission": "purchasing_requisitions.approve.department_head",
|
||||
"created_at": "2026-11-02 07:25:53",
|
||||
"updated_at": "2026-11-02 07:25:53"
|
||||
},
|
||||
{
|
||||
"id": 108,
|
||||
"user_id": 1,
|
||||
"tenant_id": 1,
|
||||
"company_id": 1,
|
||||
"unit_id": 1,
|
||||
"permission": "purchasing_requisitions.configure",
|
||||
"created_at": "2026-11-02 07:25:53",
|
||||
"updated_at": "2026-11-02 07:25:53"
|
||||
},
|
||||
{
|
||||
"id": 109,
|
||||
"user_id": 1,
|
||||
"tenant_id": 1,
|
||||
"company_id": 1,
|
||||
"unit_id": 1,
|
||||
"permission": "purchasing_requisitions.prepare",
|
||||
"created_at": "2026-11-02 07:25:53",
|
||||
"updated_at": "2026-11-02 07:25:53"
|
||||
},
|
||||
{
|
||||
"id": 110,
|
||||
"user_id": 1,
|
||||
"tenant_id": 1,
|
||||
"company_id": 1,
|
||||
"unit_id": 1,
|
||||
"permission": "purchasing_requisitions.view",
|
||||
"created_at": "2026-11-02 07:25:53",
|
||||
"updated_at": "2026-11-02 07:25:53"
|
||||
},
|
||||
{
|
||||
"id": 111,
|
||||
"user_id": 2,
|
||||
"tenant_id": 1,
|
||||
"company_id": 1,
|
||||
"unit_id": 1,
|
||||
"permission": "purchasing_requisitions.view",
|
||||
"created_at": "2026-11-02 07:25:53",
|
||||
"updated_at": "2026-11-02 07:25:53"
|
||||
},
|
||||
{
|
||||
"id": 112,
|
||||
"user_id": 2,
|
||||
"tenant_id": 1,
|
||||
"company_id": 1,
|
||||
"unit_id": 1,
|
||||
"permission": "purchasing_requisitions.approve.department_head",
|
||||
"created_at": "2026-11-02 07:25:53",
|
||||
"updated_at": "2026-11-02 07:25:53"
|
||||
},
|
||||
{
|
||||
"id": 113,
|
||||
"user_id": 2,
|
||||
"tenant_id": 1,
|
||||
"company_id": 1,
|
||||
"unit_id": 1,
|
||||
"permission": "purchasing_budget.view",
|
||||
"created_at": "2026-11-02 07:25:54",
|
||||
"updated_at": "2026-11-02 07:25:54"
|
||||
},
|
||||
{
|
||||
"id": 114,
|
||||
"user_id": 2,
|
||||
"tenant_id": 1,
|
||||
"company_id": 1,
|
||||
"unit_id": 1,
|
||||
"permission": "purchasing_budget.approve",
|
||||
"created_at": "2026-11-02 07:25:54",
|
||||
"updated_at": "2026-11-02 07:25:54"
|
||||
},
|
||||
{
|
||||
"id": 115,
|
||||
"user_id": 3,
|
||||
"tenant_id": 1,
|
||||
"company_id": 1,
|
||||
"unit_id": 1,
|
||||
"permission": "purchasing_requisitions.view",
|
||||
"created_at": "2026-11-02 07:25:54",
|
||||
"updated_at": "2026-11-02 07:25:54"
|
||||
},
|
||||
{
|
||||
"id": 116,
|
||||
"user_id": 3,
|
||||
"tenant_id": 1,
|
||||
"company_id": 1,
|
||||
"unit_id": 1,
|
||||
"permission": "purchasing_budget.view",
|
||||
"created_at": "2026-11-02 07:25:54",
|
||||
"updated_at": "2026-11-02 07:25:54"
|
||||
}
|
||||
],
|
||||
"existing_grants_preserved": true,
|
||||
"existing_accounts_preserved": true,
|
||||
"single_approved_request": true,
|
||||
"single_reservation": true,
|
||||
"reservation": {
|
||||
"id": 1,
|
||||
"tenant_id": 1,
|
||||
"company_id": 1,
|
||||
"unit_id": 1,
|
||||
"budget_id": 1,
|
||||
"requisition_id": 1,
|
||||
"created_by": 1,
|
||||
"kind": "reserve",
|
||||
"reserved_minor": 10000,
|
||||
"committed_minor": 0,
|
||||
"created_at": "2026-11-02 07:26:06"
|
||||
},
|
||||
"budget": {
|
||||
"id": 1,
|
||||
"tenant_id": 1,
|
||||
"company_id": 1,
|
||||
"unit_id": 1,
|
||||
"cost_center_id": 1,
|
||||
"year": 2026,
|
||||
"kind": "operating",
|
||||
"amount_minor": 1000000,
|
||||
"includes_tax": true,
|
||||
"reason": "Owner-authorised synthetic 10000 MZN allocation for 2026.",
|
||||
"created_by": 1,
|
||||
"approved_by": 2,
|
||||
"approved_at": "2026-11-02 07:26:05",
|
||||
"created_at": "2026-11-02 07:26:04",
|
||||
"updated_at": "2026-11-02 07:26:05"
|
||||
},
|
||||
"decision": {
|
||||
"id": 1,
|
||||
"tenant_id": 1,
|
||||
"company_id": 1,
|
||||
"unit_id": 1,
|
||||
"request_id": 1,
|
||||
"position": 1,
|
||||
"role": "department_head",
|
||||
"decision": "approved",
|
||||
"approver_id": 2,
|
||||
"comment": null,
|
||||
"decided_at": "2026-11-02 07:26:19"
|
||||
},
|
||||
"pointer_preserved": true,
|
||||
"backup_sha256": "2eed6d9f775d8d5dc8c7b1606e230b8782c09a69098d31e659d9ad28a4d608fa",
|
||||
"recovery_directory": "C:\/laragon\/data\/sgf-tempo\/run\/modular-regression-2576427d1939\/private\/requisitions-recovery",
|
||||
"checked_at": "2026-11-02T07:27:43+00:00",
|
||||
"owner_runtime_limitation": true,
|
||||
"visual_review": false,
|
||||
"read_only_record_visibility_limitation": true
|
||||
}
|
||||
@@ -0,0 +1,41 @@
|
||||
{
|
||||
"passed": true,
|
||||
"url": "http://127.0.0.1:8039",
|
||||
"scope": "1:1:1",
|
||||
"rights": {
|
||||
"1": [
|
||||
"purchasing_requisitions.view",
|
||||
"purchasing_requisitions.prepare",
|
||||
"purchasing_requisitions.configure",
|
||||
"purchasing_requisitions.approve.department_head",
|
||||
"purchasing_budget.view",
|
||||
"purchasing_budget.create",
|
||||
"purchasing_budget.approve",
|
||||
"purchasing_budget.record"
|
||||
],
|
||||
"2": [
|
||||
"purchasing_requisitions.view",
|
||||
"purchasing_requisitions.approve.department_head",
|
||||
"purchasing_budget.view",
|
||||
"purchasing_budget.approve"
|
||||
],
|
||||
"3": [
|
||||
"purchasing_requisitions.view",
|
||||
"purchasing_budget.view"
|
||||
]
|
||||
},
|
||||
"centre_id": 1,
|
||||
"budget_id": 1,
|
||||
"request_id": 1,
|
||||
"checks": [
|
||||
"Existing three synthetic identities authenticate without password changes",
|
||||
"Eight plus four plus two explicit authorised grants",
|
||||
"Synthetic allocation 10000 MZN approved by second identity; self and read-only approvals refused",
|
||||
"Full request lifecycle, independent approval and three-event history consulted by preparer and reviewer",
|
||||
"Existing record visibility rule returns 404 to read-only third identity; listing remains accessible; no extra rights granted",
|
||||
"Read-only profile refused centre, budget approval, policy, preparation, submission, decision and access administration"
|
||||
],
|
||||
"checked_at": "2026-11-02T07:26:58.680Z",
|
||||
"visual_review": false,
|
||||
"real_installation_changed": false
|
||||
}
|
||||
@@ -0,0 +1,269 @@
|
||||
{
|
||||
"identity": {
|
||||
"db": "sgf_modules_dev_2576427d1939",
|
||||
"role": "sgf_modules_qa_2576427d1939",
|
||||
"port": 55439,
|
||||
"cluster": "sgf_modular_regression_2576427d1939"
|
||||
},
|
||||
"read_only": true,
|
||||
"previous_grants_preserved": true,
|
||||
"new_grants": [
|
||||
{
|
||||
"id": 103,
|
||||
"user_id": 1,
|
||||
"tenant_id": 1,
|
||||
"company_id": 1,
|
||||
"unit_id": 1,
|
||||
"permission": "purchasing_budget.approve",
|
||||
"created_at": "2026-11-02 07:25:53",
|
||||
"updated_at": "2026-11-02 07:25:53"
|
||||
},
|
||||
{
|
||||
"id": 104,
|
||||
"user_id": 1,
|
||||
"tenant_id": 1,
|
||||
"company_id": 1,
|
||||
"unit_id": 1,
|
||||
"permission": "purchasing_budget.create",
|
||||
"created_at": "2026-11-02 07:25:53",
|
||||
"updated_at": "2026-11-02 07:25:53"
|
||||
},
|
||||
{
|
||||
"id": 105,
|
||||
"user_id": 1,
|
||||
"tenant_id": 1,
|
||||
"company_id": 1,
|
||||
"unit_id": 1,
|
||||
"permission": "purchasing_budget.record",
|
||||
"created_at": "2026-11-02 07:25:53",
|
||||
"updated_at": "2026-11-02 07:25:53"
|
||||
},
|
||||
{
|
||||
"id": 106,
|
||||
"user_id": 1,
|
||||
"tenant_id": 1,
|
||||
"company_id": 1,
|
||||
"unit_id": 1,
|
||||
"permission": "purchasing_budget.view",
|
||||
"created_at": "2026-11-02 07:25:53",
|
||||
"updated_at": "2026-11-02 07:25:53"
|
||||
},
|
||||
{
|
||||
"id": 107,
|
||||
"user_id": 1,
|
||||
"tenant_id": 1,
|
||||
"company_id": 1,
|
||||
"unit_id": 1,
|
||||
"permission": "purchasing_requisitions.approve.department_head",
|
||||
"created_at": "2026-11-02 07:25:53",
|
||||
"updated_at": "2026-11-02 07:25:53"
|
||||
},
|
||||
{
|
||||
"id": 108,
|
||||
"user_id": 1,
|
||||
"tenant_id": 1,
|
||||
"company_id": 1,
|
||||
"unit_id": 1,
|
||||
"permission": "purchasing_requisitions.configure",
|
||||
"created_at": "2026-11-02 07:25:53",
|
||||
"updated_at": "2026-11-02 07:25:53"
|
||||
},
|
||||
{
|
||||
"id": 109,
|
||||
"user_id": 1,
|
||||
"tenant_id": 1,
|
||||
"company_id": 1,
|
||||
"unit_id": 1,
|
||||
"permission": "purchasing_requisitions.prepare",
|
||||
"created_at": "2026-11-02 07:25:53",
|
||||
"updated_at": "2026-11-02 07:25:53"
|
||||
},
|
||||
{
|
||||
"id": 110,
|
||||
"user_id": 1,
|
||||
"tenant_id": 1,
|
||||
"company_id": 1,
|
||||
"unit_id": 1,
|
||||
"permission": "purchasing_requisitions.view",
|
||||
"created_at": "2026-11-02 07:25:53",
|
||||
"updated_at": "2026-11-02 07:25:53"
|
||||
},
|
||||
{
|
||||
"id": 111,
|
||||
"user_id": 2,
|
||||
"tenant_id": 1,
|
||||
"company_id": 1,
|
||||
"unit_id": 1,
|
||||
"permission": "purchasing_requisitions.view",
|
||||
"created_at": "2026-11-02 07:25:53",
|
||||
"updated_at": "2026-11-02 07:25:53"
|
||||
},
|
||||
{
|
||||
"id": 112,
|
||||
"user_id": 2,
|
||||
"tenant_id": 1,
|
||||
"company_id": 1,
|
||||
"unit_id": 1,
|
||||
"permission": "purchasing_requisitions.approve.department_head",
|
||||
"created_at": "2026-11-02 07:25:53",
|
||||
"updated_at": "2026-11-02 07:25:53"
|
||||
},
|
||||
{
|
||||
"id": 113,
|
||||
"user_id": 2,
|
||||
"tenant_id": 1,
|
||||
"company_id": 1,
|
||||
"unit_id": 1,
|
||||
"permission": "purchasing_budget.view",
|
||||
"created_at": "2026-11-02 07:25:54",
|
||||
"updated_at": "2026-11-02 07:25:54"
|
||||
},
|
||||
{
|
||||
"id": 114,
|
||||
"user_id": 2,
|
||||
"tenant_id": 1,
|
||||
"company_id": 1,
|
||||
"unit_id": 1,
|
||||
"permission": "purchasing_budget.approve",
|
||||
"created_at": "2026-11-02 07:25:54",
|
||||
"updated_at": "2026-11-02 07:25:54"
|
||||
},
|
||||
{
|
||||
"id": 115,
|
||||
"user_id": 3,
|
||||
"tenant_id": 1,
|
||||
"company_id": 1,
|
||||
"unit_id": 1,
|
||||
"permission": "purchasing_requisitions.view",
|
||||
"created_at": "2026-11-02 07:25:54",
|
||||
"updated_at": "2026-11-02 07:25:54"
|
||||
},
|
||||
{
|
||||
"id": 116,
|
||||
"user_id": 3,
|
||||
"tenant_id": 1,
|
||||
"company_id": 1,
|
||||
"unit_id": 1,
|
||||
"permission": "purchasing_budget.view",
|
||||
"created_at": "2026-11-02 07:25:54",
|
||||
"updated_at": "2026-11-02 07:25:54"
|
||||
}
|
||||
],
|
||||
"users_unchanged": true,
|
||||
"backup_valid": true,
|
||||
"backup_sha256": "2eed6d9f775d8d5dc8c7b1606e230b8782c09a69098d31e659d9ad28a4d608fa",
|
||||
"centres": [
|
||||
{
|
||||
"id": 1,
|
||||
"tenant_id": 1,
|
||||
"company_id": 1,
|
||||
"unit_id": 1,
|
||||
"code": "SINTETICO-REPRO"
|
||||
}
|
||||
],
|
||||
"budgets": [
|
||||
{
|
||||
"id": 1,
|
||||
"tenant_id": 1,
|
||||
"company_id": 1,
|
||||
"unit_id": 1,
|
||||
"cost_center_id": 1,
|
||||
"year": 2026,
|
||||
"kind": "operating",
|
||||
"amount_minor": 1000000,
|
||||
"includes_tax": true,
|
||||
"reason": "Owner-authorised synthetic 10000 MZN allocation for 2026.",
|
||||
"created_by": 1,
|
||||
"approved_by": 2,
|
||||
"approved_at": "2026-11-02 07:26:05",
|
||||
"created_at": "2026-11-02 07:26:04",
|
||||
"updated_at": "2026-11-02 07:26:05"
|
||||
}
|
||||
],
|
||||
"requests": [
|
||||
{
|
||||
"id": 1,
|
||||
"status": "approved",
|
||||
"requester_id": 1,
|
||||
"version": 3,
|
||||
"total_minor": 10000
|
||||
}
|
||||
],
|
||||
"steps": [
|
||||
{
|
||||
"id": 1,
|
||||
"tenant_id": 1,
|
||||
"company_id": 1,
|
||||
"unit_id": 1,
|
||||
"request_id": 1,
|
||||
"position": 1,
|
||||
"role": "department_head",
|
||||
"decision": "approved",
|
||||
"approver_id": 2,
|
||||
"comment": null,
|
||||
"decided_at": "2026-11-02 07:26:19"
|
||||
}
|
||||
],
|
||||
"entries": [
|
||||
{
|
||||
"id": 1,
|
||||
"tenant_id": 1,
|
||||
"company_id": 1,
|
||||
"unit_id": 1,
|
||||
"budget_id": 1,
|
||||
"requisition_id": 1,
|
||||
"created_by": 1,
|
||||
"kind": "reserve",
|
||||
"reserved_minor": 10000,
|
||||
"committed_minor": 0,
|
||||
"created_at": "2026-11-02 07:26:06"
|
||||
}
|
||||
],
|
||||
"policy": [
|
||||
{
|
||||
"id": 1,
|
||||
"tenant_id": 1,
|
||||
"company_id": 1,
|
||||
"unit_id": 1,
|
||||
"version": 1,
|
||||
"actor_id": 1,
|
||||
"payload": "{\"reason\": \"Owner-confirmed synthetic OPER policy, demonstration 8039 only.\", \"centres\": [{\"id\": 1, \"department_ref\": \"OPER\"}], \"enabled\": true, \"members\": [{\"user_id\": 1, \"department_ref\": \"OPER\"}, {\"user_id\": 2, \"department_ref\": \"OPER\"}], \"budget_required\": true, \"first_limit_minor\": 1000000, \"rules_provisional\": false, \"second_limit_minor\": 2000000, \"approval_includes_tax\": true}",
|
||||
"created_at": "2026-11-02 07:26:05"
|
||||
}
|
||||
],
|
||||
"initialisation_scopes": [],
|
||||
"operational": {
|
||||
"enabled": true,
|
||||
"target": "57f6d55203a3f2ed18713549475f959d7d907165ff793c049450e78b535051bf",
|
||||
"scopes": [
|
||||
"1:1:1"
|
||||
]
|
||||
},
|
||||
"pointer_unchanged": true,
|
||||
"real_installation_snapshot_preserved": true,
|
||||
"real_snapshot": {
|
||||
"database": {
|
||||
"database": "sgf_tempo_dev",
|
||||
"role": "sgf_dev_app",
|
||||
"port": 55432
|
||||
},
|
||||
"tables": {
|
||||
"permission_grants": {
|
||||
"rows": 89,
|
||||
"fingerprint": "f4546a8af83c965f7088ba47f55e0fec"
|
||||
},
|
||||
"company_memberships": {
|
||||
"rows": 2,
|
||||
"fingerprint": "f5462c7d3b1f5c75d70450dc6b61990e"
|
||||
},
|
||||
"identity_audit": {
|
||||
"rows": 162,
|
||||
"fingerprint": "cbff39d0e77e9bd7c3cafb4a5d574591"
|
||||
}
|
||||
},
|
||||
"guard_sha256": "42708432fa029e3e52743016b6c6b6d734a3e6cd5d3ed266a29ecfcf38a6e371",
|
||||
"purchasing_pointer_sha256": "81899e531e9eec449717e694d8bdc106a9e220a828f5491ce918c1d2dc612787"
|
||||
},
|
||||
"execution_proofs_reused": true,
|
||||
"checked_at": "2026-11-02T07:28:00.363Z"
|
||||
}
|
||||
@@ -0,0 +1,81 @@
|
||||
{
|
||||
"checked_at": "2026-11-02T06:43:39+00:00",
|
||||
"host": "C:\\laragon\\www\\sgf-tempo",
|
||||
"app_url": "http://127.0.0.1:8000",
|
||||
"environment": "local",
|
||||
"php": "8.4.27",
|
||||
"database": {
|
||||
"driver": "pgsql",
|
||||
"configured_host": "127.0.0.1",
|
||||
"configured_port": "55432",
|
||||
"configured_database": "sgf_tempo_dev",
|
||||
"actual": {
|
||||
"database": "sgf_tempo_dev",
|
||||
"address": "127.0.0.1/32",
|
||||
"port": 55432
|
||||
}
|
||||
},
|
||||
"schema": {
|
||||
"public_table_count": 87,
|
||||
"missing_foundation": [
|
||||
|
||||
],
|
||||
"existing_budget_tables": [
|
||||
|
||||
],
|
||||
"existing_integration_tables": [
|
||||
|
||||
],
|
||||
"budget_ui_support_tables_present": [
|
||||
|
||||
],
|
||||
"permission_column_length": 40,
|
||||
"scope_constraint_present": true,
|
||||
"scope_constraint_sha256": "25044df129dc69efe8e9411c6b2f82558982cc37da7b478b771d1e58842025e0",
|
||||
"ddl_privileges": {
|
||||
"can_create": false,
|
||||
"can_alter_permissions": false
|
||||
}
|
||||
},
|
||||
"database_roles": {
|
||||
"runtime_role": "sgf_dev_app",
|
||||
"permissions_owner": "sgf_dev_owner"
|
||||
},
|
||||
"config_cached": false,
|
||||
"owner_capabilities": {
|
||||
"can_login": true,
|
||||
"can_create_public": true
|
||||
},
|
||||
"preservation_baseline": {
|
||||
"permission_grants": {
|
||||
"rows": 89,
|
||||
"sha256": "714dfbbbed4a19c1d3e10077b020ec6d06334cbc2b538820808f73d06593bd59"
|
||||
},
|
||||
"company_memberships": {
|
||||
"rows": 2,
|
||||
"sha256": "562084217604e0bd153e36375251db9e4e87f92c744c69d38d2a39c7821454e5"
|
||||
},
|
||||
"identity_audit": {
|
||||
"rows": 162,
|
||||
"sha256": "6d05de68554ab9a06d8c6a8132bb3f1ff99e19d06ed6294353b40e6084a9e4b1"
|
||||
}
|
||||
},
|
||||
"organisation_counts": {
|
||||
"companies": 1,
|
||||
"units": 1,
|
||||
"company_admin_grants": 1
|
||||
},
|
||||
"purchasing_pointer": {
|
||||
"version": "0.1.1",
|
||||
"manifest_sha256": "91ba35ee3aa1ca226052c94ed682e430cb7870beb241f16b17d889046e1f711d",
|
||||
"source_sha256": "692921d9e7e57579df876fbd9239d37790fc49d7b96b92fa10514bdc9a1dc250",
|
||||
"previous": "0.1.0",
|
||||
"audit_id": "8d922d5b757723be97f7c5f7"
|
||||
},
|
||||
"pointer_sha256": "81899e531e9eec449717e694d8bdc106a9e220a828f5491ce918c1d2dc612787",
|
||||
"bundle_exists": false,
|
||||
"maintenance_marker_present": false,
|
||||
"operational_config_file_present": false,
|
||||
"read_only_transaction": true,
|
||||
"installed": false
|
||||
}
|
||||
@@ -0,0 +1,102 @@
|
||||
-- PROPOSTA NAO AUTORIZADA. NAO EXECUTAR.
|
||||
-- Depois da migracao revisao 2; ligacao migradora da base nova apenas.
|
||||
BEGIN;
|
||||
DO $$ BEGIN
|
||||
IF current_database() <> 'sgf_ir_dev_401c_20261102' OR inet_server_port() <> 55441 OR current_user <> 'sgf_ir_owner_401c' THEN
|
||||
RAISE EXCEPTION 'Destino/role de proposta divergente';
|
||||
END IF;
|
||||
IF NOT EXISTS (SELECT 1 FROM sgc_installations WHERE module='internal-requisitions' AND revision=2) THEN
|
||||
RAISE EXCEPTION 'Migracao revisao 2 nao conferida';
|
||||
END IF;
|
||||
END $$;
|
||||
REVOKE ALL PRIVILEGES ON TABLE public."cb_centres" FROM "sgf_ir_app_401c";
|
||||
REVOKE ALL PRIVILEGES ON TABLE public."cb_centres" FROM PUBLIC;
|
||||
GRANT SELECT, INSERT ON TABLE public."cb_centres" TO "sgf_ir_app_401c";
|
||||
REVOKE ALL PRIVILEGES ON SEQUENCE public."cb_centres_id_seq" FROM "sgf_ir_app_401c";
|
||||
REVOKE ALL PRIVILEGES ON SEQUENCE public."cb_centres_id_seq" FROM PUBLIC;
|
||||
GRANT USAGE ON SEQUENCE public."cb_centres_id_seq" TO "sgf_ir_app_401c";
|
||||
REVOKE ALL PRIVILEGES ON TABLE public."cb_origins" FROM "sgf_ir_app_401c";
|
||||
REVOKE ALL PRIVILEGES ON TABLE public."cb_origins" FROM PUBLIC;
|
||||
GRANT SELECT, INSERT ON TABLE public."cb_origins" TO "sgf_ir_app_401c";
|
||||
REVOKE ALL PRIVILEGES ON SEQUENCE public."cb_origins_id_seq" FROM "sgf_ir_app_401c";
|
||||
REVOKE ALL PRIVILEGES ON SEQUENCE public."cb_origins_id_seq" FROM PUBLIC;
|
||||
GRANT USAGE ON SEQUENCE public."cb_origins_id_seq" TO "sgf_ir_app_401c";
|
||||
REVOKE ALL PRIVILEGES ON TABLE public."cb_budgets" FROM "sgf_ir_app_401c";
|
||||
REVOKE ALL PRIVILEGES ON TABLE public."cb_budgets" FROM PUBLIC;
|
||||
GRANT SELECT, INSERT, UPDATE ON TABLE public."cb_budgets" TO "sgf_ir_app_401c";
|
||||
REVOKE ALL PRIVILEGES ON SEQUENCE public."cb_budgets_id_seq" FROM "sgf_ir_app_401c";
|
||||
REVOKE ALL PRIVILEGES ON SEQUENCE public."cb_budgets_id_seq" FROM PUBLIC;
|
||||
GRANT USAGE ON SEQUENCE public."cb_budgets_id_seq" TO "sgf_ir_app_401c";
|
||||
REVOKE ALL PRIVILEGES ON TABLE public."cb_budget_entries" FROM "sgf_ir_app_401c";
|
||||
REVOKE ALL PRIVILEGES ON TABLE public."cb_budget_entries" FROM PUBLIC;
|
||||
GRANT SELECT, INSERT ON TABLE public."cb_budget_entries" TO "sgf_ir_app_401c";
|
||||
REVOKE ALL PRIVILEGES ON SEQUENCE public."cb_budget_entries_id_seq" FROM "sgf_ir_app_401c";
|
||||
REVOKE ALL PRIVILEGES ON SEQUENCE public."cb_budget_entries_id_seq" FROM PUBLIC;
|
||||
GRANT USAGE ON SEQUENCE public."cb_budget_entries_id_seq" TO "sgf_ir_app_401c";
|
||||
REVOKE ALL PRIVILEGES ON TABLE public."cb_audit" FROM "sgf_ir_app_401c";
|
||||
REVOKE ALL PRIVILEGES ON TABLE public."cb_audit" FROM PUBLIC;
|
||||
GRANT SELECT, INSERT ON TABLE public."cb_audit" TO "sgf_ir_app_401c";
|
||||
REVOKE ALL PRIVILEGES ON SEQUENCE public."cb_audit_id_seq" FROM "sgf_ir_app_401c";
|
||||
REVOKE ALL PRIVILEGES ON SEQUENCE public."cb_audit_id_seq" FROM PUBLIC;
|
||||
GRANT USAGE ON SEQUENCE public."cb_audit_id_seq" TO "sgf_ir_app_401c";
|
||||
REVOKE ALL PRIVILEGES ON TABLE public."cb_ui_commands" FROM "sgf_ir_app_401c";
|
||||
REVOKE ALL PRIVILEGES ON TABLE public."cb_ui_commands" FROM PUBLIC;
|
||||
GRANT SELECT, INSERT ON TABLE public."cb_ui_commands" TO "sgf_ir_app_401c";
|
||||
REVOKE ALL PRIVILEGES ON SEQUENCE public."cb_ui_commands_id_seq" FROM "sgf_ir_app_401c";
|
||||
REVOKE ALL PRIVILEGES ON SEQUENCE public."cb_ui_commands_id_seq" FROM PUBLIC;
|
||||
GRANT USAGE ON SEQUENCE public."cb_ui_commands_id_seq" TO "sgf_ir_app_401c";
|
||||
REVOKE ALL PRIVILEGES ON TABLE public."cb_budget_consumptions" FROM "sgf_ir_app_401c";
|
||||
REVOKE ALL PRIVILEGES ON TABLE public."cb_budget_consumptions" FROM PUBLIC;
|
||||
GRANT SELECT ON TABLE public."cb_budget_consumptions" TO "sgf_ir_app_401c";
|
||||
REVOKE ALL PRIVILEGES ON SEQUENCE public."cb_budget_consumptions_id_seq" FROM "sgf_ir_app_401c";
|
||||
REVOKE ALL PRIVILEGES ON SEQUENCE public."cb_budget_consumptions_id_seq" FROM PUBLIC;
|
||||
REVOKE ALL PRIVILEGES ON TABLE public."cb_budget_reinforcements" FROM "sgf_ir_app_401c";
|
||||
REVOKE ALL PRIVILEGES ON TABLE public."cb_budget_reinforcements" FROM PUBLIC;
|
||||
GRANT SELECT ON TABLE public."cb_budget_reinforcements" TO "sgf_ir_app_401c";
|
||||
REVOKE ALL PRIVILEGES ON SEQUENCE public."cb_budget_reinforcements_id_seq" FROM "sgf_ir_app_401c";
|
||||
REVOKE ALL PRIVILEGES ON SEQUENCE public."cb_budget_reinforcements_id_seq" FROM PUBLIC;
|
||||
REVOKE ALL PRIVILEGES ON TABLE public."cb_consumption_sources" FROM "sgf_ir_app_401c";
|
||||
REVOKE ALL PRIVILEGES ON TABLE public."cb_consumption_sources" FROM PUBLIC;
|
||||
GRANT SELECT ON TABLE public."cb_consumption_sources" TO "sgf_ir_app_401c";
|
||||
REVOKE ALL PRIVILEGES ON SEQUENCE public."cb_consumption_sources_id_seq" FROM "sgf_ir_app_401c";
|
||||
REVOKE ALL PRIVILEGES ON SEQUENCE public."cb_consumption_sources_id_seq" FROM PUBLIC;
|
||||
REVOKE ALL PRIVILEGES ON TABLE public."ir_requests" FROM "sgf_ir_app_401c";
|
||||
REVOKE ALL PRIVILEGES ON TABLE public."ir_requests" FROM PUBLIC;
|
||||
GRANT SELECT, INSERT, UPDATE ON TABLE public."ir_requests" TO "sgf_ir_app_401c";
|
||||
REVOKE ALL PRIVILEGES ON SEQUENCE public."ir_requests_id_seq" FROM "sgf_ir_app_401c";
|
||||
REVOKE ALL PRIVILEGES ON SEQUENCE public."ir_requests_id_seq" FROM PUBLIC;
|
||||
GRANT USAGE ON SEQUENCE public."ir_requests_id_seq" TO "sgf_ir_app_401c";
|
||||
REVOKE ALL PRIVILEGES ON TABLE public."ir_steps" FROM "sgf_ir_app_401c";
|
||||
REVOKE ALL PRIVILEGES ON TABLE public."ir_steps" FROM PUBLIC;
|
||||
GRANT SELECT, INSERT, UPDATE ON TABLE public."ir_steps" TO "sgf_ir_app_401c";
|
||||
REVOKE ALL PRIVILEGES ON SEQUENCE public."ir_steps_id_seq" FROM "sgf_ir_app_401c";
|
||||
REVOKE ALL PRIVILEGES ON SEQUENCE public."ir_steps_id_seq" FROM PUBLIC;
|
||||
GRANT USAGE ON SEQUENCE public."ir_steps_id_seq" TO "sgf_ir_app_401c";
|
||||
REVOKE ALL PRIVILEGES ON TABLE public."ir_policies" FROM "sgf_ir_app_401c";
|
||||
REVOKE ALL PRIVILEGES ON TABLE public."ir_policies" FROM PUBLIC;
|
||||
GRANT SELECT, INSERT, UPDATE ON TABLE public."ir_policies" TO "sgf_ir_app_401c";
|
||||
REVOKE ALL PRIVILEGES ON SEQUENCE public."ir_policies_id_seq" FROM "sgf_ir_app_401c";
|
||||
REVOKE ALL PRIVILEGES ON SEQUENCE public."ir_policies_id_seq" FROM PUBLIC;
|
||||
GRANT USAGE ON SEQUENCE public."ir_policies_id_seq" TO "sgf_ir_app_401c";
|
||||
REVOKE ALL PRIVILEGES ON TABLE public."ir_events" FROM "sgf_ir_app_401c";
|
||||
REVOKE ALL PRIVILEGES ON TABLE public."ir_events" FROM PUBLIC;
|
||||
GRANT SELECT, INSERT ON TABLE public."ir_events" TO "sgf_ir_app_401c";
|
||||
REVOKE ALL PRIVILEGES ON SEQUENCE public."ir_events_id_seq" FROM "sgf_ir_app_401c";
|
||||
REVOKE ALL PRIVILEGES ON SEQUENCE public."ir_events_id_seq" FROM PUBLIC;
|
||||
GRANT USAGE ON SEQUENCE public."ir_events_id_seq" TO "sgf_ir_app_401c";
|
||||
REVOKE ALL PRIVILEGES ON TABLE public."ir_commands" FROM "sgf_ir_app_401c";
|
||||
REVOKE ALL PRIVILEGES ON TABLE public."ir_commands" FROM PUBLIC;
|
||||
GRANT SELECT, INSERT ON TABLE public."ir_commands" TO "sgf_ir_app_401c";
|
||||
REVOKE ALL PRIVILEGES ON SEQUENCE public."ir_commands_id_seq" FROM "sgf_ir_app_401c";
|
||||
REVOKE ALL PRIVILEGES ON SEQUENCE public."ir_commands_id_seq" FROM PUBLIC;
|
||||
GRANT USAGE ON SEQUENCE public."ir_commands_id_seq" TO "sgf_ir_app_401c";
|
||||
REVOKE ALL PRIVILEGES ON TABLE public."ir_policy_versions" FROM "sgf_ir_app_401c";
|
||||
REVOKE ALL PRIVILEGES ON TABLE public."ir_policy_versions" FROM PUBLIC;
|
||||
GRANT SELECT, INSERT ON TABLE public."ir_policy_versions" TO "sgf_ir_app_401c";
|
||||
REVOKE ALL PRIVILEGES ON SEQUENCE public."ir_policy_versions_id_seq" FROM "sgf_ir_app_401c";
|
||||
REVOKE ALL PRIVILEGES ON SEQUENCE public."ir_policy_versions_id_seq" FROM PUBLIC;
|
||||
GRANT USAGE ON SEQUENCE public."ir_policy_versions_id_seq" TO "sgf_ir_app_401c";
|
||||
REVOKE ALL PRIVILEGES ON TABLE public."sgc_installations" FROM "sgf_ir_app_401c";
|
||||
REVOKE ALL PRIVILEGES ON TABLE public."sgc_installations" FROM PUBLIC;
|
||||
GRANT SELECT ON TABLE public."sgc_installations" TO "sgf_ir_app_401c";
|
||||
COMMIT;
|
||||
@@ -0,0 +1,25 @@
|
||||
-- PROPOSTA NAO AUTORIZADA. NAO EXECUTAR.
|
||||
-- Ligacao administrativa EXCLUSIVAMENTE ao cluster novo 55441.
|
||||
-- Executar com ON_ERROR_STOP; sem reutilizar roles/bases existentes.
|
||||
DO $$ BEGIN
|
||||
IF inet_server_port() <> 55441 OR current_setting('cluster_name') <> 'sgf_ir_401c_20261102' THEN
|
||||
RAISE EXCEPTION 'Cluster novo obrigatorio';
|
||||
END IF;
|
||||
IF EXISTS (SELECT 1 FROM pg_roles WHERE rolname IN ('sgf_ir_owner_401c','sgf_ir_app_401c'))
|
||||
OR EXISTS (SELECT 1 FROM pg_database WHERE datname='sgf_ir_dev_401c_20261102') THEN
|
||||
RAISE EXCEPTION 'Destino ja existe; reconciliar sem sobrepor';
|
||||
END IF;
|
||||
END $$;
|
||||
CREATE ROLE sgf_ir_owner_401c NOLOGIN NOSUPERUSER NOCREATEDB NOCREATEROLE NOINHERIT NOREPLICATION NOBYPASSRLS;
|
||||
CREATE ROLE sgf_ir_app_401c NOLOGIN NOSUPERUSER NOCREATEDB NOCREATEROLE NOINHERIT NOREPLICATION NOBYPASSRLS;
|
||||
CREATE DATABASE sgf_ir_dev_401c_20261102 OWNER sgf_ir_owner_401c;
|
||||
REVOKE ALL ON DATABASE sgf_ir_dev_401c_20261102 FROM PUBLIC;
|
||||
GRANT CONNECT ON DATABASE sgf_ir_dev_401c_20261102 TO sgf_ir_app_401c;
|
||||
-- Na base nova, depois de restaurar sem owner/ACL com sgf_ir_owner_401c:
|
||||
-- REVOKE CREATE ON SCHEMA public FROM PUBLIC;
|
||||
-- REVOKE CREATE ON SCHEMA public FROM sgf_ir_app_401c;
|
||||
-- GRANT USAGE ON SCHEMA public TO sgf_ir_app_401c;
|
||||
-- Sem filiacoes entre roles, GRANT ALL ou DEFAULT PRIVILEGES globais.
|
||||
-- Provisionamento privado posterior: duas senhas SCRAM aleatorias/distintas,
|
||||
-- activar LOGIN nas duas roles apenas com HBA restrita a esta base/loopback.
|
||||
-- Nenhuma senha faz parte deste ficheiro; nenhuma role existente e alterada.
|
||||
@@ -0,0 +1,119 @@
|
||||
{
|
||||
"proposal_id": "SGF-IR-USABLE-401C-20261102",
|
||||
"state": "proposed_not_executed",
|
||||
"synthetic_only": true,
|
||||
"destination": {
|
||||
"root": "C:/laragon/data/sgf-tempo/run/ir-usable-401c-20261102/app",
|
||||
"environment": "local",
|
||||
"url": "http://127.0.0.1:8041",
|
||||
"database": "sgf_ir_dev_401c_20261102",
|
||||
"cluster": "sgf_ir_401c_20261102",
|
||||
"port": 55441,
|
||||
"migrator": "sgf_ir_owner_401c",
|
||||
"runtime": "sgf_ir_app_401c"
|
||||
},
|
||||
"source": {
|
||||
"database": "sgf_modules_dev_2576427d1939",
|
||||
"port": 55439,
|
||||
"tables": 93,
|
||||
"new_module_tables_present": false,
|
||||
"source_is_synthetic": true,
|
||||
"existing_runtime_owns_tables": true,
|
||||
"existing_runtime_can_create": true,
|
||||
"candidate_nine_baselines_match": true,
|
||||
"modified": false
|
||||
},
|
||||
"scope": {
|
||||
"tenant": 1,
|
||||
"company": 1,
|
||||
"unit": 1,
|
||||
"company_name": "Empresa Horizonte ? Demonstra??o",
|
||||
"unit_name": "Unidade Central ? Demonstra??o",
|
||||
"centre": "SYN-IR-401C",
|
||||
"department": "SYN-OPER"
|
||||
},
|
||||
"budget": {
|
||||
"currency": "MZN",
|
||||
"year": 2026,
|
||||
"kind": "operating",
|
||||
"amount_minor": 5000000,
|
||||
"includes_tax": true
|
||||
},
|
||||
"policy": {
|
||||
"enabled": true,
|
||||
"budget_required": true,
|
||||
"approval_includes_tax": true,
|
||||
"first_limit_minor": 1000000,
|
||||
"second_limit_minor": 2000000
|
||||
},
|
||||
"accounts": {
|
||||
"reused_synthetic_ids": [
|
||||
1,
|
||||
2,
|
||||
3
|
||||
],
|
||||
"new_synthetic_emails": [
|
||||
"admin-ir-401c@example.test",
|
||||
"compras-ir-401c@example.test",
|
||||
"financeiro-ir-401c@example.test"
|
||||
],
|
||||
"real_accounts_changed": false
|
||||
},
|
||||
"migration": {
|
||||
"revision": 2,
|
||||
"expected_before": 93,
|
||||
"new_tables": 16,
|
||||
"expected_after": 109,
|
||||
"runtime_sql_map": "SqlPrivileges::plan(sgf_ir_app_401c)",
|
||||
"legacy_destination_hashes_not_reusable": true
|
||||
},
|
||||
"preservation": {
|
||||
"real_database": "sgf_tempo_dev",
|
||||
"real_database_write": false,
|
||||
"existing_demo_write": false,
|
||||
"purchasing_version": "0.1.1",
|
||||
"visual_review_separate": true,
|
||||
"legacy_associations_not_inferred": true,
|
||||
"pagination_pending": true,
|
||||
"publishing": false
|
||||
},
|
||||
"proof_reuse": {
|
||||
"integrated_checks": 157,
|
||||
"ui_checks": 17,
|
||||
"deployment_checks": 54,
|
||||
"new_destination_provisioned": false,
|
||||
"new_destination_tests_executed": false
|
||||
},
|
||||
"confirmation_required": true,
|
||||
"administrator_closure": {
|
||||
"email": "admin-ir-401c@example.test",
|
||||
"scope": "1:1:1",
|
||||
"remove_via_audited_native_revocation": [
|
||||
"purchasing_requisitions.prepare",
|
||||
"purchasing_requisitions.approve.department_head",
|
||||
"purchasing_requisitions.approve.procurement",
|
||||
"purchasing_requisitions.approve.finance",
|
||||
"purchasing_budget.approve",
|
||||
"purchasing_budget.record"
|
||||
],
|
||||
"retain": [
|
||||
"company.view",
|
||||
"access.manage",
|
||||
"unit.view",
|
||||
"purchasing_requisitions.view",
|
||||
"purchasing_requisitions.configure",
|
||||
"purchasing_budget.view",
|
||||
"purchasing_budget.create"
|
||||
],
|
||||
"initialisation_scopes_after": [],
|
||||
"implicit_reinitialisation": false,
|
||||
"delegation_of_removed_rights_after_closure": false,
|
||||
"existing_preparer_access_manage_unchanged": true
|
||||
},
|
||||
"final_new_object_sql": {
|
||||
"file": "sgf-ir-401c-new-objects.sql",
|
||||
"role": "sgf_ir_app_401c",
|
||||
"sha256": "c903156a5bbc3cc440b2cfcc6c05ff3a8ec606710572faf4744bcb7708ffcc14",
|
||||
"executed": false
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,205 @@
|
||||
{
|
||||
"date": "2026-11-02",
|
||||
"increment": "SGF-PAYABLE-HISTORY-RECEIPT-SIM-v1",
|
||||
"status": "local_synthetic_adapter_implemented",
|
||||
"regression": {
|
||||
"kind": "sgf_historical_payable_adapter_synthetic",
|
||||
"cases": [
|
||||
{
|
||||
"name": "default-disabled-and-old-path-preserved",
|
||||
"assertions": 4,
|
||||
"passed": true
|
||||
},
|
||||
{
|
||||
"name": "principal-confirmed-only-and-idempotency",
|
||||
"assertions": 16,
|
||||
"passed": true
|
||||
},
|
||||
{
|
||||
"name": "receipt-integrity-and-identity-refusals",
|
||||
"assertions": 6,
|
||||
"passed": true
|
||||
},
|
||||
{
|
||||
"name": "complete-compatible-payment-facts-required",
|
||||
"assertions": 7,
|
||||
"passed": true
|
||||
},
|
||||
{
|
||||
"name": "changed-history-requires-new-conference",
|
||||
"assertions": 3,
|
||||
"passed": true
|
||||
},
|
||||
{
|
||||
"name": "permissions-person-and-context-revalidated",
|
||||
"assertions": 5,
|
||||
"passed": true
|
||||
},
|
||||
{
|
||||
"name": "audit-and-import-failure-atomic-recovery",
|
||||
"assertions": 3,
|
||||
"passed": true
|
||||
},
|
||||
{
|
||||
"name": "receipt-append-only-and-existing-controller",
|
||||
"assertions": 3,
|
||||
"passed": true
|
||||
},
|
||||
{
|
||||
"name": "invalid-receipt-keeps-history-readable-and-balance-indeterminate",
|
||||
"assertions": 2,
|
||||
"passed": true
|
||||
},
|
||||
{
|
||||
"name": "concurrent-confirmations-wait-and-replay-one-import",
|
||||
"assertions": 7,
|
||||
"passed": true
|
||||
}
|
||||
],
|
||||
"tests": 10,
|
||||
"assertions": 56,
|
||||
"principal_minor": 6000,
|
||||
"confirmed_minor": 3000,
|
||||
"pending_minor": 1000,
|
||||
"rejected_minor": 500,
|
||||
"balance_minor": 3000,
|
||||
"shared_engine_unchanged": true,
|
||||
"native_source_preparation_only": true,
|
||||
"actual_http_kernel_tested": false,
|
||||
"browser_interactions_tested": false,
|
||||
"visual_review": false,
|
||||
"deployment_capacity_validated": false
|
||||
},
|
||||
"actual_http": {
|
||||
"kind": "sgf_historical_payable_actual_http_kernel",
|
||||
"assertions": 17,
|
||||
"passed": true,
|
||||
"existing_html_reused": true,
|
||||
"csrf_and_context_enforced": true,
|
||||
"reader_write_refused": true,
|
||||
"no_pending_payment_decision_route_added": true,
|
||||
"one_obligation_same_balance_after_replay": true,
|
||||
"visual_review": false,
|
||||
"browser_interactions_tested": false
|
||||
},
|
||||
"postchecks": {
|
||||
"native": {
|
||||
"originals_unchanged": true,
|
||||
"originals_sha256": "7cc42c8ce33ac04623ed50defde66083c1134903e4f11cd6825f10082214dc17",
|
||||
"native_obligations": 0,
|
||||
"payments": [
|
||||
"confirmed",
|
||||
"pending",
|
||||
"rejected"
|
||||
],
|
||||
"read_only_observation": true
|
||||
},
|
||||
"sgf": {
|
||||
"read_only": true,
|
||||
"one_obligation": true,
|
||||
"one_history_import": true,
|
||||
"original_source_unchanged": true,
|
||||
"source_receipt_sha256": "89120aea0ad23e3f1454f87e905d8ccb80123e04636f5e2cd60e71015fa7c376",
|
||||
"imported_payments": 3,
|
||||
"states": [
|
||||
"confirmed",
|
||||
"pending",
|
||||
"rejected"
|
||||
],
|
||||
"recognition_events": 1,
|
||||
"history_events": 1,
|
||||
"principal_minor": 6000,
|
||||
"confirmed_minor": 3000,
|
||||
"pending_minor": 1000,
|
||||
"rejected_minor": 500,
|
||||
"pending_decision_schema_installed": false,
|
||||
"default_feature_enabled": false
|
||||
}
|
||||
},
|
||||
"private_evidence_sha256": {
|
||||
"source.json": "bae0a2ab8bc0f6ff2b02fc1bab80192aa96e24d6babe879a278c093e642e02e7",
|
||||
"regression.json": "3cb8d648249e22c00447602107c1939abc03650173a6d11ccb0f23df59e0fe44",
|
||||
"http-proof.json": "86783db1c62563f7e718297d1cbefa5d850dc00cd1f85db83491cee040f1b27a",
|
||||
"native-post.json": "b7952b8c7f6dae5fa0ae4a38d5c3fc29c87d77ed4d4f345a9e72dd7bc401c812",
|
||||
"sgf-post.json": "a9507f617e22ec497c2d7b9a62a2f8bab6ae4218d4290708b4cd41ac88ecc6af"
|
||||
},
|
||||
"source_provenance": {
|
||||
"actual_native_receipt_and_invoice_workflows": true,
|
||||
"actual_original_payment_registration_and_independent_review": true,
|
||||
"native_history_capture_by_existing_engine": true,
|
||||
"native_common_obligation_recognised": false,
|
||||
"source_only_fresh_owned_qa_database": true,
|
||||
"bank_details_and_encrypted_references_not_exported": true,
|
||||
"receipt_checksum_proves_integrity_not_external_authenticity": true,
|
||||
"sgf_receipt_mapping_explicit_in_qa_seed": true
|
||||
},
|
||||
"scenario": {
|
||||
"currency": "MZN",
|
||||
"principal_minor": 6000,
|
||||
"confirmed_minor": 3000,
|
||||
"pending_minor": 1000,
|
||||
"rejected_minor": 500,
|
||||
"balance_minor": 3000,
|
||||
"due_on": null,
|
||||
"days_overdue": null,
|
||||
"no_pending_payment_decision": true,
|
||||
"no_new_financial_engine": true
|
||||
},
|
||||
"concurrency": {
|
||||
"processes": 2,
|
||||
"company_row_blocker_observed_with_pg_blocking_pids": true,
|
||||
"second_waited_then_replayed_original": true,
|
||||
"obligations": 1,
|
||||
"history_imports": 1,
|
||||
"imported_payments": 3
|
||||
},
|
||||
"isolation": {
|
||||
"dedicated_native_and_sgf_databases": true,
|
||||
"port": 55439,
|
||||
"restricted_qa_roles": true,
|
||||
"read_write_permission_and_company_context_revalidated": true,
|
||||
"no_real_or_demo_access_grants": true
|
||||
},
|
||||
"source_sha256": {
|
||||
"app/Modules/Purchasing/SupplierHistoryReceipts.php": "002966f5559261d79d57c600d8cdde31d701e0beb812e04b4ac5cea48f6cfc47",
|
||||
"app/Modules/Purchasing/SupplierPayables.php": "5f5c11df105400c7f658bb0c0b91cb23d4fd54104ceadfc3432846b5ba66d573",
|
||||
"config/supplier_payable_history.php": "5331b7987fdb5f8fdb9647e6cf74145f91aca333a7e4c21f98092827893b85ce",
|
||||
"app/Modules/Purchasing/SupplierPayablesController.php": "a2adad624794a96d22358ff8e9a5e64846b68111674ed2cef9fd8cf7afafb883",
|
||||
"routes/web.php": "33f1e1c11d978d018e33dd57e284d0038b95cdb2bf91a99bd4bfcbabc6d80993",
|
||||
"packages/payables/src/Payables.php": "dafc76371767b0a9794f0822553e60392a8aa2c270dea8d78ff701a56f5f5bc9",
|
||||
"packages/payables/src/HistoricalPayments.php": "59576afb1b2209fe08e4d1d45be22e364746a815316749ddcfa19930281dbb3d",
|
||||
"packages/payables/ui/page.php": "a6757dda5b59eea4ae8565bbbfb2eba6cdd56b1e11ccff4a3943323a520deb9e",
|
||||
"scripts/payable-history-sgf-run.mjs": "677621591056e057f2e76625f22030e7a5099739424b60e1d45b2628ad616622",
|
||||
"scripts/payable-history-sgf-proof.php": "0abd69b6595959413c3a33150c6cdde1add8a81ea378fec4d56f42c103b2d1b8",
|
||||
"scripts/payable-history-sgf-cases.php": "22324185e398e62b3d7207dea4dbb74b7e47f5a581d6335f10e1fd7114e2ec11",
|
||||
"scripts/payable-history-sgf-http.mjs": "ff2f965d27e3ff60cb02fa87bedf00ea17362dbde032972e574a4749905d3fb0",
|
||||
"scripts/payable-history-sgf-http-router.php": "82b110af26e4dcfcdf1b078108adb701ca51711485c7a385c726a5812a8b9afe"
|
||||
},
|
||||
"reused_proofs": {
|
||||
"docs/proofs/workshop-stock-closure-20261102.json": "261d5502f6905d53ef8046e0e900c9bee159c8c9d7e1bae4fddd8ec698313bf7",
|
||||
"docs/proofs/native-warehouse-return-20261102.json": "587795ab4d2b2e65d51feaf7ed5e368df715d69cb7a0480f5f2b1d802d019869",
|
||||
"docs/proofs/module-association-http-lock-summary-20261102.json": "67547007f8f9df853639751983c5a6fd0841044cb0e04a7628db04c4b67692c6"
|
||||
},
|
||||
"verification_scope": "Ten directed scenarios (56 assertions) plus 17 actual HTTP checks. Current adapter callbacks, shared controller/UI, receipt validation and concurrency exercised. Native original facts postchecked read-only. Earlier suites not repeated; no JavaScript or Vite build required for this PHP/template change.",
|
||||
"preservation": {
|
||||
"six_pending_associations_untouched": true,
|
||||
"blocked_cache_untouched": true,
|
||||
"demos_and_installed_databases_untouched": true,
|
||||
"previous_proofs_preserved": true,
|
||||
"no_real_migration_or_rights": true,
|
||||
"qa_databases_and_evidence_retained": true,
|
||||
"purchasing_activation": false,
|
||||
"publication": false,
|
||||
"checkpoint": false
|
||||
},
|
||||
"limits": [
|
||||
"Reads explicitly seeded immutable historical receipts, not live native payment history.",
|
||||
"No operational receipt publisher/importer, authentication of external provenance or responsibility cutover installed. Hashes alone do not authenticate an external source.",
|
||||
"No common financial obligation was recognised in the native source; this is QA adapter evidence, not proof that simultaneously operated native/SGF installations share financial authority.",
|
||||
"Pending/rejected original payments retain state; imported pending-payment decisions, new payments and banking are not added in SGF.",
|
||||
"Existing financial listing remains unpaginated; no load/capacity claim or general financial consolidation claim.",
|
||||
"No accounting postings, operational activation, browser interaction or visual review."
|
||||
],
|
||||
"visual_review_pending": true,
|
||||
"deployment_capacity_validated": false
|
||||
}
|
||||
@@ -0,0 +1,104 @@
|
||||
{
|
||||
"runtime_role": "sgf_dev_app",
|
||||
"confirmation_required": true,
|
||||
"automatically_applied": false,
|
||||
"statements": [
|
||||
"REVOKE ALL PRIVILEGES ON TABLE public.\"cb_centres\" FROM \"sgf_dev_app\"",
|
||||
"REVOKE ALL PRIVILEGES ON TABLE public.\"cb_centres\" FROM PUBLIC",
|
||||
"GRANT SELECT, INSERT ON TABLE public.\"cb_centres\" TO \"sgf_dev_app\"",
|
||||
"REVOKE ALL PRIVILEGES ON SEQUENCE public.\"cb_centres_id_seq\" FROM \"sgf_dev_app\"",
|
||||
"REVOKE ALL PRIVILEGES ON SEQUENCE public.\"cb_centres_id_seq\" FROM PUBLIC",
|
||||
"GRANT USAGE ON SEQUENCE public.\"cb_centres_id_seq\" TO \"sgf_dev_app\"",
|
||||
"REVOKE ALL PRIVILEGES ON TABLE public.\"cb_origins\" FROM \"sgf_dev_app\"",
|
||||
"REVOKE ALL PRIVILEGES ON TABLE public.\"cb_origins\" FROM PUBLIC",
|
||||
"GRANT SELECT, INSERT ON TABLE public.\"cb_origins\" TO \"sgf_dev_app\"",
|
||||
"REVOKE ALL PRIVILEGES ON SEQUENCE public.\"cb_origins_id_seq\" FROM \"sgf_dev_app\"",
|
||||
"REVOKE ALL PRIVILEGES ON SEQUENCE public.\"cb_origins_id_seq\" FROM PUBLIC",
|
||||
"GRANT USAGE ON SEQUENCE public.\"cb_origins_id_seq\" TO \"sgf_dev_app\"",
|
||||
"REVOKE ALL PRIVILEGES ON TABLE public.\"cb_budgets\" FROM \"sgf_dev_app\"",
|
||||
"REVOKE ALL PRIVILEGES ON TABLE public.\"cb_budgets\" FROM PUBLIC",
|
||||
"GRANT SELECT, INSERT, UPDATE ON TABLE public.\"cb_budgets\" TO \"sgf_dev_app\"",
|
||||
"REVOKE ALL PRIVILEGES ON SEQUENCE public.\"cb_budgets_id_seq\" FROM \"sgf_dev_app\"",
|
||||
"REVOKE ALL PRIVILEGES ON SEQUENCE public.\"cb_budgets_id_seq\" FROM PUBLIC",
|
||||
"GRANT USAGE ON SEQUENCE public.\"cb_budgets_id_seq\" TO \"sgf_dev_app\"",
|
||||
"REVOKE ALL PRIVILEGES ON TABLE public.\"cb_budget_entries\" FROM \"sgf_dev_app\"",
|
||||
"REVOKE ALL PRIVILEGES ON TABLE public.\"cb_budget_entries\" FROM PUBLIC",
|
||||
"GRANT SELECT, INSERT ON TABLE public.\"cb_budget_entries\" TO \"sgf_dev_app\"",
|
||||
"REVOKE ALL PRIVILEGES ON SEQUENCE public.\"cb_budget_entries_id_seq\" FROM \"sgf_dev_app\"",
|
||||
"REVOKE ALL PRIVILEGES ON SEQUENCE public.\"cb_budget_entries_id_seq\" FROM PUBLIC",
|
||||
"GRANT USAGE ON SEQUENCE public.\"cb_budget_entries_id_seq\" TO \"sgf_dev_app\"",
|
||||
"REVOKE ALL PRIVILEGES ON TABLE public.\"cb_audit\" FROM \"sgf_dev_app\"",
|
||||
"REVOKE ALL PRIVILEGES ON TABLE public.\"cb_audit\" FROM PUBLIC",
|
||||
"GRANT SELECT, INSERT ON TABLE public.\"cb_audit\" TO \"sgf_dev_app\"",
|
||||
"REVOKE ALL PRIVILEGES ON SEQUENCE public.\"cb_audit_id_seq\" FROM \"sgf_dev_app\"",
|
||||
"REVOKE ALL PRIVILEGES ON SEQUENCE public.\"cb_audit_id_seq\" FROM PUBLIC",
|
||||
"GRANT USAGE ON SEQUENCE public.\"cb_audit_id_seq\" TO \"sgf_dev_app\"",
|
||||
"REVOKE ALL PRIVILEGES ON TABLE public.\"cb_ui_commands\" FROM \"sgf_dev_app\"",
|
||||
"REVOKE ALL PRIVILEGES ON TABLE public.\"cb_ui_commands\" FROM PUBLIC",
|
||||
"GRANT SELECT, INSERT ON TABLE public.\"cb_ui_commands\" TO \"sgf_dev_app\"",
|
||||
"REVOKE ALL PRIVILEGES ON SEQUENCE public.\"cb_ui_commands_id_seq\" FROM \"sgf_dev_app\"",
|
||||
"REVOKE ALL PRIVILEGES ON SEQUENCE public.\"cb_ui_commands_id_seq\" FROM PUBLIC",
|
||||
"GRANT USAGE ON SEQUENCE public.\"cb_ui_commands_id_seq\" TO \"sgf_dev_app\"",
|
||||
"REVOKE ALL PRIVILEGES ON TABLE public.\"cb_budget_consumptions\" FROM \"sgf_dev_app\"",
|
||||
"REVOKE ALL PRIVILEGES ON TABLE public.\"cb_budget_consumptions\" FROM PUBLIC",
|
||||
"GRANT SELECT ON TABLE public.\"cb_budget_consumptions\" TO \"sgf_dev_app\"",
|
||||
"REVOKE ALL PRIVILEGES ON SEQUENCE public.\"cb_budget_consumptions_id_seq\" FROM \"sgf_dev_app\"",
|
||||
"REVOKE ALL PRIVILEGES ON SEQUENCE public.\"cb_budget_consumptions_id_seq\" FROM PUBLIC",
|
||||
"REVOKE ALL PRIVILEGES ON TABLE public.\"cb_budget_reinforcements\" FROM \"sgf_dev_app\"",
|
||||
"REVOKE ALL PRIVILEGES ON TABLE public.\"cb_budget_reinforcements\" FROM PUBLIC",
|
||||
"GRANT SELECT ON TABLE public.\"cb_budget_reinforcements\" TO \"sgf_dev_app\"",
|
||||
"REVOKE ALL PRIVILEGES ON SEQUENCE public.\"cb_budget_reinforcements_id_seq\" FROM \"sgf_dev_app\"",
|
||||
"REVOKE ALL PRIVILEGES ON SEQUENCE public.\"cb_budget_reinforcements_id_seq\" FROM PUBLIC",
|
||||
"REVOKE ALL PRIVILEGES ON TABLE public.\"cb_consumption_sources\" FROM \"sgf_dev_app\"",
|
||||
"REVOKE ALL PRIVILEGES ON TABLE public.\"cb_consumption_sources\" FROM PUBLIC",
|
||||
"GRANT SELECT ON TABLE public.\"cb_consumption_sources\" TO \"sgf_dev_app\"",
|
||||
"REVOKE ALL PRIVILEGES ON SEQUENCE public.\"cb_consumption_sources_id_seq\" FROM \"sgf_dev_app\"",
|
||||
"REVOKE ALL PRIVILEGES ON SEQUENCE public.\"cb_consumption_sources_id_seq\" FROM PUBLIC",
|
||||
"REVOKE ALL PRIVILEGES ON TABLE public.\"ir_requests\" FROM \"sgf_dev_app\"",
|
||||
"REVOKE ALL PRIVILEGES ON TABLE public.\"ir_requests\" FROM PUBLIC",
|
||||
"GRANT SELECT, INSERT, UPDATE ON TABLE public.\"ir_requests\" TO \"sgf_dev_app\"",
|
||||
"REVOKE ALL PRIVILEGES ON SEQUENCE public.\"ir_requests_id_seq\" FROM \"sgf_dev_app\"",
|
||||
"REVOKE ALL PRIVILEGES ON SEQUENCE public.\"ir_requests_id_seq\" FROM PUBLIC",
|
||||
"GRANT USAGE ON SEQUENCE public.\"ir_requests_id_seq\" TO \"sgf_dev_app\"",
|
||||
"REVOKE ALL PRIVILEGES ON TABLE public.\"ir_steps\" FROM \"sgf_dev_app\"",
|
||||
"REVOKE ALL PRIVILEGES ON TABLE public.\"ir_steps\" FROM PUBLIC",
|
||||
"GRANT SELECT, INSERT, UPDATE ON TABLE public.\"ir_steps\" TO \"sgf_dev_app\"",
|
||||
"REVOKE ALL PRIVILEGES ON SEQUENCE public.\"ir_steps_id_seq\" FROM \"sgf_dev_app\"",
|
||||
"REVOKE ALL PRIVILEGES ON SEQUENCE public.\"ir_steps_id_seq\" FROM PUBLIC",
|
||||
"GRANT USAGE ON SEQUENCE public.\"ir_steps_id_seq\" TO \"sgf_dev_app\"",
|
||||
"REVOKE ALL PRIVILEGES ON TABLE public.\"ir_policies\" FROM \"sgf_dev_app\"",
|
||||
"REVOKE ALL PRIVILEGES ON TABLE public.\"ir_policies\" FROM PUBLIC",
|
||||
"GRANT SELECT, INSERT, UPDATE ON TABLE public.\"ir_policies\" TO \"sgf_dev_app\"",
|
||||
"REVOKE ALL PRIVILEGES ON SEQUENCE public.\"ir_policies_id_seq\" FROM \"sgf_dev_app\"",
|
||||
"REVOKE ALL PRIVILEGES ON SEQUENCE public.\"ir_policies_id_seq\" FROM PUBLIC",
|
||||
"GRANT USAGE ON SEQUENCE public.\"ir_policies_id_seq\" TO \"sgf_dev_app\"",
|
||||
"REVOKE ALL PRIVILEGES ON TABLE public.\"ir_events\" FROM \"sgf_dev_app\"",
|
||||
"REVOKE ALL PRIVILEGES ON TABLE public.\"ir_events\" FROM PUBLIC",
|
||||
"GRANT SELECT, INSERT ON TABLE public.\"ir_events\" TO \"sgf_dev_app\"",
|
||||
"REVOKE ALL PRIVILEGES ON SEQUENCE public.\"ir_events_id_seq\" FROM \"sgf_dev_app\"",
|
||||
"REVOKE ALL PRIVILEGES ON SEQUENCE public.\"ir_events_id_seq\" FROM PUBLIC",
|
||||
"GRANT USAGE ON SEQUENCE public.\"ir_events_id_seq\" TO \"sgf_dev_app\"",
|
||||
"REVOKE ALL PRIVILEGES ON TABLE public.\"ir_commands\" FROM \"sgf_dev_app\"",
|
||||
"REVOKE ALL PRIVILEGES ON TABLE public.\"ir_commands\" FROM PUBLIC",
|
||||
"GRANT SELECT, INSERT ON TABLE public.\"ir_commands\" TO \"sgf_dev_app\"",
|
||||
"REVOKE ALL PRIVILEGES ON SEQUENCE public.\"ir_commands_id_seq\" FROM \"sgf_dev_app\"",
|
||||
"REVOKE ALL PRIVILEGES ON SEQUENCE public.\"ir_commands_id_seq\" FROM PUBLIC",
|
||||
"GRANT USAGE ON SEQUENCE public.\"ir_commands_id_seq\" TO \"sgf_dev_app\"",
|
||||
"REVOKE ALL PRIVILEGES ON TABLE public.\"ir_policy_versions\" FROM \"sgf_dev_app\"",
|
||||
"REVOKE ALL PRIVILEGES ON TABLE public.\"ir_policy_versions\" FROM PUBLIC",
|
||||
"GRANT SELECT, INSERT ON TABLE public.\"ir_policy_versions\" TO \"sgf_dev_app\"",
|
||||
"REVOKE ALL PRIVILEGES ON SEQUENCE public.\"ir_policy_versions_id_seq\" FROM \"sgf_dev_app\"",
|
||||
"REVOKE ALL PRIVILEGES ON SEQUENCE public.\"ir_policy_versions_id_seq\" FROM PUBLIC",
|
||||
"GRANT USAGE ON SEQUENCE public.\"ir_policy_versions_id_seq\" TO \"sgf_dev_app\"",
|
||||
"REVOKE ALL PRIVILEGES ON TABLE public.\"sgc_installations\" FROM \"sgf_dev_app\"",
|
||||
"REVOKE ALL PRIVILEGES ON TABLE public.\"sgc_installations\" FROM PUBLIC",
|
||||
"GRANT SELECT ON TABLE public.\"sgc_installations\" TO \"sgf_dev_app\""
|
||||
],
|
||||
"excluded": [
|
||||
"CREATE",
|
||||
"ownership",
|
||||
"DELETE",
|
||||
"UPDATE on append-only history",
|
||||
"all-tables/default-privileges grants"
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,421 @@
|
||||
{
|
||||
"passed": true,
|
||||
"checks": [
|
||||
"reproduced current 87-table schema without source rows",
|
||||
"no accounts or grants imported from destination",
|
||||
"runtime cannot create schema objects",
|
||||
"injected dependency migration failure",
|
||||
"failed migration restores original schema and identity data",
|
||||
"successful migration preserves existing identity and grants",
|
||||
"installation creates empty centres and allocations",
|
||||
"runtime module SQL access denied before test-only privilege plan",
|
||||
"minimal runtime excludes historical update and requisition deletion",
|
||||
"runtime reads corrected revision without ownership",
|
||||
"provider really loaded from isolated copy",
|
||||
"new bundle bootstrap accepted by installer integrity check",
|
||||
"anonymous direct initialisation URL denied",
|
||||
"native clone authentication 1",
|
||||
"native clone context 1",
|
||||
"native clone authentication 2",
|
||||
"native clone context 2",
|
||||
"provider registers initial authority page without prior functional rights",
|
||||
"initial authority CSRF enforced",
|
||||
"initial authority through normal middleware",
|
||||
"work page requires explicit module selection",
|
||||
"new requisition view right makes purchasing selectable",
|
||||
"stale module generation refused",
|
||||
"provider registers operational work page",
|
||||
"different enterprise option refused by operational composition",
|
||||
"native administrative delegation purchasing_requisitions.view",
|
||||
"native administrative delegation purchasing_requisitions.approve.department_head",
|
||||
"native administrative delegation purchasing_budget.view",
|
||||
"native administrative delegation purchasing_budget.approve",
|
||||
"empty installation exposes authorised centre and budget preparation",
|
||||
"centre created through authorised UI API with runtime role",
|
||||
"centre retries preserve one source",
|
||||
"existing budget API prepares synthetic allocation",
|
||||
"budget approval requires independent identity",
|
||||
"independent allocation approval uses existing budget kernel",
|
||||
"workspace dependencies available on reproduced schema",
|
||||
"direct budget movements cannot bypass requisition lifecycle",
|
||||
"operational policy configured via HTTP",
|
||||
"integrated operational draft",
|
||||
"integrated submit uses existing budget adapter",
|
||||
"integrated independent identity enforced",
|
||||
"integrated approval by another identity",
|
||||
"integrated authorised consultation and history",
|
||||
"native administration receives complete unit catalogue",
|
||||
"native administration receives canonical server labels",
|
||||
"reviewer cannot inspect administrative catalogue without management right",
|
||||
"forged delegation of an unowned catalogue right refused",
|
||||
"packaged frontend dependency served before authentication",
|
||||
"packaged frontend dependency served before authentication",
|
||||
"native SGF entry renders the packaged frontend manifest",
|
||||
"undeclared frontend asset refused",
|
||||
"minimal plan removes inherited update and delete on new append-only sources",
|
||||
"runtime cannot truncate requisitions",
|
||||
"existing table ACL preserved a_billing_drafts",
|
||||
"existing table ACL preserved a_clients",
|
||||
"existing table ACL preserved a_commands",
|
||||
"existing table ACL preserved a_events",
|
||||
"existing table ACL preserved a_history",
|
||||
"existing table ACL preserved a_outbox",
|
||||
"existing table ACL preserved a_pending",
|
||||
"existing table ACL preserved a_service_drafts",
|
||||
"existing table ACL preserved a_services",
|
||||
"existing table ACL preserved b_internal_confirmations",
|
||||
"existing table ACL preserved ca_commands",
|
||||
"existing table ACL preserved ca_decisions",
|
||||
"existing table ACL preserved ca_proposals",
|
||||
"existing table ACL preserved ca_resolutions",
|
||||
"existing table ACL preserved ca_submissions",
|
||||
"existing table ACL preserved cache",
|
||||
"existing table ACL preserved cache_locks",
|
||||
"existing table ACL preserved companies",
|
||||
"existing table ACL preserved company_memberships",
|
||||
"existing table ACL preserved dc_calculations",
|
||||
"existing table ACL preserved dc_commands",
|
||||
"existing table ACL preserved dc_decisions",
|
||||
"existing table ACL preserved dc_events",
|
||||
"existing table ACL preserved dc_outbox",
|
||||
"existing table ACL preserved dc_rates",
|
||||
"existing table ACL preserved doc_history",
|
||||
"existing table ACL preserved doc_records",
|
||||
"existing table ACL preserved document_preview_model_history",
|
||||
"existing table ACL preserved document_preview_models",
|
||||
"existing table ACL preserved failed_jobs",
|
||||
"existing table ACL preserved ib_budgets",
|
||||
"existing table ACL preserved ib_commands",
|
||||
"existing table ACL preserved ib_comparisons",
|
||||
"existing table ACL preserved ib_decisions",
|
||||
"existing table ACL preserved ib_events",
|
||||
"existing table ACL preserved ib_outbox",
|
||||
"existing table ACL preserved ic_commands",
|
||||
"existing table ACL preserved ic_decisions",
|
||||
"existing table ACL preserved ic_events",
|
||||
"existing table ACL preserved ic_inputs",
|
||||
"existing table ACL preserved ic_lots",
|
||||
"existing table ACL preserved ic_outbox",
|
||||
"existing table ACL preserved ic_products",
|
||||
"existing table ACL preserved ic_results",
|
||||
"existing table ACL preserved identity_audit",
|
||||
"existing table ACL preserved job_batches",
|
||||
"existing table ACL preserved jobs",
|
||||
"existing table ACL preserved migrations",
|
||||
"existing table ACL preserved password_reset_tokens",
|
||||
"existing table ACL preserved permission_grants",
|
||||
"existing table ACL preserved service_calculation_profiles",
|
||||
"existing table ACL preserved service_calculation_results",
|
||||
"existing table ACL preserved sessions",
|
||||
"existing table ACL preserved sf_activation_events",
|
||||
"existing table ACL preserved sf_decisions",
|
||||
"existing table ACL preserved sf_proposals",
|
||||
"existing table ACL preserved si_commands",
|
||||
"existing table ACL preserved si_correction_requests",
|
||||
"existing table ACL preserved si_counters",
|
||||
"existing table ACL preserved si_decisions",
|
||||
"existing table ACL preserved si_events",
|
||||
"existing table ACL preserved si_invoices",
|
||||
"existing table ACL preserved si_outbox",
|
||||
"existing table ACL preserved si_proposals",
|
||||
"existing table ACL preserved sr_commands",
|
||||
"existing table ACL preserved sr_deliveries",
|
||||
"existing table ACL preserved sr_effects",
|
||||
"existing table ACL preserved sr_events",
|
||||
"existing table ACL preserved sr_outbox",
|
||||
"existing table ACL preserved sr_records",
|
||||
"existing table ACL preserved tenants",
|
||||
"existing table ACL preserved units",
|
||||
"existing table ACL preserved users",
|
||||
"existing table ACL preserved wb_claims",
|
||||
"existing table ACL preserved wb_commands",
|
||||
"existing table ACL preserved wb_decisions",
|
||||
"existing table ACL preserved wb_events",
|
||||
"existing table ACL preserved wb_generations",
|
||||
"existing table ACL preserved wb_outbox",
|
||||
"existing table ACL preserved wb_proposals",
|
||||
"existing table ACL preserved wo_commands",
|
||||
"existing table ACL preserved wo_decisions",
|
||||
"existing table ACL preserved wo_entries",
|
||||
"existing table ACL preserved wo_equipment",
|
||||
"existing table ACL preserved wo_events",
|
||||
"existing table ACL preserved wo_orders",
|
||||
"existing table ACL preserved wo_outbox",
|
||||
"actual runtime CREATE denied",
|
||||
"actual runtime ALTER of identity catalogue denied",
|
||||
"centre creation requires own configuration and budget rights",
|
||||
"centre context cannot be forged",
|
||||
"refused centre operations leave original source intact",
|
||||
"unsupported requisition type refused equipment",
|
||||
"unsupported requisition type refused part",
|
||||
"approved lifecycle covers the three supported basic types",
|
||||
"unsupported types create neither a second request nor reservation",
|
||||
"native revocation applies to direct module URL",
|
||||
"uncontracted module refused at server",
|
||||
"disabled composition exposes no executable work page",
|
||||
"code-only successor installed over existing provenance",
|
||||
"code-only successor rollback restores exact candidate",
|
||||
"code update and rollback preserve every reproduced data table",
|
||||
"code recovery preserves submitted origin decision and reservation",
|
||||
"code recovery leaves baseline and maintenance intact"
|
||||
],
|
||||
"clone": "C:\\Users\\macbook\\AppData\\Local\\Temp/sgf-update-625f1bba6e30",
|
||||
"data_fingerprints": {
|
||||
"a_billing_drafts": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
|
||||
"a_clients": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
|
||||
"a_commands": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
|
||||
"a_events": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
|
||||
"a_history": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
|
||||
"a_outbox": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
|
||||
"a_pending": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
|
||||
"a_service_drafts": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
|
||||
"a_services": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
|
||||
"b_internal_confirmations": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
|
||||
"ca_commands": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
|
||||
"ca_decisions": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
|
||||
"ca_proposals": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
|
||||
"ca_resolutions": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
|
||||
"ca_submissions": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
|
||||
"cache": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
|
||||
"cache_locks": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
|
||||
"cb_audit": "ccf5b17cacb6e9d1cbbebdc55baca6b2b51103f3573c32dd1bddb24a055d2e2b",
|
||||
"cb_budget_consumptions": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
|
||||
"cb_budget_entries": "ba73d3b7eb20c25d833df7b3b85f7f1f7575d78365ee1a3c2246e7749f2448ad",
|
||||
"cb_budget_reinforcements": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
|
||||
"cb_budgets": "8df00e7e6b821e2767118c352f58391d4c44bb8df1fcc38a3d40a6a9989543a5",
|
||||
"cb_centres": "45bebc4ca0d417711e2a428b360c343e6dba17a64a4d799639165815e5aaef45",
|
||||
"cb_consumption_sources": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
|
||||
"cb_origins": "f470bed486f1955724e99cde0404445c4b9753320faee2d202289fedffc4d561",
|
||||
"cb_ui_commands": "424c4f2f643087911333a3ecf002bbb5fc5055c5ccf24f5cefd94c9db56b398b",
|
||||
"companies": "e5098861f02b2904e068c604ecbe1379ec6597b39fcdc9575c9d9eaa3b459aec",
|
||||
"company_memberships": "562084217604e0bd153e36375251db9e4e87f92c744c69d38d2a39c7821454e5",
|
||||
"dc_calculations": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
|
||||
"dc_commands": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
|
||||
"dc_decisions": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
|
||||
"dc_events": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
|
||||
"dc_outbox": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
|
||||
"dc_rates": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
|
||||
"doc_history": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
|
||||
"doc_records": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
|
||||
"document_preview_model_history": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
|
||||
"document_preview_models": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
|
||||
"failed_jobs": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
|
||||
"ib_budgets": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
|
||||
"ib_commands": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
|
||||
"ib_comparisons": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
|
||||
"ib_decisions": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
|
||||
"ib_events": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
|
||||
"ib_outbox": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
|
||||
"ic_commands": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
|
||||
"ic_decisions": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
|
||||
"ic_events": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
|
||||
"ic_inputs": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
|
||||
"ic_lots": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
|
||||
"ic_outbox": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
|
||||
"ic_products": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
|
||||
"ic_results": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
|
||||
"identity_audit": "b714264c1c89e456f9217c285169fa91bc379bb744684e39c2028bb48a025ca7",
|
||||
"ir_commands": "fa90f00d334ae11e38a4aea327720569da50f196ad5aa4876fcaa0b6154d78ad",
|
||||
"ir_events": "8379dcb6a4fb3d1cad80cab5a4afe9a49b86a7145e2dc613d6d5371d18e96051",
|
||||
"ir_policies": "7ff4f648cbf36386f78743ed2394eb12e6328fb6e7722c6ba1acb5fab36ca1d1",
|
||||
"ir_policy_versions": "7ff4f648cbf36386f78743ed2394eb12e6328fb6e7722c6ba1acb5fab36ca1d1",
|
||||
"ir_requests": "874bbaa494e41ddc2bee527f3660909123a19c270f7eaee0e19d534d8c355fd6",
|
||||
"ir_steps": "dcde70900864b1e974f66a4778e80e8317907c14a3dc0545afadb468c6f9eef6",
|
||||
"job_batches": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
|
||||
"jobs": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
|
||||
"migrations": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
|
||||
"password_reset_tokens": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
|
||||
"permission_grants": "2219ad7945c6cd3d4e28bfc4a06c04eb6141ceaa53097efd01ab5f89811fec13",
|
||||
"service_calculation_profiles": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
|
||||
"service_calculation_results": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
|
||||
"sessions": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
|
||||
"sf_activation_events": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
|
||||
"sf_decisions": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
|
||||
"sf_proposals": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
|
||||
"sgc_installations": "75449b61764076870970ddf93e9b987e6b7b24889de47fb8d9046a5345065f1c",
|
||||
"si_commands": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
|
||||
"si_correction_requests": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
|
||||
"si_counters": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
|
||||
"si_decisions": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
|
||||
"si_events": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
|
||||
"si_invoices": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
|
||||
"si_outbox": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
|
||||
"si_proposals": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
|
||||
"sr_commands": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
|
||||
"sr_deliveries": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
|
||||
"sr_effects": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
|
||||
"sr_events": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
|
||||
"sr_outbox": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
|
||||
"sr_records": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
|
||||
"tenants": "0487a4884eb77b28bd8c052e9d2bd1a8177bab511463657d326a17c0c77b3619",
|
||||
"units": "c0a43a3bf8907bcbebf727f089e8c75399ed7a94049ad85b666fe6b90851842e",
|
||||
"users": "ea313e4a8b0a16e17dc1b61cea28c6832a76feed78540fe40ab61bbf88c6200c",
|
||||
"wb_claims": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
|
||||
"wb_commands": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
|
||||
"wb_decisions": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
|
||||
"wb_events": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
|
||||
"wb_generations": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
|
||||
"wb_outbox": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
|
||||
"wb_proposals": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
|
||||
"wo_commands": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
|
||||
"wo_decisions": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
|
||||
"wo_entries": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
|
||||
"wo_equipment": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
|
||||
"wo_events": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
|
||||
"wo_orders": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
|
||||
"wo_outbox": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945"
|
||||
},
|
||||
"destination_activated": false,
|
||||
"normal_provider_routes": true,
|
||||
"browser_used": false,
|
||||
"data_recovery": {
|
||||
"verified": true,
|
||||
"tables_reconciled": 103,
|
||||
"approved_origin_reservation_versions_preserved": true,
|
||||
"runtime_read_verified": true,
|
||||
"runtime_ddl_denied": true,
|
||||
"schema_and_triggers_verified": true,
|
||||
"sql_acl_reapplied_only_to_isolated_role": true
|
||||
},
|
||||
"destination_security_and_schema_preserved": true,
|
||||
"artifact": {
|
||||
"directory": "C:\\laragon\\www\\compras/storage/app/private/candidates/OPERATIONAL-CANDIDATE-401ce31ae5f2dd20",
|
||||
"archive": {
|
||||
"file": "C:\\laragon\\www\\compras/storage/app/private/candidate-archives/OPERATIONAL-CANDIDATE-401ce31ae5f2dd20.zip",
|
||||
"sha256": "59dbdc64c4d9f14dfb4025a6177b829d136a4e2cb633ca036b10b5ae3197e703",
|
||||
"manifest_sha256": "a6478223e17a5430652f0fcbf31a44a931ae2a99cd90b151c98d2df5df43c10b"
|
||||
},
|
||||
"installed": false
|
||||
},
|
||||
"source_schema_tables": 87,
|
||||
"source_rows_exported": 0,
|
||||
"source_schema_sha256": "b530e03c759305247f46cdad5013e64a6caae00bded3d9d5ae5b7b5aa06a4647",
|
||||
"runtime_and_migrator_separate": true,
|
||||
"destination_version": "0.1.1",
|
||||
"destination_changed": false,
|
||||
"prior_proofs_reused": true,
|
||||
"checked_at": "2026-11-02T07:10:03+00:00",
|
||||
"test_database_and_roles_removed": true,
|
||||
"ui_render": {
|
||||
"passed": true,
|
||||
"checks": [
|
||||
"native selector offers server catalogue requisition right",
|
||||
"native selector uses server labels",
|
||||
"budget creation right has server label",
|
||||
"preparer cannot delegate budget approval",
|
||||
"preparer cannot delegate absent decision authority",
|
||||
"reviewer sees only own approval grant",
|
||||
"reviewer cannot delegate preparation",
|
||||
"foreign unit grant never becomes a local option",
|
||||
"client cannot invent a catalogue entry from a grant",
|
||||
"no hardcoded new rights before server catalogue loads",
|
||||
"existing grants render their server labels",
|
||||
"general navigation remains separate",
|
||||
"module entry links to requisition only under own right",
|
||||
"frontend asset bound to installed bundle",
|
||||
"referenced compiled dependency included",
|
||||
"frontend asset bound to installed bundle",
|
||||
"referenced compiled dependency included"
|
||||
],
|
||||
"browser_used": false,
|
||||
"source_host_modified": false
|
||||
},
|
||||
"navigation": {
|
||||
"functional_commit": "2a4169162bb4621a42a2ea1df627d52f860e7176",
|
||||
"documentary_commit": "fcf0ada22701337acd4c84b404207b8400f490a2",
|
||||
"host_file_sha256": {
|
||||
"app/Shared/Context/ModuleNavigation.php": "f75f323940e25826792dc88848fd2b77eb3325634100a86b14c60c5d381917a3",
|
||||
"app/Shared/Context/ModuleRecords.php": "1813591487e3fb1885622f1078e80734d1745f427d2bf8fa93ebc0d96974b0d6",
|
||||
"app/Shared/Context/RequireModuleContext.php": "610b65868ad25d1e6f736d03d7c1da44245648ff22873f1c957c794490009192",
|
||||
"app/Modules/Identity/Http/RequireCompanyContext.php": "3fcc9d4d4466d3b6883dd60cc3e63e9bb2f58a43d13ca550d79e35882562db71",
|
||||
"app/Modules/Identity/Http/ModuleRecordsController.php": "f10ee4a14ed19e461bfc819288cd2f701e9d73ce4421a18f1b11e1ca545726fb",
|
||||
"app/Modules/Identity/Services/Audit.php": "89d69975b3059a3aedbeff0aca1febbb92c6c135030c31b0cc4bdd8d7e602ecb",
|
||||
"app/Modules/Identity/Services/IdentityWorkflow.php": "c4f4af9a7625778a408d881ba087502b116fa0ccb15f2f0311f5a0e8ad40ce73",
|
||||
"resources/js/ModuleNavigation.jsx": "b53ee2d9f69a96bdabf1d3074f8662fd204c447caf8f354aea4dcf921bd336be",
|
||||
"resources/js/WorkspaceNavigation.jsx": "7be946f915e3dabfb511445f169fe822c2e558ca15fef6331c247af2a1643ebf",
|
||||
"resources/js/app.jsx": "33f087da73fe80ca0ae6e7609e107b805b2c8a1f1863cc3a1b2c7886fe7d3c44",
|
||||
"resources/js/WorkspaceHome.jsx": "c02d71c6e630f942c13562427c7256e1b7602c75b80b462d184d45852d9ea34a",
|
||||
"resources/js/ModuleRecordsWorkspace.jsx": "24399a5e6a08c78357f23fc6d304a706f477f33db879a4cf52fc53511541b78c",
|
||||
"resources/js/ContextTransitionDialog.jsx": "04bde71f2ea5d26185aae930bfcf8978e5d38d1637915073cacbc12033fe9780",
|
||||
"resources/js/context-transition.js": "3d76e21eca185ae97c1a6a6f5965ab33c242a28391c8c50f5af30dfc0a4a3c6a",
|
||||
"resources/css/tempo-theme.css": "4b961ce49b2bb50072ea1fcae0c0d168c9ada207f59323cc52205353b7871df9",
|
||||
"public/sgf-module-context.js": "f465ea30ecea0acf3fc7b838b602ea881260d73b90aa48f587327b8ee1581dc7",
|
||||
"config/modules.php": "31330076b98ca423acfef0fa4e1c87a3762e53a750bd3f94c2b5a7d53e3edde4",
|
||||
"routes/web.php": "aa314a92c7f926c56699880d795286a0dd9659e6fbc0f653529e2f58a1bb326c",
|
||||
"tests/Feature/ModuleNavigationTest.php": "7f7655950d5847ed5702f95613061e7591a353f97d3349921625b8805822bfd4"
|
||||
}
|
||||
},
|
||||
"installed_snapshot": {
|
||||
"database": {
|
||||
"database": "sgf_tempo_dev",
|
||||
"role": "sgf_dev_app",
|
||||
"port": 55432
|
||||
},
|
||||
"tables": {
|
||||
"permission_grants": {
|
||||
"rows": 89,
|
||||
"fingerprint": "f4546a8af83c965f7088ba47f55e0fec"
|
||||
},
|
||||
"company_memberships": {
|
||||
"rows": 2,
|
||||
"fingerprint": "f5462c7d3b1f5c75d70450dc6b61990e"
|
||||
},
|
||||
"identity_audit": {
|
||||
"rows": 162,
|
||||
"fingerprint": "cbff39d0e77e9bd7c3cafb4a5d574591"
|
||||
}
|
||||
},
|
||||
"guard_sha256": "42708432fa029e3e52743016b6c6b6d734a3e6cd5d3ed266a29ecfcf38a6e371",
|
||||
"purchasing_pointer_sha256": "81899e531e9eec449717e694d8bdc106a9e220a828f5491ce918c1d2dc612787"
|
||||
},
|
||||
"host_overlays": {
|
||||
"app/Modules/Identity/Services/Permissions.php": {
|
||||
"before_sha256": "97a860b632de0cb5022b2d9153261ecfa2211c100961eb6b9e6a09d30f798e63",
|
||||
"after_sha256": "19e40f47e2df222c3151d99a7840f86e3ec00c4fe021f53301bc1482ab3d5670"
|
||||
},
|
||||
"app/Modules/Identity/Services/IdentityWorkflow.php": {
|
||||
"before_sha256": "c4f4af9a7625778a408d881ba087502b116fa0ccb15f2f0311f5a0e8ad40ce73",
|
||||
"after_sha256": "0d0e6e90748cf1cd93bc724fb0bd51573ab1377ca6d1eb3360219b3d5fd0c25d"
|
||||
},
|
||||
"app/Modules/Purchasing/BudgetAdapter.php": {
|
||||
"before_sha256": "e8f261e2e6535973c72266cf5f448e24794e5c896a9910ca85468001fbc37116",
|
||||
"after_sha256": "cea6b4f8e7b9b96854de79ba3085b69affc7855cda46ded67b4b22fd62dd38f9"
|
||||
},
|
||||
"app/Modules/Purchasing/BudgetWorkspace.php": {
|
||||
"before_sha256": "b144422b959cd6c6f693001ccdd5a21e163a88732a17b00cb6d8d7a8cf0562de",
|
||||
"after_sha256": "ecec7e3880b2fec46d1cdc3a346c965b2d489c48cc32077ae28ec7c2027182be"
|
||||
},
|
||||
"app/Providers/AppServiceProvider.php": {
|
||||
"before_sha256": "42705455c3f12233369275cbfd7d80781109135ca1ef2d3e3adc2fac8d675e8e",
|
||||
"after_sha256": "463ef17bbbac91871b600c39dbf0309ed7a5795a450620b05823c3ad50acd2d3"
|
||||
},
|
||||
"app/Shared/Context/ModuleNavigation.php": {
|
||||
"before_sha256": "f75f323940e25826792dc88848fd2b77eb3325634100a86b14c60c5d381917a3",
|
||||
"after_sha256": "f15a8dc725aa4c1c6ab7eab6799446b7c79b35df237c2791791e7fe3c3830568"
|
||||
},
|
||||
"resources/js/app.jsx": {
|
||||
"before_sha256": "33f087da73fe80ca0ae6e7609e107b805b2c8a1f1863cc3a1b2c7886fe7d3c44",
|
||||
"after_sha256": "4b7ba24eca42e20db693ffdfe6825844406c6513932f8074edcf9c97b5562fa4"
|
||||
},
|
||||
"resources/js/PurchasingHome.jsx": {
|
||||
"before_sha256": "3e985e7132525eb57b1a26baeb95c38aee7691051ddaf108e6faaa95efd22cbf",
|
||||
"after_sha256": "10fe6d2265a9027fbe00d8ca1ffce9ca53aba40dc81467602cb5186489e5d86b"
|
||||
},
|
||||
"public/build/manifest.json": {
|
||||
"before_sha256": "5a61b3b44fa0c04b624163b15d11ce8931de194847fcd901552ddc0806f57b85",
|
||||
"after_sha256": "22c2708aab2c812cb20ec0c7b433fdb8383df2d0415684e2a55c47633ee4248b"
|
||||
}
|
||||
},
|
||||
"read_only_plan": {
|
||||
"code_target_sha256": "d29833b1c48b9d666522d20d87040d5ad30370cf114c9a70f272cd041eea59e9",
|
||||
"schema_target_sha256": "169e6e863f28b67740f07b6e7cbc664fbe585a7760a83dccebc8d482ad8ab792"
|
||||
},
|
||||
"supersedes_proposal": "SGF-IR-INSTALL-5FAE-20261102",
|
||||
"migration_sha256": "4ca4f5827c46e5ca29cb329c667df0b996ecbf5e318c0b157091c94e9d44ae92",
|
||||
"integrity": {
|
||||
"support_files_verified": 49,
|
||||
"php_linted": 42,
|
||||
"archive_and_manifest_unchanged": true
|
||||
},
|
||||
"installed_snapshot_matches_prior": true
|
||||
}
|
||||
@@ -0,0 +1,57 @@
|
||||
{
|
||||
"passed": true,
|
||||
"checks": [
|
||||
"portable review ZIP matches approved bundle and manifest",
|
||||
"sem proveni\u00eancia",
|
||||
"Transi\u00e7\u00e3o de schema",
|
||||
"plan binds update to active installation",
|
||||
"new version applied without source connection",
|
||||
"previous version preserved locally",
|
||||
"fora de ordem",
|
||||
"vers\u00e3o activa",
|
||||
"C\u00f3digo aplicado alterado",
|
||||
"Conte\u00fado extra",
|
||||
"rollback restores previous bundle exactly",
|
||||
"rollback restores active provenance",
|
||||
"new attempt preserves rolled-back journal",
|
||||
"Injected update switch failure",
|
||||
"interrupted transition recovers previous version",
|
||||
"reapply creates a separate audited attempt",
|
||||
"complete rollback restores original host composition",
|
||||
"native Laravel config route and event caches built",
|
||||
"version update invalidates previous native caches",
|
||||
"Injected cache compilation interruption",
|
||||
"partial native cache build is journalled under maintenance",
|
||||
"cache CLI recovers interrupted native compilation",
|
||||
"invalid partial config cache cannot block native recovery",
|
||||
"cached deployment remains in native maintenance",
|
||||
"cached module route survives restart and denies anonymous access",
|
||||
"Cache mudou ap\u00f3s compila\u00e7\u00e3o",
|
||||
"rollback invalidates registered rebuilt caches",
|
||||
"repeated rollback preserves previous-version rebuilt caches",
|
||||
"previous version restarts with native caches and maintenance",
|
||||
"restarted baseline exposes no removed module route",
|
||||
"baseline starts after cached deployment rollback",
|
||||
"destination remains untouched on 0.1.1"
|
||||
],
|
||||
"old_candidate": "C:\\laragon\\www\\compras\/storage\/app\/private\/candidates\/OPERATIONAL-CANDIDATE-10dce6cd57fa1f31",
|
||||
"new_candidate": "C:\\laragon\\www\\compras\/storage\/app\/private\/candidates\/OPERATIONAL-CANDIDATE-5fae7cf7f99c42ba",
|
||||
"archive": {
|
||||
"file": "C:\\laragon\\www\\compras\/storage\/app\/private\/candidate-archives\/OPERATIONAL-CANDIDATE-5fae7cf7f99c42ba.zip",
|
||||
"sha256": "d14a3261d5aaab80f96250af781c700ab53376021f4638e3aee43c15ff37ceed",
|
||||
"manifest_sha256": "b1ec47f7a9ad87e0b232bac41e402d4a00ee5f03f00a79b93effc692ce8b39a2"
|
||||
},
|
||||
"copies": [
|
||||
"C:\\Users\\macbook\\AppData\\Local\\Temp\/sgf-update-46398e665d32",
|
||||
"C:\\Users\\macbook\\AppData\\Local\\Temp\/sgf-update-21bc02db1fe2",
|
||||
"C:\\Users\\macbook\\AppData\\Local\\Temp\/sgf-update-d88b6daafc0a",
|
||||
"C:\\Users\\macbook\\AppData\\Local\\Temp\/sgf-update-schema-2df473386fc1"
|
||||
],
|
||||
"checked_at": "2026-11-02T06:32:56+00:00",
|
||||
"destination_version": "0.1.1",
|
||||
"destination_applied": false,
|
||||
"prior_suites_repeated": false,
|
||||
"actual_destination_services_touched": false,
|
||||
"native_caches_built": true,
|
||||
"isolated_server_restarts_verified": true
|
||||
}
|
||||
@@ -0,0 +1,157 @@
|
||||
{
|
||||
"date": "2026-11-02",
|
||||
"increment": "COMMON-STOCK-READ-COMPOSITION-SIM-v1",
|
||||
"status": "two_application_read_api_compositions_verified",
|
||||
"package": {
|
||||
"id": "tempo-inventory-read",
|
||||
"version": "0.1.0",
|
||||
"manifest_sha256": "bbd97f63b0eeb671bd3ad57bbd62bd34fcf67b8e943320423715d514a2a2c19c",
|
||||
"files": {
|
||||
"bootstrap.php": "65cba0924869ba93afa00a4786b361ad71d5c2e67bd021b3d1fda172b1190476",
|
||||
"src/InventoryReader.php": "9b0591600da07719d655324ccf0b740f06de07db2806540684c9730d048e44b6",
|
||||
"src/InventoryReadSession.php": "e5ea1ec6771e34478367218d73ba1d1d90464ddc87d1c5fa3d679622ffb81111"
|
||||
},
|
||||
"identical_verified_artifact": true,
|
||||
"customer_dependency_on_sgf_source": false
|
||||
},
|
||||
"tests": {
|
||||
"compras": {
|
||||
"tests": 1,
|
||||
"assertions": 73,
|
||||
"errors": 0,
|
||||
"failures": 0,
|
||||
"sha256": "8424556122bc597b2de9a7af6fbaf18e278df4ebbf2f9eec9da82172f854c1af"
|
||||
},
|
||||
"sgf_functional": {
|
||||
"tests": 2,
|
||||
"assertions": 77,
|
||||
"errors": 0,
|
||||
"failures": 0,
|
||||
"sha256": "093a0b0f6a59e86e86a1c0a70c7f92a78b3ba13a81cd4bb5bbb9e572ba10d649"
|
||||
},
|
||||
"two_composition_parity": {
|
||||
"tests": 1,
|
||||
"assertions": 48,
|
||||
"errors": 0,
|
||||
"failures": 0,
|
||||
"sha256": "fce35672024498620638d783ca9bbef3949cafa2ea40de24ab53423ad03d03c3"
|
||||
}
|
||||
},
|
||||
"cases": {
|
||||
"view=items&per_page=25": {
|
||||
"sha256": "0b1258720163f692a209578ca0c54efc960701272df814f4f435bf7cfebb799d",
|
||||
"total": 101,
|
||||
"equivalent": true
|
||||
},
|
||||
"view=items&per_page=100": {
|
||||
"sha256": "3da79fc189150f7ce2b1977dadbc0b100aa956deaea9cc6366aa3cb35a134ef2",
|
||||
"total": 101,
|
||||
"equivalent": true
|
||||
},
|
||||
"view=warehouses&per_page=25": {
|
||||
"sha256": "a612221561c03a3c2f5b3673d60df66647fa953a36531d0069dd5df2b1c8b36d",
|
||||
"total": 2,
|
||||
"equivalent": true
|
||||
},
|
||||
"view=warehouses&per_page=100": {
|
||||
"sha256": "c3a7b2fe624c60f1d1f872ad743e6daf1b665fc1a652227d7f2d7bce38270014",
|
||||
"total": 2,
|
||||
"equivalent": true
|
||||
},
|
||||
"view=balances&per_page=25": {
|
||||
"sha256": "f28f5bb8ab8ad9ac1f45c22a7ff743f7a87f25cac6734bc354910563237bfbcc",
|
||||
"total": 100,
|
||||
"equivalent": true
|
||||
},
|
||||
"view=balances&per_page=100": {
|
||||
"sha256": "d33ef5f1cce5181f6bd6f5e3fa9bc57c719712e609001ce729f13fa182a0f554",
|
||||
"total": 100,
|
||||
"equivalent": true
|
||||
},
|
||||
"view=movements&per_page=25": {
|
||||
"sha256": "db9ac3c0ba4acbcc90058fc0c836bd0778b3b77ec850cb686a9cd9ec6eaeaef5",
|
||||
"total": 200,
|
||||
"equivalent": true
|
||||
},
|
||||
"view=movements&per_page=100": {
|
||||
"sha256": "9d1354e38caae00733732ab79f60637b88afce8633f244314ef515364838b6a0",
|
||||
"total": 200,
|
||||
"equivalent": true
|
||||
},
|
||||
"view=balances&per_page=25&page=2": {
|
||||
"sha256": "8c5fbc2cee5d017612863fe1313e12df74d60933a9eef08a6b96f933a752fa3b",
|
||||
"total": 100,
|
||||
"equivalent": true
|
||||
},
|
||||
"view=items&per_page=25&page=5": {
|
||||
"sha256": "9966a26f6f61c4a49c6787990867383326e6ebeb41319ed2e90a1ff86a0c66d0",
|
||||
"total": 101,
|
||||
"equivalent": true
|
||||
},
|
||||
"view=balances&warehouse_id=12": {
|
||||
"sha256": "d23d7f73218fe90f1b07e734252e2bf135e7bb1dd03e6d039be6c63b6a6d129f",
|
||||
"total": 0,
|
||||
"equivalent": true
|
||||
},
|
||||
"view=items&search=QA-000001": {
|
||||
"sha256": "33ee125e781da9e0d544853c57d24586fd7566cb7055e6790437a4fff59e1f36",
|
||||
"total": 1,
|
||||
"equivalent": true
|
||||
}
|
||||
},
|
||||
"cross_host_token_refused": true,
|
||||
"native_checks": {
|
||||
"roles_and_configured_profiles": true,
|
||||
"warehouse_isolation": true,
|
||||
"stale_snapshot": true,
|
||||
"unknown_source": true
|
||||
},
|
||||
"source_hashes": {
|
||||
"sgf_adapter": "9df30b043568b8f2df1bb38346b19cfef5c5820282c4bf7c82536194c5669d74",
|
||||
"compras_adapter": "06990fd57a265b57d031b130027c5814d8550665450d662a9dbee3e16ad295f4"
|
||||
},
|
||||
"preservation": {
|
||||
"native_read_only_postcheck": {
|
||||
"database": "stock_read_compras_c76629d0f45d",
|
||||
"role": "stock_read_qa_c76629d0f45d",
|
||||
"cluster": "sgf_modular_regression_2576427d1939",
|
||||
"superuser": false,
|
||||
"create_database": false,
|
||||
"create_role": false,
|
||||
"replication": false,
|
||||
"bypass_rls": false
|
||||
},
|
||||
"sgf_read_only_postcheck": {
|
||||
"identity": {
|
||||
"database": "sgf_tempo_test",
|
||||
"role": "sgf_test_runner",
|
||||
"port": 55439,
|
||||
"cluster": "sgf_modular_regression_2576427d1939"
|
||||
},
|
||||
"read_only": true,
|
||||
"temporary_stock_grants_remaining": 0,
|
||||
"original_constraint_restored_without_stock_right": true,
|
||||
"constraint_sha256": "40046092cba51f1b46d26d5f0da8af47e8336e90a8d50b8de3a8c390758f1783",
|
||||
"operational_source_bindings": 0
|
||||
},
|
||||
"new_native_qa_database_retained": true,
|
||||
"existing_databases_migrated": false,
|
||||
"prior_association_proofs_unchanged": true,
|
||||
"existing_stock_load_reused_sha256": "4fc1d7d13d480a30966b259611de1066fc22ef31f7a0e782da4872211801c72e",
|
||||
"protected_six_records_untouched": true,
|
||||
"blocked_cache_untouched": true,
|
||||
"public_rights_changed": false,
|
||||
"purchasing_candidate_activated": false,
|
||||
"demos_updated": false,
|
||||
"publication": false,
|
||||
"checkpoint": false
|
||||
},
|
||||
"limits": [
|
||||
"Real application kernels/routes/middleware, preauthenticated synthetic users; no network login/MFA/TLS/browser proof.",
|
||||
"Read-only API composition; existing native Stock page/writer unchanged.",
|
||||
"Stock source is QA fixture, not migrated customer data; no receipt/consumption/business command executed.",
|
||||
"No new load measurements; reader SQL unchanged and valid historical load retained."
|
||||
],
|
||||
"visual_review_pending": true,
|
||||
"deployment_capacity_validated": false
|
||||
}
|
||||
@@ -0,0 +1,779 @@
|
||||
{
|
||||
"date": "2026-11-02",
|
||||
"kind": "new_inventory_reader_not_association_rebenchmark",
|
||||
"profiles": [
|
||||
{
|
||||
"records": 1000,
|
||||
"view": "items",
|
||||
"page_size": 25,
|
||||
"median_ms": 16.919,
|
||||
"samples": [
|
||||
{
|
||||
"queries": 15,
|
||||
"database_ms": 12.010000000000002,
|
||||
"elapsed_ms": 18.913,
|
||||
"incremental_php_bytes": 65472,
|
||||
"peak_php_bytes": 45006352,
|
||||
"response_bytes": 2901
|
||||
},
|
||||
{
|
||||
"queries": 15,
|
||||
"database_ms": 9.48,
|
||||
"elapsed_ms": 15.34,
|
||||
"incremental_php_bytes": 73056,
|
||||
"peak_php_bytes": 45060992,
|
||||
"response_bytes": 2901
|
||||
},
|
||||
{
|
||||
"queries": 15,
|
||||
"database_ms": 10.909999999999998,
|
||||
"elapsed_ms": 16.919,
|
||||
"incremental_php_bytes": 73056,
|
||||
"peak_php_bytes": 45062208,
|
||||
"response_bytes": 2901
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"records": 1000,
|
||||
"view": "items",
|
||||
"page_size": 100,
|
||||
"median_ms": 16.071,
|
||||
"samples": [
|
||||
{
|
||||
"queries": 15,
|
||||
"database_ms": 9.16,
|
||||
"elapsed_ms": 15.269,
|
||||
"incremental_php_bytes": 101096,
|
||||
"peak_php_bytes": 45101320,
|
||||
"response_bytes": 8004
|
||||
},
|
||||
{
|
||||
"queries": 15,
|
||||
"database_ms": 9.670000000000002,
|
||||
"elapsed_ms": 16.071,
|
||||
"incremental_php_bytes": 108680,
|
||||
"peak_php_bytes": 45197512,
|
||||
"response_bytes": 8004
|
||||
},
|
||||
{
|
||||
"queries": 15,
|
||||
"database_ms": 10.72,
|
||||
"elapsed_ms": 17.432,
|
||||
"incremental_php_bytes": 109000,
|
||||
"peak_php_bytes": 45199048,
|
||||
"response_bytes": 8004
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"records": 1000,
|
||||
"view": "warehouses",
|
||||
"page_size": 25,
|
||||
"median_ms": 15.225,
|
||||
"samples": [
|
||||
{
|
||||
"queries": 15,
|
||||
"database_ms": 13.27,
|
||||
"elapsed_ms": 20.319,
|
||||
"incremental_php_bytes": 65472,
|
||||
"peak_php_bytes": 45165904,
|
||||
"response_bytes": 1310
|
||||
},
|
||||
{
|
||||
"queries": 15,
|
||||
"database_ms": 9.450000000000001,
|
||||
"elapsed_ms": 14.765,
|
||||
"incremental_php_bytes": 73088,
|
||||
"peak_php_bytes": 45043576,
|
||||
"response_bytes": 1310
|
||||
},
|
||||
{
|
||||
"queries": 15,
|
||||
"database_ms": 10.1,
|
||||
"elapsed_ms": 15.225,
|
||||
"incremental_php_bytes": 73088,
|
||||
"peak_php_bytes": 45044792,
|
||||
"response_bytes": 1310
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"records": 1000,
|
||||
"view": "warehouses",
|
||||
"page_size": 100,
|
||||
"median_ms": 15.476,
|
||||
"samples": [
|
||||
{
|
||||
"queries": 15,
|
||||
"database_ms": 10.06,
|
||||
"elapsed_ms": 15.476,
|
||||
"incremental_php_bytes": 65472,
|
||||
"peak_php_bytes": 45047240,
|
||||
"response_bytes": 1311
|
||||
},
|
||||
{
|
||||
"queries": 15,
|
||||
"database_ms": 9.719999999999999,
|
||||
"elapsed_ms": 14.553,
|
||||
"incremental_php_bytes": 73088,
|
||||
"peak_php_bytes": 45048672,
|
||||
"response_bytes": 1311
|
||||
},
|
||||
{
|
||||
"queries": 15,
|
||||
"database_ms": 11.75,
|
||||
"elapsed_ms": 18.882,
|
||||
"incremental_php_bytes": 73088,
|
||||
"peak_php_bytes": 45049888,
|
||||
"response_bytes": 1311
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"records": 1000,
|
||||
"view": "balances",
|
||||
"page_size": 25,
|
||||
"median_ms": 28.57,
|
||||
"samples": [
|
||||
{
|
||||
"queries": 15,
|
||||
"database_ms": 22.119999999999997,
|
||||
"elapsed_ms": 28.206,
|
||||
"incremental_php_bytes": 73384,
|
||||
"peak_php_bytes": 45060848,
|
||||
"response_bytes": 7854
|
||||
},
|
||||
{
|
||||
"queries": 15,
|
||||
"database_ms": 22.78,
|
||||
"elapsed_ms": 28.981,
|
||||
"incremental_php_bytes": 80992,
|
||||
"peak_php_bytes": 45129240,
|
||||
"response_bytes": 7854
|
||||
},
|
||||
{
|
||||
"queries": 15,
|
||||
"database_ms": 22.91,
|
||||
"elapsed_ms": 28.57,
|
||||
"incremental_php_bytes": 80992,
|
||||
"peak_php_bytes": 45130456,
|
||||
"response_bytes": 7854
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"records": 1000,
|
||||
"view": "balances",
|
||||
"page_size": 100,
|
||||
"median_ms": 32.412,
|
||||
"samples": [
|
||||
{
|
||||
"queries": 15,
|
||||
"database_ms": 40.309999999999995,
|
||||
"elapsed_ms": 47.208,
|
||||
"incremental_php_bytes": 202048,
|
||||
"peak_php_bytes": 45261552,
|
||||
"response_bytes": 27807
|
||||
},
|
||||
{
|
||||
"queries": 15,
|
||||
"database_ms": 25.26,
|
||||
"elapsed_ms": 32.412,
|
||||
"incremental_php_bytes": 181392,
|
||||
"peak_php_bytes": 45442640,
|
||||
"response_bytes": 27807
|
||||
},
|
||||
{
|
||||
"queries": 15,
|
||||
"database_ms": 22.92,
|
||||
"elapsed_ms": 29.493,
|
||||
"incremental_php_bytes": 181392,
|
||||
"peak_php_bytes": 45443856,
|
||||
"response_bytes": 27807
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"records": 1000,
|
||||
"view": "movements",
|
||||
"page_size": 25,
|
||||
"median_ms": 27.426,
|
||||
"samples": [
|
||||
{
|
||||
"queries": 15,
|
||||
"database_ms": 26.21,
|
||||
"elapsed_ms": 34.066,
|
||||
"incremental_php_bytes": 75104,
|
||||
"peak_php_bytes": 45347616,
|
||||
"response_bytes": 8012
|
||||
},
|
||||
{
|
||||
"queries": 15,
|
||||
"database_ms": 20.939999999999998,
|
||||
"elapsed_ms": 27.426,
|
||||
"incremental_php_bytes": 82720,
|
||||
"peak_php_bytes": 45144856,
|
||||
"response_bytes": 8012
|
||||
},
|
||||
{
|
||||
"queries": 15,
|
||||
"database_ms": 20.02,
|
||||
"elapsed_ms": 26.194,
|
||||
"incremental_php_bytes": 82720,
|
||||
"peak_php_bytes": 45146072,
|
||||
"response_bytes": 8012
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"records": 1000,
|
||||
"view": "movements",
|
||||
"page_size": 100,
|
||||
"median_ms": 25.314,
|
||||
"samples": [
|
||||
{
|
||||
"queries": 15,
|
||||
"database_ms": 18.82,
|
||||
"elapsed_ms": 25.314,
|
||||
"incremental_php_bytes": 212848,
|
||||
"peak_php_bytes": 45286248,
|
||||
"response_bytes": 28492
|
||||
},
|
||||
{
|
||||
"queries": 15,
|
||||
"database_ms": 18.810000000000002,
|
||||
"elapsed_ms": 24.952,
|
||||
"incremental_php_bytes": 187920,
|
||||
"peak_php_bytes": 45473864,
|
||||
"response_bytes": 28492
|
||||
},
|
||||
{
|
||||
"queries": 15,
|
||||
"database_ms": 20.14,
|
||||
"elapsed_ms": 26.799,
|
||||
"incremental_php_bytes": 189200,
|
||||
"peak_php_bytes": 45476360,
|
||||
"response_bytes": 28492
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"records": 5000,
|
||||
"view": "items",
|
||||
"page_size": 25,
|
||||
"median_ms": 32.046,
|
||||
"samples": [
|
||||
{
|
||||
"queries": 15,
|
||||
"database_ms": 24.290000000000003,
|
||||
"elapsed_ms": 32.046,
|
||||
"incremental_php_bytes": 65472,
|
||||
"peak_php_bytes": 45391824,
|
||||
"response_bytes": 2932
|
||||
},
|
||||
{
|
||||
"queries": 15,
|
||||
"database_ms": 23.220000000000002,
|
||||
"elapsed_ms": 28.768,
|
||||
"incremental_php_bytes": 73056,
|
||||
"peak_php_bytes": 45144984,
|
||||
"response_bytes": 2932
|
||||
},
|
||||
{
|
||||
"queries": 15,
|
||||
"database_ms": 35.3,
|
||||
"elapsed_ms": 43.458,
|
||||
"incremental_php_bytes": 73056,
|
||||
"peak_php_bytes": 45146200,
|
||||
"response_bytes": 2932
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"records": 5000,
|
||||
"view": "items",
|
||||
"page_size": 100,
|
||||
"median_ms": 36.666,
|
||||
"samples": [
|
||||
{
|
||||
"queries": 15,
|
||||
"database_ms": 25.93,
|
||||
"elapsed_ms": 32.249,
|
||||
"incremental_php_bytes": 101096,
|
||||
"peak_php_bytes": 45184416,
|
||||
"response_bytes": 8034
|
||||
},
|
||||
{
|
||||
"queries": 15,
|
||||
"database_ms": 30.490000000000006,
|
||||
"elapsed_ms": 36.666,
|
||||
"incremental_php_bytes": 108680,
|
||||
"peak_php_bytes": 45280608,
|
||||
"response_bytes": 8034
|
||||
},
|
||||
{
|
||||
"queries": 15,
|
||||
"database_ms": 34.53,
|
||||
"elapsed_ms": 41.724,
|
||||
"incremental_php_bytes": 108680,
|
||||
"peak_php_bytes": 45281824,
|
||||
"response_bytes": 8034
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"records": 5000,
|
||||
"view": "warehouses",
|
||||
"page_size": 25,
|
||||
"median_ms": 42.828,
|
||||
"samples": [
|
||||
{
|
||||
"queries": 15,
|
||||
"database_ms": 29.71,
|
||||
"elapsed_ms": 36.894,
|
||||
"incremental_php_bytes": 65472,
|
||||
"peak_php_bytes": 45248680,
|
||||
"response_bytes": 1340
|
||||
},
|
||||
{
|
||||
"queries": 15,
|
||||
"database_ms": 28.58,
|
||||
"elapsed_ms": 43.264,
|
||||
"incremental_php_bytes": 73088,
|
||||
"peak_php_bytes": 45126352,
|
||||
"response_bytes": 1340
|
||||
},
|
||||
{
|
||||
"queries": 15,
|
||||
"database_ms": 33.13,
|
||||
"elapsed_ms": 42.828,
|
||||
"incremental_php_bytes": 73088,
|
||||
"peak_php_bytes": 45127568,
|
||||
"response_bytes": 1340
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"records": 5000,
|
||||
"view": "warehouses",
|
||||
"page_size": 100,
|
||||
"median_ms": 38.669,
|
||||
"samples": [
|
||||
{
|
||||
"queries": 15,
|
||||
"database_ms": 35.45,
|
||||
"elapsed_ms": 42.782,
|
||||
"incremental_php_bytes": 65472,
|
||||
"peak_php_bytes": 45130016,
|
||||
"response_bytes": 1341
|
||||
},
|
||||
{
|
||||
"queries": 15,
|
||||
"database_ms": 29.66,
|
||||
"elapsed_ms": 38.669,
|
||||
"incremental_php_bytes": 73088,
|
||||
"peak_php_bytes": 45131448,
|
||||
"response_bytes": 1341
|
||||
},
|
||||
{
|
||||
"queries": 15,
|
||||
"database_ms": 25.959999999999997,
|
||||
"elapsed_ms": 34.054,
|
||||
"incremental_php_bytes": 73088,
|
||||
"peak_php_bytes": 45132664,
|
||||
"response_bytes": 1341
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"records": 5000,
|
||||
"view": "balances",
|
||||
"page_size": 25,
|
||||
"median_ms": 99.207,
|
||||
"samples": [
|
||||
{
|
||||
"queries": 15,
|
||||
"database_ms": 82.33,
|
||||
"elapsed_ms": 89.577,
|
||||
"incremental_php_bytes": 73384,
|
||||
"peak_php_bytes": 45142984,
|
||||
"response_bytes": 7885
|
||||
},
|
||||
{
|
||||
"queries": 15,
|
||||
"database_ms": 92.47,
|
||||
"elapsed_ms": 99.207,
|
||||
"incremental_php_bytes": 80992,
|
||||
"peak_php_bytes": 45211376,
|
||||
"response_bytes": 7885
|
||||
},
|
||||
{
|
||||
"queries": 15,
|
||||
"database_ms": 104.98,
|
||||
"elapsed_ms": 113.573,
|
||||
"incremental_php_bytes": 80992,
|
||||
"peak_php_bytes": 45212592,
|
||||
"response_bytes": 7885
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"records": 5000,
|
||||
"view": "balances",
|
||||
"page_size": 100,
|
||||
"median_ms": 92.208,
|
||||
"samples": [
|
||||
{
|
||||
"queries": 15,
|
||||
"database_ms": 80.97,
|
||||
"elapsed_ms": 89.424,
|
||||
"incremental_php_bytes": 202048,
|
||||
"peak_php_bytes": 45349320,
|
||||
"response_bytes": 27837
|
||||
},
|
||||
{
|
||||
"queries": 15,
|
||||
"database_ms": 85.38,
|
||||
"elapsed_ms": 92.208,
|
||||
"incremental_php_bytes": 181392,
|
||||
"peak_php_bytes": 45530408,
|
||||
"response_bytes": 27837
|
||||
},
|
||||
{
|
||||
"queries": 15,
|
||||
"database_ms": 99.84,
|
||||
"elapsed_ms": 107.714,
|
||||
"incremental_php_bytes": 181392,
|
||||
"peak_php_bytes": 45531624,
|
||||
"response_bytes": 27837
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"records": 5000,
|
||||
"view": "movements",
|
||||
"page_size": 25,
|
||||
"median_ms": 96.232,
|
||||
"samples": [
|
||||
{
|
||||
"queries": 15,
|
||||
"database_ms": 88.48,
|
||||
"elapsed_ms": 96.232,
|
||||
"incremental_php_bytes": 75104,
|
||||
"peak_php_bytes": 45435384,
|
||||
"response_bytes": 8044
|
||||
},
|
||||
{
|
||||
"queries": 15,
|
||||
"database_ms": 93,
|
||||
"elapsed_ms": 100.649,
|
||||
"incremental_php_bytes": 82720,
|
||||
"peak_php_bytes": 45232624,
|
||||
"response_bytes": 8044
|
||||
},
|
||||
{
|
||||
"queries": 15,
|
||||
"database_ms": 70.94,
|
||||
"elapsed_ms": 79.507,
|
||||
"incremental_php_bytes": 82720,
|
||||
"peak_php_bytes": 45233840,
|
||||
"response_bytes": 8044
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"records": 5000,
|
||||
"view": "movements",
|
||||
"page_size": 100,
|
||||
"median_ms": 76.294,
|
||||
"samples": [
|
||||
{
|
||||
"queries": 15,
|
||||
"database_ms": 74.6,
|
||||
"elapsed_ms": 80.654,
|
||||
"incremental_php_bytes": 212848,
|
||||
"peak_php_bytes": 45374016,
|
||||
"response_bytes": 28524
|
||||
},
|
||||
{
|
||||
"queries": 15,
|
||||
"database_ms": 68.18,
|
||||
"elapsed_ms": 76.294,
|
||||
"incremental_php_bytes": 187920,
|
||||
"peak_php_bytes": 45561632,
|
||||
"response_bytes": 28524
|
||||
},
|
||||
{
|
||||
"queries": 15,
|
||||
"database_ms": 68.53,
|
||||
"elapsed_ms": 75.194,
|
||||
"incremental_php_bytes": 187920,
|
||||
"peak_php_bytes": 45562848,
|
||||
"response_bytes": 28524
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"records": 10000,
|
||||
"view": "items",
|
||||
"page_size": 25,
|
||||
"median_ms": 63.729,
|
||||
"samples": [
|
||||
{
|
||||
"queries": 15,
|
||||
"database_ms": 55.09,
|
||||
"elapsed_ms": 63.729,
|
||||
"incremental_php_bytes": 65472,
|
||||
"peak_php_bytes": 45641168,
|
||||
"response_bytes": 2933
|
||||
},
|
||||
{
|
||||
"queries": 15,
|
||||
"database_ms": 69.98,
|
||||
"elapsed_ms": 80.337,
|
||||
"incremental_php_bytes": 73056,
|
||||
"peak_php_bytes": 45398424,
|
||||
"response_bytes": 2933
|
||||
},
|
||||
{
|
||||
"queries": 15,
|
||||
"database_ms": 49.14,
|
||||
"elapsed_ms": 58.236,
|
||||
"incremental_php_bytes": 73056,
|
||||
"peak_php_bytes": 45399640,
|
||||
"response_bytes": 2933
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"records": 10000,
|
||||
"view": "items",
|
||||
"page_size": 100,
|
||||
"median_ms": 43.684,
|
||||
"samples": [
|
||||
{
|
||||
"queries": 15,
|
||||
"database_ms": 44.22,
|
||||
"elapsed_ms": 51.456,
|
||||
"incremental_php_bytes": 101096,
|
||||
"peak_php_bytes": 45438016,
|
||||
"response_bytes": 8036
|
||||
},
|
||||
{
|
||||
"queries": 15,
|
||||
"database_ms": 38.07,
|
||||
"elapsed_ms": 43.684,
|
||||
"incremental_php_bytes": 108680,
|
||||
"peak_php_bytes": 45534208,
|
||||
"response_bytes": 8036
|
||||
},
|
||||
{
|
||||
"queries": 15,
|
||||
"database_ms": 37.18,
|
||||
"elapsed_ms": 43.267,
|
||||
"incremental_php_bytes": 108680,
|
||||
"peak_php_bytes": 45535424,
|
||||
"response_bytes": 8036
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"records": 10000,
|
||||
"view": "warehouses",
|
||||
"page_size": 25,
|
||||
"median_ms": 39.995,
|
||||
"samples": [
|
||||
{
|
||||
"queries": 15,
|
||||
"database_ms": 33.11000000000001,
|
||||
"elapsed_ms": 38.771,
|
||||
"incremental_php_bytes": 65472,
|
||||
"peak_php_bytes": 45502280,
|
||||
"response_bytes": 1340
|
||||
},
|
||||
{
|
||||
"queries": 15,
|
||||
"database_ms": 33.6,
|
||||
"elapsed_ms": 39.995,
|
||||
"incremental_php_bytes": 73088,
|
||||
"peak_php_bytes": 45379952,
|
||||
"response_bytes": 1340
|
||||
},
|
||||
{
|
||||
"queries": 15,
|
||||
"database_ms": 34.059999999999995,
|
||||
"elapsed_ms": 40.038,
|
||||
"incremental_php_bytes": 73088,
|
||||
"peak_php_bytes": 45381168,
|
||||
"response_bytes": 1340
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"records": 10000,
|
||||
"view": "warehouses",
|
||||
"page_size": 100,
|
||||
"median_ms": 43.793,
|
||||
"samples": [
|
||||
{
|
||||
"queries": 15,
|
||||
"database_ms": 35.800000000000004,
|
||||
"elapsed_ms": 41.348,
|
||||
"incremental_php_bytes": 65472,
|
||||
"peak_php_bytes": 45383616,
|
||||
"response_bytes": 1341
|
||||
},
|
||||
{
|
||||
"queries": 15,
|
||||
"database_ms": 37.99,
|
||||
"elapsed_ms": 43.793,
|
||||
"incremental_php_bytes": 73088,
|
||||
"peak_php_bytes": 45385048,
|
||||
"response_bytes": 1341
|
||||
},
|
||||
{
|
||||
"queries": 15,
|
||||
"database_ms": 37.48999999999999,
|
||||
"elapsed_ms": 45.022,
|
||||
"incremental_php_bytes": 73088,
|
||||
"peak_php_bytes": 45386264,
|
||||
"response_bytes": 1341
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"records": 10000,
|
||||
"view": "balances",
|
||||
"page_size": 25,
|
||||
"median_ms": 143.295,
|
||||
"samples": [
|
||||
{
|
||||
"queries": 15,
|
||||
"database_ms": 141.85,
|
||||
"elapsed_ms": 148.065,
|
||||
"incremental_php_bytes": 73384,
|
||||
"peak_php_bytes": 45396584,
|
||||
"response_bytes": 7911
|
||||
},
|
||||
{
|
||||
"queries": 15,
|
||||
"database_ms": 137.49,
|
||||
"elapsed_ms": 143.295,
|
||||
"incremental_php_bytes": 80992,
|
||||
"peak_php_bytes": 45464976,
|
||||
"response_bytes": 7911
|
||||
},
|
||||
{
|
||||
"queries": 15,
|
||||
"database_ms": 134.95,
|
||||
"elapsed_ms": 140.908,
|
||||
"incremental_php_bytes": 80992,
|
||||
"peak_php_bytes": 45466192,
|
||||
"response_bytes": 7911
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"records": 10000,
|
||||
"view": "balances",
|
||||
"page_size": 100,
|
||||
"median_ms": 146.565,
|
||||
"samples": [
|
||||
{
|
||||
"queries": 15,
|
||||
"database_ms": 140.84,
|
||||
"elapsed_ms": 146.565,
|
||||
"incremental_php_bytes": 202048,
|
||||
"peak_php_bytes": 45597288,
|
||||
"response_bytes": 27939
|
||||
},
|
||||
{
|
||||
"queries": 15,
|
||||
"database_ms": 142.23000000000002,
|
||||
"elapsed_ms": 148.635,
|
||||
"incremental_php_bytes": 181392,
|
||||
"peak_php_bytes": 45778376,
|
||||
"response_bytes": 27939
|
||||
},
|
||||
{
|
||||
"queries": 15,
|
||||
"database_ms": 139.66,
|
||||
"elapsed_ms": 145.615,
|
||||
"incremental_php_bytes": 181392,
|
||||
"peak_php_bytes": 45779592,
|
||||
"response_bytes": 27939
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"records": 10000,
|
||||
"view": "movements",
|
||||
"page_size": 25,
|
||||
"median_ms": 122.667,
|
||||
"samples": [
|
||||
{
|
||||
"queries": 15,
|
||||
"database_ms": 119.6,
|
||||
"elapsed_ms": 125.981,
|
||||
"incremental_php_bytes": 75104,
|
||||
"peak_php_bytes": 45683352,
|
||||
"response_bytes": 8044
|
||||
},
|
||||
{
|
||||
"queries": 15,
|
||||
"database_ms": 117,
|
||||
"elapsed_ms": 122.667,
|
||||
"incremental_php_bytes": 82720,
|
||||
"peak_php_bytes": 45480592,
|
||||
"response_bytes": 8044
|
||||
},
|
||||
{
|
||||
"queries": 15,
|
||||
"database_ms": 113.22,
|
||||
"elapsed_ms": 119.433,
|
||||
"incremental_php_bytes": 82720,
|
||||
"peak_php_bytes": 45481808,
|
||||
"response_bytes": 8044
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"records": 10000,
|
||||
"view": "movements",
|
||||
"page_size": 100,
|
||||
"median_ms": 121.913,
|
||||
"samples": [
|
||||
{
|
||||
"queries": 15,
|
||||
"database_ms": 120.09,
|
||||
"elapsed_ms": 127.452,
|
||||
"incremental_php_bytes": 212848,
|
||||
"peak_php_bytes": 45621984,
|
||||
"response_bytes": 28524
|
||||
},
|
||||
{
|
||||
"queries": 15,
|
||||
"database_ms": 115.59,
|
||||
"elapsed_ms": 121.913,
|
||||
"incremental_php_bytes": 187920,
|
||||
"peak_php_bytes": 45809600,
|
||||
"response_bytes": 28524
|
||||
},
|
||||
{
|
||||
"queries": 15,
|
||||
"database_ms": 113.34,
|
||||
"elapsed_ms": 120.243,
|
||||
"incremental_php_bytes": 187920,
|
||||
"peak_php_bytes": 45810816,
|
||||
"response_bytes": 28524
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"source_composition": "SGF adapter and common reader in isolated regression only; Purchasing HTTP composition not yet connected",
|
||||
"indexes": "Primary keys only; no index experiment",
|
||||
"fixtures": "New QA-only schemas and identities retained; no reset or protected-record changes",
|
||||
"source_sha256": "9b0591600da07719d655324ccf0b740f06de07db2806540684c9730d048e44b6",
|
||||
"controller_sha256": "e71e3522b6f8ba19a67c3084f0b9c3aac9cc37e7ff88f7c50a104625aea61405"
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
{
|
||||
"identity": {
|
||||
"database": "sgf_tempo_test",
|
||||
"role": "sgf_test_runner",
|
||||
"port": 55439,
|
||||
"cluster": "sgf_modular_regression_2576427d1939"
|
||||
},
|
||||
"read_only": true,
|
||||
"temporary_stock_grants_remaining": 0,
|
||||
"original_constraint_restored_without_stock_right": true,
|
||||
"constraint_sha256": "40046092cba51f1b46d26d5f0da8af47e8336e90a8d50b8de3a8c390758f1783",
|
||||
"operational_source_bindings": 0
|
||||
}
|
||||
@@ -0,0 +1,948 @@
|
||||
{
|
||||
"date": "2026-11-02",
|
||||
"increment": "SGF-STOCK-READ-SIM-v1",
|
||||
"status": "partial_synthetic_sgf_read_adapter",
|
||||
"tests": {
|
||||
"initial_stock_suite": {
|
||||
"tests": 3,
|
||||
"assertions": 465,
|
||||
"errors": 0,
|
||||
"failures": 0,
|
||||
"sha256": "ab46f339709f32f606f47db3935209080e6954d7a3ae7126ff7c7686792e0c37"
|
||||
},
|
||||
"final_functional": {
|
||||
"tests": 2,
|
||||
"assertions": 77,
|
||||
"errors": 0,
|
||||
"failures": 0,
|
||||
"sha256": "b4a58c3701b2d46c73f04c6cc9e51c6c529a54983d57148f1ff87be7de3e3b00"
|
||||
},
|
||||
"navigation": {
|
||||
"tests": 8,
|
||||
"assertions": 90,
|
||||
"errors": 0,
|
||||
"failures": 0,
|
||||
"sha256": "723d7c92c0c99671c85baa31fcd93cfbd058cdd20d5acdeddbf9a2474e04394d"
|
||||
}
|
||||
},
|
||||
"provenance": {
|
||||
"reader_sha256": "9b0591600da07719d655324ccf0b740f06de07db2806540684c9730d048e44b6",
|
||||
"measured_controller_sha256": "e71e3522b6f8ba19a67c3084f0b9c3aac9cc37e7ff88f7c50a104625aea61405",
|
||||
"final_controller_sha256": "58465ac0f30dfe170f71f484261251d90d73fabd18a9413211f66c54a678bdbe",
|
||||
"followup": "Error handling for missing/incompatible source and timeout added after load measurement; successful query path/reader unchanged. Final functional cases rerun; load not repeated."
|
||||
},
|
||||
"profiles": [
|
||||
{
|
||||
"records": 1000,
|
||||
"view": "items",
|
||||
"page_size": 25,
|
||||
"median_ms": 16.919,
|
||||
"samples": [
|
||||
{
|
||||
"queries": 15,
|
||||
"database_ms": 12.010000000000002,
|
||||
"elapsed_ms": 18.913,
|
||||
"incremental_php_bytes": 65472,
|
||||
"peak_php_bytes": 45006352,
|
||||
"response_bytes": 2901
|
||||
},
|
||||
{
|
||||
"queries": 15,
|
||||
"database_ms": 9.48,
|
||||
"elapsed_ms": 15.34,
|
||||
"incremental_php_bytes": 73056,
|
||||
"peak_php_bytes": 45060992,
|
||||
"response_bytes": 2901
|
||||
},
|
||||
{
|
||||
"queries": 15,
|
||||
"database_ms": 10.909999999999998,
|
||||
"elapsed_ms": 16.919,
|
||||
"incremental_php_bytes": 73056,
|
||||
"peak_php_bytes": 45062208,
|
||||
"response_bytes": 2901
|
||||
}
|
||||
],
|
||||
"queries": [
|
||||
15
|
||||
],
|
||||
"max_incremental_php_bytes": 73056
|
||||
},
|
||||
{
|
||||
"records": 1000,
|
||||
"view": "items",
|
||||
"page_size": 100,
|
||||
"median_ms": 16.071,
|
||||
"samples": [
|
||||
{
|
||||
"queries": 15,
|
||||
"database_ms": 9.16,
|
||||
"elapsed_ms": 15.269,
|
||||
"incremental_php_bytes": 101096,
|
||||
"peak_php_bytes": 45101320,
|
||||
"response_bytes": 8004
|
||||
},
|
||||
{
|
||||
"queries": 15,
|
||||
"database_ms": 9.670000000000002,
|
||||
"elapsed_ms": 16.071,
|
||||
"incremental_php_bytes": 108680,
|
||||
"peak_php_bytes": 45197512,
|
||||
"response_bytes": 8004
|
||||
},
|
||||
{
|
||||
"queries": 15,
|
||||
"database_ms": 10.72,
|
||||
"elapsed_ms": 17.432,
|
||||
"incremental_php_bytes": 109000,
|
||||
"peak_php_bytes": 45199048,
|
||||
"response_bytes": 8004
|
||||
}
|
||||
],
|
||||
"queries": [
|
||||
15
|
||||
],
|
||||
"max_incremental_php_bytes": 109000
|
||||
},
|
||||
{
|
||||
"records": 1000,
|
||||
"view": "warehouses",
|
||||
"page_size": 25,
|
||||
"median_ms": 15.225,
|
||||
"samples": [
|
||||
{
|
||||
"queries": 15,
|
||||
"database_ms": 13.27,
|
||||
"elapsed_ms": 20.319,
|
||||
"incremental_php_bytes": 65472,
|
||||
"peak_php_bytes": 45165904,
|
||||
"response_bytes": 1310
|
||||
},
|
||||
{
|
||||
"queries": 15,
|
||||
"database_ms": 9.450000000000001,
|
||||
"elapsed_ms": 14.765,
|
||||
"incremental_php_bytes": 73088,
|
||||
"peak_php_bytes": 45043576,
|
||||
"response_bytes": 1310
|
||||
},
|
||||
{
|
||||
"queries": 15,
|
||||
"database_ms": 10.1,
|
||||
"elapsed_ms": 15.225,
|
||||
"incremental_php_bytes": 73088,
|
||||
"peak_php_bytes": 45044792,
|
||||
"response_bytes": 1310
|
||||
}
|
||||
],
|
||||
"queries": [
|
||||
15
|
||||
],
|
||||
"max_incremental_php_bytes": 73088
|
||||
},
|
||||
{
|
||||
"records": 1000,
|
||||
"view": "warehouses",
|
||||
"page_size": 100,
|
||||
"median_ms": 15.476,
|
||||
"samples": [
|
||||
{
|
||||
"queries": 15,
|
||||
"database_ms": 10.06,
|
||||
"elapsed_ms": 15.476,
|
||||
"incremental_php_bytes": 65472,
|
||||
"peak_php_bytes": 45047240,
|
||||
"response_bytes": 1311
|
||||
},
|
||||
{
|
||||
"queries": 15,
|
||||
"database_ms": 9.719999999999999,
|
||||
"elapsed_ms": 14.553,
|
||||
"incremental_php_bytes": 73088,
|
||||
"peak_php_bytes": 45048672,
|
||||
"response_bytes": 1311
|
||||
},
|
||||
{
|
||||
"queries": 15,
|
||||
"database_ms": 11.75,
|
||||
"elapsed_ms": 18.882,
|
||||
"incremental_php_bytes": 73088,
|
||||
"peak_php_bytes": 45049888,
|
||||
"response_bytes": 1311
|
||||
}
|
||||
],
|
||||
"queries": [
|
||||
15
|
||||
],
|
||||
"max_incremental_php_bytes": 73088
|
||||
},
|
||||
{
|
||||
"records": 1000,
|
||||
"view": "balances",
|
||||
"page_size": 25,
|
||||
"median_ms": 28.57,
|
||||
"samples": [
|
||||
{
|
||||
"queries": 15,
|
||||
"database_ms": 22.119999999999997,
|
||||
"elapsed_ms": 28.206,
|
||||
"incremental_php_bytes": 73384,
|
||||
"peak_php_bytes": 45060848,
|
||||
"response_bytes": 7854
|
||||
},
|
||||
{
|
||||
"queries": 15,
|
||||
"database_ms": 22.78,
|
||||
"elapsed_ms": 28.981,
|
||||
"incremental_php_bytes": 80992,
|
||||
"peak_php_bytes": 45129240,
|
||||
"response_bytes": 7854
|
||||
},
|
||||
{
|
||||
"queries": 15,
|
||||
"database_ms": 22.91,
|
||||
"elapsed_ms": 28.57,
|
||||
"incremental_php_bytes": 80992,
|
||||
"peak_php_bytes": 45130456,
|
||||
"response_bytes": 7854
|
||||
}
|
||||
],
|
||||
"queries": [
|
||||
15
|
||||
],
|
||||
"max_incremental_php_bytes": 80992
|
||||
},
|
||||
{
|
||||
"records": 1000,
|
||||
"view": "balances",
|
||||
"page_size": 100,
|
||||
"median_ms": 32.412,
|
||||
"samples": [
|
||||
{
|
||||
"queries": 15,
|
||||
"database_ms": 40.309999999999995,
|
||||
"elapsed_ms": 47.208,
|
||||
"incremental_php_bytes": 202048,
|
||||
"peak_php_bytes": 45261552,
|
||||
"response_bytes": 27807
|
||||
},
|
||||
{
|
||||
"queries": 15,
|
||||
"database_ms": 25.26,
|
||||
"elapsed_ms": 32.412,
|
||||
"incremental_php_bytes": 181392,
|
||||
"peak_php_bytes": 45442640,
|
||||
"response_bytes": 27807
|
||||
},
|
||||
{
|
||||
"queries": 15,
|
||||
"database_ms": 22.92,
|
||||
"elapsed_ms": 29.493,
|
||||
"incremental_php_bytes": 181392,
|
||||
"peak_php_bytes": 45443856,
|
||||
"response_bytes": 27807
|
||||
}
|
||||
],
|
||||
"queries": [
|
||||
15
|
||||
],
|
||||
"max_incremental_php_bytes": 202048
|
||||
},
|
||||
{
|
||||
"records": 1000,
|
||||
"view": "movements",
|
||||
"page_size": 25,
|
||||
"median_ms": 27.426,
|
||||
"samples": [
|
||||
{
|
||||
"queries": 15,
|
||||
"database_ms": 26.21,
|
||||
"elapsed_ms": 34.066,
|
||||
"incremental_php_bytes": 75104,
|
||||
"peak_php_bytes": 45347616,
|
||||
"response_bytes": 8012
|
||||
},
|
||||
{
|
||||
"queries": 15,
|
||||
"database_ms": 20.939999999999998,
|
||||
"elapsed_ms": 27.426,
|
||||
"incremental_php_bytes": 82720,
|
||||
"peak_php_bytes": 45144856,
|
||||
"response_bytes": 8012
|
||||
},
|
||||
{
|
||||
"queries": 15,
|
||||
"database_ms": 20.02,
|
||||
"elapsed_ms": 26.194,
|
||||
"incremental_php_bytes": 82720,
|
||||
"peak_php_bytes": 45146072,
|
||||
"response_bytes": 8012
|
||||
}
|
||||
],
|
||||
"queries": [
|
||||
15
|
||||
],
|
||||
"max_incremental_php_bytes": 82720
|
||||
},
|
||||
{
|
||||
"records": 1000,
|
||||
"view": "movements",
|
||||
"page_size": 100,
|
||||
"median_ms": 25.314,
|
||||
"samples": [
|
||||
{
|
||||
"queries": 15,
|
||||
"database_ms": 18.82,
|
||||
"elapsed_ms": 25.314,
|
||||
"incremental_php_bytes": 212848,
|
||||
"peak_php_bytes": 45286248,
|
||||
"response_bytes": 28492
|
||||
},
|
||||
{
|
||||
"queries": 15,
|
||||
"database_ms": 18.810000000000002,
|
||||
"elapsed_ms": 24.952,
|
||||
"incremental_php_bytes": 187920,
|
||||
"peak_php_bytes": 45473864,
|
||||
"response_bytes": 28492
|
||||
},
|
||||
{
|
||||
"queries": 15,
|
||||
"database_ms": 20.14,
|
||||
"elapsed_ms": 26.799,
|
||||
"incremental_php_bytes": 189200,
|
||||
"peak_php_bytes": 45476360,
|
||||
"response_bytes": 28492
|
||||
}
|
||||
],
|
||||
"queries": [
|
||||
15
|
||||
],
|
||||
"max_incremental_php_bytes": 212848
|
||||
},
|
||||
{
|
||||
"records": 5000,
|
||||
"view": "items",
|
||||
"page_size": 25,
|
||||
"median_ms": 32.046,
|
||||
"samples": [
|
||||
{
|
||||
"queries": 15,
|
||||
"database_ms": 24.290000000000003,
|
||||
"elapsed_ms": 32.046,
|
||||
"incremental_php_bytes": 65472,
|
||||
"peak_php_bytes": 45391824,
|
||||
"response_bytes": 2932
|
||||
},
|
||||
{
|
||||
"queries": 15,
|
||||
"database_ms": 23.220000000000002,
|
||||
"elapsed_ms": 28.768,
|
||||
"incremental_php_bytes": 73056,
|
||||
"peak_php_bytes": 45144984,
|
||||
"response_bytes": 2932
|
||||
},
|
||||
{
|
||||
"queries": 15,
|
||||
"database_ms": 35.3,
|
||||
"elapsed_ms": 43.458,
|
||||
"incremental_php_bytes": 73056,
|
||||
"peak_php_bytes": 45146200,
|
||||
"response_bytes": 2932
|
||||
}
|
||||
],
|
||||
"queries": [
|
||||
15
|
||||
],
|
||||
"max_incremental_php_bytes": 73056
|
||||
},
|
||||
{
|
||||
"records": 5000,
|
||||
"view": "items",
|
||||
"page_size": 100,
|
||||
"median_ms": 36.666,
|
||||
"samples": [
|
||||
{
|
||||
"queries": 15,
|
||||
"database_ms": 25.93,
|
||||
"elapsed_ms": 32.249,
|
||||
"incremental_php_bytes": 101096,
|
||||
"peak_php_bytes": 45184416,
|
||||
"response_bytes": 8034
|
||||
},
|
||||
{
|
||||
"queries": 15,
|
||||
"database_ms": 30.490000000000006,
|
||||
"elapsed_ms": 36.666,
|
||||
"incremental_php_bytes": 108680,
|
||||
"peak_php_bytes": 45280608,
|
||||
"response_bytes": 8034
|
||||
},
|
||||
{
|
||||
"queries": 15,
|
||||
"database_ms": 34.53,
|
||||
"elapsed_ms": 41.724,
|
||||
"incremental_php_bytes": 108680,
|
||||
"peak_php_bytes": 45281824,
|
||||
"response_bytes": 8034
|
||||
}
|
||||
],
|
||||
"queries": [
|
||||
15
|
||||
],
|
||||
"max_incremental_php_bytes": 108680
|
||||
},
|
||||
{
|
||||
"records": 5000,
|
||||
"view": "warehouses",
|
||||
"page_size": 25,
|
||||
"median_ms": 42.828,
|
||||
"samples": [
|
||||
{
|
||||
"queries": 15,
|
||||
"database_ms": 29.71,
|
||||
"elapsed_ms": 36.894,
|
||||
"incremental_php_bytes": 65472,
|
||||
"peak_php_bytes": 45248680,
|
||||
"response_bytes": 1340
|
||||
},
|
||||
{
|
||||
"queries": 15,
|
||||
"database_ms": 28.58,
|
||||
"elapsed_ms": 43.264,
|
||||
"incremental_php_bytes": 73088,
|
||||
"peak_php_bytes": 45126352,
|
||||
"response_bytes": 1340
|
||||
},
|
||||
{
|
||||
"queries": 15,
|
||||
"database_ms": 33.13,
|
||||
"elapsed_ms": 42.828,
|
||||
"incremental_php_bytes": 73088,
|
||||
"peak_php_bytes": 45127568,
|
||||
"response_bytes": 1340
|
||||
}
|
||||
],
|
||||
"queries": [
|
||||
15
|
||||
],
|
||||
"max_incremental_php_bytes": 73088
|
||||
},
|
||||
{
|
||||
"records": 5000,
|
||||
"view": "warehouses",
|
||||
"page_size": 100,
|
||||
"median_ms": 38.669,
|
||||
"samples": [
|
||||
{
|
||||
"queries": 15,
|
||||
"database_ms": 35.45,
|
||||
"elapsed_ms": 42.782,
|
||||
"incremental_php_bytes": 65472,
|
||||
"peak_php_bytes": 45130016,
|
||||
"response_bytes": 1341
|
||||
},
|
||||
{
|
||||
"queries": 15,
|
||||
"database_ms": 29.66,
|
||||
"elapsed_ms": 38.669,
|
||||
"incremental_php_bytes": 73088,
|
||||
"peak_php_bytes": 45131448,
|
||||
"response_bytes": 1341
|
||||
},
|
||||
{
|
||||
"queries": 15,
|
||||
"database_ms": 25.959999999999997,
|
||||
"elapsed_ms": 34.054,
|
||||
"incremental_php_bytes": 73088,
|
||||
"peak_php_bytes": 45132664,
|
||||
"response_bytes": 1341
|
||||
}
|
||||
],
|
||||
"queries": [
|
||||
15
|
||||
],
|
||||
"max_incremental_php_bytes": 73088
|
||||
},
|
||||
{
|
||||
"records": 5000,
|
||||
"view": "balances",
|
||||
"page_size": 25,
|
||||
"median_ms": 99.207,
|
||||
"samples": [
|
||||
{
|
||||
"queries": 15,
|
||||
"database_ms": 82.33,
|
||||
"elapsed_ms": 89.577,
|
||||
"incremental_php_bytes": 73384,
|
||||
"peak_php_bytes": 45142984,
|
||||
"response_bytes": 7885
|
||||
},
|
||||
{
|
||||
"queries": 15,
|
||||
"database_ms": 92.47,
|
||||
"elapsed_ms": 99.207,
|
||||
"incremental_php_bytes": 80992,
|
||||
"peak_php_bytes": 45211376,
|
||||
"response_bytes": 7885
|
||||
},
|
||||
{
|
||||
"queries": 15,
|
||||
"database_ms": 104.98,
|
||||
"elapsed_ms": 113.573,
|
||||
"incremental_php_bytes": 80992,
|
||||
"peak_php_bytes": 45212592,
|
||||
"response_bytes": 7885
|
||||
}
|
||||
],
|
||||
"queries": [
|
||||
15
|
||||
],
|
||||
"max_incremental_php_bytes": 80992
|
||||
},
|
||||
{
|
||||
"records": 5000,
|
||||
"view": "balances",
|
||||
"page_size": 100,
|
||||
"median_ms": 92.208,
|
||||
"samples": [
|
||||
{
|
||||
"queries": 15,
|
||||
"database_ms": 80.97,
|
||||
"elapsed_ms": 89.424,
|
||||
"incremental_php_bytes": 202048,
|
||||
"peak_php_bytes": 45349320,
|
||||
"response_bytes": 27837
|
||||
},
|
||||
{
|
||||
"queries": 15,
|
||||
"database_ms": 85.38,
|
||||
"elapsed_ms": 92.208,
|
||||
"incremental_php_bytes": 181392,
|
||||
"peak_php_bytes": 45530408,
|
||||
"response_bytes": 27837
|
||||
},
|
||||
{
|
||||
"queries": 15,
|
||||
"database_ms": 99.84,
|
||||
"elapsed_ms": 107.714,
|
||||
"incremental_php_bytes": 181392,
|
||||
"peak_php_bytes": 45531624,
|
||||
"response_bytes": 27837
|
||||
}
|
||||
],
|
||||
"queries": [
|
||||
15
|
||||
],
|
||||
"max_incremental_php_bytes": 202048
|
||||
},
|
||||
{
|
||||
"records": 5000,
|
||||
"view": "movements",
|
||||
"page_size": 25,
|
||||
"median_ms": 96.232,
|
||||
"samples": [
|
||||
{
|
||||
"queries": 15,
|
||||
"database_ms": 88.48,
|
||||
"elapsed_ms": 96.232,
|
||||
"incremental_php_bytes": 75104,
|
||||
"peak_php_bytes": 45435384,
|
||||
"response_bytes": 8044
|
||||
},
|
||||
{
|
||||
"queries": 15,
|
||||
"database_ms": 93,
|
||||
"elapsed_ms": 100.649,
|
||||
"incremental_php_bytes": 82720,
|
||||
"peak_php_bytes": 45232624,
|
||||
"response_bytes": 8044
|
||||
},
|
||||
{
|
||||
"queries": 15,
|
||||
"database_ms": 70.94,
|
||||
"elapsed_ms": 79.507,
|
||||
"incremental_php_bytes": 82720,
|
||||
"peak_php_bytes": 45233840,
|
||||
"response_bytes": 8044
|
||||
}
|
||||
],
|
||||
"queries": [
|
||||
15
|
||||
],
|
||||
"max_incremental_php_bytes": 82720
|
||||
},
|
||||
{
|
||||
"records": 5000,
|
||||
"view": "movements",
|
||||
"page_size": 100,
|
||||
"median_ms": 76.294,
|
||||
"samples": [
|
||||
{
|
||||
"queries": 15,
|
||||
"database_ms": 74.6,
|
||||
"elapsed_ms": 80.654,
|
||||
"incremental_php_bytes": 212848,
|
||||
"peak_php_bytes": 45374016,
|
||||
"response_bytes": 28524
|
||||
},
|
||||
{
|
||||
"queries": 15,
|
||||
"database_ms": 68.18,
|
||||
"elapsed_ms": 76.294,
|
||||
"incremental_php_bytes": 187920,
|
||||
"peak_php_bytes": 45561632,
|
||||
"response_bytes": 28524
|
||||
},
|
||||
{
|
||||
"queries": 15,
|
||||
"database_ms": 68.53,
|
||||
"elapsed_ms": 75.194,
|
||||
"incremental_php_bytes": 187920,
|
||||
"peak_php_bytes": 45562848,
|
||||
"response_bytes": 28524
|
||||
}
|
||||
],
|
||||
"queries": [
|
||||
15
|
||||
],
|
||||
"max_incremental_php_bytes": 212848
|
||||
},
|
||||
{
|
||||
"records": 10000,
|
||||
"view": "items",
|
||||
"page_size": 25,
|
||||
"median_ms": 63.729,
|
||||
"samples": [
|
||||
{
|
||||
"queries": 15,
|
||||
"database_ms": 55.09,
|
||||
"elapsed_ms": 63.729,
|
||||
"incremental_php_bytes": 65472,
|
||||
"peak_php_bytes": 45641168,
|
||||
"response_bytes": 2933
|
||||
},
|
||||
{
|
||||
"queries": 15,
|
||||
"database_ms": 69.98,
|
||||
"elapsed_ms": 80.337,
|
||||
"incremental_php_bytes": 73056,
|
||||
"peak_php_bytes": 45398424,
|
||||
"response_bytes": 2933
|
||||
},
|
||||
{
|
||||
"queries": 15,
|
||||
"database_ms": 49.14,
|
||||
"elapsed_ms": 58.236,
|
||||
"incremental_php_bytes": 73056,
|
||||
"peak_php_bytes": 45399640,
|
||||
"response_bytes": 2933
|
||||
}
|
||||
],
|
||||
"queries": [
|
||||
15
|
||||
],
|
||||
"max_incremental_php_bytes": 73056
|
||||
},
|
||||
{
|
||||
"records": 10000,
|
||||
"view": "items",
|
||||
"page_size": 100,
|
||||
"median_ms": 43.684,
|
||||
"samples": [
|
||||
{
|
||||
"queries": 15,
|
||||
"database_ms": 44.22,
|
||||
"elapsed_ms": 51.456,
|
||||
"incremental_php_bytes": 101096,
|
||||
"peak_php_bytes": 45438016,
|
||||
"response_bytes": 8036
|
||||
},
|
||||
{
|
||||
"queries": 15,
|
||||
"database_ms": 38.07,
|
||||
"elapsed_ms": 43.684,
|
||||
"incremental_php_bytes": 108680,
|
||||
"peak_php_bytes": 45534208,
|
||||
"response_bytes": 8036
|
||||
},
|
||||
{
|
||||
"queries": 15,
|
||||
"database_ms": 37.18,
|
||||
"elapsed_ms": 43.267,
|
||||
"incremental_php_bytes": 108680,
|
||||
"peak_php_bytes": 45535424,
|
||||
"response_bytes": 8036
|
||||
}
|
||||
],
|
||||
"queries": [
|
||||
15
|
||||
],
|
||||
"max_incremental_php_bytes": 108680
|
||||
},
|
||||
{
|
||||
"records": 10000,
|
||||
"view": "warehouses",
|
||||
"page_size": 25,
|
||||
"median_ms": 39.995,
|
||||
"samples": [
|
||||
{
|
||||
"queries": 15,
|
||||
"database_ms": 33.11000000000001,
|
||||
"elapsed_ms": 38.771,
|
||||
"incremental_php_bytes": 65472,
|
||||
"peak_php_bytes": 45502280,
|
||||
"response_bytes": 1340
|
||||
},
|
||||
{
|
||||
"queries": 15,
|
||||
"database_ms": 33.6,
|
||||
"elapsed_ms": 39.995,
|
||||
"incremental_php_bytes": 73088,
|
||||
"peak_php_bytes": 45379952,
|
||||
"response_bytes": 1340
|
||||
},
|
||||
{
|
||||
"queries": 15,
|
||||
"database_ms": 34.059999999999995,
|
||||
"elapsed_ms": 40.038,
|
||||
"incremental_php_bytes": 73088,
|
||||
"peak_php_bytes": 45381168,
|
||||
"response_bytes": 1340
|
||||
}
|
||||
],
|
||||
"queries": [
|
||||
15
|
||||
],
|
||||
"max_incremental_php_bytes": 73088
|
||||
},
|
||||
{
|
||||
"records": 10000,
|
||||
"view": "warehouses",
|
||||
"page_size": 100,
|
||||
"median_ms": 43.793,
|
||||
"samples": [
|
||||
{
|
||||
"queries": 15,
|
||||
"database_ms": 35.800000000000004,
|
||||
"elapsed_ms": 41.348,
|
||||
"incremental_php_bytes": 65472,
|
||||
"peak_php_bytes": 45383616,
|
||||
"response_bytes": 1341
|
||||
},
|
||||
{
|
||||
"queries": 15,
|
||||
"database_ms": 37.99,
|
||||
"elapsed_ms": 43.793,
|
||||
"incremental_php_bytes": 73088,
|
||||
"peak_php_bytes": 45385048,
|
||||
"response_bytes": 1341
|
||||
},
|
||||
{
|
||||
"queries": 15,
|
||||
"database_ms": 37.48999999999999,
|
||||
"elapsed_ms": 45.022,
|
||||
"incremental_php_bytes": 73088,
|
||||
"peak_php_bytes": 45386264,
|
||||
"response_bytes": 1341
|
||||
}
|
||||
],
|
||||
"queries": [
|
||||
15
|
||||
],
|
||||
"max_incremental_php_bytes": 73088
|
||||
},
|
||||
{
|
||||
"records": 10000,
|
||||
"view": "balances",
|
||||
"page_size": 25,
|
||||
"median_ms": 143.295,
|
||||
"samples": [
|
||||
{
|
||||
"queries": 15,
|
||||
"database_ms": 141.85,
|
||||
"elapsed_ms": 148.065,
|
||||
"incremental_php_bytes": 73384,
|
||||
"peak_php_bytes": 45396584,
|
||||
"response_bytes": 7911
|
||||
},
|
||||
{
|
||||
"queries": 15,
|
||||
"database_ms": 137.49,
|
||||
"elapsed_ms": 143.295,
|
||||
"incremental_php_bytes": 80992,
|
||||
"peak_php_bytes": 45464976,
|
||||
"response_bytes": 7911
|
||||
},
|
||||
{
|
||||
"queries": 15,
|
||||
"database_ms": 134.95,
|
||||
"elapsed_ms": 140.908,
|
||||
"incremental_php_bytes": 80992,
|
||||
"peak_php_bytes": 45466192,
|
||||
"response_bytes": 7911
|
||||
}
|
||||
],
|
||||
"queries": [
|
||||
15
|
||||
],
|
||||
"max_incremental_php_bytes": 80992
|
||||
},
|
||||
{
|
||||
"records": 10000,
|
||||
"view": "balances",
|
||||
"page_size": 100,
|
||||
"median_ms": 146.565,
|
||||
"samples": [
|
||||
{
|
||||
"queries": 15,
|
||||
"database_ms": 140.84,
|
||||
"elapsed_ms": 146.565,
|
||||
"incremental_php_bytes": 202048,
|
||||
"peak_php_bytes": 45597288,
|
||||
"response_bytes": 27939
|
||||
},
|
||||
{
|
||||
"queries": 15,
|
||||
"database_ms": 142.23000000000002,
|
||||
"elapsed_ms": 148.635,
|
||||
"incremental_php_bytes": 181392,
|
||||
"peak_php_bytes": 45778376,
|
||||
"response_bytes": 27939
|
||||
},
|
||||
{
|
||||
"queries": 15,
|
||||
"database_ms": 139.66,
|
||||
"elapsed_ms": 145.615,
|
||||
"incremental_php_bytes": 181392,
|
||||
"peak_php_bytes": 45779592,
|
||||
"response_bytes": 27939
|
||||
}
|
||||
],
|
||||
"queries": [
|
||||
15
|
||||
],
|
||||
"max_incremental_php_bytes": 202048
|
||||
},
|
||||
{
|
||||
"records": 10000,
|
||||
"view": "movements",
|
||||
"page_size": 25,
|
||||
"median_ms": 122.667,
|
||||
"samples": [
|
||||
{
|
||||
"queries": 15,
|
||||
"database_ms": 119.6,
|
||||
"elapsed_ms": 125.981,
|
||||
"incremental_php_bytes": 75104,
|
||||
"peak_php_bytes": 45683352,
|
||||
"response_bytes": 8044
|
||||
},
|
||||
{
|
||||
"queries": 15,
|
||||
"database_ms": 117,
|
||||
"elapsed_ms": 122.667,
|
||||
"incremental_php_bytes": 82720,
|
||||
"peak_php_bytes": 45480592,
|
||||
"response_bytes": 8044
|
||||
},
|
||||
{
|
||||
"queries": 15,
|
||||
"database_ms": 113.22,
|
||||
"elapsed_ms": 119.433,
|
||||
"incremental_php_bytes": 82720,
|
||||
"peak_php_bytes": 45481808,
|
||||
"response_bytes": 8044
|
||||
}
|
||||
],
|
||||
"queries": [
|
||||
15
|
||||
],
|
||||
"max_incremental_php_bytes": 82720
|
||||
},
|
||||
{
|
||||
"records": 10000,
|
||||
"view": "movements",
|
||||
"page_size": 100,
|
||||
"median_ms": 121.913,
|
||||
"samples": [
|
||||
{
|
||||
"queries": 15,
|
||||
"database_ms": 120.09,
|
||||
"elapsed_ms": 127.452,
|
||||
"incremental_php_bytes": 212848,
|
||||
"peak_php_bytes": 45621984,
|
||||
"response_bytes": 28524
|
||||
},
|
||||
{
|
||||
"queries": 15,
|
||||
"database_ms": 115.59,
|
||||
"elapsed_ms": 121.913,
|
||||
"incremental_php_bytes": 187920,
|
||||
"peak_php_bytes": 45809600,
|
||||
"response_bytes": 28524
|
||||
},
|
||||
{
|
||||
"queries": 15,
|
||||
"database_ms": 113.34,
|
||||
"elapsed_ms": 120.243,
|
||||
"incremental_php_bytes": 187920,
|
||||
"peak_php_bytes": 45810816,
|
||||
"response_bytes": 28524
|
||||
}
|
||||
],
|
||||
"queries": [
|
||||
15
|
||||
],
|
||||
"max_incremental_php_bytes": 212848
|
||||
}
|
||||
],
|
||||
"measured_requests": 72,
|
||||
"full_balance_page_traversal": [
|
||||
1000,
|
||||
5000,
|
||||
10000
|
||||
],
|
||||
"indexes": "Primary keys only; no experimental or destination indexes",
|
||||
"sources": {
|
||||
"packages/inventory-read/src/InventoryReader.php": "9b0591600da07719d655324ccf0b740f06de07db2806540684c9730d048e44b6",
|
||||
"app/Modules/Inventory/StockReadController.php": "58465ac0f30dfe170f71f484261251d90d73fabd18a9413211f66c54a678bdbe",
|
||||
"config/stock_read.php": "c1cb5a2009d1140952072ba030b2cecf7ca6e0f6298687564b061006ec81dcdc",
|
||||
"resources/js/StockReadWorkspace.jsx": "96ff89f9d27a471f48bc8587a1b2bcaf78fb5aedf80adc1d69c3d7db13c2343d",
|
||||
"resources/js/StockMenuWorkspace.jsx": "ddef528851f6c3ab19fa8c5b3a459d6bfb157df81616810cd7da2f049aebe6a4",
|
||||
"routes/web.php": "9f09b31877617dfb252363c644d216e02864b29e7777a1d323f8d8ac1d4145fc",
|
||||
"app/Shared/Context/ModuleNavigation.php": "33bc9e49f002042c9a7785d1f0d19638482f742294f77d4eabe6974d71096263"
|
||||
},
|
||||
"preservation": {
|
||||
"identity": {
|
||||
"database": "sgf_tempo_test",
|
||||
"role": "sgf_test_runner",
|
||||
"port": 55439,
|
||||
"cluster": "sgf_modular_regression_2576427d1939"
|
||||
},
|
||||
"read_only": true,
|
||||
"temporary_stock_grants_remaining": 0,
|
||||
"original_constraint_restored_without_stock_right": true,
|
||||
"constraint_sha256": "40046092cba51f1b46d26d5f0da8af47e8336e90a8d50b8de3a8c390758f1783",
|
||||
"operational_source_bindings": 0,
|
||||
"protected_six_records_untouched": true,
|
||||
"blocked_cache_untouched": true,
|
||||
"previous_proof_hashes_unchanged": true,
|
||||
"qa_fixtures_retained": true,
|
||||
"real_or_demo_database_connected": false,
|
||||
"public_rights_changed": false,
|
||||
"purchasing_source_modified": false,
|
||||
"purchasing_activated": false,
|
||||
"publication": false,
|
||||
"checkpoint": false
|
||||
},
|
||||
"limits": [
|
||||
"Testing-only source bindings, empty by default. No existing demo updated.",
|
||||
"Shared read projection uses Purchasing ledger structure; Purchasing HTTP adapter/two-host parity remains pending.",
|
||||
"Physical stock only; reservations, blocked, available and valuation not established.",
|
||||
"No stock commands, receipt/consumption linkage or journal engine added.",
|
||||
"Static UI/build is not visual review; warm in-process load is not deployment capacity."
|
||||
],
|
||||
"visual_review_pending": true,
|
||||
"deployment_capacity_validated": false
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"kind": "static_render_and_exact_quantity",
|
||||
"company_permission_not_stock_permission": true,
|
||||
"read_only_controls": true,
|
||||
"unknown_not_zero": true,
|
||||
"bigint_exact": true,
|
||||
"backend_requests": 0,
|
||||
"visual_review": false
|
||||
}
|
||||
@@ -0,0 +1,143 @@
|
||||
{
|
||||
"date": "2026-11-02",
|
||||
"increment": "COMMON-RECEIPT-STOCK-SIM-v1",
|
||||
"status": "native_receipt_shared_effect_and_sgf_read_verified",
|
||||
"tests": {
|
||||
"native_link": {
|
||||
"tests": 1,
|
||||
"assertions": 33,
|
||||
"errors": 0,
|
||||
"failures": 0,
|
||||
"sha256": "39f751da24e4286672e9e7f68da1772ae7639942c20cd50c0dd089d61759a2a4"
|
||||
},
|
||||
"affected_receipts": {
|
||||
"tests": 31,
|
||||
"assertions": 193,
|
||||
"errors": 0,
|
||||
"failures": 0,
|
||||
"sha256": "15d58947c8e9c8999b53708fc52f33c913d62efb55e3df3f537eb700af04acf9"
|
||||
},
|
||||
"affected_lot_receipts": {
|
||||
"tests": 3,
|
||||
"assertions": 20,
|
||||
"errors": 0,
|
||||
"failures": 0,
|
||||
"sha256": "08343998fa8b9f33580adc3e697d7071e0a4649252fb30c5ea1d68683c6b9344"
|
||||
},
|
||||
"final_native_adapter_replay": {
|
||||
"tests": 1,
|
||||
"assertions": 8,
|
||||
"errors": 0,
|
||||
"failures": 0,
|
||||
"sha256": "186385af4fa5f1b2eaf1dab0c117c5a8ab56419adb17b2da386ceac66726d1d8"
|
||||
},
|
||||
"sgf_functional": {
|
||||
"tests": 2,
|
||||
"assertions": 77,
|
||||
"errors": 0,
|
||||
"failures": 0,
|
||||
"sha256": "c7d7a56e52f132dc549ff940d8413fa35fea4f650922a77b57a644ecfd97fdbd"
|
||||
},
|
||||
"sgf_actual_book_link": {
|
||||
"tests": 1,
|
||||
"assertions": 31,
|
||||
"errors": 0,
|
||||
"failures": 0,
|
||||
"sha256": "6c4c5c8888bb2f63ced27a96d86771993531cdbfae060d64ea7495d4659dc20c"
|
||||
}
|
||||
},
|
||||
"scenario": {
|
||||
"first_received_milli": 6000,
|
||||
"first_accepted_milli": 4000,
|
||||
"first_rejected_milli": 2000,
|
||||
"second_received_milli": 2000,
|
||||
"second_accepted_milli": 0,
|
||||
"second_rejected_milli": 2000,
|
||||
"final_physical_milli": "4000",
|
||||
"movement_count": 1
|
||||
},
|
||||
"source_hash_stale_refused": true,
|
||||
"core_replay_same_movement": true,
|
||||
"fault_atomic_and_recovered": true,
|
||||
"concurrency": {
|
||||
"actual_lock_wait": true,
|
||||
"wait_event": "transactionid",
|
||||
"same_receipt": true,
|
||||
"one_movement": true
|
||||
},
|
||||
"same_native_movement_observed_by_sgf": true,
|
||||
"read_does_not_copy_or_mutate_stock": true,
|
||||
"source_connection_failure_503_and_recovery": true,
|
||||
"package": {
|
||||
"id": "tempo-inventory-receipt-write",
|
||||
"version": "0.1.0",
|
||||
"files": {
|
||||
"bootstrap.php": "b6ea8939536008c9277724216df2a968f416d9e7374189587a1172c02ecacb75",
|
||||
"src/ReceiptMovementWriter.php": "279cec2ec915e27cf431355fca1e36f21cb3c15a77d02834723a41ec7a6f8f40"
|
||||
},
|
||||
"manifest_sha256": "f0b99e591f9a4df135e685f64ceffad77bed259222debe0f34c20f95e3cad800",
|
||||
"canonical_and_artifact_identical": true
|
||||
},
|
||||
"source_hashes": {
|
||||
"packages/inventory-write/src/ReceiptMovementWriter.php": "279cec2ec915e27cf431355fca1e36f21cb3c15a77d02834723a41ec7a6f8f40",
|
||||
"app/Modules/Inventory/StockReadController.php": "c6131733974b6902c556593709729356769d11aea9eada3fc5397246102068f4",
|
||||
"../compras/app/Services/ReceiptWorkflow.php": "a7325d4fdb09d1767d0d4fa3661bcf9b254e8506285080d6063bbed487bb522c",
|
||||
"../compras/app/Services/ReceiptStockMovement.php": "bd95d201563e4b028f7412eea77d5b157bbc464ddb5b34907bdf17b44d3c1637"
|
||||
},
|
||||
"source_postcheck": {
|
||||
"reader": {
|
||||
"database": "compras_receipts_test_c20d57941803",
|
||||
"role": "stock_receipt_read_c20d57941803",
|
||||
"cluster": "sgf_modular_regression_2576427d1939",
|
||||
"default_read_only": "on",
|
||||
"elevated": false,
|
||||
"stock_select": true,
|
||||
"stock_write": false,
|
||||
"receipt_select": false
|
||||
},
|
||||
"book": {
|
||||
"movements": 1,
|
||||
"physical_milli": "4000",
|
||||
"receipt_confirmations": 2,
|
||||
"author_and_date_present": true,
|
||||
"movement_origin_hash": "6e7dc7721f92b0445c0b850b00e6bbaeb084a30426cd596902340985b76bf7ae"
|
||||
}
|
||||
},
|
||||
"sgf_postcheck": {
|
||||
"identity": {
|
||||
"database": "sgf_tempo_test",
|
||||
"role": "sgf_test_runner",
|
||||
"port": 55439,
|
||||
"cluster": "sgf_modular_regression_2576427d1939"
|
||||
},
|
||||
"read_only": true,
|
||||
"temporary_stock_grants_remaining": 0,
|
||||
"original_constraint_restored_without_stock_right": true,
|
||||
"constraint_sha256": "40046092cba51f1b46d26d5f0da8af47e8336e90a8d50b8de3a8c390758f1783",
|
||||
"operational_source_bindings": 0
|
||||
},
|
||||
"preservation": {
|
||||
"new_qa_databases_only": true,
|
||||
"fixtures_retained": true,
|
||||
"real_or_demo_database_connected": false,
|
||||
"protected_six_records_untouched": true,
|
||||
"blocked_cache_untouched": true,
|
||||
"prior_association_proofs_unchanged": true,
|
||||
"purchasing_candidates_activated": false,
|
||||
"public_rights_changed": false,
|
||||
"publication": false,
|
||||
"checkpoint": false
|
||||
},
|
||||
"reused_proofs": {
|
||||
"stock_load_sha256": "4fc1d7d13d480a30966b259611de1066fc22ef31f7a0e782da4872211801c72e",
|
||||
"stock_composition_sha256": "bb129ab22f424a5d3333f9b851062bc6284fd514b9962e0df04b3efd22d951a6"
|
||||
},
|
||||
"limits": [
|
||||
"Existing native receipt validation remains authoritative; no independent SGF receipt preparation/confirmation UI or command delivered.",
|
||||
"Source connection is confined to the local QA book and a SELECT-only role; it is not a required remote connector or production architecture.",
|
||||
"StockWorkflow issues/transfers/corrections and workshop consumption are not extracted by this receipt-only writer.",
|
||||
"PostgreSQL tested; other database drivers not validated in this increment. No new load benchmark or deployment capacity claim."
|
||||
],
|
||||
"visual_review_pending": true,
|
||||
"deployment_capacity_validated": false
|
||||
}
|
||||
@@ -0,0 +1,209 @@
|
||||
{
|
||||
"date": "2026-11-02",
|
||||
"increment": "WORKSHOP-DELIVERY-LINK-SIM-v1",
|
||||
"status": "implemented_and_proved_synthetically",
|
||||
"tests": {
|
||||
"affected_existing": {
|
||||
"file": "workshop-stock-1793633268880.xml",
|
||||
"sha256": "d5094fd19571c96190ae2fa1d2adadcf30d05add4372f6b02b169345fef98319",
|
||||
"tests": 6,
|
||||
"assertions": 222,
|
||||
"cases": [
|
||||
"test_individual_impact_independence_exact_issue_and_replay",
|
||||
"test_client_unverified_fraction_and_unknown_delivery_do_not_debit",
|
||||
"test_stale_book_mapping_permission_scope_and_failure_recovery",
|
||||
"test_corrected_source_requires_review_and_never_consumes_the_same_origin_twice",
|
||||
"test_other_company_cannot_read_or_confirm_origin_and_changed_command_is_refused",
|
||||
"test_concurrent_confirmation_has_one_claim_and_movement"
|
||||
],
|
||||
"selected_cases_only": true,
|
||||
"parent_run_errors": 3,
|
||||
"parent_run_failures": 0
|
||||
},
|
||||
"delivery": {
|
||||
"file": "workshop-stock-1793633372636.xml",
|
||||
"sha256": "d660ba55ab6773efcacf0ba202e33f240b1332347a2609d7c9c9521159890ecb",
|
||||
"tests": 5,
|
||||
"assertions": 163,
|
||||
"cases": [
|
||||
"test_delivery_link_has_zero_effect_independent_decision_and_no_duplicate",
|
||||
"test_delivery_link_refuses_mismatch_stale_book_and_recovers_from_failure",
|
||||
"test_delivery_link_can_reconcile_fully_depleted_stock_without_new_issue",
|
||||
"test_delivery_link_rejects_reversal_and_does_not_adopt_history",
|
||||
"test_delivery_link_concurrent_confirmation_has_one_claim_without_movement"
|
||||
],
|
||||
"selected_cases_only": false,
|
||||
"parent_run_errors": 0,
|
||||
"parent_run_failures": 0
|
||||
},
|
||||
"additional_integrity_and_isolation": {
|
||||
"file": "workshop-stock-1793633481884.xml",
|
||||
"sha256": "0789b68768ce2f21c02b7d694c03681edd293e89dfdb657955b18390880874a4",
|
||||
"tests": 2,
|
||||
"assertions": 47,
|
||||
"cases": [
|
||||
"test_delivery_link_refuses_missing_original_hash",
|
||||
"test_delivery_link_other_company_cannot_prepare_or_confirm"
|
||||
],
|
||||
"selected_cases_only": false,
|
||||
"parent_run_errors": 0,
|
||||
"parent_run_failures": 0
|
||||
}
|
||||
},
|
||||
"totals": {
|
||||
"tests": 13,
|
||||
"assertions": 432
|
||||
},
|
||||
"selection_note": "Six affected existing cases passed in a run containing three new fixture-bootstrap errors; those errored cases are excluded. The five delivery cases then passed after bootstrap correction and stricter integrity checks; two additional integrity/isolation cases passed separately. Valid native proofs reused without rerunning unchanged native code.",
|
||||
"scenarios_asserted": {
|
||||
"initial_milli": "10000",
|
||||
"already_issued_milli": "2000",
|
||||
"before_link_milli": "8000",
|
||||
"after_link_milli": "8000",
|
||||
"new_physical_movements": 0,
|
||||
"total_physical_movements": 2,
|
||||
"total_operations": 1,
|
||||
"claims": 1,
|
||||
"original_movement_unchanged": true,
|
||||
"same_book_stock_read": true,
|
||||
"preparer_cannot_confirm": true,
|
||||
"replay_same_movement": true,
|
||||
"competing_proposal_refused": true,
|
||||
"quantity_mismatch_refused": true,
|
||||
"stale_book_refused": true,
|
||||
"eligibility_revocation_refused": true,
|
||||
"permission_revocation_refused": true,
|
||||
"missing_operation_hash_refused": true,
|
||||
"reversal_book_refused": true,
|
||||
"other_company_prepare_and_confirm_refused": true,
|
||||
"other_company_list_empty": true,
|
||||
"failure_rollback_and_retry_without_duplicate": true,
|
||||
"fully_depleted_book_can_link_without_debit": true
|
||||
},
|
||||
"concurrency_asserted": {
|
||||
"processes": 2,
|
||||
"company_row_lock_observed": true,
|
||||
"first_backend_identified_by_pg_blocking_pids": true,
|
||||
"after_release": "200/replay/same movement",
|
||||
"claims": 1,
|
||||
"physical_milli": "8000"
|
||||
},
|
||||
"source_sha256": {
|
||||
"app/Modules/Workshop/WorkshopStock.php": "ad8701485fdcdc39fad5d9befef2079aef0c5b84c2ade03e6c3600cc0bd879ac",
|
||||
"app/Modules/Workshop/Http/WorkshopStockController.php": "6a960ab558f77094119993a4f9a7fb45beb69b04275122b80667313761f2794d",
|
||||
"resources/js/WorkshopStockWorkspace.jsx": "150c265f31411142635d9f83d6bb6f9be26369aea1cb189b282fc2edec9ce88a",
|
||||
"routes/web.php": "0340363a57dfd0be5e0f4207b54ea2fafaee32c1e8ec62efd927e89c7277f650",
|
||||
"tests/Feature/WorkshopStockTest.php": "2dcd62fadd205cf6e567742d69a813e1c6a28fa4ee34616b82bd02c58f0ff80a",
|
||||
"tests/Support/workshop-stock-worker.php": "bdad20fd4f58714c36c20d3c271ac31fdd92a4083cedf31341938b501fd73c2d"
|
||||
},
|
||||
"qa_postcheck": {
|
||||
"qa_identity": {
|
||||
"db": "sgf_tempo_test",
|
||||
"role": "sgf_test_runner",
|
||||
"port": 55439,
|
||||
"cluster": "sgf_modular_regression_2576427d1939"
|
||||
},
|
||||
"temporary_grants_remaining": 0,
|
||||
"constraint_sha256": "40046092cba51f1b46d26d5f0da8af47e8336e90a8d50b8de3a8c390758f1783",
|
||||
"operational_workshop_stock_bindings": 0,
|
||||
"read_only": true
|
||||
},
|
||||
"static_ui": {
|
||||
"path": "docs/proofs/workshop-delivery-ui-20261102.json",
|
||||
"sha256": "1c5bc4735e6a29d3ff3cab4c499ccc1d3567f0ce9dafa02a34d57c19ae5b3184",
|
||||
"kind": "static_impact_render_and_source_checks",
|
||||
"zero_new_physical_effect_visible": true,
|
||||
"existing_movement_and_quantity_visible": true,
|
||||
"explicit_treatment_selection_in_source": true,
|
||||
"component_sha256": "150c265f31411142635d9f83d6bb6f9be26369aea1cb189b282fc2edec9ce88a",
|
||||
"backend_requests": 0,
|
||||
"visual_review": false,
|
||||
"browser_interactions_tested": false
|
||||
},
|
||||
"build": {
|
||||
"passed": true,
|
||||
"node": "24.22.1",
|
||||
"vite": "8.3.5",
|
||||
"manifest_sha256": "81aa20db890f896c6bb10affc2ff1540d5851d876fb316269db649ee5784e896"
|
||||
},
|
||||
"reused_proofs": {
|
||||
"workshop_stock": {
|
||||
"path": "docs/proofs/workshop-stock-20261102.json",
|
||||
"sha256": "c13b22eed190e379d8311a8e02586e201f993a89bfc4490be5d9d325d6ca00c3"
|
||||
},
|
||||
"shared_writer_manifest_sha256": "3c24d9e9fb99bfbb274077495c3a42ddb7eccab06b5c6a956cd739b2bc9b56f0",
|
||||
"native_issue_tests": {
|
||||
"file": "private/stock-receipt-54f39ed20d16/issue-affected-junit.xml",
|
||||
"sha256": "aed6359ba4216e10bb89f34d40e0314fc9efb0f8dedeea40551c3302f31b8525",
|
||||
"tests": 25,
|
||||
"assertions": 125,
|
||||
"cases": [
|
||||
"issues are exact, idempotent and cannot make stock negative",
|
||||
"transfer creates exactly two opposite ledger entries and rejects repeated references",
|
||||
"counts preserve theoretical quantities and adjustments apply a justified difference once",
|
||||
"intervening receipts and issues invalidate counts and stale count forms",
|
||||
"operational role cannot be replaced by administration or other profiles with data set "(App\\Enums\\PurchasingRole Enum (Admin, 'admin'))"",
|
||||
"operational role cannot be replaced by administration or other profiles with data set "(App\\Enums\\PurchasingRole Enum (Finance, 'finance'))"",
|
||||
"operational role cannot be replaced by administration or other profiles with data set "(App\\Enums\\PurchasingRole Enum (Procurement, 'procurement'))"",
|
||||
"operational role cannot be replaced by administration or other profiles with data set "(App\\Enums\\PurchasingRole Enum (DepartmentHead, 'department_head'))"",
|
||||
"operational role cannot be replaced by administration or other profiles with data set "(App\\Enums\\PurchasingRole Enum (Requester, 'requester'))"",
|
||||
"foreign company resources cannot be used with data set "('warehouse_id')"",
|
||||
"foreign company resources cannot be used with data set "('destination_warehouse_id')"",
|
||||
"foreign company resources cannot be used with data set "('stock_item_id')"",
|
||||
"foreign company resources cannot be used with data set "('responsible_id')"",
|
||||
"audit failure rolls back both halves of transfer and operation",
|
||||
"operations are immutable and new public screen contains only demonstration props",
|
||||
"invalid precision and missing justification or destination do not write with data set "('quantity', '-1')"",
|
||||
"invalid precision and missing justification or destination do not write with data set "('quantity', '0')"",
|
||||
"invalid precision and missing justification or destination do not write with data set "('quantity', '0.0001')"",
|
||||
"invalid precision and missing justification or destination do not write with data set "('reason', ' ')"",
|
||||
"invalid precision and missing justification or destination do not write with data set "('destination', '')"",
|
||||
"invalid precision and missing justification or destination do not write with data set "('responsible_id', null)"",
|
||||
"positive adjustments credit only the difference and matching counts create no movements",
|
||||
"failure creating transfer credit rolls back its debit",
|
||||
"stock views isolate operations and counts from other companies",
|
||||
"form encoded retry identifiers and equivalent quantities retain idempotency"
|
||||
],
|
||||
"selection": false,
|
||||
"whole_run_tests": 25,
|
||||
"whole_run_failures": 0,
|
||||
"whole_run_errors": 0
|
||||
},
|
||||
"native_lot_tests": {
|
||||
"file": "private/stock-receipt-0119bb873c56/issue-lots-junit.xml",
|
||||
"sha256": "4ea8597200ebd761cb9460acf165e1baaa4f7b7b1b84690a0bfe749b73ddf6dc",
|
||||
"tests": 2,
|
||||
"assertions": 10,
|
||||
"cases": [
|
||||
"FEFO consumes earliest expiry and preserves the single physical ledger with exact partitions",
|
||||
"expiry and hold remove usable quantity without changing physical stock"
|
||||
],
|
||||
"selection": false,
|
||||
"whole_run_tests": 2,
|
||||
"whole_run_failures": 0,
|
||||
"whole_run_errors": 0
|
||||
}
|
||||
},
|
||||
"preservation": {
|
||||
"new_synthetic_fixtures_only": true,
|
||||
"regression_not_reset": true,
|
||||
"temporary_rights_restored": true,
|
||||
"six_protected_records_untouched": true,
|
||||
"blocked_cache_untouched": true,
|
||||
"demos_untouched": true,
|
||||
"prior_association_proofs_unchanged": true,
|
||||
"real_data_or_rights_changed": false,
|
||||
"purchasing_activation": false,
|
||||
"publication": false,
|
||||
"checkpoint": false
|
||||
},
|
||||
"limits": [
|
||||
"Only explicit QA movement-to-order eligibility; no automatic or historical adoption.",
|
||||
"Only full equal quantities, simple unreversed common-writer issues, no lots/reservations/spare parts.",
|
||||
"Partial allocations, returns, compensation and amendment of confirmed links not implemented.",
|
||||
"Operational configuration/installation and one installed procurement-to-consumption scenario remain pending.",
|
||||
"No new write-load/deployment capacity proof, no browser interaction or visual review."
|
||||
],
|
||||
"visual_review_pending": true,
|
||||
"deployment_capacity_validated": false
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"kind": "static_impact_render_and_source_checks",
|
||||
"zero_new_physical_effect_visible": true,
|
||||
"existing_movement_and_quantity_visible": true,
|
||||
"explicit_treatment_selection_in_source": true,
|
||||
"component_sha256": "150c265f31411142635d9f83d6bb6f9be26369aea1cb189b282fc2edec9ce88a",
|
||||
"backend_requests": 0,
|
||||
"visual_review": false,
|
||||
"browser_interactions_tested": false
|
||||
}
|
||||
@@ -0,0 +1,293 @@
|
||||
{
|
||||
"date": "2026-11-02",
|
||||
"increment": "WORKSHOP-MATERIAL-CYCLE-SIM-v1",
|
||||
"status": "local_synthetic_implementation",
|
||||
"proofs": [
|
||||
{
|
||||
"file": "workshop-stock-1793634406841.xml",
|
||||
"sha256": "eabad22dca4fe162777bc04adbec9806fcbdf20ccedce2cd7ef97aa270211e13",
|
||||
"tests": 20,
|
||||
"assertions": 740,
|
||||
"errors": 0,
|
||||
"failures": 0
|
||||
},
|
||||
{
|
||||
"file": "workshop-stock-1793634619557.xml",
|
||||
"sha256": "dd5a1f08095d33adad82180ade2d92ecac37c62728f2f4a79208818192569362",
|
||||
"tests": 5,
|
||||
"assertions": 219,
|
||||
"errors": 0,
|
||||
"failures": 0
|
||||
},
|
||||
{
|
||||
"file": "workshop-stock-1793634796037.xml",
|
||||
"sha256": "c22d26fc7c607027727d1f37ab21f881033ca0be44962e38a5ab9fa1957b9101",
|
||||
"tests": 9,
|
||||
"assertions": 363,
|
||||
"errors": 0,
|
||||
"failures": 0
|
||||
},
|
||||
{
|
||||
"file": "workshop-stock-1793634950240.xml",
|
||||
"sha256": "d08140e0984173c271737f42b28f22f6da66648fd816604900866225469eacb3",
|
||||
"tests": 1,
|
||||
"assertions": 63,
|
||||
"errors": 0,
|
||||
"failures": 0
|
||||
}
|
||||
],
|
||||
"selection": "Latest passing evidence selected per test name; repeated affected cases are not counted twice. Earlier intermediate failure is excluded. Later warehouse receipt declaration, history controls and ordered opening-stock timestamp were verified only in affected cases.",
|
||||
"totals": {
|
||||
"distinct_tests": 22,
|
||||
"assertions": 820
|
||||
},
|
||||
"selected_cases": [
|
||||
{
|
||||
"name": "test_stock_return_unconsumed_material_restores_only_remaining_quantity_once",
|
||||
"assertions": 63,
|
||||
"proof": "workshop-stock-1793634950240.xml"
|
||||
},
|
||||
{
|
||||
"name": "test_stock_return_refuses_consumed_client_unverified_excess_and_stale_capacity",
|
||||
"assertions": 52,
|
||||
"proof": "workshop-stock-1793634619557.xml"
|
||||
},
|
||||
{
|
||||
"name": "test_stock_return_failure_after_decision_rolls_back_movement_and_recovers",
|
||||
"assertions": 32,
|
||||
"proof": "workshop-stock-1793634619557.xml"
|
||||
},
|
||||
{
|
||||
"name": "test_stock_return_concurrency_cannot_restore_quantity_twice",
|
||||
"assertions": 40,
|
||||
"proof": "workshop-stock-1793634619557.xml"
|
||||
},
|
||||
{
|
||||
"name": "test_partial_delivery_links_multiple_origins_without_debit_and_rechecks_remaining",
|
||||
"assertions": 60,
|
||||
"proof": "workshop-stock-1793634796037.xml"
|
||||
},
|
||||
{
|
||||
"name": "test_partial_delivery_requires_enabled_capability_and_rolls_back_allocation_failure",
|
||||
"assertions": 26,
|
||||
"proof": "workshop-stock-1793634406841.xml"
|
||||
},
|
||||
{
|
||||
"name": "test_partial_delivery_concurrent_proposals_cannot_overallocate",
|
||||
"assertions": 41,
|
||||
"proof": "workshop-stock-1793634406841.xml"
|
||||
},
|
||||
{
|
||||
"name": "test_delivery_link_has_zero_effect_independent_decision_and_no_duplicate",
|
||||
"assertions": 44,
|
||||
"proof": "workshop-stock-1793634796037.xml"
|
||||
},
|
||||
{
|
||||
"name": "test_delivery_link_refuses_mismatch_stale_book_and_recovers_from_failure",
|
||||
"assertions": 39,
|
||||
"proof": "workshop-stock-1793634406841.xml"
|
||||
},
|
||||
{
|
||||
"name": "test_delivery_link_can_reconcile_fully_depleted_stock_without_new_issue",
|
||||
"assertions": 30,
|
||||
"proof": "workshop-stock-1793634406841.xml"
|
||||
},
|
||||
{
|
||||
"name": "test_delivery_link_rejects_reversal_and_does_not_adopt_history",
|
||||
"assertions": 20,
|
||||
"proof": "workshop-stock-1793634796037.xml"
|
||||
},
|
||||
{
|
||||
"name": "test_delivery_link_refuses_missing_original_hash",
|
||||
"assertions": 21,
|
||||
"proof": "workshop-stock-1793634406841.xml"
|
||||
},
|
||||
{
|
||||
"name": "test_delivery_link_other_company_cannot_prepare_or_confirm",
|
||||
"assertions": 26,
|
||||
"proof": "workshop-stock-1793634796037.xml"
|
||||
},
|
||||
{
|
||||
"name": "test_individual_impact_independence_exact_issue_and_replay",
|
||||
"assertions": 45,
|
||||
"proof": "workshop-stock-1793634796037.xml"
|
||||
},
|
||||
{
|
||||
"name": "test_client_unverified_fraction_and_unknown_delivery_do_not_debit",
|
||||
"assertions": 48,
|
||||
"proof": "workshop-stock-1793634406841.xml"
|
||||
},
|
||||
{
|
||||
"name": "test_stale_book_mapping_permission_scope_and_failure_recovery",
|
||||
"assertions": 31,
|
||||
"proof": "workshop-stock-1793634406841.xml"
|
||||
},
|
||||
{
|
||||
"name": "test_corrected_source_requires_review_and_never_consumes_the_same_origin_twice",
|
||||
"assertions": 39,
|
||||
"proof": "workshop-stock-1793634796037.xml"
|
||||
},
|
||||
{
|
||||
"name": "test_other_company_cannot_read_or_confirm_origin_and_changed_command_is_refused",
|
||||
"assertions": 29,
|
||||
"proof": "workshop-stock-1793634796037.xml"
|
||||
},
|
||||
{
|
||||
"name": "test_concurrent_confirmation_has_one_claim_and_movement",
|
||||
"assertions": 30,
|
||||
"proof": "workshop-stock-1793634406841.xml"
|
||||
},
|
||||
{
|
||||
"name": "test_delivery_link_concurrent_confirmation_has_one_claim_without_movement",
|
||||
"assertions": 30,
|
||||
"proof": "workshop-stock-1793634406841.xml"
|
||||
},
|
||||
{
|
||||
"name": "test_stock_return_revoked_right_stale_context_and_foreign_company_do_not_write",
|
||||
"assertions": 36,
|
||||
"proof": "workshop-stock-1793634619557.xml"
|
||||
},
|
||||
{
|
||||
"name": "test_history_filters_and_pagination_preserve_order_and_scope",
|
||||
"assertions": 38,
|
||||
"proof": "workshop-stock-1793634796037.xml"
|
||||
}
|
||||
],
|
||||
"scenario_asserted": {
|
||||
"opening_milli": "10000",
|
||||
"delivered_milli": "5000",
|
||||
"physical_after_issue": "5000",
|
||||
"consumed_allocation_milli": "2000",
|
||||
"physical_after_allocation": "5000",
|
||||
"returned_milli": "3000",
|
||||
"physical_after_return": "8000",
|
||||
"unallocated_after_return": "0",
|
||||
"total_movements": 3,
|
||||
"original_issue_unchanged": true,
|
||||
"opening_entry_precedes_issue": true,
|
||||
"stock_read_sees_same_book": true,
|
||||
"explicit_warehouse_receipt_required": true,
|
||||
"service_and_writer_replay_original_return": true
|
||||
},
|
||||
"partial_allocations_asserted": {
|
||||
"multiple_origins_one_delivery": true,
|
||||
"quantity_bound_by_delivery": true,
|
||||
"physical_effect_zero": true,
|
||||
"stale_remaining_refused": true,
|
||||
"already_allocated_origin_not_consumed_again": true,
|
||||
"disabling_capability_does_not_erase_history_protection": true,
|
||||
"failure_atomic_and_retry_once": true
|
||||
},
|
||||
"return_asserted": {
|
||||
"consumed_client_unverified_unrepresentable_and_excess_refused": true,
|
||||
"stale_capacity_refused": true,
|
||||
"independent_confirmation_required": true,
|
||||
"missing_receiving_declaration_422": true,
|
||||
"right_revoked_403": true,
|
||||
"stale_context_409": true,
|
||||
"other_company_403_and_empty_history": true,
|
||||
"decision_failure_rolls_back_movement_and_operation": true
|
||||
},
|
||||
"concurrency_asserted": {
|
||||
"processes": 2,
|
||||
"company_row_blocker_observed_with_pg_blocking_pids": true,
|
||||
"competing_allocations_3_plus_3_against_5": "first associates 3; second after release refuses 409",
|
||||
"competing_returns_3_plus_3_against_5": "one positive movement of 3; second after release refuses 409"
|
||||
},
|
||||
"history_asserted": {
|
||||
"server_page_size": 25,
|
||||
"proposal_fixture_count": 51,
|
||||
"descending_id_order": true,
|
||||
"pages_disjoint": true,
|
||||
"status_filters": [
|
||||
"all",
|
||||
"pending",
|
||||
"confirmed"
|
||||
],
|
||||
"confirmed_includes_allocations_and_returns": true,
|
||||
"unknown_parameters_refused": true,
|
||||
"tenant_company_unit_isolation": true
|
||||
},
|
||||
"package": {
|
||||
"id": "tempo-inventory-return",
|
||||
"version": "0.1.0",
|
||||
"files": {
|
||||
"bootstrap.php": "f6735623101377038cde58085d5f00e030249066bc6a67f30b718caab73288be",
|
||||
"src/DeliveryReturnWriter.php": "a7c65169a5c1f3510f9a2762cbf4163ee4cc81b0a23174a7abed96147e16790a"
|
||||
},
|
||||
"manifest_sha256": "2850a4f5cb678acfe3a9dbc7a7d62eb233bc72722ad0de374681c2679c90557c",
|
||||
"canonical_identical": true,
|
||||
"native_return_command_integrated": false
|
||||
},
|
||||
"source_sha256": {
|
||||
"app/Modules/Workshop/WorkshopStock.php": "840cd559f5189c8c2934d6e0a761cf3ee6b4f8e4e48a3964829ffd02504d7181",
|
||||
"app/Modules/Workshop/Http/WorkshopStockController.php": "35f090c753b9d9f55ea85b4b566c1f08e34d3e6a5d28bb43768da1bfab90b712",
|
||||
"resources/js/WorkshopStockWorkspace.jsx": "8adc2fcf8818a6b5b0c51f55520f6e60811c03a46c0b5711bcff880b6df26884",
|
||||
"tests/Feature/WorkshopStockTest.php": "8a884fa62fcf000530197c61dd641e1ef1751f242f27384057f3cc355ab59b58",
|
||||
"tests/Support/workshop-stock-worker.php": "538e01a699f0d81c01a4eb4ed0bac9b0d8f7494b2cdda5e00759f3152d4374f1",
|
||||
"packages/inventory-return/src/DeliveryReturnWriter.php": "a7c65169a5c1f3510f9a2762cbf4163ee4cc81b0a23174a7abed96147e16790a",
|
||||
"routes/web.php": "9469393870f2123f2a3ecd4b3027309777c7aeb5d20996b937c0dab1878192be"
|
||||
},
|
||||
"qa_postcheck": {
|
||||
"qa_identity": {
|
||||
"db": "sgf_tempo_test",
|
||||
"role": "sgf_test_runner",
|
||||
"port": 55439,
|
||||
"cluster": "sgf_modular_regression_2576427d1939"
|
||||
},
|
||||
"temporary_grants_remaining": 0,
|
||||
"constraint_sha256": "40046092cba51f1b46d26d5f0da8af47e8336e90a8d50b8de3a8c390758f1783",
|
||||
"operational_workshop_stock_bindings": 0,
|
||||
"read_only": true
|
||||
},
|
||||
"ui": {
|
||||
"path": "docs/proofs/workshop-material-cycle-ui-20261102.json",
|
||||
"sha256": "d143d458bc779260f4b5d3ae2cb618cf789794bb0b0aa9e4724614b05395321a",
|
||||
"kind": "static_impact_render_and_source_checks",
|
||||
"allocation_zero_effect": true,
|
||||
"remaining_quantity_visible": true,
|
||||
"return_positive_effect_visible": true,
|
||||
"physical_receiving_checkbox_required_in_source": true,
|
||||
"explicit_treatment_choice_in_source": true,
|
||||
"history_controls_and_query_in_source": true,
|
||||
"source_sha256": "8adc2fcf8818a6b5b0c51f55520f6e60811c03a46c0b5711bcff880b6df26884",
|
||||
"backend_requests": 0,
|
||||
"browser_interactions_tested": false,
|
||||
"visual_review": false
|
||||
},
|
||||
"build": {
|
||||
"passed": true,
|
||||
"node": "24.22.1",
|
||||
"vite": "8.3.5",
|
||||
"manifest_sha256": "aa0c7cad4edc66a14c410667b54345a3c6e6c27c482cf3434a0e162612a62a4f"
|
||||
},
|
||||
"reused_proofs": {
|
||||
"docs/proofs/workshop-delivery-link-20261102.json": "f84d9f219d4b4ef41d92edbbc0ad9f0c433da6ef1fa66b9d22738b615649be1f",
|
||||
"docs/proofs/workshop-stock-20261102.json": "c13b22eed190e379d8311a8e02586e201f993a89bfc4490be5d9d325d6ca00c3",
|
||||
"docs/proofs/stock-read-load-20261102.json": "4fc1d7d13d480a30966b259611de1066fc22ef31f7a0e782da4872211801c72e",
|
||||
"docs/proofs/stock-receipt-link-20261102.json": "b763ab326abf49271d16b32d22f01a8a8d31d1ab015141e42dcf5963ee914143"
|
||||
},
|
||||
"preservation": {
|
||||
"new_qa_schemas_and_actors_only": true,
|
||||
"regression_not_reset": true,
|
||||
"six_protected_records_untouched": true,
|
||||
"blocked_cache_untouched": true,
|
||||
"demos_untouched": true,
|
||||
"previous_association_proofs_unchanged": true,
|
||||
"real_rights_or_data_changed": false,
|
||||
"indices_in_qa_fixture_only": true,
|
||||
"purchasing_activation": false,
|
||||
"publication": false,
|
||||
"checkpoint": false
|
||||
},
|
||||
"limits": [
|
||||
"One origin may not span multiple deliveries.",
|
||||
"Consumed-material compensation and amendment/release of confirmed allocations are not implemented.",
|
||||
"Returns accept quantity only: no lots, reservations, quality/quarantine or spare parts.",
|
||||
"Native Purchasing return command not integrated; local artifact alone is not runtime integration.",
|
||||
"Operational installer and one installed procurement-to-workshop composition pending.",
|
||||
"No write-load benchmark or deployment-capacity evidence; no browser interaction or visual review."
|
||||
],
|
||||
"visual_review_pending": true,
|
||||
"deployment_capacity_validated": false
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
{
|
||||
"kind": "static_impact_render_and_source_checks",
|
||||
"allocation_zero_effect": true,
|
||||
"remaining_quantity_visible": true,
|
||||
"return_positive_effect_visible": true,
|
||||
"physical_receiving_checkbox_required_in_source": true,
|
||||
"explicit_treatment_choice_in_source": true,
|
||||
"history_controls_and_query_in_source": true,
|
||||
"source_sha256": "8adc2fcf8818a6b5b0c51f55520f6e60811c03a46c0b5711bcff880b6df26884",
|
||||
"backend_requests": 0,
|
||||
"browser_interactions_tested": false,
|
||||
"visual_review": false
|
||||
}
|
||||
@@ -0,0 +1,231 @@
|
||||
{
|
||||
"date": "2026-11-02",
|
||||
"increment": "WORKSHOP-STOCK-ISSUE-SIM-v1",
|
||||
"status": "local_synthetic_implementation",
|
||||
"tests": {
|
||||
"reused_passing_cases": {
|
||||
"file": "workshop-stock-1793632450233.xml",
|
||||
"sha256": "8623c2a85428491d04eb90c0f162a1587226f9ab9c276534463f019472fc0f68",
|
||||
"tests": 4,
|
||||
"assertions": 154,
|
||||
"cases": [
|
||||
"test_individual_impact_independence_exact_issue_and_replay",
|
||||
"test_client_unverified_fraction_and_unknown_delivery_do_not_debit",
|
||||
"test_stale_book_mapping_permission_scope_and_failure_recovery",
|
||||
"test_concurrent_confirmation_has_one_claim_and_movement"
|
||||
],
|
||||
"selection": true,
|
||||
"whole_run_tests": 5,
|
||||
"whole_run_failures": 1,
|
||||
"whole_run_errors": 0
|
||||
},
|
||||
"corrected_source": {
|
||||
"file": "workshop-stock-1793632791460.xml",
|
||||
"sha256": "9141a3b9cba9255b6ce34abf1167cfc45151546d26ec3253ee240785ad246e1f",
|
||||
"tests": 1,
|
||||
"assertions": 39,
|
||||
"cases": [
|
||||
"test_corrected_source_requires_review_and_never_consumes_the_same_origin_twice"
|
||||
],
|
||||
"selection": false,
|
||||
"whole_run_tests": 1,
|
||||
"whole_run_failures": 0,
|
||||
"whole_run_errors": 0
|
||||
},
|
||||
"scope_and_command": {
|
||||
"file": "workshop-stock-1793633025634.xml",
|
||||
"sha256": "cf0643f3c5444efc3e65294790fd3e111e3e9a14a30af4a6f9399bbf93c04c4c",
|
||||
"tests": 1,
|
||||
"assertions": 29,
|
||||
"cases": [
|
||||
"test_other_company_cannot_read_or_confirm_origin_and_changed_command_is_refused"
|
||||
],
|
||||
"selection": false,
|
||||
"whole_run_tests": 1,
|
||||
"whole_run_failures": 0,
|
||||
"whole_run_errors": 0
|
||||
},
|
||||
"native_issues": {
|
||||
"file": "private/stock-receipt-54f39ed20d16/issue-affected-junit.xml",
|
||||
"sha256": "aed6359ba4216e10bb89f34d40e0314fc9efb0f8dedeea40551c3302f31b8525",
|
||||
"tests": 25,
|
||||
"assertions": 125,
|
||||
"cases": [
|
||||
"issues are exact, idempotent and cannot make stock negative",
|
||||
"transfer creates exactly two opposite ledger entries and rejects repeated references",
|
||||
"counts preserve theoretical quantities and adjustments apply a justified difference once",
|
||||
"intervening receipts and issues invalidate counts and stale count forms",
|
||||
"operational role cannot be replaced by administration or other profiles with data set "(App\\Enums\\PurchasingRole Enum (Admin, 'admin'))"",
|
||||
"operational role cannot be replaced by administration or other profiles with data set "(App\\Enums\\PurchasingRole Enum (Finance, 'finance'))"",
|
||||
"operational role cannot be replaced by administration or other profiles with data set "(App\\Enums\\PurchasingRole Enum (Procurement, 'procurement'))"",
|
||||
"operational role cannot be replaced by administration or other profiles with data set "(App\\Enums\\PurchasingRole Enum (DepartmentHead, 'department_head'))"",
|
||||
"operational role cannot be replaced by administration or other profiles with data set "(App\\Enums\\PurchasingRole Enum (Requester, 'requester'))"",
|
||||
"foreign company resources cannot be used with data set "('warehouse_id')"",
|
||||
"foreign company resources cannot be used with data set "('destination_warehouse_id')"",
|
||||
"foreign company resources cannot be used with data set "('stock_item_id')"",
|
||||
"foreign company resources cannot be used with data set "('responsible_id')"",
|
||||
"audit failure rolls back both halves of transfer and operation",
|
||||
"operations are immutable and new public screen contains only demonstration props",
|
||||
"invalid precision and missing justification or destination do not write with data set "('quantity', '-1')"",
|
||||
"invalid precision and missing justification or destination do not write with data set "('quantity', '0')"",
|
||||
"invalid precision and missing justification or destination do not write with data set "('quantity', '0.0001')"",
|
||||
"invalid precision and missing justification or destination do not write with data set "('reason', ' ')"",
|
||||
"invalid precision and missing justification or destination do not write with data set "('destination', '')"",
|
||||
"invalid precision and missing justification or destination do not write with data set "('responsible_id', null)"",
|
||||
"positive adjustments credit only the difference and matching counts create no movements",
|
||||
"failure creating transfer credit rolls back its debit",
|
||||
"stock views isolate operations and counts from other companies",
|
||||
"form encoded retry identifiers and equivalent quantities retain idempotency"
|
||||
],
|
||||
"selection": false,
|
||||
"whole_run_tests": 25,
|
||||
"whole_run_failures": 0,
|
||||
"whole_run_errors": 0
|
||||
},
|
||||
"native_lots": {
|
||||
"file": "private/stock-receipt-0119bb873c56/issue-lots-junit.xml",
|
||||
"sha256": "4ea8597200ebd761cb9460acf165e1baaa4f7b7b1b84690a0bfe749b73ddf6dc",
|
||||
"tests": 2,
|
||||
"assertions": 10,
|
||||
"cases": [
|
||||
"FEFO consumes earliest expiry and preserves the single physical ledger with exact partitions",
|
||||
"expiry and hold remove usable quantity without changing physical stock"
|
||||
],
|
||||
"selection": false,
|
||||
"whole_run_tests": 2,
|
||||
"whole_run_failures": 0,
|
||||
"whole_run_errors": 0
|
||||
},
|
||||
"navigation": {
|
||||
"file": "junit-focused.xml",
|
||||
"sha256": "1452d1702bae6c8c3162750030b76c1167b88250ac03766fb8cba5fc4cae3549",
|
||||
"tests": 8,
|
||||
"assertions": 90,
|
||||
"cases": [
|
||||
"test_explicit_selection_direct_access_and_old_generation",
|
||||
"test_company_configuration_and_revocation_are_checked_again",
|
||||
"test_development_discovery_never_grants_operations_or_applies_in_production",
|
||||
"test_failed_selection_preserves_context_and_audit_contains_module_without_token",
|
||||
"test_local_environment_and_copied_profile_cannot_enable_discovery_for_client_database_configuration",
|
||||
"test_shared_records_require_explicit_association_and_company_scope",
|
||||
"test_unassociated_legacy_records_remain_in_explicit_administrative_inventory",
|
||||
"test_draft_creation_preserves_source_history_and_does_not_share_dependencies_implicitly"
|
||||
],
|
||||
"selection": false,
|
||||
"whole_run_tests": 8,
|
||||
"whole_run_failures": 0,
|
||||
"whole_run_errors": 0
|
||||
}
|
||||
},
|
||||
"totals": {
|
||||
"tests": 41,
|
||||
"assertions": 447
|
||||
},
|
||||
"proof_selection": "Four passing cases reused from an intermediate five-case run with one fixture-date failure. Only the corrected case and the additional scope case were rerun; the failed case is excluded from reused results.",
|
||||
"scenario_asserted": {
|
||||
"initial_physical_milli": "10000",
|
||||
"consumption_milli": "2000",
|
||||
"final_physical_milli": "8000",
|
||||
"movements_added": 1,
|
||||
"claims_added": 1,
|
||||
"same_book_observed_by_stock": true,
|
||||
"preparer_cannot_confirm": true,
|
||||
"replay_original_movement": true,
|
||||
"stale_book_map_rights_context_refused": true,
|
||||
"unknown_previous_issue_refused": true,
|
||||
"client_delivered_unverified_fraction_insufficient_refused": true,
|
||||
"failure_after_claim_insert_atomic_and_recovered": true,
|
||||
"other_company_sources_and_proposals_not_visible": true,
|
||||
"other_company_prepare_and_confirm_refused": true,
|
||||
"wrong_module_context_refused": true,
|
||||
"changed_idempotency_body_refused": true
|
||||
},
|
||||
"concurrency_asserted": {
|
||||
"processes": 2,
|
||||
"lock": "company row held by first transaction",
|
||||
"pg_blocking_pids_observed": true,
|
||||
"second_after_release": "200 replay same movement",
|
||||
"one_movement_and_claim": true
|
||||
},
|
||||
"correction_asserted": {
|
||||
"old_proposal_after_source_correction": "409",
|
||||
"verified_v2_after_new_review_physical_milli": "7000",
|
||||
"verified_v3_after_consumption": "409 without second effect"
|
||||
},
|
||||
"package": {
|
||||
"id": "tempo-inventory-issue",
|
||||
"version": "0.1.0",
|
||||
"files": {
|
||||
"bootstrap.php": "3e6c7c698279f3ffb865131e79b3f89e5ec3e4aa9114782df62e17712f48df6b",
|
||||
"src/IssueMovementWriter.php": "36d59bce53b8447516399974fc7d08beaa5d92b7b45a416014bd855e03fdf409"
|
||||
},
|
||||
"manifest_sha256": "3c24d9e9fb99bfbb274077495c3a42ddb7eccab06b5c6a956cd739b2bc9b56f0",
|
||||
"source_and_artifact_equal": true
|
||||
},
|
||||
"source_sha256": {
|
||||
"app/Modules/Workshop/WorkshopStock.php": "bfbcc17b9ff0caa4ed46dad7d1276dd8e508166eecafd2a3c6cbb4c5b54fbab0",
|
||||
"app/Modules/Workshop/Http/WorkshopStockController.php": "c6116f317a8ef6dd74f66599797b77da990f26aa9b6279142804f4974bf0d00d",
|
||||
"resources/js/WorkshopStockWorkspace.jsx": "7bbc2c5c8a6360b601b9c00772fcd9bbf16722cd087431ecc4274ef1c5031338",
|
||||
"resources/js/WorkshopMenuWorkspace.jsx": "098b990adcbafc387bd447e77f3238a8ec984218812d736bcb33e3da22f4937c",
|
||||
"config/workshop_stock.php": "603c5ea718e59b9e43c6dc01a4238813a56a63755fe60b63354b3957f6a0af49",
|
||||
"tests/Feature/WorkshopStockTest.php": "450f15558cb2727db8e1f60ab95ffaf12124dacf6c9e561611d82e56bdd17fd4",
|
||||
"tests/Support/workshop-stock-worker.php": "bdad20fd4f58714c36c20d3c271ac31fdd92a4083cedf31341938b501fd73c2d",
|
||||
"../compras/app/Services/StockIssueMovement.php": "61a649d26f4bf1e96becc3ff213bab0a029c47040d1368e99cc558bd98649de6",
|
||||
"../compras/app/Services/StockWorkflow.php": "18ddaa075432b84c0b0ee5241ff56ab9de9aa8e8db4e6132693bc7fd904b3a58"
|
||||
},
|
||||
"qa_postcheck": {
|
||||
"qa_identity": {
|
||||
"db": "sgf_tempo_test",
|
||||
"role": "sgf_test_runner",
|
||||
"port": 55439,
|
||||
"cluster": "sgf_modular_regression_2576427d1939"
|
||||
},
|
||||
"temporary_grants_remaining": 0,
|
||||
"constraint_sha256": "40046092cba51f1b46d26d5f0da8af47e8336e90a8d50b8de3a8c390758f1783",
|
||||
"operational_workshop_stock_bindings": 0,
|
||||
"read_only": true
|
||||
},
|
||||
"static_ui": {
|
||||
"proof": "docs/proofs/workshop-stock-ui-20261102.json",
|
||||
"sha256": "65aca7809af88f80e50c52e9ab13ee9ba52e047b17b183c048c8e1c0dd03b3fc",
|
||||
"kind": "static_render",
|
||||
"permission_separation": true,
|
||||
"pending_notice_removed_for_authorized_view": true,
|
||||
"loading_not_zero": true,
|
||||
"backend_requests": 0,
|
||||
"visual_review": false
|
||||
},
|
||||
"build": {
|
||||
"tool": "pinned Node 24.22.1 / Vite 8.3.5",
|
||||
"passed": true,
|
||||
"manifest_sha256": "205a739db091d58850827051e840cbf367437595c370418b2d6475848497be04",
|
||||
"visual_review": false
|
||||
},
|
||||
"reused_evidence_sha256": {
|
||||
"docs/proofs/stock-receipt-link-20261102.json": "b763ab326abf49271d16b32d22f01a8a8d31d1ab015141e42dcf5963ee914143",
|
||||
"docs/proofs/stock-read-load-20261102.json": "4fc1d7d13d480a30966b259611de1066fc22ef31f7a0e782da4872211801c72e",
|
||||
"docs/proofs/stock-read-composition-20261102.json": "bb129ab22f424a5d3333f9b851062bc6284fd514b9962e0df04b3efd22d951a6"
|
||||
},
|
||||
"preservation": {
|
||||
"writes_confined_to_new_synthetic_fixtures": true,
|
||||
"regression_not_reset": true,
|
||||
"six_protected_records_untouched": true,
|
||||
"blocked_cache_untouched": true,
|
||||
"demos_untouched": true,
|
||||
"previous_association_proofs_unchanged": true,
|
||||
"real_grants_or_data_changed": false,
|
||||
"purchasing_candidate_activation": false,
|
||||
"publication": false,
|
||||
"checkpoint": false
|
||||
},
|
||||
"limits": [
|
||||
"Quantity-only new eligible workshop origins; lots/reservations/spare parts refused.",
|
||||
"Reconciliation of existing deliveries, partial allocation, returns and compensation not implemented.",
|
||||
"Initial stock in workshop fixture is synthetic; previous native receipt proof is separate, not an installed single end-to-end ERP scenario.",
|
||||
"Conference tables are QA fixture only; operational installer and real rights not applied.",
|
||||
"Source list paginated 25, latest 25 proposals only.",
|
||||
"PostgreSQL tested; new write-load capacity and other drivers unvalidated."
|
||||
],
|
||||
"visual_review_pending": true,
|
||||
"deployment_capacity_validated": false
|
||||
}
|
||||
@@ -0,0 +1,339 @@
|
||||
{
|
||||
"date": "2026-11-02",
|
||||
"increment": "WORKSHOP-STOCK-PROPOSAL-CLOSURE-SIM-v1",
|
||||
"status": "local_synthetic_implementation",
|
||||
"proofs": [
|
||||
{
|
||||
"file": "workshop-stock-1793641924753.xml",
|
||||
"sha256": "cc0d1b6a5f55586303a8d6cb740f03b1bdfb72c7da7aee6e99edb890beb2a8c5",
|
||||
"tests": 10,
|
||||
"assertions": 319,
|
||||
"failures": 1,
|
||||
"errors": 0,
|
||||
"selected_passing_cases": 9
|
||||
},
|
||||
{
|
||||
"file": "workshop-stock-1793642136561.xml",
|
||||
"sha256": "0b1e3e4aa6f139cb042b9bd704e374aefd8b08dff8ac46956219cd7d08497056",
|
||||
"tests": 1,
|
||||
"assertions": 41,
|
||||
"failures": 0,
|
||||
"errors": 0,
|
||||
"selected_passing_cases": 1
|
||||
},
|
||||
{
|
||||
"file": "workshop-stock-1793642158453.xml",
|
||||
"sha256": "462f040b1ca17b2a7478d4f1bef68c89523281b208cd98450373df21e3c09705",
|
||||
"tests": 22,
|
||||
"assertions": 820,
|
||||
"failures": 0,
|
||||
"errors": 0,
|
||||
"selected_passing_cases": 22
|
||||
},
|
||||
{
|
||||
"file": "workshop-stock-1793642231864.xml",
|
||||
"sha256": "3182db7e3e3379bc54b4b53aeb939cf9f8f0372bec115c031c1efaa432703894",
|
||||
"tests": 1,
|
||||
"assertions": 28,
|
||||
"failures": 0,
|
||||
"errors": 0,
|
||||
"selected_passing_cases": 1
|
||||
}
|
||||
],
|
||||
"selection": "All current WorkshopStockTest cases covered exactly once by name, selecting passing cases only. Initial history assertion omitted the schema-discovery SELECT: its failure is retained, excluded and replaced by the targeted passing rerun distinguishing one catalogue lookup and one batch data lookup. Other passing cases were reused. No native, association or unrelated suites repeated.",
|
||||
"totals": {
|
||||
"distinct_tests": 33,
|
||||
"assertions": 1181
|
||||
},
|
||||
"closure_cases": {
|
||||
"tests": 11,
|
||||
"assertions": 361
|
||||
},
|
||||
"selected_cases": [
|
||||
{
|
||||
"name": "test_closure_withdraws_stale_preview_and_replay_does_not_reopen_it",
|
||||
"assertions": 50,
|
||||
"proof": "workshop-stock-1793641924753.xml"
|
||||
},
|
||||
{
|
||||
"name": "test_closure_requires_current_right_context_independence_hash_and_version",
|
||||
"assertions": 35,
|
||||
"proof": "workshop-stock-1793641924753.xml"
|
||||
},
|
||||
{
|
||||
"name": "test_closure_of_confirmed_proposal_requires_separate_physical_correction",
|
||||
"assertions": 28,
|
||||
"proof": "workshop-stock-1793641924753.xml"
|
||||
},
|
||||
{
|
||||
"name": "test_closure_failure_rolls_back_audit_and_recovers_with_one_decision",
|
||||
"assertions": 27,
|
||||
"proof": "workshop-stock-1793641924753.xml"
|
||||
},
|
||||
{
|
||||
"name": "test_closure_cannot_cross_company_or_unit_even_with_shared_source_binding",
|
||||
"assertions": 25,
|
||||
"proof": "workshop-stock-1793641924753.xml"
|
||||
},
|
||||
{
|
||||
"name": "test_closure_for_delivery_allocation_and_return_never_moves_or_claims_material",
|
||||
"assertions": 39,
|
||||
"proof": "workshop-stock-1793641924753.xml"
|
||||
},
|
||||
{
|
||||
"name": "test_closure_withdrawal_wins_over_concurrent_confirmation",
|
||||
"assertions": 29,
|
||||
"proof": "workshop-stock-1793641924753.xml"
|
||||
},
|
||||
{
|
||||
"name": "test_closure_confirmation_wins_over_concurrent_withdrawal",
|
||||
"assertions": 29,
|
||||
"proof": "workshop-stock-1793641924753.xml"
|
||||
},
|
||||
{
|
||||
"name": "test_closure_concurrent_identical_withdrawals_replay_one_decision",
|
||||
"assertions": 30,
|
||||
"proof": "workshop-stock-1793641924753.xml"
|
||||
},
|
||||
{
|
||||
"name": "test_closure_history_filters_and_pages_use_only_the_current_page",
|
||||
"assertions": 41,
|
||||
"proof": "workshop-stock-1793642136561.xml"
|
||||
},
|
||||
{
|
||||
"name": "test_stock_return_unconsumed_material_restores_only_remaining_quantity_once",
|
||||
"assertions": 63,
|
||||
"proof": "workshop-stock-1793642158453.xml"
|
||||
},
|
||||
{
|
||||
"name": "test_stock_return_refuses_consumed_client_unverified_excess_and_stale_capacity",
|
||||
"assertions": 52,
|
||||
"proof": "workshop-stock-1793642158453.xml"
|
||||
},
|
||||
{
|
||||
"name": "test_stock_return_failure_after_decision_rolls_back_movement_and_recovers",
|
||||
"assertions": 32,
|
||||
"proof": "workshop-stock-1793642158453.xml"
|
||||
},
|
||||
{
|
||||
"name": "test_stock_return_concurrency_cannot_restore_quantity_twice",
|
||||
"assertions": 40,
|
||||
"proof": "workshop-stock-1793642158453.xml"
|
||||
},
|
||||
{
|
||||
"name": "test_stock_return_revoked_right_stale_context_and_foreign_company_do_not_write",
|
||||
"assertions": 36,
|
||||
"proof": "workshop-stock-1793642158453.xml"
|
||||
},
|
||||
{
|
||||
"name": "test_partial_delivery_links_multiple_origins_without_debit_and_rechecks_remaining",
|
||||
"assertions": 60,
|
||||
"proof": "workshop-stock-1793642158453.xml"
|
||||
},
|
||||
{
|
||||
"name": "test_partial_delivery_requires_enabled_capability_and_rolls_back_allocation_failure",
|
||||
"assertions": 26,
|
||||
"proof": "workshop-stock-1793642158453.xml"
|
||||
},
|
||||
{
|
||||
"name": "test_partial_delivery_concurrent_proposals_cannot_overallocate",
|
||||
"assertions": 41,
|
||||
"proof": "workshop-stock-1793642158453.xml"
|
||||
},
|
||||
{
|
||||
"name": "test_history_filters_and_pagination_preserve_order_and_scope",
|
||||
"assertions": 38,
|
||||
"proof": "workshop-stock-1793642158453.xml"
|
||||
},
|
||||
{
|
||||
"name": "test_delivery_link_has_zero_effect_independent_decision_and_no_duplicate",
|
||||
"assertions": 44,
|
||||
"proof": "workshop-stock-1793642158453.xml"
|
||||
},
|
||||
{
|
||||
"name": "test_delivery_link_refuses_mismatch_stale_book_and_recovers_from_failure",
|
||||
"assertions": 39,
|
||||
"proof": "workshop-stock-1793642158453.xml"
|
||||
},
|
||||
{
|
||||
"name": "test_delivery_link_can_reconcile_fully_depleted_stock_without_new_issue",
|
||||
"assertions": 30,
|
||||
"proof": "workshop-stock-1793642158453.xml"
|
||||
},
|
||||
{
|
||||
"name": "test_delivery_link_rejects_reversal_and_does_not_adopt_history",
|
||||
"assertions": 20,
|
||||
"proof": "workshop-stock-1793642158453.xml"
|
||||
},
|
||||
{
|
||||
"name": "test_delivery_link_refuses_missing_original_hash",
|
||||
"assertions": 21,
|
||||
"proof": "workshop-stock-1793642158453.xml"
|
||||
},
|
||||
{
|
||||
"name": "test_delivery_link_other_company_cannot_prepare_or_confirm",
|
||||
"assertions": 26,
|
||||
"proof": "workshop-stock-1793642158453.xml"
|
||||
},
|
||||
{
|
||||
"name": "test_individual_impact_independence_exact_issue_and_replay",
|
||||
"assertions": 45,
|
||||
"proof": "workshop-stock-1793642158453.xml"
|
||||
},
|
||||
{
|
||||
"name": "test_client_unverified_fraction_and_unknown_delivery_do_not_debit",
|
||||
"assertions": 48,
|
||||
"proof": "workshop-stock-1793642158453.xml"
|
||||
},
|
||||
{
|
||||
"name": "test_stale_book_mapping_permission_scope_and_failure_recovery",
|
||||
"assertions": 31,
|
||||
"proof": "workshop-stock-1793642158453.xml"
|
||||
},
|
||||
{
|
||||
"name": "test_corrected_source_requires_review_and_never_consumes_the_same_origin_twice",
|
||||
"assertions": 39,
|
||||
"proof": "workshop-stock-1793642158453.xml"
|
||||
},
|
||||
{
|
||||
"name": "test_other_company_cannot_read_or_confirm_origin_and_changed_command_is_refused",
|
||||
"assertions": 29,
|
||||
"proof": "workshop-stock-1793642158453.xml"
|
||||
},
|
||||
{
|
||||
"name": "test_concurrent_confirmation_has_one_claim_and_movement",
|
||||
"assertions": 30,
|
||||
"proof": "workshop-stock-1793642158453.xml"
|
||||
},
|
||||
{
|
||||
"name": "test_delivery_link_concurrent_confirmation_has_one_claim_without_movement",
|
||||
"assertions": 30,
|
||||
"proof": "workshop-stock-1793642158453.xml"
|
||||
},
|
||||
{
|
||||
"name": "test_closure_absent_in_legacy_synthetic_source_does_not_disable_confirmation",
|
||||
"assertions": 28,
|
||||
"proof": "workshop-stock-1793642231864.xml"
|
||||
}
|
||||
],
|
||||
"workflow": {
|
||||
"withdraw_requires_original_preparer_and_current_prepare_right": true,
|
||||
"reject_requires_independent_current_confirmer": true,
|
||||
"explicit_reason": true,
|
||||
"presented_state_version_and_source_hash_required": true,
|
||||
"stale_physical_preview_can_be_closed_without_execution": true,
|
||||
"confirmed_effect_cannot_be_closed_or_reversed_by_this_command": true,
|
||||
"replay_same_body_actor_and_state_only": true,
|
||||
"new_review_requires_new_proposal": true,
|
||||
"zero_stock_effect": true,
|
||||
"original_immutable": true,
|
||||
"append_only_decision_with_before_after_actor_time_reason": true,
|
||||
"audit_in_same_transaction": true
|
||||
},
|
||||
"concurrency": {
|
||||
"separate_processes": 2,
|
||||
"company_lock_observed_with_pg_blocking_pids": true,
|
||||
"withdraw_then_confirm": "second refuses 409 after release; no physical movement",
|
||||
"confirm_then_withdraw": "second refuses 409 after release; original movement retained",
|
||||
"identical_withdrawals": "second replays original; one decision"
|
||||
},
|
||||
"history": {
|
||||
"fixture_proposals": 51,
|
||||
"closed": 3,
|
||||
"pending": 48,
|
||||
"page_size": 25,
|
||||
"closure_catalog_discovery_selects": 1,
|
||||
"closure_batch_data_selects": 1,
|
||||
"pages_disjoint": true,
|
||||
"not_a_capacity_benchmark": true,
|
||||
"filters": [
|
||||
"all",
|
||||
"pending",
|
||||
"confirmed",
|
||||
"withdrawn",
|
||||
"rejected"
|
||||
],
|
||||
"repeatable_read_read_only": true,
|
||||
"no_universe_loaded": true
|
||||
},
|
||||
"recovery": {
|
||||
"audit_failure_rolls_back_decision": true,
|
||||
"retry_creates_one_decision": true,
|
||||
"database_update_of_closure_refused": true
|
||||
},
|
||||
"source_sha256": {
|
||||
"app/Modules/Workshop/WorkshopStock.php": "6460a4235fe7b0b4602b0aeb63a47f1a97e367e93baba6aa774be5fa0dac4e6e",
|
||||
"app/Modules/Workshop/Http/WorkshopStockController.php": "06c9f85f926b4268636887f50458cd19fc1a467ae636dea94caba586fb463c0e",
|
||||
"resources/js/WorkshopStockWorkspace.jsx": "195526f823813a47f797b9f09203d0fecde921a95138fdbda5238b0a7cc5106d",
|
||||
"routes/web.php": "3c3c3bfcb0d50bbf813e8b049191ce8691f74c1396d5f32bd1d83768a3d2b1e8",
|
||||
"tests/Feature/WorkshopStockTest.php": "d20cc5f2f07e1e4bef96785913bf77f45e10c107a4e823542b8ed4e90e03d7ab",
|
||||
"tests/Support/workshop-stock-worker.php": "d216643380bbde379695887ec456987c20babf5f8223cac0de27ebb501f81bf3",
|
||||
"config/workshop_stock.php": "603c5ea718e59b9e43c6dc01a4238813a56a63755fe60b63354b3957f6a0af49"
|
||||
},
|
||||
"ui": {
|
||||
"proof": "docs/proofs/workshop-stock-closure-ui-20261102.json",
|
||||
"sha256": "60c4f12e14f91ddfadfa35ff57b6e88f8dc4e24ad6347fbd5b25572eb149c5d4",
|
||||
"kind": "static_closure_impact_render_and_source_guards",
|
||||
"closure_zero_effect_visible": true,
|
||||
"archival_and_new_review_visible": true,
|
||||
"existing_return_impact_preserved": true,
|
||||
"version_and_hash_sent": true,
|
||||
"independent_action_visibility_guards": true,
|
||||
"context_generation_guards": true,
|
||||
"source_sha256": "195526f823813a47f797b9f09203d0fecde921a95138fdbda5238b0a7cc5106d",
|
||||
"backend_requests": 0,
|
||||
"browser_interactions_tested": false,
|
||||
"visual_review": false
|
||||
},
|
||||
"build": {
|
||||
"passed": true,
|
||||
"manifest_sha256": "e8ba7311860444604202cfe6ad420eb35dd11858e9e7fcc815a1f26ab7512c24",
|
||||
"application_asset": "public/build/assets/app-DuxcWTkD.js",
|
||||
"application_asset_sha256": "847d900405d5a5a9898f243df5981114841d06f3d99772c52070c822ad7fd931",
|
||||
"closure_controls_in_built_application": true,
|
||||
"modules_transformed": 46,
|
||||
"navigation_source_changed": false,
|
||||
"extra_navigation_checker": "Existing home checker did not complete; only its verified own processes stopped. Direct Vite build and targeted closure UI proof passed. No new navigation acceptance claimed.",
|
||||
"browser_interactions_tested": false,
|
||||
"visual_review": false
|
||||
},
|
||||
"postcheck": {
|
||||
"qa_identity": {
|
||||
"db": "sgf_tempo_test",
|
||||
"role": "sgf_test_runner",
|
||||
"port": 55439,
|
||||
"cluster": "sgf_modular_regression_2576427d1939"
|
||||
},
|
||||
"temporary_grants_remaining": 0,
|
||||
"constraint_sha256": "40046092cba51f1b46d26d5f0da8af47e8336e90a8d50b8de3a8c390758f1783",
|
||||
"operational_workshop_stock_bindings": 0,
|
||||
"read_only": true
|
||||
},
|
||||
"reused_proofs": {
|
||||
"docs/proofs/workshop-material-cycle-20261102.json": "4d79e563401df1e20d793ca8af9a1da228a24c86d6c887323a9e57c3ce65cc9a",
|
||||
"docs/proofs/native-warehouse-return-20261102.json": "587795ab4d2b2e65d51feaf7ed5e368df715d69cb7a0480f5f2b1d802d019869",
|
||||
"docs/proofs/stock-read-load-20261102.json": "4fc1d7d13d480a30966b259611de1066fc22ef31f7a0e782da4872211801c72e"
|
||||
},
|
||||
"preservation": {
|
||||
"new_closure_table_and_index_only_in_new_synthetic_fixture_schemas": true,
|
||||
"no_installed_migration": true,
|
||||
"no_new_rights": true,
|
||||
"temporary_qa_rights_restored": true,
|
||||
"six_pending_associations_untouched": true,
|
||||
"blocked_cache_untouched": true,
|
||||
"demos_and_real_data_untouched": true,
|
||||
"regression_not_reset": true,
|
||||
"previous_proofs_preserved": true,
|
||||
"publication": false,
|
||||
"activation": false,
|
||||
"checkpoint": false
|
||||
},
|
||||
"limits": [
|
||||
"Closing a proposal does not correct a confirmed physical effect.",
|
||||
"Legacy synthetic sources without ws_closures retain read/confirm capability; closure command returns 503 and UI does not offer closure. No operational installer created.",
|
||||
"No change to native forecasting convention, lots, reservations or financial/accounting effects.",
|
||||
"No browser interaction, visual acceptance or deployment-capacity validation."
|
||||
],
|
||||
"visual_review_pending": true,
|
||||
"deployment_capacity_validated": false
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
{
|
||||
"kind": "static_closure_impact_render_and_source_guards",
|
||||
"closure_zero_effect_visible": true,
|
||||
"archival_and_new_review_visible": true,
|
||||
"existing_return_impact_preserved": true,
|
||||
"version_and_hash_sent": true,
|
||||
"independent_action_visibility_guards": true,
|
||||
"context_generation_guards": true,
|
||||
"source_sha256": "195526f823813a47f797b9f09203d0fecde921a95138fdbda5238b0a7cc5106d",
|
||||
"backend_requests": 0,
|
||||
"browser_interactions_tested": false,
|
||||
"visual_review": false
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
{
|
||||
"kind": "static_render",
|
||||
"permission_separation": true,
|
||||
"pending_notice_removed_for_authorized_view": true,
|
||||
"loading_not_zero": true,
|
||||
"backend_requests": 0,
|
||||
"visual_review": false
|
||||
}
|
||||
Reference in New Issue
Block a user