6.6 KiB
TODO
UI API 1.6 migration (2026-10-15)
- Bump
quick-searchextension to 1.1.0, retain deprecatedQuickSearchErrorV1, and use coreBasicErrorResponseV1for errors; preserve operation IDs and success payloads. - Regenerate the two-operation contract with
-Dquicksearch.openapi.update=true, then pass the contract test without regeneration; no dangling references or separate baseline were found. - Set the release BOM default to QQQ
4.1.0-RC.15; validate offline against the locally installed4.1.99-SNAPSHOTusing./mvnw.cmd -o test -Dqqq.snapshot.version=4.1.99-SNAPSHOT -Denforcer.skipRules=requireReleaseDeps(540 tests, no failures/errors/skips). The command-line exception is needed only because the requested local core is a SNAPSHOT; other guardrails remain enabled. - Verify strengthened HTTP error-body assertions: 8 status/HTTP tests passed after the full suite.
- Run Docker integration tests through
verifyin CI; this migration ran the requestedtestlifecycle.
In-app help bundle (2026-10-14)
- Pin QQQ RC.7, register the host-neutral QBIT bundle, replace the temporary loader, document HOST overrides, and add coverage/no-help-table checks.
- Host adoption: enable QQQ help startup sync and keep deployment schedules and host-table record actions in HOST bundles.
Real-time error counter
- Count failed real-time events after commit, serialize concurrent listeners within a JVM, tolerate counter-write failures, and reset after successful basepull/full reindex; add regression tests and field/documentation help.
Architecture status API (#50 / F10)
- Supported Java status API, bounded cache/rate limiting, administrator authorization, home navigation, spec endpoint and committed fragment.
- Contract and strict HTTP tests; host migration mapping for kof22#164.
- kof22#164: replace internal probes/duplicate home using
docs/STATUS-API-HOST-MIGRATION.md. - Next UI: vendor the additive Quick Search status fragment when adopting RC.6.
- Run Docker integration tests in CI; local Docker is unavailable.
- Resolve the pre-existing repository Checkstyle baseline (438 remaining main-source violations, down from 471 at HEAD); status API adds none.
Before tagging 1.0.0
-
qqq-all and Voyage adopt
1.0.0-RC.2(items below) and report back. -
PR #10 (
feature/GH-1-0-release-readiness) opened and reviewed 2026-10-05;AGENTS.mdkept. -
Re-pin to
qbit-build-parent2.1.0 when qbit-bom publishes it, and remove theactiveByDefaulton theqqq-snapshotprofile (ADR-0007). -
qqq-all follow-up PR: remove the manual
instance.addQBit(...)for quick-search inDemoQBits, passwithSchedulerName("demoScheduler"), setwithStartupMode(QuickSearchStartupMode.DEGRADED)for the full profile test, pin 1.0.0. -
Voyage: pin 1.0.0, set
schedulerName, switch toopensearchUrland${env.}credentials. -
CI: add a second test job with
-Dopensearch.test.image=opensearchproject/opensearch:3.9.0(needs a qqq-orb parameter for extra Maven args, or a plain job). -
Core SPI proposed as QRun-IO/qqq#1042 (D1); the 1.1 adapter
QuickSearchRecordSearchProvideris onfeature/record-search-provider. -
Tracking issue #12 created and recorded in the PRD (2026-10-06).
-
PR #8 merged 2026-10-05; Dependabot PR #1 closed as superseded.
-
PR #10 merged and
1.0.0-RC.1published to Maven Central fromrelease/1.0(2026-10-05). -
Upstream: tell qbit-bom that the published parent POM has
<version>${revision}</version>, which Maven 3.10 rejects (this repo works around it with the wrapper on 3.9.11).
Before 1.0.0 GA (from the PR #10 review, 2026-10-05; filed as #13 to #17 under #12)
- #13 Listener: a failed in-transaction re-read or a missing AWS SDK (
LinkageError) recordsquickSearchFailedEventrows (PR #22). - #14 Full reindex: deletes made during a rebuild are captured (
REBUILDING,AWAITING_REINDEX) and applied after the alias swap (PR #20). - #15 Transport: warn on
tls.hostnameVerification=false, empty${env.X}treated as missing, userinfo inopensearchUrlrejected (PR #18). - #16 Search:
offsetcounts readable results under record locks, per-tableoffset, bounded scan and 10,000 window cap (PR #19). - #17
safeCountlogs at warn and keeps the previousdocumentCount(PR #21). 1.0.0-RC.2published to Maven Central fromrelease/1.0(2026-10-06).- Stuck
REBUILDINGafter a killed or overlapping full reindex (from the PR #20 review): only another all-tables reindex clears it,AWAITING_REINDEXrows accumulate and drift detection stays off for those tables. No data is lost. Fix needs a liveness check on theFULL_REINDEXrun record before reconcile may reset the status, plus refusing a second concurrent full reindex. - Drift detection still writes
NEEDS_REINDEXintostatus, so a few-millisecond window can overwriteREBUILDING; the durable fix is a separate drift field (schema change, so 1.1 at the earliest).
Before releasing 1.1.0
- Re-pointed the
qqq-snapshotprofile from4.1.0-SNAPSHOTto4.1.0-RC.2, the first QQQ release with the record-search provider SPI (2026-10-11). - qqq-all / Website-Backend: confirm the Next UI search box is served from OpenSearch (provider registered, indexed tables have
searchFields).
Later (1.x)
- Health widget for the admin app (data exists:
isHealthy,documentCount,lastRunStatus). IndexEventsequence number so an async publisher can order INDEX and DELETE; promote the publisher SPI from experimental.- Amazon OpenSearch Serverless (needs removal of
_delete_by_queryand_refreshfrom the design). - Jev table routing prototype; see
docs/reference/typesafe-jev-candidates.md.
Done
- Status assessment, deep-dive audit (25 blockers), PRD (2026-10-04).
- 4.1.0-RC.1 compatibility verified (2026-10-04).
- All 25 audit blockers implemented and tested on the release branch (2026-10-04).
Secured-data section 15 (2026-10-14)
-
Review fix: separate protection from indexability; preserve safe labels, ordinary results and unprotected hidden keys/timestamps, with regression tests.
-
Exclude PII/PHI, hidden, sensitive, password and field-locked values from indexing and results on RC.6.
-
Add canary coverage for real-time indexing, basepull and stale results; refuse classified config fields.
-
On the QQQ RC.7 upgrade, honour
ClassifiedValues.isClassified(table, field)(qqq#1182) andFieldAccessHelper.getLockTier(qqq#1172). -
Deployment: rebuild existing indexes and apply host retention policy to old physical indexes/backups containing previously indexed values.