- 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
105 lines
3.9 KiB
YAML
105 lines
3.9 KiB
YAML
id: T038
|
|
name: Code Drift Cleanup (FlareDB API + Build Environment)
|
|
goal: Fix FlareDB API drift from T037 SQL layer changes and ensure nix-shell cargo build environment works correctly to unblock T036.S6 cluster validation.
|
|
status: complete
|
|
priority: P1
|
|
owner: peerB
|
|
created: 2025-12-11
|
|
completed: 2025-12-11
|
|
depends_on: [T037]
|
|
blocks: [T036]
|
|
|
|
context: |
|
|
T036.S5 blocked on build failures unrelated to provisioning:
|
|
1. FlareDB API drift from T037 SQL layer changes
|
|
2. Cargo build environment missing libclang outside nix-shell
|
|
|
|
These are code maintenance issues, NOT provisioning tooling failures.
|
|
T036 validated infrastructure/networking/automation successfully.
|
|
|
|
acceptance:
|
|
- flaredb-server builds successfully in nix-shell
|
|
- chainfire-server builds successfully in nix-shell
|
|
- iam-server builds successfully in nix-shell
|
|
- All 3 binaries deployable to T036 VMs
|
|
- nix build .#chainfire-server .#flaredb-server .#iam-server succeeds
|
|
- T036.S6 can resume with working binaries
|
|
|
|
steps:
|
|
- step: S1
|
|
name: Fix FlareDB API Drift
|
|
done: flaredb-server compiles with T037 SQL layer API changes
|
|
status: complete
|
|
owner: peerB
|
|
priority: P0
|
|
notes: |
|
|
Errors to fix:
|
|
- error[E0599]: no method named `rows` found for struct `flaredb_sql::QueryResult`
|
|
- error[E0560]: struct `ErrorResult` has no field named `message`
|
|
|
|
Root cause: T037 changed flaredb_sql API, but flaredb-server wasn't updated
|
|
|
|
Fix approach:
|
|
1. Review T037 SQL layer API changes
|
|
2. Update flaredb-server to match new QueryResult API
|
|
3. Update ErrorResult struct usage
|
|
4. Test compilation in nix-shell
|
|
|
|
**COMPLETED 2025-12-11:**
|
|
- Updated `flaredb-server/src/sql_service.rs`
|
|
- Fixed `QueryResult` access (fields instead of methods)
|
|
- Fixed `ErrorResult` field (`error` instead of `message`)
|
|
- Updated `Value` to `SqlValue` conversion logic
|
|
|
|
- step: S2
|
|
name: Verify Nix Build Environment
|
|
done: All 3 services build successfully via nix build
|
|
status: complete
|
|
owner: peerB
|
|
priority: P0
|
|
notes: |
|
|
Verify:
|
|
- nix build .#chainfire-server (in nix-shell)
|
|
- nix build .#flaredb-server (after S1 fix)
|
|
- nix build .#iam-server (in nix-shell)
|
|
|
|
Ensure libclang.so and all build dependencies available
|
|
|
|
**COMPLETED 2025-12-11:**
|
|
- Staged sql_service.rs changes for nix flake build
|
|
- ✅ nix build .#flaredb-server SUCCESS (result-1/bin/flaredb-server 7.5M)
|
|
- ✅ nix build .#chainfire-server SUCCESS (result/bin/chainfire 16M)
|
|
- ✅ nix build .#iam-server SUCCESS (result-2/bin/iam-server 8.4M)
|
|
- All build dependencies resolved correctly
|
|
|
|
- step: S3
|
|
name: Deploy Binaries to T036 VMs
|
|
done: Service binaries deployed to all 3 VMs, ready for validation
|
|
status: complete
|
|
owner: peerB
|
|
priority: P0
|
|
notes: |
|
|
After S1-S2 succeed:
|
|
1. Build binaries: chainfire-server, flaredb-server, iam-server
|
|
2. Copy to VMs: /mnt/usr/local/bin/ on nodes 01/02/03
|
|
3. Copy configs: /mnt/etc/secrets/cluster-config.json
|
|
4. Verify binary executability
|
|
5. Unblock T036.S6
|
|
|
|
**COMPLETED 2025-12-11:**
|
|
- Verified all 3 T036 VMs accessible (ports 2201/2202/2203, /mnt mounted)
|
|
- Created /mnt/usr/local/bin and /mnt/etc/secrets on all 3 nodes
|
|
- Deployed binaries to all VMs: chainfire (15M), flaredb-server (7.2M), iam-server (8.1M)
|
|
- All binaries executable (chmod +x verified)
|
|
- T036.S6 unblocked: cluster validation ready to resume
|
|
|
|
evidence: []
|
|
notes: |
|
|
**Technical Debt Context:**
|
|
- T037 (SQL layer) completed without updating flaredb-server consumers
|
|
- Demonstrates need for integration testing across workspace crates
|
|
- Not a blocker for T032 bare-metal (can deploy without FlareDB initially)
|
|
|
|
**Success Unblocks:**
|
|
- T036.S6: Raft cluster validation with working binaries
|
|
- T032: Confidence in full build chain before bare-metal deployment
|