Files
kite/.planning/phases/12-cloud-resource-foundation/12-VALIDATION.md
T

12 KiB

phase, slug, status, nyquist_compliant, wave_0_complete, created, last_audited
phase slug status nyquist_compliant wave_0_complete created last_audited
12 cloud-resource-foundation complete true true 2026-06-18 2026-06-22

Phase 12 — Validation Strategy

Post-execution validation contract and Nyquist audit evidence for the cloud resource foundation.


Test Infrastructure

Property Value
Framework pytest 9.x, Vitest 4.x, Vue Test Utils 2.x
Config file backend/pytest.ini, frontend/vitest.config.js
Quick backend command docker compose run --rm backend pytest -q tests/test_cloud.py tests/test_cloud_backends.py tests/test_cloud_capabilities.py tests/test_cloud_items.py tests/test_cloud_security.py tests/test_compose_migrations.py tests/test_migration_0006.py
Quick frontend command cd frontend && npm test -- --run src/components/storage/__tests__/StorageBrowser.capabilities.test.js src/components/ui/__tests__/BreadcrumbBar.test.js src/views/__tests__/CloudFolderView.test.js src/views/__tests__/CloudStorageView.test.js src/stores/__tests__/cloudConnections.test.js src/components/settings/__tests__/SettingsCloudTab.test.js src/components/cloud/__tests__/CloudCredentialModal.test.js src/components/cloud/__tests__/CloudProviderTreeItem.test.js src/components/cloud/__tests__/CloudFolderTreeItem.test.js src/components/layout/__tests__/AppSidebar.test.js
Full suite command cd backend && pytest -v; cd frontend && npm test; cd frontend && npm run build
Fresh focused runtime Backend cloud/migration slice 159 passed, 12 prerequisite skips in 3.48 s plus 7 Compose contract tests in 0.23 s; frontend focused slice 76 passed in 1.12 s (2026-06-22)

Sampling Rate

  • After every task commit: Run the focused test file(s) named by that task.
  • After every plan wave: Run backend and frontend suites for all touched layers.
  • Before /gsd:verify-work: Run the full backend suite, full frontend suite, production build, and required PostgreSQL integration tests.
  • Max observed focused feedback latency: 4.14 seconds, excluding container startup.

Per-Task Verification Map

Task ID Plan Wave Requirement Threat Ref Secure Behavior Test Type Automated Evidence File Exists Status
12-01-01 01 1 CONN-04, CLOUD-08 T-12-06 Capability discovery is normalized and never mutates provider content unit tests/test_cloud_capabilities.py green
12-01-02 01 1 CACHE-02, SYNC-01 T-12-01, T-12-02 Metadata/search state is owner and connection scoped without byte storage unit + DB tests/test_cloud_items.py schema, isolation, quota cases green
12-01-03 01 1 CACHE-02, SYNC-01 T-12-07 Reconciliation is stable and incomplete listings cannot delete unseen items service tests/test_cloud_items.py reconciliation cases green
12-02-01 02 2 CONN-04, SYNC-01 T-12-04, T-12-06 All providers normalize complete metadata/capability listings through read-only calls adapter contract tests/test_cloud_backends.py green
12-02-02 02 2 CLOUD-01, CLOUD-08 T-12-01, T-12-03 Connection-ID browse rejects foreign/admin access and excludes credentials API integration tests/test_cloud.py, tests/test_cloud_security.py green
12-02-03 02 2 CACHE-01, SYNC-01 T-12-07, T-12-09 Refresh retries safely, retains metadata on failure, and downloads no bytes task/service tests/test_cloud_items.py refresh/no-byte cases green
12-03-01 03 3 CONN-04, CLOUD-01 T-12-01, T-12-11 Routes/stores use connection UUID and session storage contains folder references only store/view cloudConnections, CloudStorageView, CloudFolderView, SettingsCloudTab tests green
12-03-02 03 3 CONN-04, CLOUD-08 T-12-10 Disabled controls are focusable/explanatory and suppress pointer/keyboard/touch actions component StorageBrowser.capabilities.test.js green
12-03-03 03 3 CLOUD-01, SYNC-01 T-12-12 Breadcrumb freshness states are accessible and cached rows stay usable component BreadcrumbBar.test.js, CloudFolderView.test.js green
12-04-01 04 4 All Phase 12 T-12-01..10 Dedicated owner/admin/credential/SSRF/no-byte negatives close cross-layer threats integration/regression tests/test_cloud_security.py plus focused suites green
12-04-02 04 4 CONN-04, CLOUD-08 T-12-SC Static/dependency security gates have no unresolved Phase 12 blocker security gate SECURITY.md Phase 12 evidence green
12-04-03 04 4 All Phase 12 Documentation/version claims match tracked shipped behavior source + suites 12-VERIFICATION.md, summaries, version source assertions green
12-05-01 05 5 CONN-04, CLOUD-01 T-12-05-01..04 Exactly one hardened migrate service gates backend/worker/beat startup compose contract tests/test_compose_migrations.py; docker compose config --quiet green
12-05-02 05 5 CONN-04, CLOUD-01 T-12-05-01, T-12-05-02 A disposable PostgreSQL database upgrades 0005→0006 and preserves DDL separation PostgreSQL integration tests/test_migration_0006.py (12 tests; explicit prerequisite skip without disposable DSN) green
12-05-03 05 5 CONN-04, CLOUD-01 T-12-05-03, T-12-05-04 Cloud APIs run against migrated schema without credential disclosure API regression + config tests/test_cloud.py, tests/test_cloud_security.py, Compose config validation green
12-06-01 06 6 CONN-04, CLOUD-01 T-12-06-01..05 Same-provider accounts create independently; edits target one owned UUID; errors stay actionable and credential-free API + component tests/test_cloud.py, tests/test_cloud_security.py, SettingsCloudTab.test.js, CloudCredentialModal.test.js green
12-06-02 06 6 CLOUD-01, CLOUD-08 T-12-06-06 Sidebar browse/routes use connection UUIDs; breadcrumbs and deepest-node active state survive refresh failure component/view CloudProviderTreeItem.test.js, CloudFolderTreeItem.test.js, AppSidebar.test.js, CloudFolderView.test.js, CloudStorageView.test.js green
12-06-03 06 6 CONN-04, CLOUD-01, CLOUD-08 T-12-06-SC UAT regressions, version alignment, build, and security gates remain release-ready cross-layer suite Phase summaries/security evidence plus focused and full-suite commands green

