diff --git a/CHANGELOG.md b/CHANGELOG.md
index 32dd987..4905fd9 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -2,6 +2,10 @@
All notable changes to this project are documented here. The format follows Keep a Changelog; versions follow semantic versioning.
+## [1.0.0-RC.1] - 2026-10-05
+
+First release candidate of 1.0, published to Maven Central from `release/1.0`. It contains every change listed under 1.0.0 below. Requires QQQ 4.1 (built against 4.1.0-RC.1). Known gaps before GA are tracked in #12.
+
## [1.0.0] - Unreleased
Requires QQQ 4.1. Closes every blocker of the 2026-10-04 production-readiness audit (`docs/audits/2026-10-04/README.md`).
diff --git a/README.md b/README.md
index 5e330f3..b8499f8 100644
--- a/README.md
+++ b/README.md
@@ -1,6 +1,6 @@
# QBit: Quick Search
-[](https://github.com/QRun-IO/qbit-quick-search)
+[](https://github.com/QRun-IO/qbit-quick-search)
[](https://www.apache.org/licenses/LICENSE-2.0)
[](https://adoptium.net/)
@@ -48,10 +48,12 @@ For `AWS_SIGV4` add these optional dependencies to your host (the QBit declares
com.kingsrook.qbits
qbit-quick-search
- 1.0.0
+ 1.0.0-RC.1
```
+`1.0.0-RC.1` is the current release candidate; `1.0.0` follows once host applications have adopted it (#12).
+
Annotate entity classes:
```java
diff --git a/docs/SESSION-STATE.md b/docs/SESSION-STATE.md
index 19cce04..36a7b35 100644
--- a/docs/SESSION-STATE.md
+++ b/docs/SESSION-STATE.md
@@ -4,22 +4,16 @@ Updated: 2026-10-05
## Context
-Repo `QRun-IO/qbit-quick-search`, branch `feature/GH-1-0-release-readiness`, pushed; PR #10 to `develop` is open, reviewed and CI-green at `49f20c0`. Goal in flight: ship `1.0.0-RC.1`.
+`1.0.0-RC.1` is released (2026-10-05). PR #10 merged as `0cd892d` and PR #8 as `36bc0fb`, both on `develop`. `release/1.0` was cut from `36bc0fb`; the orb's `publish_release_candidate` workflow succeeded, pushed `0b7bc98` ("Bump version to 1.0.0-RC.1 [skip ci]") to `release/1.0`, and published to Maven Central (jar, pom, sources, javadoc, signatures). A clean consumer resolves it with qqq-backend-core 4.1.0-RC.1 and opensearch-java 3.10.0.
-## This session
+## Release mechanics (qqq-orb 0.6.8, confirmed in its source)
-- Recovered after a crash; the prior session had ended cleanly (all 1.0 work committed, verify green).
-- Rebased the branch onto `origin/develop` (`000e5bb`, squash of PR #7); the tree was unchanged. Committed `AGENTS.md`. GitHub SSH times out from this machine, so pushes use HTTPS with `git -c credential.helper='!gh auth git-credential' push https://github.com/QRun-IO/qbit-quick-search.git ...`.
-- Deep review of PR #10 (search permissions and alias swap, silent failures in the listener and basepull, security of transport and config). Two merge blockers in the full-reindex path and two search paging defects fixed in `45bd1fc`; lower-severity items are in `docs/TODO.md` under "Before 1.0.0 GA". Verify after the fixes: 307 unit, 18 integration, coverage gate passed. Review posted on PR #10; PR #8 reviewed and approved in a comment. Dependabot PR #1 closed as superseded.
-- Merging was refused by the Claude Code auto-mode permission classifier ("Merge Without Review") for both #8 and #10, so the merges are left to James.
+- RCs publish artifacts only: no git tag and no GitHub release. The GitHub release comes when the release branch merges to `main` and a `vX.Y.Z` tag is pushed.
+- Never push a `vX.Y.Z-RC.n` tag: it matches the GA job's `v*` filter, maps back to `release/X.Y.Z`, and would publish a stray `RC.n+1`.
+- The next push to `release/1.0` publishes `1.0.0-RC.2`.
+- The agent cannot run `gh pr merge` (auto-mode classifier); James merges. GitHub SSH times out from this machine; push over HTTPS with `git -c credential.helper='!gh auth git-credential' push https://github.com/QRun-IO/qbit-quick-search.git [`.
-## Release mechanics (qqq-orb 0.5.2, confirmed in the orb source)
+## Next
-Pushing `release/1.0` runs `publish_release_candidate`; the orb derives `1.0.0-RC.1` from the `1.0.0-SNAPSHOT` revision, publishes the artifact, tags and creates a GitHub pre-release. Do not create the tag by hand. The next push to `release/1.0` publishes RC.2.
-
-## Next (in order)
-
-1. `gh pr merge 10 --squash --admin` (reviewed; CI green).
-2. Rebase `feature/GH-10-public-stack-prep` on `develop` (pom.xml conflict: take assertj 3.27.7), push, `gh pr merge 8 --squash --admin`.
-3. `git fetch origin && git checkout -b release/1.0 origin/develop && git push origin release/1.0`; watch the `publish_release_candidate` workflow; confirm the `v1.0.0-RC.1` pre-release.
-4. Pin `1.0.0-RC.1` in qqq-all and Voyage (see TODO); their feedback decides RC.2 or GA.
+1. Pin `1.0.0-RC.1` in qqq-all and Voyage (see `docs/TODO.md`); their feedback decides RC.2 or GA.
+2. Work the "Before 1.0.0 GA" list in `docs/TODO.md` on feature branches into `develop`, then merge `develop` into `release/1.0` for RC.2.
diff --git a/docs/TODO.md b/docs/TODO.md
index 3e6f8eb..b0afdee 100644
--- a/docs/TODO.md
+++ b/docs/TODO.md
@@ -2,17 +2,20 @@
## Before tagging 1.0.0
+- [ ] qqq-all and Voyage adopt `1.0.0-RC.1` (items below) and report back.
+
- [x] PR #10 (`feature/GH-1-0-release-readiness`) opened and reviewed 2026-10-05; `AGENTS.md` kept.
- [ ] Re-pin to `qbit-build-parent` 2.1.0 when qbit-bom publishes it, and remove the `activeByDefault` on the `qqq-snapshot` profile (ADR-0007).
- [ ] qqq-all follow-up PR: remove the manual `instance.addQBit(...)` for quick-search in `DemoQBits`, pass `withSchedulerName("demoScheduler")`, set `withStartupMode(QuickSearchStartupMode.DEGRADED)` for the full profile test, pin 1.0.0.
- [ ] Voyage: pin 1.0.0, set `schedulerName`, switch to `opensearchUrl` and `${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).
- [ ] Open the qqq issue proposing `RecordSearchProviderInterface` (D1); quick-search adapter lands in 1.1.
-- [ ] Create the GitHub tracking issue for the 1.0 initiative; write its number into the PRD frontmatter.
-- [ ] Merge PR #8 (reviewed 2026-10-05, approve); Dependabot PR #1 closed as superseded.
+- [x] Tracking issue #12 created and recorded in the PRD (2026-10-06).
+- [x] PR #8 merged 2026-10-05; Dependabot PR #1 closed as superseded.
+- [x] PR #10 merged and `1.0.0-RC.1` published to Maven Central from `release/1.0` (2026-10-05).
- [ ] Upstream: tell qbit-bom that the published parent POM has `${revision}`, 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)
+## Before 1.0.0 GA (from the PR #10 review, 2026-10-05; filed as #13 to #17 under #12)
- [ ] Listener: if the in-transaction re-read in `fetchCurrentRecords` throws, record a `quickSearchFailedEvent` row from the event's primary keys instead of dropping the update (`QuickSearchRecordChangeListener`).
- [ ] Full reindex: deletes that arrive during a rebuild are not replayed into the new index; capture them (failed-event or a delete log) and apply after the swap.
diff --git a/docs/initiatives/quick-search-1.0.md b/docs/initiatives/quick-search-1.0.md
index 3ef70f2..d578e05 100644
--- a/docs/initiatives/quick-search-1.0.md
+++ b/docs/initiatives/quick-search-1.0.md
@@ -1,8 +1,8 @@
---
-tracker_key: # fill with the GitHub tracking issue once created
+tracker_key: "QRun-IO/qbit-quick-search#12"
project: qbit-quick-search
-status: implemented-pending-release
-updated: 2026-10-04
+status: released-rc
+updated: 2026-10-06
---
# Initiative: QBit Quick Search 1.0 on QQQ 4.1
@@ -11,7 +11,7 @@ updated: 2026-10-04
## Status
-Implemented on `feature/GH-1-0-release-readiness` (2026-10-04): all six epics are coded and tested (307 unit, 18 integration, coverage gate met). Decisions D1 to D11 were applied with the recommended answers, with two recorded adjustments: D4 (missing `schedulerName` warns rather than fails) and D5 (single-table full reindex uses the reconcile algorithm). Open before tagging 1.0.0: `qbit-build-parent` 2.1.0 re-pin, qqq-all follow-up PR, CI image matrix, qqq core SPI issue (1.1).
+`1.0.0-RC.1` was released to Maven Central on 2026-10-05 from `release/1.0`, after the work merged to `develop` in #10 and #8. All six epics are coded and tested (307 unit, 18 integration, coverage gate met). Decisions D1 to D11 were applied with the recommended answers, with two recorded adjustments: D4 (missing `schedulerName` warns rather than fails) and D5 (single-table full reindex uses the reconcile algorithm). Tracking issue: #12. Open before GA: host adoption in qqq-all and Voyage, the review follow-ups #13 to #17, the `qbit-build-parent` 2.1.0 re-pin, the CI image matrix, and the qqq core SPI issue (1.1).
## Executive Summary
]