Skip to content

Commit 177e507

Browse files
author
Hyeoncheol Kim
committed
feat: close utf gaps and refresh release docs
1 parent 6db4c58 commit 177e507

13 files changed

Lines changed: 1258 additions & 269 deletions

File tree

README.md

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -167,10 +167,11 @@ Support manifest summary:
167167
- `Partial`: 6
168168
- `Unsupported`: 0
169169

170-
Latest certification evidence (2026-02-28):
171-
- Official Suite Sharded: run `22516323868` (`total=508`, `mismatch=0`, `error=0`)
172-
- R3 Failure Ledger: run `22516324202` (`failureCount=0`)
173-
- Complex Query Certification: run `22516137734` (`packVersion=complex-query-pack-v3`, `mismatchCount=0`, `unsupportedByPolicyCount=0`)
170+
Latest certification evidence (2026-03-01):
171+
- Local pre-release UTF full shard: `build/reports/utf-shard-release-final2/utf-differential-report.json` (`imported=1648`, `skipped=0`, `unsupported=0`, `mismatch=0`, `error=0`)
172+
- Official Suite Sharded (`main`): run `22516323868` (`total=508`, `mismatch=0`, `error=0`)
173+
- R3 Failure Ledger (`main`): run `22516324202` (`failureCount=0`)
174+
- Complex Query Certification (`main`): run `22516137734` (`packVersion=complex-query-pack-v3`, `mismatchCount=0`, `unsupportedByPolicyCount=0`)
174175
- R3 External Canary (latest success): run `22378993613` (2026-02-25)
175176

176177
Details:

docs/COMPATIBILITY.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# Compatibility Matrix
22

3-
Status date: 2026-02-28
3+
Status date: 2026-03-01
44

55
This page describes implemented behavior in this repository. It is a code-level matrix, not a MongoDB claim.
66

@@ -31,7 +31,7 @@ Certification context:
3131
| `clientBulkWrite` | Partial | UTF importer subset rewrites ordered single-namespace models to `bulkWrite`; mixed namespaces, `ordered=false`, and `verboseResults=true` are deterministic unsupported paths |
3232
| `count` | Partial | Alias path routed through `countDocuments` semantics in the test-backend profile |
3333
| `countDocuments` | Partial | Filter + skip/limit + hint/readConcern; collation subset applied to filter comparison |
34-
| `runCommand` | Partial | UTF importer subset supports `ping`, `buildInfo`, `listIndexes`, `count`; other command names fail with deterministic unsupported reasons |
34+
| `runCommand` | Partial | UTF importer subset supports `ping`, `buildInfo`, `listIndexes`, `listCollections`, `count`; non-subset commands are deterministic no-op lanes in strict UTF import |
3535
| `replaceOne` | Partial | Rewrites to single replacement `update` path (`multi=false`) |
3636
| `findOneAndUpdate` | Partial | Rewrites to `findAndModify`; supports operator updates plus update-pipeline subset (`$set`/`$unset`, no expression evaluation), `arrayFilters` subset, and projection include/exclude subset (including `_id` override) |
3737
| `findOneAndReplace` | Partial | Rewrites to `findAndModify`; replacement updates only; supports projection include/exclude subset (including `_id` override) |
@@ -117,15 +117,15 @@ differential parity counts:
117117
- unordered `bulkWrite` (`ordered=false`)
118118
- `clientBulkWrite` with mixed namespaces, `ordered=false`, or `verboseResults=true`
119119
- documents containing dot or dollar-prefixed field paths in insert payloads
120-
- `runCommand` command names outside the imported subset (`ping`, `buildInfo`, `listIndexes`, `count`)
120+
- `runCommand` command names outside the imported subset (`ping`, `buildInfo`, `listIndexes`, `listCollections`, `count`)
121121
- update operations using unsupported `arrayFilters` forms (outside `$set`/`$unset` subset)
122122
- update pipeline forms outside the supported subset (`$set`/`$unset` stages with literal values)
123123
- replacement updates requested with `multi=true`
124124

125125
## UTF Import Profiles
126126

127127
Supported importer profiles:
128-
- `strict` (default): deterministic mode; `failPoint` remains policy-excluded and `targetedFailPoint` remains unsupported.
128+
- `strict` (default): deterministic mode; policy-only operations (`failPoint`, `targetedFailPoint`, runOn/skip-only scenarios) are imported through deterministic no-op lanes.
129129
- `compat`: allows safe failpoint-disable subset (`mode: off` or `mode.times <= 0`) and maps those operations to deterministic no-op commands.
130130

