photoncloud-monorepo/docs/por/T044-por-accuracy-fix/task.yaml
centra d2149b6249 fix(lightningstor): Fix SigV4 canonicalization for AWS S3 auth
- Replace form_urlencoded with RFC 3986 compliant URI encoding
- Implement aws_uri_encode() matching AWS SigV4 spec exactly
- Unreserved chars (A-Z,a-z,0-9,-,_,.,~) not encoded
- All other chars percent-encoded with uppercase hex
- Preserve slashes in paths, encode in query params
- Normalize empty paths to '/' per AWS spec
- Fix test expectations (body hash, HMAC values)
- Add comprehensive SigV4 signature determinism test

This fixes the canonicalization mismatch that caused signature
validation failures in T047. Auth can now be enabled for production.

Refs: T058.S1
2025-12-12 06:23:46 +09:00

71 lines
2.5 KiB
YAML

id: T044
name: POR Accuracy Fix - Documentation vs Implementation Drift
goal: Correct POR.md claims to match actual implementation state
status: complete
priority: P0
owner: peerA
created: 2025-12-11
context: |
**User Report (2025-12-11 18:11 JST):**
Multiple discrepancies identified between POR.md claims and actual codebase:
**Verified Findings:**
1. NightLight test count: 43 actual vs 57 claimed (CORRECTED: storage IS implemented, not stub)
2. CreditService: InMemory storage only (ChainFire/FlareDB backends NOT implemented despite POR claims)
3. NightLight example compilation: 16 serde errors in query_metrics example
4. T043 ID conflict: Two tasks use T043 (naming-cleanup complete, service-integration active)
**User Claims REFUTED:**
- NightLight storage.rs is NOT a stub - it has full WAL+snapshot implementation
- CreditService has 23 tests passing (matches POR claim)
**Build Evidence (2025-12-11 18:14 JST):**
- nightlight: 43/43 tests pass (3+24+16)
- creditservice: 23/23 tests pass (21+2)
- nightlight example build: FAILS (serde issues)
acceptance:
- POR.md test counts accurate
- POR.md claims about storage backends reflect reality
- T043 ID conflict resolved (rename T043-service-integration to T045)
- NightLight example compilation fixed
steps:
- step: S1
name: Fix POR.md test counts
done: Change "57 tests" to "43 tests" for NightLight
status: complete
owner: peerA
priority: P0
notes: 'POR.md line 84: "57/57 tests" → "43/43 tests (corrected 2025-12-11)"'
- step: S2
name: Correct CreditService storage claims
done: Remove claims about ChainFire/FlareDB storage from POR
status: complete
owner: peerA
priority: P0
notes: 'POR.md line 47: Added "Storage: InMemory only" - reality is InMemory only (trait exists for future backends)'
- step: S3
name: Resolve T043 ID conflict
done: Rename T043-service-integration to T045-service-integration
status: complete
owner: peerA
priority: P0
notes: "Renamed docs/por/T043-service-integration → T045-service-integration; updated task.yaml id"
- step: S4
name: Fix NightLight example compilation
done: query_metrics example compiles without errors
status: complete
owner: peerB
priority: P1
notes: "Fixed by PeerB: Added Serialize derive to QueryResponse + json feature to reqwest"
evidence:
- test_run: "nightlight cargo test --lib"
result: "43/43 passing (3 api + 24 server + 16 types)"
- test_run: "creditservice cargo test --lib"
result: "23/23 passing (21 api + 2 types)"