@rehearsal-db/core 0.1.0-beta.17 → 0.1.0-beta.18

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -5,6 +5,25 @@ a Changelog, and versions will follow Semantic Versioning after the package exis
5
5
 
6
6
  ## Unreleased
7
7
 
8
+ ## [0.1.0-beta.18] - 2026-10-08
9
+
10
+ ### Added
11
+
12
+ - A concise stability contract now defines the supported public surface, defects that
13
+ block the first stable release, and the exact beta-to-RC-to-stable promotion gate.
14
+ - Automated release-policy tests cover beta, release-candidate, stable, malformed, and
15
+ mismatched GitHub release metadata.
16
+
17
+ ### Changed
18
+
19
+ - Protected OIDC publication now supports both prerelease and stable versions. Beta and
20
+ release-candidate versions update `beta`; once a stable version exists they cannot
21
+ replace `latest`. Stable publication updates `latest` without rewriting `beta`.
22
+ - npm channel selection lives only in the protected release workflow instead of static
23
+ package metadata, and missing beta.16 and beta.17 changelog comparisons are restored.
24
+ - Vitest's locked patch release is updated from 5.0.2 to 5.0.3 after the complete CI
25
+ matrix passed.
26
+
8
27
  ## [0.1.0-beta.17] - 2026-10-08
9
28
 
10
29
  ### Added
@@ -525,7 +544,10 @@ a Changelog, and versions will follow Semantic Versioning after the package exis
525
544
  publication uses short-lived trusted OIDC, and every release tag must already exist on
526
545
  protected `main`.
527
546
 
528
- [Unreleased]: https://github.com/Ddupasquier/rehearsal-db/compare/v0.1.0-beta.15...HEAD
547
+ [Unreleased]: https://github.com/Ddupasquier/rehearsal-db/compare/v0.1.0-beta.18...HEAD
548
+ [0.1.0-beta.18]: https://github.com/Ddupasquier/rehearsal-db/compare/v0.1.0-beta.17...v0.1.0-beta.18
549
+ [0.1.0-beta.17]: https://github.com/Ddupasquier/rehearsal-db/compare/v0.1.0-beta.16...v0.1.0-beta.17
550
+ [0.1.0-beta.16]: https://github.com/Ddupasquier/rehearsal-db/compare/v0.1.0-beta.15...v0.1.0-beta.16
529
551
  [0.1.0-beta.15]: https://github.com/Ddupasquier/rehearsal-db/compare/v0.1.0-beta.14...v0.1.0-beta.15
530
552
  [0.1.0-beta.14]: https://github.com/Ddupasquier/rehearsal-db/compare/v0.1.0-beta.13...v0.1.0-beta.14
531
553
  [0.1.0-beta.13]: https://github.com/Ddupasquier/rehearsal-db/compare/v0.1.0-beta.12...v0.1.0-beta.13
package/README.md CHANGED
@@ -155,6 +155,7 @@ Reference:
155
155
  - [Runtime and local identity policies](docs/runtime-policies.md)
156
156
  - [Glossary](docs/glossary.md)
157
157
  - [Repository architecture](docs/architecture.md)
158
+ - [Stability and the first stable release](docs/stability.md)
158
159
  - [Release process](docs/releasing.md)
159
160
 
160
161
  ## Getting support
package/dist/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rehearsal-db/core",
3
- "version": "0.1.0-beta.17",
3
+ "version": "0.1.0-beta.18",
4
4
  "private": false,
5
5
  "description": "Safely rehearse PostgreSQL and Supabase migrations against sanitized, production-shaped data.",