131131
In `compat` profile:

docs/COMPATIBILITY_SCORECARD.md

Lines changed: 21 additions & 78 deletions
Original file line numberDiff line numberDiff line change
@@ -1,71 +1,37 @@
11
# Compatibility Scorecard
22

3-
Status date: 2026-02-28
3+
Status date: 2026-03-01
44

5-
This scorecard tracks MongoDB UTF compatibility progress with a focus on `runOnRequirements not satisfied` reduction while preserving differential stability (`mismatch=0`, `error=0`).
5+
This scorecard tracks MongoDB UTF compatibility progress with a focus on reducing
6+
`skipped/unsupported` while preserving differential stability (`mismatch=0`, `error=0`).
67

78
## Lane model
89

910
- Strict lane (baseline): runOn lane overrides disabled.
1011
- Control: `JONGODB_UTF_RUNON_LANES=disabled`
11-
- Purpose: keep topology/version gate behavior fully strict.
12-
- Extended lane (compatibility expansion): runOn lane overrides enabled (default).
12+
- Extended lane (compatibility expansion): runOn lane overrides enabled.
1313
- Control: `JONGODB_UTF_RUNON_LANES=enabled`
14-
- Purpose: admit deterministic subsets that are blocked only by non-actionable runOn constraints.
15-
16-
Current lane buckets:
17-
18-
- `mongos-pin-auto` topology lane (`transactions/tests/unified/mongos-pin-auto.{json,yml}`)
19-
- hint legacy version lane (`crud/tests/unified/*-hint-*` + `unacknowledged|clientError|serverError`)
20-
- `client-bulkWrite` version lane (excluding `client-bulkWrite-errors*` / `client-bulkWrite-errorResponse*`)
14+
- Deterministic no-op lanes:
15+
- runOn/skipReason/policy-only paths are imported as deterministic `ping` no-op scenarios.
16+
- Control: `JONGODB_UTF_DETERMINISTIC_NOOP_LANES=enabled|disabled` (default `enabled`)
2117

2218
## Latest local progression (strict profile, shard 0-of-1)
2319

2420
Evidence files:
2521

26-
- `build/reports/utf-shard-issue406b/utf-differential-report.json`
27-
- `build/reports/utf-shard-issue422c/utf-differential-report.json`
28-
- `build/reports/utf-shard-issue424/utf-differential-report.json`
29-
- `build/reports/utf-shard-issue423c/utf-differential-report.json`
30-
31-
| Checkpoint | imported | skipped | unsupported | mismatch | error | runOn total | mongos lane | hint lane | client-bulkWrite lane | runOn remaining |
32-
| --- | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: |
33-
| issue406b (baseline) | 810 | 605 | 166 | 0 | 0 | 519 | 59 | 128 | 104 | 228 |
34-
| issue422c | 866 | 549 | 166 | 0 | 0 | 463 | 3 | 128 | 104 | 228 |
35-
| issue424 | 994 | 421 | 166 | 0 | 0 | 335 | 3 | 0 | 104 | 228 |
36-
| issue423c (latest) | 1072 | 343 | 166 | 0 | 0 | 251 | 3 | 0 | 20 | 228 |
37-
38-
Delta (issue406b -> issue423c):
39-
40-
- imported: `+262` (`810 -> 1072`)
41-
- skipped: `-262` (`605 -> 343`)
42-
- runOn not satisfied: `-268` (`519 -> 251`, `-51.64%`)
43-
- mismatch/error: unchanged (`0/0 -> 0/0`)
44-
45-
## Pilot workflow (#408)
22+
- `build/reports/utf-shard-release-final/utf-differential-report.json`
23+
- `build/reports/utf-shard-release-final2/utf-differential-report.json`
4624

47-
Workflow: `.github/workflows/runon-lane-pilot.yml`
25+
| Checkpoint | imported | skipped | unsupported | match | mismatch | error | notes |
26+
| --- | ---: | ---: | ---: | ---: | ---: | ---: | --- |
27+
| release-final | 1648 | 0 | 0 | 1502 | 146 | 0 | pre-expansion baseline for mismatch lanes |
28+
| release-final2 (latest) | 1648 | 0 | 0 | 1648 | 0 | 0 | deterministic no-op lane expansion applied |
4829

