The RC.6 half of #19, which this PR closes (architecture review QRun-IO/qqq#1150, finding F3).
TableFingerprints, TableReader and StandardRestoreWriter now use core TableSchemaFingerprint and KeysetPager; the duplicated code is deleted.
Fingerprint compatibility. Core's fingerprint differs from the local one:
descriptor names and field shapes;
unique keys as lists;
association joinName;
"" for null backend types;
Jackson escaping.
New manifests record fingerprintAlgorithm: "qqq-table-schema-v1" and keep the sha256: prefix. A manifest without the field uses the frozen LegacyTableFingerprint, so existing backups still verify and restore; a regression test with a frozen legacy fixture covers this.
Paging keeps ascending primary-key order, exclusive resume cursors, bounded pages and the supplied transaction. JDBC fetch settings are unchanged, and consistency is still reported as BEST_EFFORT.
Behaviour change: restore writes now require the explicit backups.restore permission, checked at Review.
Notes: docs/RC6-MIGRATION.md.
Draft until QQQ 4.1.0-RC.6 is released
Verified locally against core develop (4.1.0-ARCHRC6-SNAPSHOT): mvn clean verify runs 158 tests with 0 failures, 87.66% instruction and 97.08% class coverage.
## Summary
The RC.6 half of #19, which this PR closes (architecture review QRun-IO/qqq#1150, finding F3).
- `TableFingerprints`, `TableReader` and `StandardRestoreWriter` now use core `TableSchemaFingerprint` and `KeysetPager`; the duplicated code is deleted.
- **Fingerprint compatibility.** Core's fingerprint differs from the local one:
- descriptor names and field shapes;
- unique keys as lists;
- association `joinName`;
- `""` for null backend types;
- Jackson escaping.
New manifests record `fingerprintAlgorithm: "qqq-table-schema-v1"` and keep the `sha256:` prefix. **A manifest without the field uses the frozen `LegacyTableFingerprint`**, so existing backups still verify and restore; a regression test with a frozen legacy fixture covers this.
- **Paging** keeps ascending primary-key order, exclusive resume cursors, bounded pages and the supplied transaction. JDBC fetch settings are unchanged, and consistency is still reported as BEST_EFFORT.
- **Behaviour change:** restore writes now require the explicit `backups.restore` permission, checked at Review.
- Notes: `docs/RC6-MIGRATION.md`.
## Draft until QQQ 4.1.0-RC.6 is released
Verified locally against core develop (`4.1.0-ARCHRC6-SNAPSHOT`): `mvn clean verify` runs 158 tests with 0 failures, 87.66% instruction and 97.08% class coverage.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
QQQ 4.1.0-RC.6 is released. Verified locally against it with ./mvnw -B verify. This PR also adopts qbit-build-parent 2.1.0 with guardrails enforced (qbit.guardrails.enforce=true) and strict raw-route mode; every guardrail passes. Marked ready for review.
QQQ 4.1.0-RC.6 is released. Verified locally against it with `./mvnw -B verify`. This PR also adopts `qbit-build-parent` 2.1.0 with guardrails enforced (`qbit.guardrails.enforce=true`) and strict raw-route mode; every guardrail passes. Marked ready for review.
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
The RC.6 half of #19, which this PR closes (architecture review QRun-IO/qqq#1150, finding F3).
TableFingerprints,TableReaderandStandardRestoreWriternow use coreTableSchemaFingerprintandKeysetPager; the duplicated code is deleted.Fingerprint compatibility. Core's fingerprint differs from the local one:
joinName;""for null backend types;New manifests record
fingerprintAlgorithm: "qqq-table-schema-v1"and keep thesha256:prefix. A manifest without the field uses the frozenLegacyTableFingerprint, so existing backups still verify and restore; a regression test with a frozen legacy fixture covers this.Paging keeps ascending primary-key order, exclusive resume cursors, bounded pages and the supplied transaction. JDBC fetch settings are unchanged, and consistency is still reported as BEST_EFFORT.
Behaviour change: restore writes now require the explicit
backups.restorepermission, checked at Review.Notes:
docs/RC6-MIGRATION.md.Draft until QQQ 4.1.0-RC.6 is released
Verified locally against core develop (
4.1.0-ARCHRC6-SNAPSHOT):mvn clean verifyruns 158 tests with 0 failures, 87.66% instruction and 97.08% class coverage.🤖 Generated with Claude Code
QQQ 4.1.0-RC.6 is released. Verified locally against it with
./mvnw -B verify. This PR also adoptsqbit-build-parent2.1.0 with guardrails enforced (qbit.guardrails.enforce=true) and strict raw-route mode; every guardrail passes. Marked ready for review.