test(12.1): verify live cloud browse integration
Phase 12.1 close — docs, version, and security evidence: - Bump version 0.2.5 → 0.2.6 in backend/main.py, frontend/package.json - CLAUDE.md: update current state to Phase 12.1 complete v0.2.6 - README.md: add Phase 12.1 corrections, live smoke variable names, Phase 13/14 exclusions - RUNBOOK.md: add live smoke invocation, warning semantics table, fixture reconciliation procedure - SECURITY.md: add Phase 12.1 Plan 04 threat table (T-12.1-16..20, T-12.1-SC) and gate evidence - 12.1-VALIDATION.md: mark Plan 04 complete with final gate evidence
This commit is contained in:
+34
@@ -459,3 +459,37 @@ npm audit --audit-level=high: 0 vulnerabilities
|
||||
npm run build: built in ~500ms, 0 errors
|
||||
```
|
||||
No bandit-equivalent issues: frontend-only plan; TypeScript/ESLint static analysis implicit via Vite build.
|
||||
|
||||
---
|
||||
|
||||
## Phase 12.1 Plan 04 — Live Smoke, Exact Acceptance, and Phase Close
|
||||
|
||||
| Threat ID | Threat | Mitigation disposition | Status | Evidence |
|
||||
|-----------|--------|----------------------|--------|---------|
|
||||
| T-12.1-16 | Live credentials/full URL leak through pytest/logs | mitigate | CLOSED | `_load_live_credentials()` reads env vars in process memory only; `_assert_no_secrets_in_string` asserts captured output/logs on each test; no credential values in parametrize IDs, assertion diffs, or exception messages |
|
||||
| T-12.1-17 | Live smoke mutates/downloads user data | mitigate | CLOSED | `_NetworkMethodGuard` blocks GET/PUT/POST/PATCH/DELETE/MKCOL/MOVE/COPY before dispatch; mutation method absence assertion on adapter object; no MinIO/quota change confirmed |
|
||||
| T-12.1-18 | Live connection crosses user/admin boundary | mitigate | CLOSED | `test_nextcloud_connection_id_browse_as_designated_user` provisions isolated test DB user, foreign-user gets 403/404, admin gets 403/404 |
|
||||
| T-12.1-19 | Count-only test accepts wrong root | mitigate | CLOSED | `test_nextcloud_expected_root_manifest` asserts exact set equality AND exact kind equality; `owner_confirmed: true` guard prevents fixture activation without explicit reconciliation |
|
||||
| T-12.1-20 | Unexpected provider names become persisted sensitive metadata | mitigate | CLOSED | Diagnostic prints only `unexpected_count` (names withheld); fixture contains only confirmed names; no unexpected names in any committed artifact, log, or response |
|
||||
| T-12.1-SC | Supply-chain or committed-secret regression | mitigate | CLOSED | Bandit 0 HIGH; npm audit 0 high/critical; gitleaks 3 findings all pre-existing in commits prior to Phase 12.1 (May 2026), none from Phase 12.1 files; no `.env` in git index |
|
||||
|
||||
### Phase 12.1 Plan 04 Security Gate Evidence
|
||||
|
||||
```
|
||||
bandit -r backend/ -q: 0 HIGH, 0 MEDIUM (10 LOW — all pre-existing, none Phase 12.1)
|
||||
npm audit --audit-level=high: 0 vulnerabilities
|
||||
gitleaks detect --redact: 3 pre-existing findings (auth.test.js 2026-05-31,
|
||||
test_cloud_utils.py 2026-05-28, test_auth_deps.py 2026-05-22); none in Phase 12.1 files
|
||||
git ls-files '.env' '.env.*': only .env.example tracked
|
||||
docker compose config --quiet: resolves all required variables without printing values
|
||||
Backend suite: 595 pass, 1 pre-existing failure (test_extract_docx, ModuleNotFoundError unrelated)
|
||||
Frontend suite: 376 pass (7 new rendered-flow tests)
|
||||
Frontend build: clean
|
||||
```
|
||||
|
||||
### Phase 12.1 Exclusions
|
||||
|
||||
Phase 12.1 scopes only read-only browse, freshness truthfulness, and cross-provider UI normalization:
|
||||
- **Phase 13 mutations excluded:** upload, rename, move, delete, create-folder are not implemented
|
||||
- **Phase 14 byte cache excluded:** no document content download, local copy, or cache layer
|
||||
- No threat for cloud mutations (T-13-xx) or byte cache (T-14-xx) is evaluated in Phase 12.1
|
||||
|
||||
Reference in New Issue
Block a user