[Feature] Preview and unpack an already uploaded managed archive #45

Closed
opened 2026-09-07 10:24:31 +02:00 by zemion · 4 comments
Owner

Select an existing managed archive and unpack server-side using the existing preview, password, member-selection and destination dialog. Source remains unchanged. Enforce source byte access, destination upload/ownership, connector policy, source-version-bound tokens, existing path/size limits and stale preview rejection. No browser download/reupload. Add backend/UI regression and EN/DE docs.

Implementation started locally for the 2026-09-07 usability review. Existing uncommitted Campaign repairs are preserved. No live user imports or settings changes for tests; leave open until committed and delivered.

Select an existing managed archive and unpack server-side using the existing preview, password, member-selection and destination dialog. Source remains unchanged. Enforce source byte access, destination upload/ownership, connector policy, source-version-bound tokens, existing path/size limits and stale preview rejection. No browser download/reupload. Add backend/UI regression and EN/DE docs. Implementation started locally for the 2026-09-07 usability review. Existing uncommitted Campaign repairs are preserved. No live user imports or settings changes for tests; leave open until committed and delivered.
Author
Owner

Local implementation and verification — 2026-09-07 usability slice (not yet committed/pushed).

Select one supported managed archive and use Unpack archive / Archiv entpacken in the toolbar or context menu. Choose a destination, then reuse the existing password/preview/member-selection/confirmation dialog. The source archive remains intact. Server reads verified managed bytes without a browser download/reupload. New preview/confirm routes require read, download and upload authority; enforce owner/share/tenant access, current source-version matching (including the verified read), quarantine/integrity, archive limits and connector policy. Sealed previews bind actor, tenant, source/version, destination, digest and expiry. Confirmation rechecks authority, rejects collisions and rolls back failed imports.

The dialog explicitly warns that extracted members use ordinary destination storage; archive passwords/source envelope encryption are not automatically inherited. This is not a background-job/progress-performance overhaul: existing extraction pipeline remains in use. English/German module topics, administrator consequences and Files handbook updated.

Evidence: full Files backend 185 tests plus 41 subtests, including 16 managed-archive HTTP tests; five real FilesPage browser cases (EN/DE, selection/destination, password, errors, permissions and busy Escape guard) within passing 47-case conformance suite. Browser tests use mocked APIs; backend tests use isolated databases/storage. Live instance confirms the new action is present and disabled without a valid selection; no live archive was imported or user file changed. Strict endpoint inventory and 72-manifest checks pass.

Delivery state: keep open until reviewed/committed/pushed; this note records local verified work only.

Local implementation and verification — 2026-09-07 usability slice (not yet committed/pushed). Select one supported managed archive and use Unpack archive / Archiv entpacken in the toolbar or context menu. Choose a destination, then reuse the existing password/preview/member-selection/confirmation dialog. The source archive remains intact. Server reads verified managed bytes without a browser download/reupload. New preview/confirm routes require read, download and upload authority; enforce owner/share/tenant access, current source-version matching (including the verified read), quarantine/integrity, archive limits and connector policy. Sealed previews bind actor, tenant, source/version, destination, digest and expiry. Confirmation rechecks authority, rejects collisions and rolls back failed imports. The dialog explicitly warns that extracted members use ordinary destination storage; archive passwords/source envelope encryption are not automatically inherited. This is not a background-job/progress-performance overhaul: existing extraction pipeline remains in use. English/German module topics, administrator consequences and Files handbook updated. Evidence: full Files backend 185 tests plus 41 subtests, including 16 managed-archive HTTP tests; five real FilesPage browser cases (EN/DE, selection/destination, password, errors, permissions and busy Escape guard) within passing 47-case conformance suite. Browser tests use mocked APIs; backend tests use isolated databases/storage. Live instance confirms the new action is present and disabled without a valid selection; no live archive was imported or user file changed. Strict endpoint inventory and 72-manifest checks pass. Delivery state: keep open until reviewed/committed/pushed; this note records local verified work only.
Author
Owner

Follow-up implemented locally: both archive upload and managed-file unpack use the shared blurred dialog overlay without envelope animation. Numeric transfer/extraction file and byte counters distinguish processing from final transaction commit; unknown progress stays indeterminate. Busy content is inert and closing is blocked until the synchronous operation finishes.

Performance work: UI preview stages one bounded private copy, reused for password repreview and confirmation (no second network upload); cancellation/replacement and successful confirmation release it. Actor-bound signed token/digest validation, private filesystem modes, byte/count quotas, nonrenewing TTL and active POSIX leases protect staging. Optional libarchive accelerates compatible Legacy ZIPCrypto while Python preflight, path/type/size/CRC checks and rollback remain intact. Members stream one at a time, deployment transport is reused within an archive operation, and upload responses use batched metadata lookup. Durable recovery remains enabled.

Measured decoder-only benchmark: 4 MiB ~0.073s native versus ~5.92s Python (~81×). This is not a whole-import speed guarantee. Many-small-file durability bookkeeping remains significant (41,000 of 50,000 SQL statements in the isolated 1,000-file benchmark).

Verification so far: all 225 Files tests plus 56 subtests; nine actual-client behavior regressions (expiry, no automatic confirmation retry, polling errors, genuine transfer counters); 51/51 full shared browser conformance tests; production build and budgets; all 72 manifest checks. Live upload→preview→cancel returned 200/204 without importing managed files. EN/DE workflow and operator docs describe temporary retention/cleanup, settings and multi-worker deployment requirements.

