Bumps to QQQ 4.1.0-RC.5. Adds qqq-backend-module-filesystem for S3ClientFactory; its unused SFTP/SSH transitive dependencies are excluded, and the AWS SDK is unchanged.
ConnectionRuntime maps StorageConnectionConfig to S3BackendMetaData and builds the client through core S3ClientFactory.buildClient. The mapping covers endpoint, region, path-style, checksum mode, TLS verify / CA, credentials and timeouts. The qbit's own per-connection cache, keyed by the settings hash, still rebuilds the client on connection edits.
Deletes the duplicated HTTP client, TLS and trust-manager code.
Stays local:
the S3Presigner, which core does not provide;
a small session-credentials bridge, because S3BackendMetaData has no session token or credentials-provider hook;
SecretRefs${file.PATH}.
The last two are tagged STAND-IN(core=QRun-IO/qqq#1165, removeBy=4.1.0-RC.7). Core issue QRun-IO/qqq#1165 was filed for both.
Behaviour change: retries follow the core and SDK defaults instead of a forced ADAPTIVE_V2.
Details and the dependency diff: docs/S3-FACTORY-MIGRATION.md.
Tests
mvnw -B verify with Docker/MinIO: 122 tests, 0 failures, 2 skipped. Coverage and checkstyle gates pass.
New ConnectionRuntimeTest asserts that every setting reaches S3BackendMetaData.
## Summary
Closes #10 (architecture review QRun-IO/qqq#1150, finding F3).
- Bumps to **QQQ 4.1.0-RC.5**. Adds `qqq-backend-module-filesystem` for `S3ClientFactory`; its unused SFTP/SSH transitive dependencies are excluded, and the AWS SDK is unchanged.
- `ConnectionRuntime` maps `StorageConnectionConfig` to `S3BackendMetaData` and builds the client through core `S3ClientFactory.buildClient`. The mapping covers endpoint, region, path-style, checksum mode, TLS verify / CA, credentials and timeouts. The qbit's own per-connection cache, keyed by the settings hash, still rebuilds the client on connection edits.
- Deletes the duplicated HTTP client, TLS and trust-manager code.
- **Stays local:**
- the `S3Presigner`, which core does not provide;
- a small **session-credentials** bridge, because `S3BackendMetaData` has no session token or credentials-provider hook;
- `SecretRefs` `${file.PATH}`.
The last two are tagged `STAND-IN(core=QRun-IO/qqq#1165, removeBy=4.1.0-RC.7)`. Core issue **QRun-IO/qqq#1165** was filed for both.
- **Behaviour change:** retries follow the core and SDK defaults instead of a forced `ADAPTIVE_V2`.
- Details and the dependency diff: `docs/S3-FACTORY-MIGRATION.md`.
## Tests
`mvnw -B verify` with Docker/MinIO: 122 tests, 0 failures, 2 skipped. Coverage and checkstyle gates pass.
New `ConnectionRuntimeTest` asserts that every setting reaches `S3BackendMetaData`.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Summary
Closes #10 (architecture review QRun-IO/qqq#1150, finding F3).
Bumps to QQQ 4.1.0-RC.5. Adds
qqq-backend-module-filesystemforS3ClientFactory; its unused SFTP/SSH transitive dependencies are excluded, and the AWS SDK is unchanged.ConnectionRuntimemapsStorageConnectionConfigtoS3BackendMetaDataand builds the client through coreS3ClientFactory.buildClient. The mapping covers endpoint, region, path-style, checksum mode, TLS verify / CA, credentials and timeouts. The qbit's own per-connection cache, keyed by the settings hash, still rebuilds the client on connection edits.Deletes the duplicated HTTP client, TLS and trust-manager code.
Stays local:
S3Presigner, which core does not provide;S3BackendMetaDatahas no session token or credentials-provider hook;SecretRefs${file.PATH}.The last two are tagged
STAND-IN(core=QRun-IO/qqq#1165, removeBy=4.1.0-RC.7). Core issue QRun-IO/qqq#1165 was filed for both.Behaviour change: retries follow the core and SDK defaults instead of a forced
ADAPTIVE_V2.Details and the dependency diff:
docs/S3-FACTORY-MIGRATION.md.Tests
mvnw -B verifywith Docker/MinIO: 122 tests, 0 failures, 2 skipped. Coverage and checkstyle gates pass.New
ConnectionRuntimeTestasserts that every setting reachesS3BackendMetaData.🤖 Generated with Claude Code