test(release): record backup permission failure gates
This commit is contained in:
@@ -97,3 +97,13 @@ Fresh evidence, Windows / Python 3.12.10 / Git Bash:
|
||||
- `graphify update .`: AST-only update completed, 18,539 nodes / 45,993 edges. Optional SQL extractor missing and unsupported/no-symbol files reported; no dependency installed or semantic/model extraction run. Generated graph remains untracked local navigation material.
|
||||
|
||||
Tests execute only extracted functions/caller with synthetic temporary files. Every pruning `find`, `rm` and upload operation is a shell stub; sorting uses only mocked listing text. The full deployment script was never executed or sourced. No real backup, deletion, network transfer, containers, database, migration, providers, model, infrastructure repair or production operation was performed. Product/browser/full MariaDB/hosted/security suites were not rerun for this shell-only package. Actual Linux-host pruning, encrypted retrieval/decryption, consistent restore, post-write rollback and agreed RTO/RPO remain unqualified. RR-09/RR-12/RR-13 recovery gates and production NO-GO remain open. Reverting this bounded commit restores the prior failure-masking behavior; no schema or user-data reversal is needed.
|
||||
|
||||
## RR-13 backup permission gate
|
||||
|
||||
Source1c8761b1 follows retention checkpointe1c8e845. report_backup previously ignored failure of both host chmod and its Docker fallback while running under conditional backup gates. Extracted real verification functions and the actual database/recovery conditional gate reproduced continued verification/promotion in both failing permission scenarios.
|
||||
|
||||
The fallback now returns failure explicitly, retaining the artifact and suppressing Backup verified and subsequent deployment gates. Host-success and fallback-success paths retain their behaviour. No Docker command, chmod, archive operation or deployment was executed against real data:permissions/container/size/content verification are stubbed around a synthetic temporary artifact.
|
||||
|
||||
RED:three methods/six scenarios, two failing subtests. GREEN:19 backup methods passed, including three permission methods/six scenarios; Bash syntax passed. The prior six rollback methods were not rerun because the handler is unchanged. Native logs/source bindings: evidence/backup-permissions. Root continued after delegated worker usage limits; test temp/output uses E because C capacity is constrained.
|
||||
|
||||
Actual Linux permissions, encrypted retrieval, full restore, post-write rollback, RPO/RTO and final release qualification remain open. No real permission/prune/upload/deploy/recovery occurred. Revert1c8761b1 and rerun backup checks to roll back the code change; no data migration is involved.
|
||||
|
||||
@@ -16,7 +16,7 @@ Discovery only, 2026-11-02. These are qualification gaps unless a concrete defec
|
||||
| RR-10 | AI quality/activation | Deterministic Docling fixtures are distinct from real-model semantic accuracy. Optional unqualified adapter remains disabled; no AI invocation authorised here |
|
||||
| RR-11 | Backup host parsing rejected supported `Host=` alias and uppercase spelling | FIXED AND OFFLINE-TESTED. See [bounded remediation](RR-11_IMPLEMENTATION.md). Real dump/restore qualification remains open |
|
||||
| RR-12 | Previous handler omitted post-rollback health checks; schema/data/AI recovery remains separate | Health probes FIXED in `a39ac847` and six offline handler methods passed, including failed endpoints and diagnostics. See [health follow-up](11_BACKUP_RESTORE_ROLLBACK.md#rr-12-post-rollback-core-health-checks). Actual image identity, startup timing and recovery after migration/writes still require isolated rehearsal |
|
||||
| RR-13 | Off-host encryption and recovery-set consistency need independent proof. Failed transfer, partial monthly copy and retention errors previously let deployment continue | Transfer/marker gates and explicit daily prune, monthly enumeration/sort and removal failure propagation FIXED AND OFFLINE-TESTED. Final backup suite 16/16 methods; four retention failure assertions reproduced first. See [retention follow-up](11_BACKUP_RESTORE_ROLLBACK.md#rr-13-retention-failure-propagation). Actual encryption, retrieval/decryption and database/files/key/tombstone consistency require approved isolation |
|
||||
| RR-13 | Off-host encryption and recovery-set consistency need independent proof. Failed transfer, partial monthly copy and retention errors previously let deployment continue | Transfer/marker gates and explicit daily prune, monthly enumeration/sort and removal failure propagation FIXED AND OFFLINE-TESTED. Retention suite16/16 preceded permission protection follow-up1c8761b1; final backup suite19/19 methods. Four retention failure assertions and two permission failure subtests reproduced first. See [retention follow-up](11_BACKUP_RESTORE_ROLLBACK.md#rr-13-retention-failure-propagation). See also [permission follow-up](11_BACKUP_RESTORE_ROLLBACK.md#rr-13-backup-permission-gate). Actual encryption, retrieval/decryption and database/files/key/tombstone consistency require approved isolation |
|
||||
| RR-14 | July first-deploy runbook inferred rollback safety from its no-op migration baseline, while current migration Up methods add schema | Historical scope and current qualification links clarified. `AddJobRevision` adds Version and `AddUserOperationEvents` creates a table/indexes. Exact old/new image compatibility after migration/writes remains an isolated rehearsal gate |
|
||||
|
||||
Continue evidence work against the [source endpoint and environment census](03_ENDPOINT_ENVIRONMENT_CENSUS.md). Actual qualification requires an accepted candidate and isolated environment. Every fix needs minimal scope, targeted verification and the applicable stage approval.
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"baseline": "e1c8e84502e08144a32f496af8b03cb26f0ec815",
|
||||
"sourceCommit": "1c8761b1880279902dc17ab2ce0b58d44018562b",
|
||||
"sourcesLfSha256": {
|
||||
"deploy/deploy.sh": "723ace6d66b74d6578f3a941b8a73a451ec5ceabd4d5a1c9d49c1e0a40496ce6",
|
||||
"scripts/test-deploy-backup.py": "62063c97b743e17a15f58166329cffe4ebbcc326f060c3e20f39e9d81cddd6ff"
|
||||
},
|
||||
"red": "Three methods/six permission scenarios; two failed subtests.",
|
||||
"green": "19 backup methods passed, including three permission methods/six scenarios.",
|
||||
"limits": "Extracted functions and actual conditional gates; chmod/Docker/du/gzip/archive shape are synthetic stubs. No real permissions, deployment, deletion or recovery."
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
test_empty_password_is_preserved (__main__.BackupConnectionTests.test_empty_password_is_preserved) ... ok
|
||||
test_invalid_or_ambiguous_input_never_invokes_dump_or_exposes_input (__main__.BackupConnectionTests.test_invalid_or_ambiguous_input_never_invokes_dump_or_exposes_input) ... ok
|
||||
test_quoted_separators_and_shell_characters_remain_data (__main__.BackupConnectionTests.test_quoted_separators_and_shell_characters_remain_data) ... ok
|
||||
test_single_quoted_unicode_password_and_database_alias_are_preserved (__main__.BackupConnectionTests.test_single_quoted_unicode_password_and_database_alias_are_preserved) ... ok
|
||||
test_supported_host_alias_and_case_reach_dump_unchanged (__main__.BackupConnectionTests.test_supported_host_alias_and_case_reach_dump_unchanged) ... ok
|
||||
test_both_permission_failures_block_verification_and_next_gate (__main__.BackupPermissionTests.test_both_permission_failures_block_verification_and_next_gate) ... ok
|
||||
test_fallback_permission_success_preserves_verification (__main__.BackupPermissionTests.test_fallback_permission_success_preserves_verification) ... ok
|
||||
test_host_permission_success_does_not_need_fallback (__main__.BackupPermissionTests.test_host_permission_success_does_not_need_fallback) ... ok
|
||||
test_completed_monthly_snapshot_contains_both_artifacts_and_stamp (__main__.BackupRetentionTests.test_completed_monthly_snapshot_contains_both_artifacts_and_stamp) ... ok
|
||||
test_daily_prune_failure_blocks_monthly_pruning_upload_and_deploy (__main__.BackupRetentionTests.test_daily_prune_failure_blocks_monthly_pruning_upload_and_deploy) ... ok
|
||||
test_empty_monthly_enumeration_does_not_request_removal (__main__.BackupRetentionTests.test_empty_monthly_enumeration_does_not_request_removal) ... ok
|
||||
test_marker_publish_failure_does_not_expose_complete_marker_or_proceed (__main__.BackupRetentionTests.test_marker_publish_failure_does_not_expose_complete_marker_or_proceed) ... ok
|
||||
test_monthly_enumeration_failure_blocks_pruning_upload_and_deploy (__main__.BackupRetentionTests.test_monthly_enumeration_failure_blocks_pruning_upload_and_deploy) ... ok
|
||||
test_monthly_prune_failure_stops_before_remaining_months_upload_and_deploy (__main__.BackupRetentionTests.test_monthly_prune_failure_stops_before_remaining_months_upload_and_deploy) ... ok
|
||||
test_partial_monthly_copy_cannot_mark_snapshot_complete_or_proceed (__main__.BackupRetentionTests.test_partial_monthly_copy_cannot_mark_snapshot_complete_or_proceed) ... ok
|
||||
test_preserves_the_existing_completed_monthly_snapshot (__main__.BackupRetentionTests.test_preserves_the_existing_completed_monthly_snapshot) ... ok
|
||||
test_daily_copy_failure_stops_before_remaining_files_and_monthly_copy (__main__.BackupUploadTests.test_daily_copy_failure_stops_before_remaining_files_and_monthly_copy) ... ok
|
||||
test_monthly_copy_failure_blocks_deploy (__main__.BackupUploadTests.test_monthly_copy_failure_blocks_deploy) ... ok
|
||||
test_uploads_only_current_daily_files_then_monthly_snapshot (__main__.BackupUploadTests.test_uploads_only_current_daily_files_then_monthly_snapshot) ... ok
|
||||
|
||||
----------------------------------------------------------------------
|
||||
Ran 19 tests in 11.903s
|
||||
|
||||
OK
|
||||
@@ -0,0 +1,34 @@
|
||||
test_both_permission_failures_block_verification_and_next_gate (__main__.BackupPermissionTests.test_both_permission_failures_block_verification_and_next_gate) ...
|
||||
test_both_permission_failures_block_verification_and_next_gate (__main__.BackupPermissionTests.test_both_permission_failures_block_verification_and_next_gate) (kind='database') ... FAIL
|
||||
test_both_permission_failures_block_verification_and_next_gate (__main__.BackupPermissionTests.test_both_permission_failures_block_verification_and_next_gate) (kind='recovery') ... FAIL
|
||||
test_fallback_permission_success_preserves_verification (__main__.BackupPermissionTests.test_fallback_permission_success_preserves_verification) ... ok
|
||||
test_host_permission_success_does_not_need_fallback (__main__.BackupPermissionTests.test_host_permission_success_does_not_need_fallback) ... ok
|
||||
|
||||
======================================================================
|
||||
FAIL: test_both_permission_failures_block_verification_and_next_gate (__main__.BackupPermissionTests.test_both_permission_failures_block_verification_and_next_gate) (kind='database')
|
||||
----------------------------------------------------------------------
|
||||
Traceback (most recent call last):
|
||||
File "C:\Users\Connor\.codex\worktrees\release-readiness-discovery\Job tracker\scripts\test-deploy-backup.py", line 355, in test_both_permission_failures_block_verification_and_next_gate
|
||||
self.assertNotEqual(0, result.returncode, result.stdout + result.stderr)
|
||||
AssertionError: 0 == 0 : HOST PERMISSIONS
|
||||
FALLBACK PERMISSIONS
|
||||
Backup verified: E:/Storage/Projects/Active/temp docs/jobjakt-local-build/frozen-document-integrity/temp/backup-permission-fg2554w_/synthetic-backup.gz (1K)
|
||||
NEXT DEPLOY GATE WOULD START
|
||||
|
||||
|
||||
======================================================================
|
||||
FAIL: test_both_permission_failures_block_verification_and_next_gate (__main__.BackupPermissionTests.test_both_permission_failures_block_verification_and_next_gate) (kind='recovery')
|
||||
----------------------------------------------------------------------
|
||||
Traceback (most recent call last):
|
||||
File "C:\Users\Connor\.codex\worktrees\release-readiness-discovery\Job tracker\scripts\test-deploy-backup.py", line 355, in test_both_permission_failures_block_verification_and_next_gate
|
||||
self.assertNotEqual(0, result.returncode, result.stdout + result.stderr)
|
||||
AssertionError: 0 == 0 : HOST PERMISSIONS
|
||||
FALLBACK PERMISSIONS
|
||||
Backup verified: E:/Storage/Projects/Active/temp docs/jobjakt-local-build/frozen-document-integrity/temp/backup-permission-ri_ir06o/synthetic-backup.gz (1K)
|
||||
NEXT DEPLOY GATE WOULD START
|
||||
|
||||
|
||||
----------------------------------------------------------------------
|
||||
Ran 3 tests in 2.133s
|
||||
|
||||
FAILED (failures=2)
|
||||
@@ -0,0 +1 @@
|
||||
PASS: C:/Program Files/Git/bin/bash.exe -n deploy/deploy.sh; exit0
|
||||
Reference in New Issue
Block a user