Skip to content

Post-Implementation Specification

Deviations from the original specification and phasing plan.

The original phasing document defined Phases 3a, 3b, 4a–4d. The actual implementation used a different numbering (3.1–3.7) that emerged during planning. The mapping:

Original phaseActual phaseNotes
Phase 3a: BFF Upload ProxyPhase 3.5: BFF RoutesCombined with 3b into a single PR
Phase 3b: BFF Cookie SigningPhase 3.5: BFF RoutesCombined with 3a
Phase 4a: Design System ComponentsPhases 3.2–3.4Done earlier as ux-prototype work
Phase 4b: Grid + CookiesPhase 3.6: SPA IntegrationCombined with 4c into PR #742
Phase 4c: Upload + FormsPhase 3.6: SPA IntegrationCombined with 4b
Phase 4d: E2E VerificationPhase 3.7: Release (partial)Not formally gated

Specified: Production ImageUploadHandler injected per-component via callback props.

Implemented: 4.11.x used callback props (Option B bridge). 5.0.0 migrated to ImageUploadProvider context (Option C) during the same project, eliminating callback props entirely. This was a scope expansion driven by the leaky-abstraction analysis during implementation.

Specified: ImageCellEditor wired via AG Grid’s editable: true + cellEditor column definition.

Implemented: AG Grid cell-editor lifecycle proved incompatible with Radix-portalled modal editors (FD-20). Replaced with wrapper-scoped <ImageUploadDialog> triggered by onCellDoubleClicked. The image column is not AG-Grid-editable.

Specified: CloudFront signed cookies for CDN access.

Implemented: Dual-mode auth — signed cookies for production (*.arda.cards), signed URLs for Amplify preview and localhost. This was a late discovery when Amplify preview testing revealed cookies don’t work cross-domain (FD-22).

Specified: Zoom range 0.5–3.0 with canvas export matching editor preview.

Implemented: Zoom range works in the editor UI but canvas export at zoom < 1 produces an unchanged image (full natural-size copy). Three fix attempts failed due to coordinate-space misunderstanding. Tracked in arda-frontend-app#755.

Specified: ^0.1.0^1.0.0.

Implemented: ^0.1.0^2.0.0. The api-proxy had a major version bump during Phase 3.1 that wasn’t anticipated in the original specification.

Specified: Upload blocked until copyright checkbox accepted.

Implemented: Deferred. The copyright liability consultation recommended it but it was descoped to keep the initial release focused on core upload functionality.


Copyright: (c) Arda Systems 2025-2026, All rights reserved