Changes remain uncommitted/unpushed; issue stays open pending publication. The broad focused check stops at the already-known unrelated institutional governance journey failure.

Follow-up implemented locally: both archive upload and managed-file unpack use the shared blurred dialog overlay without envelope animation. Numeric transfer/extraction file and byte counters distinguish processing from final transaction commit; unknown progress stays indeterminate. Busy content is inert and closing is blocked until the synchronous operation finishes. Performance work: UI preview stages one bounded private copy, reused for password repreview and confirmation (no second network upload); cancellation/replacement and successful confirmation release it. Actor-bound signed token/digest validation, private filesystem modes, byte/count quotas, nonrenewing TTL and active POSIX leases protect staging. Optional libarchive accelerates compatible Legacy ZIPCrypto while Python preflight, path/type/size/CRC checks and rollback remain intact. Members stream one at a time, deployment transport is reused within an archive operation, and upload responses use batched metadata lookup. Durable recovery remains enabled. Measured decoder-only benchmark: 4 MiB ~0.073s native versus ~5.92s Python (~81×). This is not a whole-import speed guarantee. Many-small-file durability bookkeeping remains significant (41,000 of 50,000 SQL statements in the isolated 1,000-file benchmark). Verification so far: all 225 Files tests plus 56 subtests; nine actual-client behavior regressions (expiry, no automatic confirmation retry, polling errors, genuine transfer counters); 51/51 full shared browser conformance tests; production build and budgets; all 72 manifest checks. Live upload→preview→cancel returned 200/204 without importing managed files. EN/DE workflow and operator docs describe temporary retention/cleanup, settings and multi-worker deployment requirements. Changes remain uncommitted/unpushed; issue stays open pending publication. The broad focused check stops at the already-known unrelated institutional governance journey failure.
Author
Owner

Final verification update: full Files suite now 228 passed plus 60 subtests; actual Files/Core client behavior suite 10 passed. Added real ORM response parity/query tests: 64 assets with shares require 3 SELECTs in the batched path versus 256 per-item, preserving lifecycle, provenance, ordered share state and sent-use audit flags. This measures response construction only. Four Access migration regressions pass; live Function mappings list and delta both return200 (tracked in Access #20). All 72 final manifest checks and shared UI contracts pass. Previous 51/51 browser and production-budget results remain valid. Local changes are still uncommitted/unpushed.

Final verification update: full Files suite now 228 passed plus 60 subtests; actual Files/Core client behavior suite 10 passed. Added real ORM response parity/query tests: 64 assets with shares require 3 SELECTs in the batched path versus 256 per-item, preserving lifecycle, provenance, ordered share state and sent-use audit flags. This measures response construction only. Four Access migration regressions pass; live Function mappings list and delta both return200 (tracked in Access #20). All 72 final manifest checks and shared UI contracts pass. Previous 51/51 browser and production-budget results remain valid. Local changes are still uncommitted/unpushed.
Author
Owner

Reconciled 2026-09-08: implemented and published

This supersedes the earlier local/unpublished status. The owning fix is on remote main and the verified v0.1.26 tag (commit ff84812f7f15), included in the published 0.1.45 source/package composition.

Already-uploaded managed archives use the existing preview/password/member/destination flow without browser download/reupload. Managed-archive backend tests cover source/destination authorization, source-version and actor binding, expiry/revocation, connector policy, collisions/rollback and encrypted/archive bounds; managed-archive.spec.ts covers the actual UI. Owning handbook and EN/DE DocumentationTopics are included. No user archive was imported during this reconciliation.

The completed, unmodified release tools/checks/check-focused.sh run passed, including 213 browser conformance cases and the relevant backend suites. The audit matched current remote branches/tags and reviewed the original acceptance criteria and subsequent comments. Closing the implemented source/package scope. This is not a runtime deployment claim: Meta #52 and website #9 retain their independent runtime/public-site holds. No tag was moved.

<!-- govoplan-issue-reconciliation-20260908-published-fixes-v1 --> ## Reconciled 2026-09-08: implemented and published This supersedes the earlier local/unpublished status. The owning fix is on remote `main` and the verified [`v0.1.26` tag](https://git.add-ideas.de/GovOPlaN/govoplan-files/src/tag/v0.1.26) ([commit `ff84812f7f15`](https://git.add-ideas.de/GovOPlaN/govoplan-files/commit/ff84812f7f15bab4385fdcbed8605a7cc1de8195)), included in the published [0.1.45 source/package composition](https://git.add-ideas.de/GovOPlaN/govoplan/src/commit/88b685ff5e689acf096bdfc7084bd108e801e86e/docs/releases/0.1.45.md). Already-uploaded managed archives use the existing preview/password/member/destination flow without browser download/reupload. Managed-archive backend tests cover source/destination authorization, source-version and actor binding, expiry/revocation, connector policy, collisions/rollback and encrypted/archive bounds; `managed-archive.spec.ts` covers the actual UI. Owning handbook and EN/DE DocumentationTopics are included. No user archive was imported during this reconciliation. The completed, unmodified release `tools/checks/check-focused.sh` run passed, including 213 browser conformance cases and the relevant backend suites. The audit matched current remote branches/tags and reviewed the original acceptance criteria and subsequent comments. Closing the implemented source/package scope. This is not a runtime deployment claim: [Meta #52](https://git.add-ideas.de/GovOPlaN/govoplan/issues/52) and [website #9](https://git.add-ideas.de/add-ideas/addideas-govoplan-website/issues/9) retain their independent runtime/public-site holds. No tag was moved.
Sign in to join this conversation.
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: GovOPlaN/govoplan-files#45