Skip to content

Commit f7e394f

Browse files
committed
Await bounded native search and bind prior epoch recovery probe
1 parent 6ec9233 commit f7e394f

35 files changed

Lines changed: 1514 additions & 139 deletions

‎.github/workflows/ci.yml‎

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -102,9 +102,10 @@ jobs:
102102
- name: Run unit tests without CPU intrinsics
103103
run: dotnet run --project src/KeyLoad.AppHost --no-build --no-restore --configuration Release -- --KeyLoadTests:Suite=unit-scalar
104104
- name: Build the previous storage executable
105+
id: native5
105106
run: bash scripts/Features/StorageRecovery/build-native5-probe.sh
106107
- name: Test recovery after process crashes
107-
if: ${{ !cancelled() && steps.build.outcome == 'success' }}
108+
if: ${{ !cancelled() && steps.build.outcome == 'success' && steps.native5.outcome == 'success' }}
108109
run: dotnet run --project src/KeyLoad.AppHost --no-build --no-restore --configuration Release -- --KeyLoadTests:Suite=recovery
109110
- name: Save test results
110111
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
@@ -114,6 +115,7 @@ jobs:
114115
path: |
115116
**/TestResults/**
116117
artifacts/qualification/**
118+
artifacts/native5-probe/**
117119
if-no-files-found: ignore
118120
- name: Save build diagnostics
119121
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1

‎README.md‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ KeyLoad is a **development preview**. The current SQL subset provides bounded do
4343

4444
The default server is a three-node replicated cluster (RF3), built on Orleans with persistent ZoneTree storage on each node. Production readiness, endurance, power-loss durability and comparative performance remain under qualification. The [implementation tracker](docs/implementation/status.json), [SQL compatibility inventory](docs/implementation/sql-client-conformance.json) and [test results](docs/implementation/runtime-qualification-20261002.md) record the detailed status.
4545

46-
The server uses ZoneTree.FullTextSearch for bounded derived text candidates while preserving exact authorized ranking. Its [development receipt](docs/implementation/native-full-text-development-2026-10-03.json) records 26 native unit and 10 process-recovery checks through Aspire. Full Linux/RF3 qualification and incremental projection replay remain pending; these checks establish no speed improvement.
46+
The server uses ZoneTree.FullTextSearch for bounded derived text candidates while preserving exact authorized ranking. Search now awaits complete native execution and cleanup while retaining its analytical reservation. The [development receipt](docs/implementation/native-async-search-development-2026-10-03.json) records full Aspire normal/scalar suites at 2,866 tests each and recovery at 228, including the new native admission/cancellation cases and 10 native-text process cuts. Exact-source Linux/RF3 qualification and incremental projection replay remain pending; these checks establish no speed improvement.
4747

4848
A bounded lossless time-series chunk codec has [development evidence](docs/implementation/sample-chunk-codec-development-2026-10-03.json) from full Aspire unit/scalar suites and matched native-codec controls. Canonical chunk storage, rewrite/recovery and RF3 qualification remain in progress under KL-078.
4949

‎docs/ADR/ADR-077-offline-native-data-epoch.md‎

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,12 @@ this reachable commit has exactly the same complete source tree as the original
2121
tree before building. Historical development receipts keep their actual original
2222
commit, archive and binary hashes; they are not relabeled as a new execution.
2323

24+
TASK-EPOCH-PROBE-BIND corrects the overlaid probe's reported source revision to
25+
the exact reachable archived revision above. CI recovery requires successful
26+
probe preparation and retains the original probe receipt and binaries alongside
27+
the recovery reports. A matching tree alone cannot make two different execution
28+
receipts interchangeable; driver and executable file hashes remain verified.
29+
2430
ADR-057's identity4/WAL3/checkpoint2 matrix records its qualified historical
2531
generation; it does not describe the current identity5/WAL4/checkpoint3 source.
2632
This ADR adjudicates that difference without changing historical receipts.
@@ -201,3 +207,13 @@ applied cut and raw records rather than immutable materialized-tree bytes. All
201207
upgrade, unsupported-open, snapshot-reader refusal and read-only published-target
202208
retry comparisons retain the complete byte inventory. No previous provider or
203209
serializer source is patched to produce the oracle.
210+
211+
The [bound local integration receipt](../implementation/native-async-search-development-2026-10-03.json)
212+
rebuilds the actual reachable7784b6b source/tree with exactly the two declared
213+
CrashHost driver overlays. All75 executable files and both driver source hashes
214+
remain verified after the complete Aspire recovery suite:228/228 pass, including
215+
all14 epoch cases, with1000 unique seeded atomic process-crash receipts retained.
216+
Historical2532-bound artifacts are preserved separately without relabeling.
217+
Exact delivered-source Linux originals and a genuine homogeneous Docker/Aspire
218+
RF3 cold-upgrade fixture remain required; ordinary current-format RF3 startup
219+
does not qualify the previous-to-current cold-upgrade contract.

‎docs/ADR/ADR-081-awaited-native-search-execution.md‎

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# ADR-081 — Awaited bounded native search execution
22

3-
Status: Accepted implementation contract; source and runtime qualification pending.
3+
Status: Accepted implementation contract; reviewed source and local development gates passed; exact-source Linux and public RF3 qualification pending.
44
Related: KL-029, REQ-FTS-003/005/007 and AC-FTS-003/005/007 in
55
[NativeFullTextProjection](../Features/Search/NativeFullTextProjection.md),
66
ADR-034, ADR-078, AC-MCP-001 and AC-SQLVIEW-003.
@@ -23,6 +23,14 @@ Provider source: [ZoneTreeMaintainer at pinned13ee11e](https://github.com/ZoneTr
2323
Actual causality and repaired liveness require the real public RF3 regression.
2424
Local default-scheduler tests alone do not establish the Orleans join.
2525

26+
The [local integration receipt](../implementation/native-async-search-development-2026-10-03.json)
27+
binds the reviewed precommit source and runtime inventories to complete Aspire
28+
normal/scalar2866 tests each with identical identities and recovery228, without
29+
skips or flaky results. The three new real-native admission/projection oracles,
30+
all10 native-text process cuts,14 epoch cases and1000 unique seeded atomic
31+
process-crash receipts pass. This is macOS development evidence; the new public
32+
RF3 oracle and exact delivered-source Linux artifacts remain required.
33+
2634
## Execution and ownership contract
2735

2836
Add `SearchEngine.SearchAsync` and factor existing exact search into one shared
@@ -83,7 +91,16 @@ Repair fixtures under existing accepted contracts, without product changes:
8391
2. TASK-FTS-ASYNC-INTEGRATE, root: only Query/SearchEngine.cs and new cohesive
8492
Query/Features/Search helpers if needed, Orleans/ClusterRouting
8593
GrainQueryReadCapabilities.cs and DatabaseReadGrain.cs. Preserve exact core,
86-
authorization/error/admission paths; no central or DTO edits.
94+
authorization/error/admission paths; no central or DTO edits. Root also
95+
adapts the existing NativePublicReadFixture/Elements async diagnostic bridge
96+
and CrashHost Search/NativeTextCrashScenario calls to the awaited API, keeping
97+
the same diagnostic, real-process pause and canonical-preservation oracles.
98+
Existing async search, relational-linkage, admission and process-recovery
99+
callers await the new API without weakening their results or errors. The
100+
allocation control retains its existing synchronous measurement helper:
101+
warmup and GC.GetAllocatedBytesForCurrentThread before/Search/after must run
102+
on the actual measured thread. Caller-thread counts around awaited worker
103+
execution are invalid. No generic sync adapter or diagnostic suppression.
87104
3. TASK-FTS-ASYNC-ORACLE, lifecycle_wave Luna/high: new UnitTests/Features/Search
88105
NativeTextAsync* and IntegrationTests/Features/Search NativeTextAsyncRf3*
89106
files only. Use actual ZoneTree/native FTS and real RF3 SDK/official MCP.

‎docs/Features/Search/NativeFullTextProjection.md‎

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,16 @@ TASK-FTS-QUERY / NATIVE / TEST depend on root frozen contracts and the completed
2727
epoch source build. Root owns integration, validation, receipts and commits.
2828
TASK-FTS-ASYNC-CONTRACT/INTEGRATE/ORACLE/JOIN map REQ-FTS-007 to AC-FTS-007
2929
under [ADR-081](../../ADR/ADR-081-awaited-native-search-execution.md).
30+
Its concrete oracles are `NativeTextAsyncProjectionTests` (full canonical
31+
publish/reuse/new-cut result parity), `NativeTextAsyncAdmissionTests` (pre-cancel,
32+
real native posting pause, saturation and joined cancellation cleanup), and
33+
`NativeTextAsyncRf3Tests` (actual SDK/official MCP freshness, persisted policy
34+
epochs, credential revocation and healthy three-node status). Their source is
35+
reviewed. The [awaited-execution development receipt](../../implementation/native-async-search-development-2026-10-03.json)
36+
records normal/scalar2866 tests each with identical identities, recovery228 and
37+
unchanged source/runtime inventories. All three new native unit oracles and10
38+
native-text process cuts pass. Genuine public RF3 liveness and exact delivered-source
39+
Linux outcomes remain separately required; AC-FTS-007 is not fully qualified.
3040
TASK-RF3-ORACLE-REPAIR corrects independently diagnosed catalog, persisted write
3141
grant, metadata-pointer and policy-epoch fixtures; it cannot weaken authorization
3242
or qualify the scheduler repair without genuine RF3 execution.

0 commit comments

Comments
 (0)