Compare commits
4
Commits
main
...
feature/redis
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
fe823b31c2
|
||
|
|
7fe5492028
|
||
|
|
c969159b2a
|
||
|
|
ba43c99346
|
No files matched your search
@@ -11,4 +11,6 @@ workflows:
|
||||
branches:
|
||||
ignore: automation/qbit-rc-pending
|
||||
tags:
|
||||
only: /^v\d+\.\d+\.\d+$/
|
||||
only:
|
||||
- /^v\d+\.\d+\.\d+$/
|
||||
- /publish.*/
|
||||
@@ -10,6 +10,7 @@ release_tag_policy: stable
|
||||
test_branch_policy: non-release
|
||||
publish:
|
||||
snapshot: true
|
||||
feature: true
|
||||
release_candidate: true
|
||||
release: true
|
||||
asciidoc: false
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
# QBit Redis
|
||||
|
||||
Reusable Redis connections and bounded shared caches for QQQ applications.
|
||||
**Development candidate; not released or production-certified.** Track
|
||||
[QQQ #1295](https://github.com/QRun-IO/qqq/issues/1295) and [remaining gates](docs/TODO.md).
|
||||
See [snapshot preparation](docs/SNAPSHOT-RELEASE.md) for current normal-flow evidence,
|
||||
publication order and the explicitly deferred optional scenarios.
|
||||
**Coordinated feature snapshot published; not a stable/GA release.** Track
|
||||
[QQQ #1295](https://github.com/QRun-IO/qqq/issues/1295) and [completed milestone and follow-ups](docs/TODO.md).
|
||||
See [published snapshot](docs/SNAPSHOT-RELEASE.md) for current normal-flow evidence,
|
||||
exact compatible versions and the explicitly deferred optional scenarios.
|
||||
|
||||
## Host integration
|
||||
|
||||
|
||||
+26
-19
@@ -1,28 +1,35 @@
|
||||
# Coordinated candidate snapshot
|
||||
# Coordinated published snapshot
|
||||
|
||||
Status: locally verified candidate; remote publication is pending. This is not a production deployment checklist or an RC certification.
|
||||
The main-line milestone is complete. These feature snapshots are published and verified together; this is not a stable/GA release or a production deployment.
|
||||
|
||||
## Local evidence
|
||||
| Component | Version |
|
||||
| --- | --- |
|
||||
| QQQ BOM/modules | `4.1.0-collab-33464d37e-SNAPSHOT` |
|
||||
| qbit-redis | `0.1.0-redis-7fe5492-SNAPSHOT` |
|
||||
| qbit-collaboration | `0.1.0-collab-8f348da-SNAPSHOT` |
|
||||
| qbit-session-store | `0.1.0-session-b5276ab-SNAPSHOT` |
|
||||
| Next frontend source | `8d372142f8af0c41a75a353edc6d150c33ccf613` |
|
||||
|
||||
- Collaboration default verify:179tests, no failures/errors/skips, coverage and guardrails passed.
|
||||
- UI focused34 plus Chromium normal-flow suites16 passed; TypeScript passed.
|
||||
- Live browser with mocks disabled: two independent QQQ JVMs share presence; editing focus, drafts, table projection and departure verified.
|
||||
- Redis admin shows live pool/realtime metrics and real framework-persisted health results, with navigation to the standard health check.
|
||||
- Standalone Maven consumer built and ran packaged collaboration/Redis candidates without source paths or a reactor; Redis-absent consumer uses the new issued-lease protocol successfully.
|
||||
Use the public Maven snapshot repository https://central.sonatype.com/repository/maven-snapshots/ and import the candidate QQQ BOM. All four publishers succeeded. Independent JAR/POM downloads and a standalone consumer using an initially empty Maven cache passed; all five QQQ modules align and only Jedis7.2.0 is resolved.
|
||||
|
||||
## Publication order and remaining checks
|
||||
## Verification
|
||||
|
||||
1. Capture reviewed source revisions for the coordinated core, Redis, collaboration, session-store and frontend candidates. Preserve unrelated worktrees and edits.
|
||||
2. Publish the corresponding QQQ4.1.0-SNAPSHOT parent/BOM and required core modules first. The consumer graph currently includes backend-core, backend-module-rdbms, middleware-javalin and openapi.
|
||||
3. GitHub repository https://github.com/QRun-IO/qbit-redis now exists PUBLIC, matching the existing collaboration/session-store repositories; it is still empty. Local origin is connected. CircleCI project gh/QRun-IO/qbit-redis was created (ID7c6fe3ea-5281-437a-b188-818d7d83a604). Initial source upload, develop default branch and required context access/pipeline execution remain to be verified. The empty project initially reports main; change it after develop exists.
|
||||
4. Run Redis CI and publish0.1.0-SNAPSHOT through the standard QBit orb. The local CI config matches the current GitHub collaboration configuration's orb0.7.18 entry point. Authenticated registry lookup confirms this is a private orb and0.7.18 exists. Config validation PASSED with the verified QRun-IO organization ID: `circleci config validate .circleci/config.yml --org bb329fea-03cd-4fb5-b530-15e85703598d`. Earlier missing-orb messages were caused by absent organization context (this new repo has no remote for inference), not a missing release. Use the existing session credential loader and map CIRCLECI_TOKEN to CIRCLE_TOKEN only within the invoking process. Actual Redis project pipeline execution remains unverified. The Redis POM exposes the revision property required by the orb's version script.
|
||||
5. Run and publish collaboration0.1.0-SNAPSHOT and the coordinated session-store/frontend candidates as applicable. Frontend and collaboration lease endpoints require coordinated rollout; do not pair the new frontend with an older backend.
|
||||
6. Resolve exact published artifacts in a fresh consumer cache, repeat normal host startup/presence/admin checks, and record remote coordinates, source SHAs and artifact checksums. Local cache success is insufficient for this step.
|
||||
Redis23, collaboration177 and session-store96 tests passed against published prerequisites, with zero failures/errors/skips and configured coverage gates passing. Core verification4209 and frontend acceptance39683690943 passed. Frontend local3664 tests and TypeScript passed. The frontend acceptance run contains the tested export; no dashboard container image was published by that run.
|
||||
|
||||
The earlier request authorizes preparing a snapshot when ready. Repository and CI project creation are complete; no source commit/push or artifact publication has occurred. Keep this distinction explicit. Source-only Gitleaks scan passed (no leaks; generated logs and local evidence were not included in that scan).
|
||||
Final browser checks used the downloaded published JARs, exact CI frontend export, two independent JVMs and one Redis endpoint. Cross-node avatars, self exclusion, editor focus, preserved drafts, table presence and departure passed. Redis admin metrics, subscription state, persisted framework UP health history and health-record navigation passed. The fixtures use mock users and independent memory records; database concurrency and authentication have separate core/frontend tests. Test-owned processes were stopped afterward.
|
||||
|
||||
## Operational scope
|
||||
Exact release receipts and evidence: [QQQ #1293](https://github.com/QRun-IO/qqq/issues/1293#issuecomment-6329618640). Host integration and migration guide: [coordinated candidate](https://github.com/QRun-IO/qbit-collaboration/blob/c3182e2/docs/CANDIDATE-RELEASE.md).
|
||||
|
||||
Initial path: multiple QQQ web nodes, one configured Redis endpoint, host-provided authentication/tenant scope, HTTP lease writes, SSE browser delivery and Redis Pub/Sub invalidation. Presence is advisory; database version checks protect saves.
|
||||
## Supported milestone
|
||||
|
||||
Optional future work remains QQQ #1300 (loss/restore), #1301 (failover topology) and #1302 (sustained scale/failure injection). No transparent disaster-recovery guarantee is part of this snapshot. If the normal presence/admin flow fails in staging, stop rollout and retain the prior coordinated frontend/backend set; do not downgrade only one side of the lease protocol.
|
||||
Multiple QQQ web nodes share one configured Redis endpoint. Collaboration owns presence semantics; Redis owns connection/cache infrastructure; session-store retains session semantics. Browser delivery uses SSE plus HTTP lease writes, and Redis Pub/Sub carries invalidation hints. Configure node affinity for SSE subscription updates. Shared Redis does not make connection IDs portable. Presence is advisory; versioned database compare-and-write protects saves.
|
||||
|
||||
Before host adoption, configure authoritative identity/tenant scope, unique deployment/application namespaces, TLS/authentication, bounded pools/timeouts, explicit QInstance session registration, owner-scoped shutdown, and schema migrations. Upgrade the frontend/backend lease protocol together. Existing hosts are not automatically migrated by library publication; rollout is tracked in [#1315](https://github.com/QRun-IO/qqq/issues/1315).
|
||||
|
||||
## Optional future work
|
||||
|
||||
The owner's main-line-only scope leaves attachment failure qualification #1289, capacity/My Work failure qualification #1291, selectable tag/EAV projection #1196, data loss/restore #1300, additional Redis topologies #1301, sustained scale #1302, additional proxy deployments #1316 and admin/client coupling enhancements #1317 open. Tooling/dependency maintenance remains #1304/#1305/#1307/#1309/#1310/#1312/#1314. No measured production capacity or disaster-recovery guarantee is claimed.
|
||||
|
||||
## Publication lessons
|
||||
|
||||
Use short feature branch names: the help bundle version limit is 50 characters. The first long core candidate failed before publication; unchanged source passed with the short coordinate above. Preserve original worktree branches and failed tags. Feature-enabled QBit setup must use the canonical `/publish.*/` tag filter; schema validation alone does not check that contract. Redis/session-store use orb0.7.18; collaboration uses the managed0.8 track. Pin actual published prerequisite versions before downstream publication and verify remote resolution afterward.
|
||||
+21
-58
@@ -1,63 +1,26 @@
|
||||
# Production readiness
|
||||
# Main-line snapshot complete
|
||||
|
||||
Current checklist, 2026-10-21. Historical evidence is tracked on QQQ #1295.
|
||||
No production readiness claim or release yet.
|
||||
The owner narrowed this milestone to the main-line happy path. Published versions, evidence and operating requirements are in [SNAPSHOT-RELEASE.md](SNAPSHOT-RELEASE.md).
|
||||
|
||||
## Current user-directed milestone
|
||||
- [x] Named bounded Redis connections/cache primitives, framework health and admin metrics.
|
||||
- [x] Shared presence across two JVMs, viewer/editor focus, table projection, departures and access filtering.
|
||||
- [x] Owned shared session-store integration, application isolation and launcher cleanup.
|
||||
- [x] Cache invalidation, OAuth cache and JDBC provider isolation repairs.
|
||||
- [x] Atomic versioned saves and frontend stale-save review/retry behavior.
|
||||
- [x] Full affected verification, downstream CI and four backend snapshot publishers.
|
||||
- [x] Remote JAR/POM receipts and fresh-cache standalone consumer with aligned dependency graph.
|
||||
- [x] Published-artifact browser presence/admin/framework health acceptance using the tested frontend export.
|
||||
- [x] Release/migration documentation and QQQ Project12 issue reconciliation.
|
||||
|
||||
The user explicitly narrowed this milestone to the main-line happy path on2026-10-21. The historical audit list below is retained for traceability, not as an instruction to resume every optional scenario before this snapshot. Current publication steps and evidence are in [SNAPSHOT-RELEASE.md](SNAPSHOT-RELEASE.md).
|
||||
## Future work retained in QQQ Project12
|
||||
|
||||
- [x] Live browser presence across two independent QQQ JVMs sharing Redis.
|
||||
- [x] Live Redis dashboard metrics, framework-persisted UP health history and health-record navigation.
|
||||
- [x] Collaboration normal-flow backend179, UI34 and Chromium16 checks.
|
||||
- [x] Packaged standalone Maven consumer and optional Redis-absent issued-lease consumer.
|
||||
- [x] Redis POM license/developer/SCM metadata, correct NOTICE and standard CircleCI setup configuration prepared locally.
|
||||
- [x] Establish Redis remote repository and CircleCI project (empty; no source uploaded).
|
||||
- [ ] Capture reviewed source revisions, set develop default branch, and verify CI context access/actual pipeline execution.
|
||||
- [ ] Publish coordinated core/Redis/collaboration/frontend snapshots and verify remote consumer resolution.
|
||||
- #1315: host inventory and coordinated deployment. Required before each host adopts the candidate; no production rollout has occurred.
|
||||
- #1289: complete real-DB attachment rollback/crash/retry qualification.
|
||||
- #1196: selectable virtual tag/EAV projection.
|
||||
- #1291/#1302: My Work budgets, measured capacity and sustained failure/load qualification.
|
||||
- #1300/#1301: data loss/restore and additional Redis failover topologies.
|
||||
- #1316: additional standalone/ingress/CDN/reverse-proxy SSE configurations.
|
||||
- #1317: additional admin management/aggregation, client-library boundary and credential rotation/mTLS qualification.
|
||||
- #1304/#1305/#1307/#1309/#1310/#1312/#1314: tooling, CI, layout and test-dependency maintenance.
|
||||
|
||||
Optional loss/restore, failover topology and sustained scale work: QQQ #1300, #1301 and #1302 respectively. No claim that those scenarios are supported by the current candidate.
|
||||
|
||||
## Implemented with targeted verification
|
||||
|
||||
- [x] Named bounded Redis pools, cache primitives, namespaces and runtime lifecycle.
|
||||
- [x] Framework health checks, pool metrics and subscription readiness.
|
||||
- [x] Authentication/TLS rejection and bounded pool exhaustion tests.
|
||||
- [x] Redis presence store/service selection, tenant isolation and explicit unavailable UI.
|
||||
- [x] Cross-node Pub/Sub hints, bounded dispatch, reconnect/resync and silent-stall detection.
|
||||
- [x] Framework Redis app and local connection/realtime widgets with permission checks.
|
||||
- [x] Framework-persisted health history and link to existing check settings/actions.
|
||||
- [x] Packaged app/widget help and health read/write permission-contract tests.
|
||||
- [x] Metadata-name collision rejection and atomic rejected realtime namespace updates.
|
||||
- [x] Source dependency report across 44 canonical qbits, with browser validation.
|
||||
|
||||
## Historical broader audit backlog (not the current milestone definition)
|
||||
|
||||
- [ ] Browser acceptance of Redis app, widgets, help, health navigation and Run check now.
|
||||
- [ ] Complete connection-management requirements and multi-node presentation semantics.
|
||||
- [ ] Replace or constrain native-client API exposure and prove resource ownership.
|
||||
- [x] Candidate session-store Jedis alignment and optional shared Redis provider integration tests.
|
||||
- [x] Shared session-store runtime owns cleanup/restart of registrations with real Redis lifecycle coverage.
|
||||
- [x] Actual launcher shutdown/failure/retry acceptance for shared Redis session storage.
|
||||
- [x] Real shared Redis OAuth HTTP login/logout, bounded outage failure and retry acceptance.
|
||||
- [x] Same-node delayed authentication cache fill after logout rejects the next HTTP request.
|
||||
- [ ] Token memoization fill/invalidation race and delayed/lost cross-node logout invalidation acceptance.
|
||||
- [ ] Qualify #1297 memoization invalidation repair: focused, HTTP and full core unit rerun pass; earlier canary failure remains unexplained with diagnostics added.
|
||||
- [ ] Qualify #1298 application-scoped OAuth token cache; targeted cluster and 14 HTTP acceptance tests pass.
|
||||
- [ ] Complete #1299 JDBC ownership: registry/health/launcher/native C3P0 callback isolation tested; deployed-host migration and combined acceptance remain.
|
||||
- [ ] Deployment migration and complete multi-node HTTP authentication compatibility.
|
||||
- [ ] Clean-consumer tests with optional Redis/email artifacts absent.
|
||||
- [ ] Full multi-node collaboration/browser acceptance behind a load balancer.
|
||||
- [ ] Redis eviction/restart recovery and delayed request/tombstone semantics.
|
||||
- [ ] Supported topology failover, network partition and lifecycle stress tests.
|
||||
- [ ] mTLS/credential rotation acceptance for supported deployment configuration.
|
||||
- [ ] Measured load, latency percentiles and explicit supported capacity.
|
||||
- [ ] Remaining collaboration issues (including durable attachment cleanup and notification leadership).
|
||||
- [ ] Complete security review, dependency convergence and compatible full-stack quality gates.
|
||||
- [ ] QQQ issue resolution, release notes, clean-consumer verification and snapshot/RC when ready.
|
||||
|
||||
Latest full Redis verify: 23 tests, zero failures/errors/skips, 94.50% instruction
|
||||
coverage and guardrails pass (%TEMP%/redis-script-boundary-verify.log).
|
||||
Collaboration uses script operations instead of the native client. Public credential
|
||||
and direct-cache construction types still expose Jedis; complete boundary and
|
||||
session-store compatibility remain open. Report browser checks: all eight pass.
|
||||
All issues are in https://github.com/orgs/QRun-IO/projects/12 and carry the relevant QBit labels. No future scenario above is declared tested merely because the normal flow passes. Worktrees and optional research files remain preserved.
|
||||
@@ -37,7 +37,7 @@
|
||||
<properties>
|
||||
<revision>0.1.0-SNAPSHOT</revision>
|
||||
<maven.compiler.release>21</maven.compiler.release>
|
||||
<qqq.snapshot.version>4.1.0-SNAPSHOT</qqq.snapshot.version>
|
||||
<qqq.snapshot.version>4.1.0-collab-33464d37e-SNAPSHOT</qqq.snapshot.version>
|
||||
<jedis.version>7.2.0</jedis.version>
|
||||
</properties>
|
||||
<dependencyManagement>
|
||||
|
||||
Reference in new issue
Block a user