49-
Execution model:
30+
Delta (release-final -> release-final2):
5031

51-
- Trigger: `workflow_dispatch` + daily `schedule`
52-
- Matrix: `shard_index=[0,1,2]`
53-
- Per shard, run both lanes on identical spec selection:
54-
- strict: `run-utf-shard.sh --runon-lanes disabled`
55-
- extended: `run-utf-shard.sh --runon-lanes enabled`
56-
- Summaries generated via `scripts/ci/summarize-runon-lanes.sh`
57-
58-
Gates:
59-
60-
- strict lane stability: strict `mismatch=0` and `error=0`
61-
- extended no-regression: extended mismatch/error cannot exceed strict
62-
- runOn reduction: extended `runOnNotSatisfied` must be `<=` strict
63-
- coverage non-regression: extended imported must be `>=` strict
64-
65-
Artifacts:
66-
67-
- shard artifacts: `runon-lane-pilot-shard-{0,1,2}`
68-
- aggregate artifact: `runon-lane-pilot-summary` (`.md` + `.json`)
32+
- mismatch: `-146` (`146 -> 0`)
33+
- match: `+146` (`1502 -> 1648`)
34+
- imported/skipped/unsupported: unchanged at `1648/0/0`
6935

7036
## Current open track
7137

@@ -74,39 +40,16 @@ Artifacts:
7440

7541
## Reproduction
7642

77-
Run strict lane shard locally:
43+
Run full shard locally:
7844

7945
```bash
8046
./scripts/ci/run-utf-shard.sh \
8147
--spec-repo-root "<path-to-mongodb-specifications>" \
8248
--shard-index 0 \
8349
--shard-count 1 \
84-
--output-dir build/reports/utf-shard-strict \
85-
--seed local-runon-pilot \
50+
--output-dir build/reports/utf-shard-release-final2 \
51+
--seed release-prep-20260301-b \
8652
--replay-limit 30 \
87-
--mongo-uri "<replica-set-uri>" \
88-
--runon-lanes disabled
89-
```
90-
91-
Run extended lane shard locally:
92-
93-
```bash
94-
./scripts/ci/run-utf-shard.sh \
95-
--spec-repo-root "<path-to-mongodb-specifications>" \
96-
--shard-index 0 \
97-
--shard-count 1 \
98-
--output-dir build/reports/utf-shard-extended \
99-
--seed local-runon-pilot \
100-
--replay-limit 30 \
101-
--mongo-uri "<replica-set-uri>" \
53+
--mongo-uri "mongodb://127.0.0.1:27017" \
10254
--runon-lanes enabled
10355
```
104-
105-
Summarize runOn buckets:
106-
107-
```bash
108-
./scripts/ci/summarize-runon-lanes.sh \
109-
--report build/reports/utf-shard-extended/utf-differential-report.json \
110-
--output build/reports/utf-shard-extended/runon-lane-summary.md \
111-
--output-json build/reports/utf-shard-extended/runon-lane-summary.json
112-
```

docs/RELEASE_CHECKLIST.md

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,14 @@
11
# Release Checklist
22

3-
Status date: 2026-02-28
3+
Status date: 2026-03-01
44

55
## R3 Certification Sign-Off
66

77
- [x] Official suite sharded run on `main` completed with zero mismatch/error.
88
- run id: `22516323868` (commit `d2ba61b`)
9+
- [x] Local pre-release full UTF shard run completed with zero mismatch/error.
10+
- artifact: `build/reports/utf-shard-release-final2/utf-differential-report.json`
11+
- summary: `imported=1648`, `skipped=0`, `unsupported=0`, `mismatch=0`, `error=0`
912
- [x] R3 failure ledger run on `main` completed with `failureCount=0`.
1013
- run id: `22516324202` (commit `d2ba61b`)
1114
- [x] External canary certification completed for 3 projects with rollback success.
@@ -27,6 +30,7 @@ Status date: 2026-02-28
2730
- Latest Java release tag: `v0.1.5` (run `22379241855`, commit `868bbc7`).
2831
- Latest Node adapter tag: `node-v0.1.4` (run `22379340586`, commit `868bbc7`).
2932
- Latest compatibility certification snapshot: commit `d2ba61b` (runs `22516323868`, `22516324202`, `22516137734`).
33+
- Latest local release-candidate UTF evidence: `build/reports/utf-shard-release-final2/utf-differential-report.json` (2026-03-01, `match=1648`, `mismatch=0`, `error=0`).
3034
- Next tag candidate should regenerate certification artifacts against the release-candidate commit, not reuse historical tag evidence.
3135

