You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: CHANGELOG.md
+5-5Lines changed: 5 additions & 5 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,15 +1,15 @@
1
1
# CHANGELOG
2
2
3
-
> Summary index — current v3.0.0 release-candidate details are in [changelogs/v3.0.0.md](./changelogs/v3.0.0.md); v2.0.7 was never published and remains an audit archive.
4
-
> **Last updated**: 2026-07-13
3
+
> Summary index — current stable v3.0.0 details are in [changelogs/v3.0.0.md](./changelogs/v3.0.0.md); v2.0.7 was never published and remains an audit archive.
4
+
> **Last updated**: 2026-07-14
5
5
6
6
---
7
7
8
8
## Version Overview
9
9
10
10
| Version | Date | Summary | Details |
11
11
|---------|------|---------|---------|
12
-
|[v3.0.0](./changelogs/v3.0.0.md)| 2026-07-10| Major candidate: two-instance preview/apply/restore data tasks, write-path policy, runtime-scoped schema DSL, stricter OCC/sync/query contracts, and release recovery controls |[View](./changelogs/v3.0.0.md)|
12
+
|[v3.0.0](./changelogs/v3.0.0.md)| 2026-07-14| Major: two-instance preview/apply/restore data tasks, write-path policy, runtime-scoped schema DSL, stricter OCC/sync/query contracts, and release recovery controls |[View](./changelogs/v3.0.0.md)|
13
13
|[v2.0.7](./changelogs/v2.0.7.md)| Unpublished | Withdrawn patch candidate; never published and superseded by v3.0.0 |[Archive](./changelogs/v2.0.7.md)|
14
14
|[v2.0.6](./changelogs/v2.0.6.md)| 2026-06-15 | Patch: dependency alignment to `schema-dsl@2.0.11` so downstream frameworks inherit the ESM/CJS shared custom type registry fix |[View](./changelogs/v2.0.6.md)|
15
15
|[v2.0.5](./changelogs/v2.0.5.md)| 2026-06-13 | Patch: Model schema adapter delegates DSL type authority to `schema-dsl@2.0.10`, removing the duplicated monSQLize allowlist while preserving legacy aliases and business literals |[View](./changelogs/v2.0.5.md)|
@@ -451,7 +451,7 @@ const result = await msq.collection('orders').insertOne(dataFromMongoose);
451
451
changelogs/
452
452
├── README.md # 变更文档说明
453
453
├── TEMPLATE.md # 变更文档模板
454
-
├── v3.0.0.md # 当前 Major 候选发布详细变更
454
+
├── v3.0.0.md # 当前 Major 稳定发布详细变更
455
455
├── v2.0.7.md # 从未发布的历史候选归档
456
456
├── v2.0.6.md # v2.0.6 详细变更
457
457
├── v2.0.5.md # v2.0.5 详细变更
@@ -510,7 +510,7 @@ changelogs/
510
510
511
511
## 相关文档
512
512
513
-
-[changelogs/v3.0.0.md](./changelogs/v3.0.0.md) - 当前 Major 候选发布详细变更文档
513
+
-[changelogs/v3.0.0.md](./changelogs/v3.0.0.md) - 当前 Major 稳定发布详细变更文档
Copy file name to clipboardExpand all lines: changelogs/unreleased.md
+4-2Lines changed: 4 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,6 +1,8 @@
1
1
# Unreleased
2
2
3
-
> Current release candidate: [v3.0.0](./v3.0.0.md). This ledger remains the detailed development inventory until v3.0.0 is published; v2.0.7 was never published and is retained only as an archive.
3
+
> No changes are currently recorded after [v3.0.0](./v3.0.0.md). The sections below retain the v3 development inventory for audit history; new work must be added above the archive heading.
4
+
5
+
## v3.0.0 development inventory (released 2026-07-14)
4
6
5
7
## Compatibility-impacting changes
6
8
@@ -19,7 +21,7 @@
19
21
- Fixed Model `autoIndex=true` scheduling to preflight declared indexes with `listIndexes()`, skip matching existing indexes, create only missing indexes, and report conflicts through warning logs / `model-index-error` without destructive index changes.
20
22
- Fixed Batch 1 validation findings: `getDefaults()` now returns isolated deep-frozen snapshots, aggregate `$merge` / `$out` cache tests assert explicit target invalidation instead of implicit broad invalidation, cache invalidation docs list descriptor shapes, and legacy Redis lock wording no longer implies a running Redis service is bundled.
21
23
- Fixed aggregate direct `.toArray()` to honor cache/meta execution paths, extended `find()` ObjectId auto-conversion to comparison operators, forwarded CountQueue abort signals into MongoDB count options, and added a warning when sync idempotency falls back to in-memory storage.
22
-
- Upgraded `schema-dsl` to `2.1.3` and moved Model schema compilation/validation onto a MonSQLize runtime-scoped `schema-dsl/runtime` engine. `schemaDsl` now supports runtime options, extension registration, external runtime injection, explicit validation disablement, and fail-closed dependency resolution diagnostics.
24
+
- Upgraded `schema-dsl` to `2.1.6` and moved Model schema compilation/validation onto a MonSQLize runtime-scoped `schema-dsl/runtime` engine. `schemaDsl` now supports runtime options, extension registration, external runtime injection, explicit validation disablement, and fail-closed dependency resolution diagnostics.
23
25
- Fixed `schemaDsl: { runtime, extensions }` lifecycle handling so injected runtimes register extensions once during `connect()` instead of registering the same factory during construction and reconnect setup.
24
26
- Made injected `schema-dsl/runtime` extension registration idempotent across failed connect retries, close/reconnect cycles, shared external runtime instances, incremental/reordered extension sets, partial extension-registration failures, external runtime resets, and source-stable function-valued definitions. Function fingerprinting now distinguishes closure-sensitive definitions from stable local scopes, including destructuring, nested helpers, templates, class/object methods, private/member access, regex literals, reserved syntax tokens, semicolonless local declarations with and without initializers, and break/continue labels; conflicting closure definitions still surface through schema-dsl.
25
27
- Hardened `schema-dsl/runtime` loading across CJS, ESM, and TypeScript-generated CJS test entry points; extended function fingerprinting for numeric literals and Unicode identifiers; and aligned full-document Model validation, docs, examples, and public type examples with the recommended `schema: (s) => s(...)` DSL callback style.
Copy file name to clipboardExpand all lines: changelogs/v3.0.0.md
+5-3Lines changed: 5 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,7 +1,7 @@
1
1
# monSQLize v3.0.0
2
2
3
-
> Prepared date: 2026-07-13
4
-
> Release status: Prepared, not yet published
3
+
> Release date: 2026-07-14
4
+
> Release status: Released
5
5
> Type: Major
6
6
> Stable predecessor: v2.0.6
7
7
@@ -13,13 +13,14 @@ v3.0.0 consolidates the unpublished v2.0.7 work into a major release. It adds bo
13
13
14
14
### Bounded production data tasks
15
15
16
-
- Added the named `dataTasks` facade and `MonSQLize.dataTasks` static entry with `preview()`, `apply()`, `previewRestore()`, and `restore()` for two independent source/target instances.
16
+
- Added the named `dataTasks` facade with `preview()`, `apply()`, `previewRestore()`, and `restore()` for two independent source/target instances. CommonJS exposes the same root facade through destructuring; it is not an instance API.
- Consolidated data tasks on one `DataTaskJob` contract and the named `dataTasks.preview/apply/previewRestore/restore` service; the unpublished instance runner and step configuration were removed.
19
19
- Consolidated the CLI on `preview`, `apply`, `preview-restore`, and `restore`, with task files directly exporting the same Job configuration.
20
20
- Production apply requires explicit `targetEnvironment`, a durable `backup.dir`, and a non-expired preview approval bound to the job, source, target, and target indexes.
21
21
- Write-task environments are restricted to `development`, `test`, `staging`, `production`, `prod`, or `live`; unknown or misspelled names fail planning instead of silently bypassing production gates.
22
22
- Data task locks use a renewable lease in the target database, coordinate separate processes, and stop writes after ownership is lost.
23
+
- Data task planning uses a bounded stream independent of the public `findLimit`, exact write-time document CAS includes unexpected-field detection, and expired local leases fail closed before another write.
23
24
24
25
### Write-path policy
25
26
@@ -53,6 +54,7 @@ v3.0.0 consolidates the unpublished v2.0.7 work into a major release. It adds bo
53
54
- Runtime dependencies are pinned to `schema-dsl@2.1.6` and `ioredis@5.11.1`; Node 18-compatible test tooling uses `mongodb-memory-server@10.4.3`.
54
55
- The release server matrix now strictly requires MongoDB 7.0.37 and 8.0.26 across standalone, replica-set, Driver 6/7, and DataTask integration paths; unavailable combinations fail release preflight instead of being recorded as a successful skip.
55
56
- Release candidates must be clean, have a valid installed dependency graph, and already exist on `origin`; the same preflight also verifies the docs site and packaged `MIGRATION.md` / `SECURITY.md` consumer guidance.
57
+
- A manual pre-tag authentication workflow verifies the repository's current npm publish credential with `npm whoami` without creating a tag or publishing.
56
58
- Stable Pages deployment separates immutable release-tag content from current release tooling, so historical stable tags can rebuild their tagged docs with the current audited website toolchain and link gate without deploying unpublished branch content; current releases still require the complete website verification chain.
Copy file name to clipboardExpand all lines: docs/en/data-tasks.md
+2Lines changed: 2 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -132,6 +132,8 @@ Preview calls `listIndexes()` first for every target collection and classifies e
132
132
|`data.batchSize`| No |`500`| Write-ahead checkpoint batch size, from `1..10000`|
133
133
|`data.maxDocuments`| No |`10000`| Maximum source documents that the collection may plan |
134
134
135
+
Data task source reads use a bounded internal stream and do not inherit the ordinary `findLimit` default. Planning reads at most `maxDocuments + 1` source documents so concurrent growth fails closed instead of silently truncating or loading an unbounded result.
136
+
135
137
Field edits run in this order: `filter -> projection -> rename -> set -> unset -> diff`. They are deliberately limited to deterministic edits of a few release fields:
136
138
137
139
- Paths cannot touch `_id`, identity fields, or overlap one another.
`release:preflight` verifies that the current `HEAD` exists on `origin`, so it cannot run against an uncommitted or local-only candidate. Before creating the tag, manually confirm both remote CIand the preflight evidence for that exact commit. Preflight itself never creates or pushes a tag.
49
+
`release:preflight` verifies that the current `HEAD` exists on `origin`, so it cannot run against an uncommitted or local-only candidate. Before creating the tag, manually confirm remote CI, preflight evidence, and a successful **Release Authentication Check** run for the current repository. The authentication probe only runs `npm whoami`; it does not create a tag or publish. Preflight itself never creates or pushes a tag.
49
50
50
51
The tag starts the repository preflight and publish workflows. Do not deploy Pages yet. After registry acceptance succeeds, manually run **Deploy Docs to GitHub Pages** with `release_tag=vX.Y.Z`; that workflow checks out the tag and refuses deployment unless tag, `package.json`, and npm registry versions match.
0 commit comments