6
6
  "repository": {
@@ -13,7 +13,6 @@
13
13
  "homepage": "https://ddupasquier.github.io/rehearsal-db/",
14
14
  "publishConfig": {
15
15
  "access": "public",
16
- "tag": "beta",
17
16
  "provenance": true
18
17
  },
19
18
  "type": "module",
package/docs/README.md CHANGED
@@ -32,6 +32,7 @@ want to accomplish and follow that path.
32
32
  ## Follow the project
33
33
 
34
34
  - [Roadmap](roadmap.md)
35
+ - [Stability and the first stable release](stability.md)
35
36
  - [Repository architecture](architecture.md)
36
37
  - [Release process](releasing.md)
37
38
 
package/docs/releasing.md CHANGED
@@ -58,16 +58,21 @@ The independent Rehearsal Test Lab is the primary pre-release consumer environme
58
58
  Real product integrations provide additional compatibility evidence; they do not
59
59
  replace the package-owned release gate or Test Lab.
60
60
 
61
- The workflow publishes prereleases under the `beta` dist-tag and refuses a stable
62
- version. While Rehearsal has no stable release, the workflow also moves `latest` to the
63
- same reviewed beta. This keeps the npm package page and the ordinary
64
- `npm install @rehearsal-db/core` command current. When Rehearsal gains a stable release,
65
- `latest` must switch to the stable line while `beta` continues to identify prereleases.
61
+ The workflow publishes beta and release-candidate versions under the `beta` dist-tag.
62
+ While Rehearsal has no stable release, it also moves `latest` to the same reviewed
63
+ prerelease. This keeps the npm package page and the ordinary
64
+ `npm install @rehearsal-db/core` command current. A stable version publishes under
65
+ `latest` without changing `beta`; after that point, later prereleases update only `beta`
66
+ and cannot replace the stable `latest` line. The GitHub prerelease setting must agree
67
+ with the package version or preparation fails.
68
+
69
+ The objective promotion checklist and compatibility boundary live in
70
+ [Stability and the first stable release](stability.md).
66
71
 
67
72
  The trusted publisher allows `npm dist-tag` only so this workflow can maintain those two
68
- tags without a stored npm token. A manual workflow run from `main` can repair the tags
69
- for the exact prerelease version currently recorded in `package.json`; it cannot publish
70
- a package or select a different version. The protected `npm` environment still supplies
73
+ tags without a stored npm token. A manual workflow run from `main` can repair the correct
74
+ channel for the exact version currently recorded in `package.json`; it cannot publish a
75
+ package or select a different version. The protected `npm` environment still supplies
71
76
  the human approval gate.
72
77
 
73
78
  Creating the repository, passing CI, extracting the engine, merging a release branch,
@@ -0,0 +1,69 @@
1
+ # Stability and the first stable release
2
+
3
+ Rehearsal leaves beta when the workflow it already promises is dependable. Stable
4
+ `0.1.0` does not require every planned database, desktop interface, or paid feature.
5
+
6
+ ## What becomes a compatibility promise
7
+
8
+ Starting with `0.1.0`, Rehearsal treats these documented surfaces as public:
9
+
10
+ - CLI command names, flags, JSON result fields, and exit categories in
11
+ [CLI commands](commands.md);
12
+ - `rehearsal.config.mjs` schema version 1 and the policy formats documented in
13
+ [Configuration](configuration.md), [Sanitization](sanitization.md), and
14
+ [Runtime and identity policies](runtime-policies.md);
15
+ - package entry points and generated declarations listed in
16
+ [TypeScript](typescript.md);
17
+ - supported Node.js, operating-system, Docker, Supabase, and PostgreSQL boundaries in
18
+ [COMPATIBILITY.md](https://github.com/Ddupasquier/rehearsal-db/blob/main/COMPATIBILITY.md);
19
+ - non-destructive ownership, confirmation, credential, and hosted-access guarantees in
20
+ [Security model](security-model.md).
21
+
22
+ Patch releases may fix defects and improve messages without changing those contracts.
23
+ A future breaking contract change requires a version that clearly communicates it under
24
+ Semantic Versioning. Internal source files, terminal decoration, exact prose, temporary
25
+ file names, and undocumented package paths are not compatibility promises.
26
+
27
+ ## What blocks a release candidate
28
+
29
+ An issue blocks `0.1.0-rc.1` when it can cause any of the following within a supported
30
+ configuration:
31
+
32
+ - data loss, credential exposure, hosted-system access, or mutation outside resources
33
+ that Rehearsal can prove it owns;
34
+ - an incorrect baseline, migration set, verification result, or successful status;
35
+ - failure of clean installation, supported-version upgrade, restore, reset, cleanup, or
36
+ interruption recovery;
37
+ - a documented CLI, configuration, policy, or TypeScript contract behaving differently
38
+ from its reference;
39
+ - a supported Node.js, Supabase, PostgreSQL, macOS, or Linux path failing its maintained
40
+ automated gate.
41
+
42
+ Cosmetic improvements, new database families, production-shaped sampling, the VS Code
43
+ extension, desktop work, and commercial capabilities do not block the first stable
44
+ release.
45
+
46
+ ## Promotion sequence
47
+
48
+ 1. Ship beta.18 with only stability, release-safety, upgrade, and documentation work.
49
+ 2. Freeze broad feature development on the release branch.
50
+ 3. Publish `0.1.0-rc.1` from protected `main` through the reviewed npm environment.
51
+ 4. Run the complete Rehearsal Test Lab gate twice from clean isolated workspaces.
52
+ 5. Perform one final package-only upgrade in a real consumer. The consumer must use the
53
+ published package rather than duplicate Rehearsal machinery.
54
+ 6. Keep the candidate available for at least seven calendar days. Restart the window if
55
+ a blocking package change is required.
56
+ 7. Publish `0.1.0` only when no blocking issue remains and the accepted registry artifact
57
+ matches the tested artifact exactly.
58
+
59
+ Test Lab is the primary verification system. A real consumer is the final compatibility
60
+ check, not a replacement for package-owned coverage. Real Google or GitHub consent does
61
+ not need to run on every build unless authentication behavior changes.
62
+
63
+ ## npm channels
64
+
65
+ Beta and release-candidate versions publish under the `beta` tag. Before a stable
66
+ release exists, `latest` follows that reviewed prerelease so the ordinary install command
67
+ remains useful. Once stable `0.1.0` exists, `latest` stays on the stable line and `beta`
68
+ continues to identify the newest prerelease. Stable publication never rewrites the
69
+ `beta` tag.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rehearsal-db/core",
3
- "version": "0.1.0-beta.17",
3
+ "version": "0.1.0-beta.18",
4
4
  "private": false,
5
5
  "description": "Safely rehearse PostgreSQL and Supabase migrations against sanitized, production-shaped data.",
6
6
  "repository": {
@@ -13,7 +13,6 @@
13
13
  "homepage": "https://ddupasquier.github.io/rehearsal-db/",
14
14
  "publishConfig": {
15
15
  "access": "public",
16
- "tag": "beta",
17
16
  "provenance": true
18
17
  },
19
18
  "type": "module",