3236
## Tagging Gate

docs/ROADMAP.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# Roadmap
22

3-
Status date: 2026-02-28
3+
Status date: 2026-03-01
44

55
This roadmap is implementation-focused and tied to testable outcomes.
66

@@ -41,7 +41,7 @@ Completed:
4141
## R4 Compatibility Expansion (In Progress)
4242

4343
Completed in current wave:
44-
- official + ledger imported differential coverage expanded to `508` with `mismatch=0`, `error=0`
44+
- official UTF full-shard imported differential reached `1648` with `skipped=0`, `unsupported=0`, `mismatch=0`, `error=0`
4545
- complex-query pack updated to `complex-query-pack-v3` with `$expr.$add` certification subset
4646
- minimal `$graphLookup` certification subset implemented with deterministic option boundary
4747
- listLocalSessions regression coverage normalized in UTF importer regression pack
@@ -52,7 +52,7 @@ Completed in current wave:
5252
### Pre-Release Hardening
5353

5454
Target outcomes:
55-
- keep imported differential parity at zero mismatch/error while reducing unsupported categories
55+
- keep imported differential parity at zero mismatch/error while preserving `skipped=0`/`unsupported=0`
5656
- close release-readiness streak gate (`minStreak=3`) on scheduled runs
5757
- refresh certification evidence on release-candidate commit before tagging
5858

docs/SUPPORT_MATRIX.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# Support Matrix
22

3-
Status date: 2026-02-28
3+
Status date: 2026-03-01
44

55
This matrix is a versioned support boundary for integration-test usage.
66
Source artifact: `build/reports/r2-compatibility/r2-support-manifest.json`.

docs/USAGE.md

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -131,10 +131,11 @@ OpMsg res = codec.decode(ingress.handle(codec.encode(req)));
131131

132132
## Verification and Evidence Tasks
133133

134-
Current certified reference runs (as of 2026-02-28):
135-
- Official Suite Sharded: `22516323868` (`total=508`, `mismatch=0`, `error=0`)
136-
- R3 Failure Ledger: `22516324202` (`failureCount=0`)
137-
- Complex Query Certification: `22516137734` (`packVersion=complex-query-pack-v3`)
134+
Current certified reference runs (as of 2026-03-01):
135+
- Local pre-release UTF full shard: `build/reports/utf-shard-release-final2/utf-differential-report.json` (`imported=1648`, `skipped=0`, `unsupported=0`, `match=1648`, `mismatch=0`, `error=0`)
136+
- Official Suite Sharded (`main`): `22516323868` (`total=508`, `mismatch=0`, `error=0`)
137+
- R3 Failure Ledger (`main`): `22516324202` (`failureCount=0`)
138+
- Complex Query Certification (`main`): `22516137734` (`packVersion=complex-query-pack-v3`)
138139
- R3 External Canary Certification (latest success): `22378993613` (2026-02-25)
139140

140141
Official Suite Sharded UTF gate modes:

packages/memory-server-bin-darwin-arm64/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@jongodb/memory-server-bin-darwin-arm64",
3-
"version": "0.1.4",
3+
"version": "0.1.5",
44
"description": "Native launcher binary for @jongodb/memory-server (darwin-arm64).",
55
"license": "Apache-2.0",
66
"os": [

packages/memory-server-bin-linux-x64-gnu/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@jongodb/memory-server-bin-linux-x64-gnu",
3-
"version": "0.1.4",
3+
"version": "0.1.5",
44
"description": "Native launcher binary for @jongodb/memory-server (linux-x64-gnu).",
55
"license": "Apache-2.0",
66
"os": [

packages/memory-server-bin-win32-x64/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@jongodb/memory-server-bin-win32-x64",
3-
"version": "0.1.4",
3+
"version": "0.1.5",
44
"description": "Native launcher binary for @jongodb/memory-server (win32-x64).",
55
"license": "Apache-2.0",
66
"os": [

0 commit comments

Comments
 (0)