Status: green · red · ⚠️ partial/manual


Requirement Coverage

Requirement Status Automated evidence
CONN-04 COVERED Capability contract tests, independent same-provider lifecycle and owner-targeted edit tests, connection store/settings tests, StorageBrowser action-state tests
CLOUD-01 COVERED Migration-gated startup tests, connection-ID API tests, UUID-only sidebar navigation, and shared CloudStorageView/CloudFolderView/StorageBrowser tests
CLOUD-08 COVERED Unsupported/temporarily-unavailable state, message, pointer, Enter, Space, and touch suppression tests
CACHE-01 COVERED No-MinIO, no-byte-download, no-quota-mutation browse/refresh tests
CACHE-02 COVERED Cloud metadata/extracted text/topic/semantic fields and cross-connection isolation tests
SYNC-01 COVERED Provider normalization plus durable item/reconciliation/freshness tests

Wave 0 Requirements

  • backend/tests/test_cloud_capabilities.py — capability normalization, reason states, safe discovery, item overrides.
  • backend/tests/test_cloud_items.py — owner-scoped persistence, stable identity, reconciliation, metadata-only invariants.
  • Database constraint/isolation coverage for UUID ownership, unique connection/item identity, and cascade behavior.
  • CloudFolderView.test.js and CloudStorageView.test.js — thin shared-browser view integration.
  • Provider response fixtures for Google Drive, OneDrive, Nextcloud, and generic WebDAV normalization.
  • test_compose_migrations.py and test_migration_0006.py — startup gate and disposable PostgreSQL 0005→0006 regression.
  • CloudCredentialModal.test.js — new-vs-edit endpoint selection, connection-ID targeting, omitted-password preservation, and actionable errors.
  • Connection tree/sidebar tests — UUID-only routes, nested folder selection, and exact overview active state.
  • Fresh focused runtime recorded for backend, frontend, and Compose contract slices.

Manual-Only Verifications

Behavior Requirement Why Manual Test Instructions
Tooltip placement and clarity across desktop/mobile viewports CLOUD-08 Visual placement and viewport clipping require a rendered browser Hover and keyboard-focus a gray/amber cloud action on desktop, then tap it on mobile; verify readable explanation, no overlap, and no underlying action
Cached-first transition and freshness presentation CLOUD-01, SYNC-01 Perceived flicker, layout stability, and continued row usability are visual qualities Seed durable metadata, delay/fail provider refresh, navigate the folder, and verify rows remain interactive while refreshing/warning indicators and last-update copy render correctly

These checks supplement automated coverage; no Phase 12 requirement depends solely on manual verification.


Validation Audit 2026-06-22

Metric Count
Phase requirements audited 6
Automated requirements covered 6
Executed plans audited 6
Gaps found 1
Tests generated 1 file / 3 tests
Gaps escalated to manual-only 0
Supplementary manual visual checks retained 2

Gap Closed

  • Plan 12-06 named frontend/src/components/cloud/__tests__/CloudCredentialModal.test.js as required automated evidence, but the file was absent; only a mobile-layout test existed.
  • Generated the missing functional suite with three regressions: fresh Nextcloud creation builds the WebDAV URL and calls create, editing targets the selected connection UUID while omitting a blank password, and API validation detail remains visible without closing the modal.

Fresh Execution Evidence

  • Backend cloud/migration focused slice: 159 passed, 12 skipped, 1 non-failing SlowAPI deprecation warning, 3.48 s. The 12 migration integration cases correctly require an explicitly disposable PostgreSQL DSN and did not touch the development database.
  • Compose migration contract: 7 passed in 0.23 s with the repository Compose file mounted read-only into the backend test container.
  • Frontend focused suite after gap closure: 76 passed across 10 files, 1.12 s.
  • Compose environment contract: docker compose config --quiet passed with required variables resolved.
  • Execution closeout evidence: backend 509 passed with one documented environment-only libmagic failure; frontend 323 passed; production build succeeded.
  • Later Plan 12-06 closeout evidence: backend 516 passed (7 xfailed, 17 skipped), frontend 334 passed across 42 files, and production build succeeded.
  • Phase verification: .planning/phases/12-cloud-resource-foundation/12-VERIFICATION.md status passed; versions align at 0.2.2.

Validation Sign-Off

  • Every Phase 12 requirement has targeted automated verification.
  • Every executed task has automated or explicit source/security evidence.
  • Sampling continuity contains no three-task gap.
  • Wave 0 files and fixtures exist.
  • Commands use one-shot test modes, not watch mode.
  • Focused feedback latency is below 60 seconds.
  • nyquist_compliant: true is set in frontmatter.

Approval: approved 2026-06-22