@rehearsal-db/core 0.1.0-beta.8 → 0.1.0-rc.1
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 +364 -1
- package/COMPATIBILITY.md +30 -3
- package/README.md +69 -22
- package/dist/package.json +100 -0
- package/dist/scripts/install/create_root_config.d.mts +3 -0
- package/dist/scripts/install/create_root_config.mjs +13 -0
- package/dist/scripts/runtime/manage_database.d.mts +6 -0
- package/dist/scripts/runtime/manage_database.mjs +16 -0
- package/dist/src/application/interactive_task.d.mts +30 -0
- package/dist/src/application/interactive_task.mjs +83 -0
- package/dist/src/application/session.d.mts +97 -0
- package/dist/src/application/session.mjs +380 -0
- package/dist/src/baseline/artifact.d.mts +119 -0
- package/dist/src/baseline/artifact.mjs +522 -0
- package/dist/src/baseline/builder.d.mts +19 -0
- package/dist/src/baseline/builder.mjs +142 -0
- package/dist/src/baseline/input_discovery.d.mts +13 -0
- package/dist/src/baseline/input_discovery.mjs +149 -0
- package/dist/src/baseline/policy_review.d.mts +56 -0
- package/dist/src/baseline/policy_review.mjs +73 -0
- package/dist/src/baseline/preparation.d.mts +63 -0
- package/dist/src/baseline/preparation.mjs +295 -0
- package/dist/src/baseline/privacy_contract.d.mts +147 -0
- package/dist/src/baseline/privacy_contract.mjs +2 -0
- package/dist/src/baseline/privacy_dependency_graph.d.mts +7 -0
- package/dist/src/baseline/privacy_dependency_graph.mjs +110 -0
- package/dist/src/baseline/privacy_engine.d.mts +5 -0
- package/dist/src/baseline/privacy_engine.mjs +4 -0
- package/dist/src/baseline/privacy_key.d.mts +7 -0
- package/dist/src/baseline/privacy_key.mjs +42 -0
- package/dist/src/baseline/privacy_pipeline.d.mts +7 -0
- package/dist/src/baseline/privacy_pipeline.mjs +127 -0
- package/dist/src/baseline/privacy_policy.d.mts +6 -0
- package/dist/src/baseline/privacy_policy.mjs +237 -0
- package/dist/src/baseline/privacy_recipe_validation.d.mts +5 -0
- package/dist/src/baseline/privacy_recipe_validation.mjs +289 -0
- package/dist/src/baseline/privacy_rule_registry.d.mts +18 -0
- package/dist/src/baseline/privacy_rule_registry.mjs +143 -0
- package/dist/src/baseline/privacy_structured_json.d.mts +66 -0
- package/dist/src/baseline/privacy_structured_json.mjs +464 -0
- package/dist/src/baseline/privacy_transforms.d.mts +18 -0
- package/dist/src/baseline/privacy_transforms.mjs +142 -0
- package/dist/src/baseline/privacy_validation_shared.d.mts +31 -0
- package/dist/src/baseline/privacy_validation_shared.mjs +127 -0
- package/dist/src/baseline/sanitization_policy.d.mts +69 -0
- package/dist/src/baseline/sanitization_policy.mjs +227 -0
- package/dist/src/baseline/schema_snapshot.d.mts +19 -0
- package/dist/src/baseline/schema_snapshot.mjs +79 -0
- package/dist/src/cli/application_command_handlers.d.mts +8 -0
- package/dist/src/cli/application_command_handlers.mjs +52 -0
- package/dist/src/cli/arguments.d.mts +38 -0
- package/dist/src/cli/arguments.mjs +130 -0
- package/dist/src/cli/basic_command_handlers.d.mts +4 -0
- package/dist/src/cli/basic_command_handlers.mjs +57 -0
- package/dist/src/cli/cli_commands.d.mts +14 -0
- package/dist/src/cli/cli_commands.mjs +34 -0
- package/dist/src/cli/command_contract.d.mts +57 -0
- package/dist/src/cli/command_contract.mjs +39 -0
- package/dist/src/cli/command_output.d.mts +12 -0
- package/dist/src/cli/command_output.mjs +20 -0
- package/dist/src/cli/command_registry.d.mts +7 -0
- package/dist/src/cli/command_registry.mjs +14 -0
- package/dist/src/cli/guided.d.mts +53 -0
- package/dist/src/cli/guided.mjs +727 -0
- package/dist/src/cli/identity_command_handlers.d.mts +12 -0
- package/dist/src/cli/identity_command_handlers.mjs +239 -0
- package/dist/src/cli/identity_renderer.d.mts +8 -0
- package/dist/src/cli/identity_renderer.mjs +33 -0
- package/dist/src/cli/init_command.d.mts +21 -0
- package/dist/src/cli/init_command.mjs +90 -0
- package/dist/src/cli/inspection_command_handlers.d.mts +3 -0
- package/dist/src/cli/inspection_command_handlers.mjs +79 -0
- package/dist/src/cli/project_command_handlers.d.mts +11 -0
- package/dist/src/cli/project_command_handlers.mjs +92 -0
- package/dist/src/cli/project_commands.d.mts +283 -0
- package/dist/src/cli/project_commands.mjs +192 -0
- package/dist/src/cli/rehearsal.d.mts +7 -0
- package/dist/src/cli/rehearsal.mjs +190 -0
- package/dist/src/cli/renderers.d.mts +299 -0
- package/dist/src/cli/renderers.mjs +554 -0
- package/dist/src/cli/runtime_action_handlers.d.mts +12 -0
- package/dist/src/cli/runtime_action_handlers.mjs +201 -0
- package/dist/src/cli/runtime_commands.d.mts +294 -0
- package/dist/src/cli/runtime_commands.mjs +619 -0
- package/dist/src/cli/source_command_handlers.d.mts +8 -0
- package/dist/src/cli/source_command_handlers.mjs +62 -0
- package/dist/src/cli/source_commands.d.mts +436 -0
- package/dist/src/cli/source_commands.mjs +301 -0
- package/dist/src/cli/terminal.d.mts +59 -0
- package/dist/src/cli/terminal.mjs +230 -0
- package/dist/src/identity/claim.d.mts +5 -0
- package/dist/src/identity/claim.mjs +4 -0
- package/dist/src/identity/claim_contract.d.mts +135 -0
- package/dist/src/identity/claim_contract.mjs +6 -0
- package/dist/src/identity/claim_executor.d.mts +10 -0
- package/dist/src/identity/claim_executor.mjs +358 -0
- package/dist/src/identity/claim_identity_lookup.d.mts +23 -0
- package/dist/src/identity/claim_identity_lookup.mjs +134 -0
- package/dist/src/identity/claim_plan.d.mts +8 -0
- package/dist/src/identity/claim_plan.mjs +61 -0
- package/dist/src/identity/claim_policy.d.mts +3 -0
- package/dist/src/identity/claim_policy.mjs +377 -0
- package/dist/src/identity/claim_sql.d.mts +10 -0
- package/dist/src/identity/claim_sql.mjs +46 -0
- package/dist/src/identity/claim_verification.d.mts +13 -0
- package/dist/src/identity/claim_verification.mjs +35 -0
- package/dist/src/identity/connect.d.mts +30 -0
- package/dist/src/identity/connect.mjs +111 -0
- package/dist/src/identity/provider_configuration.d.mts +37 -0
- package/dist/src/identity/provider_configuration.mjs +132 -0
- package/dist/src/identity/storage.d.mts +21 -0
- package/dist/src/identity/storage.mjs +122 -0
- package/dist/src/index.d.mts +4 -0
- package/dist/src/index.mjs +3 -0
- package/dist/src/project/configuration.d.mts +13 -0
- package/dist/src/project/configuration.mjs +9 -0
- package/dist/src/project/configuration_contract.d.mts +125 -0
- package/dist/src/project/configuration_contract.mjs +27 -0
- package/dist/src/project/configuration_discovery.d.mts +7 -0
- package/dist/src/project/configuration_discovery.mjs +37 -0
- package/dist/src/project/configuration_normalization.d.mts +107 -0
- package/dist/src/project/configuration_normalization.mjs +302 -0
- package/dist/src/project/configuration_rendering.d.mts +14 -0
- package/dist/src/project/configuration_rendering.mjs +226 -0
- package/dist/src/project/configuration_resolution.d.mts +125 -0
- package/dist/src/project/configuration_resolution.mjs +81 -0
- package/dist/src/project/configuration_schema.d.mts +22 -0
- package/dist/src/project/configuration_schema.mjs +160 -0
- package/dist/src/project/configuration_validation.d.mts +22 -0
- package/dist/src/project/configuration_validation.mjs +136 -0
- package/dist/src/project/install_scaffold.d.mts +42 -0
- package/dist/src/project/install_scaffold.mjs +263 -0
- package/dist/src/project/project_detection.d.mts +14 -0
- package/dist/src/project/project_detection.mjs +47 -0
- package/dist/src/project/setup.d.mts +87 -0
- package/dist/src/project/setup.mjs +414 -0
- package/dist/src/project/support_report.d.mts +88 -0
- package/dist/src/project/support_report.mjs +83 -0
- package/dist/src/runtime/cleanup.d.mts +85 -0
- package/dist/src/runtime/cleanup.mjs +311 -0
- package/dist/src/runtime/lifecycle_engine.d.mts +63 -0
- package/dist/src/runtime/lifecycle_engine.mjs +114 -0
- package/dist/src/runtime/migration_history.d.mts +51 -0
- package/dist/src/runtime/migration_history.mjs +170 -0
- package/dist/src/runtime/plan.d.mts +134 -0
- package/dist/src/runtime/plan.mjs +637 -0
- package/dist/src/runtime/policy.d.mts +66 -0
- package/dist/src/runtime/policy.mjs +369 -0
- package/dist/src/runtime/restore.d.mts +22 -0
- package/dist/src/runtime/restore.mjs +276 -0
- package/dist/src/runtime/service_environment.d.mts +11 -0
- package/dist/src/runtime/service_environment.mjs +58 -0
- package/dist/src/runtime/topology.d.mts +51 -0
- package/dist/src/runtime/topology.mjs +128 -0
- package/dist/src/shared/diagnostics.d.mts +97 -0
- package/dist/src/shared/diagnostics.mjs +170 -0
- package/dist/src/shared/human_output.d.mts +2 -0
- package/{scripts/lib/rehearsal → dist/src/shared}/human_output.mjs +1 -3
- package/dist/src/shared/node_runtime.d.mts +14 -0
- package/dist/src/shared/node_runtime.mjs +25 -0
- package/dist/src/shared/operation_guard.d.mts +22 -0
- package/dist/src/shared/operation_guard.mjs +150 -0
- package/dist/src/shared/process_environment.d.mts +15 -0
- package/dist/src/shared/process_environment.mjs +50 -0
- package/dist/src/source/access.d.mts +165 -0
- package/dist/src/source/access.mjs +602 -0
- package/dist/src/source/asset_transfer.d.mts +27 -0
- package/dist/src/source/asset_transfer.mjs +202 -0
- package/dist/src/source/baseline.d.mts +66 -0
- package/dist/src/source/baseline.mjs +372 -0
- package/dist/src/source/external_reader.d.mts +42 -0
- package/dist/src/source/external_reader.mjs +278 -0
- package/dist/src/source/postgresql_access.d.mts +86 -0
- package/dist/src/source/postgresql_access.mjs +454 -0
- package/dist/src/source/privacy_paths.d.mts +10 -0
- package/dist/src/source/privacy_paths.mjs +27 -0
- package/dist/src/targets/driver.d.mts +2 -0
- package/dist/src/targets/driver.mjs +13 -0
- package/dist/src/targets/postgresql.d.mts +5 -0
- package/dist/src/targets/postgresql.mjs +620 -0
- package/dist/src/targets/supabase.d.mts +8 -0
- package/dist/src/targets/supabase.mjs +627 -0
- package/dist/src/targets/supabase_environment.d.mts +49 -0
- package/dist/src/targets/supabase_environment.mjs +162 -0
- package/dist/src/targets/target.d.mts +33 -0
- package/dist/src/targets/target.mjs +39 -0
- package/docs/README.md +40 -0
- package/docs/adapters.md +15 -6
- package/docs/architecture.md +183 -0
- package/docs/baselines.md +22 -1
- package/docs/commands.md +116 -16
- package/docs/configuration.md +314 -34
- package/docs/getting-started.md +77 -10
- package/docs/glossary.md +4 -0
- package/docs/index.md +48 -0
- package/docs/production-source.md +334 -33
- package/docs/releasing.md +24 -12
- package/docs/roadmap.md +40 -37
- package/docs/runtime-policies.md +264 -0
- package/docs/sanitization.md +592 -8
- package/docs/security-model.md +37 -8
- package/docs/stability.md +69 -0
- package/docs/standalone-workflow.md +130 -0
- package/docs/troubleshooting.md +88 -8
- package/docs/tutorial.md +7 -1
- package/docs/typescript.md +134 -0
- package/package.json +45 -27
- package/types/configuration.d.mts +5 -0
- package/scripts/lib/environment/local_supabase.mjs +0 -197
- package/scripts/lib/rehearsal/baseline_artifact.mjs +0 -565
- package/scripts/lib/rehearsal/baseline_builder.mjs +0 -160
- package/scripts/lib/rehearsal/baseline_preparation.mjs +0 -316
- package/scripts/lib/rehearsal/cleanup.mjs +0 -381
- package/scripts/lib/rehearsal/configuration.d.mts +0 -119
- package/scripts/lib/rehearsal/configuration.mjs +0 -847
- package/scripts/lib/rehearsal/diagnostics.mjs +0 -199
- package/scripts/lib/rehearsal/input_discovery.mjs +0 -155
- package/scripts/lib/rehearsal/migration_history.mjs +0 -220
- package/scripts/lib/rehearsal/plan.mjs +0 -685
- package/scripts/lib/rehearsal/policy_review.mjs +0 -92
- package/scripts/lib/rehearsal/process_environment.mjs +0 -64
- package/scripts/lib/rehearsal/runtime_restore.mjs +0 -314
- package/scripts/lib/rehearsal/sanitization_policy.mjs +0 -279
- package/scripts/lib/rehearsal/schema_snapshot.mjs +0 -113
- package/scripts/lib/rehearsal/service_environment.mjs +0 -82
- package/scripts/lib/rehearsal/setup.mjs +0 -379
- package/scripts/lib/rehearsal/support_report.mjs +0 -102
- package/scripts/lib/runtime/postgresql_runtime.mjs +0 -773
- package/scripts/lib/runtime/runtime_target.mjs +0 -66
- package/scripts/lib/runtime/supabase_runtime.mjs +0 -793
- package/scripts/operations/database/manage_rehearsal_database.mjs +0 -18
- package/scripts/operations/rehearsal/rehearsal_cli.mjs +0 -2169
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,358 @@ a Changelog, and versions will follow Semantic Versioning after the package exis
|
|
|
5
5
|
|
|
6
6
|
## Unreleased
|
|
7
7
|
|
|
8
|
+
## [0.1.0-rc.1] - 2026-10-08
|
|
9
|
+
|
|
10
|
+
### Changed
|
|
11
|
+
|
|
12
|
+
- Promotes the exact beta.18 behavior and documented compatibility surface to the first
|
|
13
|
+
release candidate. No runtime, configuration, policy, CLI, or public TypeScript
|
|
14
|
+
capability changed after beta.18.
|
|
15
|
+
- Broad feature work is frozen while the release candidate completes two independent
|
|
16
|
+
Test Lab passes, one final package-only consumer upgrade, and its observation window.
|
|
17
|
+
|
|
18
|
+
## [0.1.0-beta.18] - 2026-10-08
|
|
19
|
+
|
|
20
|
+
### Added
|
|
21
|
+
|
|
22
|
+
- A concise stability contract now defines the supported public surface, defects that
|
|
23
|
+
block the first stable release, and the exact beta-to-RC-to-stable promotion gate.
|
|
24
|
+
- Automated release-policy tests cover beta, release-candidate, stable, malformed, and
|
|
25
|
+
mismatched GitHub release metadata.
|
|
26
|
+
|
|
27
|
+
### Changed
|
|
28
|
+
|
|
29
|
+
- Protected OIDC publication now supports both prerelease and stable versions. Beta and
|
|
30
|
+
release-candidate versions update `beta`; once a stable version exists they cannot
|
|
31
|
+
replace `latest`. Stable publication updates `latest` without rewriting `beta`.
|
|
32
|
+
- npm channel selection lives only in the protected release workflow instead of static
|
|
33
|
+
package metadata, and missing beta.16 and beta.17 changelog comparisons are restored.
|
|
34
|
+
- Vitest's locked patch release is updated from 5.0.2 to 5.0.3 after the complete CI
|
|
35
|
+
matrix passed.
|
|
36
|
+
|
|
37
|
+
## [0.1.0-beta.17] - 2026-10-08
|
|
38
|
+
|
|
39
|
+
### Added
|
|
40
|
+
|
|
41
|
+
- `rehearsal identity connect` and the guided home screen now keep the sandbox app
|
|
42
|
+
available during ordinary provider sign-in, detect exactly one approved verified local
|
|
43
|
+
identity, show a redacted copied-account preview, and apply the existing exact claim
|
|
44
|
+
after one deliberate confirmation. The app is reopened automatically with an honest
|
|
45
|
+
fresh-session instruction; explicit `identity plan` and `identity claim` commands remain
|
|
46
|
+
available for scripts.
|
|
47
|
+
|
|
48
|
+
## [0.1.0-beta.16] - 2026-10-08
|
|
49
|
+
|
|
50
|
+
### Changed
|
|
51
|
+
|
|
52
|
+
- The CLI now routes guided and scripted requests through focused typed command
|
|
53
|
+
handlers and one result/output contract. The executable retains only process
|
|
54
|
+
lifecycle, project locking, guided-loop coordination, and top-level error handling;
|
|
55
|
+
command-session caches no longer live in public parsed flags.
|
|
56
|
+
- Configuration now passes through separate discovery, raw-schema validation,
|
|
57
|
+
normalization, project-root path resolution, project detection, and starter-rendering
|
|
58
|
+
modules behind the existing import path. Public declarations come from the same
|
|
59
|
+
TypeScript source, including the new `NormalizedRehearsalConfig` type.
|
|
60
|
+
- Installed-consumer verification now shares one scenario catalog, artifact installer,
|
|
61
|
+
isolated workspace boundary, process boundary, and persistent application-session
|
|
62
|
+
helper. The complete release gate runs every scenario against one immutable tarball
|
|
63
|
+
and records its exact version, SHA-256, tool environment, commands, timings, and
|
|
64
|
+
results.
|
|
65
|
+
- Identity policy validation, deterministic claim planning, SQL generation, local Auth
|
|
66
|
+
lookup, pure verification, and transactional execution now live in separate typed
|
|
67
|
+
stages behind the unchanged public claim API. Generated reference SQL is independently
|
|
68
|
+
testable, while only the executor can mutate the local database or Storage runtime.
|
|
69
|
+
- PostgreSQL and Supabase now share one typed runtime lifecycle engine for command
|
|
70
|
+
dispatch, active-baseline loading, migration confirmation and receipts, runtime
|
|
71
|
+
markers, and rollback. Candidate receipts are bound to their exact database target,
|
|
72
|
+
while each driver retains its own ownership proof and database-specific behavior.
|
|
73
|
+
- Privacy policy types, recipe normalization, dependency validation, deterministic
|
|
74
|
+
transforms, structured JSON, rule dispatch, row execution, and key handling now live
|
|
75
|
+
in focused typed stages behind the unchanged public privacy import. An explicit closed
|
|
76
|
+
registry covers every supported action and derivation without widening policy v2.
|
|
77
|
+
|
|
78
|
+
## [0.1.0-beta.15] - 2026-10-08
|
|
79
|
+
|
|
80
|
+
### Added
|
|
81
|
+
|
|
82
|
+
- A strict, no-emit TypeScript gate now checks the first shared runtime utilities and
|
|
83
|
+
verifies that consumers can compile against Rehearsal's public configuration types.
|
|
84
|
+
- The documentation site now explains the supported TypeScript surface with examples
|
|
85
|
+
that are compiled and checked against their rendered documentation source.
|
|
86
|
+
- All shipped implementation and executable-helper source now uses TypeScript. Clean
|
|
87
|
+
builds emit Node-compatible ESM and declarations into the reviewed package boundary,
|
|
88
|
+
and tests exercise that compiled output rather than an alternate source path.
|
|
89
|
+
- The published build omits repository-only JavaScript source maps while retaining
|
|
90
|
+
runtime JavaScript and declarations, keeping the installed package compact.
|
|
91
|
+
|
|
92
|
+
### Fixed
|
|
93
|
+
|
|
94
|
+
- Packed onboarding chooses an available local port block for preserved configuration
|
|
95
|
+
fixtures, so unrelated running Rehearsal projects cannot make the isolation test fail.
|
|
96
|
+
|
|
97
|
+
## [0.1.0-beta.14] - 2026-10-05
|
|
98
|
+
|
|
99
|
+
### Added
|
|
100
|
+
|
|
101
|
+
- Packed-package onboarding is now a required CI job. It covers fresh Supabase and
|
|
102
|
+
PostgreSQL installs, beta.7 configuration preservation, missing credentials, occupied
|
|
103
|
+
ports, malformed configuration, and non-destructive partial-setup recovery.
|
|
104
|
+
- The independent test lab can run the same first-install boundary against an exact
|
|
105
|
+
candidate tarball before either database lifecycle.
|
|
106
|
+
- Installation and setup now report the exact active Rehearsal configuration path and
|
|
107
|
+
explain when a supported existing nested config prevents root-file generation.
|
|
108
|
+
- Packed-package onboarding covers fresh, nested, existing-root, and repeated installs
|
|
109
|
+
while proving reviewed configuration bytes are preserved.
|
|
110
|
+
- Privacy policy version 2 can explicitly treat nullable owners as non-matches and match
|
|
111
|
+
an approved owner through any of a bounded list of pseudonymized identity columns.
|
|
112
|
+
- Bounded JSON unions classify each permitted root type, while JSON dictionaries require
|
|
113
|
+
reviewed runtime-key formats, key actions, value recipes, and item/depth/byte limits.
|
|
114
|
+
- JSON dictionaries can restrict runtime keys to canonical signed integers within an
|
|
115
|
+
explicit safe-integer range, preserving positive, negative, and reviewed zero keys
|
|
116
|
+
without widening numeric maps to arbitrary text.
|
|
117
|
+
- Date shifting can explicitly preserve numeric epoch-millisecond representation,
|
|
118
|
+
including inside structured JSON, while sharing a stable grouped offset with related
|
|
119
|
+
epoch or ISO-string dates.
|
|
120
|
+
- Bounded scalar enums retain only explicitly reviewed structural strings, finite
|
|
121
|
+
numbers, or booleans inside ordinary fields and nested JSON declarations, rejecting
|
|
122
|
+
out-of-domain values without echoing them in diagnostics.
|
|
123
|
+
- Validated strings preserve bounded, case-sensitive structural codes from open domains
|
|
124
|
+
using a package-owned portable alphabet, refusing credential-shaped and malformed
|
|
125
|
+
text without consumer regexes, callbacks, or static identifier lists.
|
|
126
|
+
- Keyed hexadecimal and GTIN pseudonyms preserve reviewed database constraints, while
|
|
127
|
+
fixed-width digest recipes derive fingerprints only from explicitly named sanitized
|
|
128
|
+
columns and reject missing, excluded, duplicate, or cyclic inputs.
|
|
129
|
+
- A single GTIN recipe can declare reviewed `allowedLengths`, preserving each source
|
|
130
|
+
value's 8-, 12-, 13-, or 14-digit shape and check digit even inside structured JSON.
|
|
131
|
+
- Keyed URL pseudonyms replace private HTTPS URLs with deterministic, bounded HTTPS
|
|
132
|
+
loopback paths without retaining source hosts, paths, credentials, queries, or tokens.
|
|
133
|
+
- Bounded binding substitution can retain permitted surrounding text while replacing
|
|
134
|
+
exact occurrences of a reviewed UUID with its corresponding keyed UUID pseudonym.
|
|
135
|
+
- External PostgreSQL readers can declare a bounded exact allowlist of provider-owned
|
|
136
|
+
permission groups. Rehearsal verifies safe membership options, group attributes,
|
|
137
|
+
nesting, view ownership, and the complete effective privilege surface.
|
|
138
|
+
|
|
139
|
+
### Documentation
|
|
140
|
+
|
|
141
|
+
- First-time users now have a short recovery table for interrupted setup, failed
|
|
142
|
+
upgrades, port conflicts, missing OAuth credentials, and low Docker capacity.
|
|
143
|
+
- The configuration guide documents a safe manual move to the project root, separating
|
|
144
|
+
config-file-relative JavaScript imports from project-root-relative Rehearsal paths.
|
|
145
|
+
- The sanitization guide documents nullable and multi-column ownership, heterogeneous
|
|
146
|
+
JSON values, runtime-keyed dictionaries, keyed HTTPS replacements, bounded identity
|
|
147
|
+
substitution, and their fail-closed boundaries.
|
|
148
|
+
|
|
149
|
+
### Fixed
|
|
150
|
+
|
|
151
|
+
- Source preparation now stores and reads each target's access receipt and owner-only
|
|
152
|
+
reader credential under its configured baseline artifact directory. Nested and
|
|
153
|
+
multi-target state roots no longer collide, and retirement refuses a receipt from a
|
|
154
|
+
different target root.
|
|
155
|
+
- Supabase Storage source preparation now recursively traverses real folder placeholder
|
|
156
|
+
entries while keeping the approved prefix, path, depth, object-count, per-object, and
|
|
157
|
+
total-byte boundaries fail closed.
|
|
158
|
+
- Approved-owner selection now rejects non-finite numeric values in every declared
|
|
159
|
+
owner column before choosing a privacy branch, including when another column already
|
|
160
|
+
matches the approved owner.
|
|
161
|
+
- Pseudonymized canonical integer dictionary keys now share the same keyed identity
|
|
162
|
+
mapping as numeric columns and nested numeric values using the same namespace, so
|
|
163
|
+
runtime maps keep their reviewed cross-representation joins.
|
|
164
|
+
- External-reader membership mismatches now return a redacted, actionable source
|
|
165
|
+
authorization refusal instead of an internal-failure diagnostic.
|
|
166
|
+
- All external-reader privilege, expiration, readable-surface, and security-definer
|
|
167
|
+
denials now use the same `SOURCE_AUTHORIZATION_REFUSED` diagnostic and exit code 3.
|
|
168
|
+
- Identity claims now sequence PostgreSQL reads on their single transaction client,
|
|
169
|
+
avoiding deprecated overlapping queries and remaining compatible with pg 9.
|
|
170
|
+
|
|
171
|
+
## [0.1.0-beta.13] - 2026-10-05
|
|
172
|
+
|
|
173
|
+
### Added
|
|
174
|
+
|
|
175
|
+
- Runtime and CI compatibility now cover maintained Node.js 22, 24, and 26 releases;
|
|
176
|
+
Node.js 24 LTS remains the recommended default and release-build runtime.
|
|
177
|
+
- Source access policies can use an externally provisioned, database-expiring
|
|
178
|
+
PostgreSQL reader without administrator credentials. Rehearsal binds canonical export
|
|
179
|
+
view definitions, verifies the complete approved read surface and deny controls, and
|
|
180
|
+
never changes or retires provider-owned source objects.
|
|
181
|
+
- `rehearsal --version`, its conventional `-V` alias, and `rehearsal version` now
|
|
182
|
+
report the installed package version without requiring project configuration.
|
|
183
|
+
- Privacy policy version 2 can use one reviewed identity-aware path mapping for both
|
|
184
|
+
database references and physical Storage destinations. Owner prefixes stay in the
|
|
185
|
+
environment, review plans retain only their hashes, and unsafe or mismatched paths
|
|
186
|
+
fail closed.
|
|
187
|
+
- Related timestamps can share a named deterministic date-shift group, preserving their
|
|
188
|
+
ordering and duration without consumer callbacks.
|
|
189
|
+
- The baseline verification corpus now exercises two unrelated target schemas, a
|
|
190
|
+
10,003-row packed-package stream, concurrent row/schema/ledger changes, malformed and
|
|
191
|
+
truncated results, connection loss, low disk, interruption, and deterministic
|
|
192
|
+
fixed-key output.
|
|
193
|
+
|
|
194
|
+
### Fixed
|
|
195
|
+
|
|
196
|
+
- Baseline preparation now rejects missing, negative, overflowing, malformed, or
|
|
197
|
+
oversized PostgreSQL estimate and cursor results before activation. Every preparation
|
|
198
|
+
failure preserves the active baseline, removes private staging, and leaves an edited
|
|
199
|
+
runtime untouched.
|
|
200
|
+
- Approved-owner UUID columns are no longer confused with PostgreSQL sequence-backed
|
|
201
|
+
identities. Restore checks the actual local schema before resetting a sequence, while
|
|
202
|
+
genuine numeric identity columns retain correct next-value behavior.
|
|
203
|
+
- A failed Storage transfer now recursively restores write permission only within its
|
|
204
|
+
owned staging tree, removes that incomplete generation, and preserves the original
|
|
205
|
+
safe preparation error instead of replacing it with a cleanup error.
|
|
206
|
+
- Storage preparation now records a canonical media type from reviewed object metadata,
|
|
207
|
+
removing response-only parameters such as a text charset that local bucket MIME
|
|
208
|
+
allowlists reject during restore.
|
|
209
|
+
- Container startup and health failures are now classified as runtime dependency
|
|
210
|
+
failures and include safe Docker/Colima capacity context instead of being mislabeled
|
|
211
|
+
as migration verification failures.
|
|
212
|
+
|
|
213
|
+
## [0.1.0-beta.12] - 2026-10-04
|
|
214
|
+
|
|
215
|
+
### Added
|
|
216
|
+
|
|
217
|
+
- Supabase projects can declaratively configure local Google or GitHub OAuth in
|
|
218
|
+
`rehearsal.config.mjs`. Rehearsal derives the credential allowlist, injects only the
|
|
219
|
+
ignored owner-only environment values, and generates the exact loopback callback in
|
|
220
|
+
the disposable runtime without tracking secrets. Local signup requires an explicit
|
|
221
|
+
acknowledgment and is enabled only in that generated runtime copy.
|
|
222
|
+
- Branded, responsive documentation is now hosted on GitHub Pages with searchable
|
|
223
|
+
navigation, light and dark themes, and automatic deployment from `main`.
|
|
224
|
+
- The documentation home page and packaged README show the live monthly npm download
|
|
225
|
+
count and link directly to the npm package.
|
|
226
|
+
- Packed-package onboarding acceptance now proves both fresh root-config creation and a
|
|
227
|
+
real beta.11 upgrade that preserves the user's existing configuration byte for byte.
|
|
228
|
+
|
|
229
|
+
### Changed
|
|
230
|
+
|
|
231
|
+
- The packaged README now links prominently to the hosted documentation, npm package,
|
|
232
|
+
and issue tracker. Package homepage metadata also points to the hosted documentation.
|
|
233
|
+
- GitHub Pages publishing uses the current Node.js 24 action generations without legacy
|
|
234
|
+
runtime warnings.
|
|
235
|
+
- `rehearsal init` now calls out important optional settings that are available but not
|
|
236
|
+
enabled before showing the current installed-release template.
|
|
237
|
+
|
|
238
|
+
### Fixed
|
|
239
|
+
|
|
240
|
+
- Existing Google or GitHub provider sections can transition to declarative ownership
|
|
241
|
+
without editing the tracked Supabase template. Rehearsal replaces only a compatible
|
|
242
|
+
section in the disposable runtime copy, while `doctor` refuses ambiguous or
|
|
243
|
+
safety-weakening provider settings before reset.
|
|
244
|
+
- Multi-target plain-text plans now print each declarative OAuth callback, and `init`
|
|
245
|
+
advertises the declarative replacement even when a project still uses legacy provider
|
|
246
|
+
fields.
|
|
247
|
+
|
|
248
|
+
## [0.1.0-beta.11] - 2026-10-03
|
|
249
|
+
|
|
250
|
+
### Added
|
|
251
|
+
|
|
252
|
+
- Privacy policy version 2 now supports hashed approved-owner bindings, conditional
|
|
253
|
+
approved/other-owner transformations, bounded JSON arrays, nested recipes, and
|
|
254
|
+
explicitly optional object fields without consumer sanitizer callbacks.
|
|
255
|
+
- Local npm installs now create a validated, commented project-root
|
|
256
|
+
`rehearsal.config.mjs`, dedicated local runtime configuration, and additive safe ignore
|
|
257
|
+
entries when exactly one consumer application can be proven. Guided setup remains the
|
|
258
|
+
tested recovery path when lifecycle scripts are disabled or a workspace is ambiguous.
|
|
259
|
+
- Copied-account association accepts explicit verified-email provider allowlists and
|
|
260
|
+
hashed provider-subject matchers for supported Supabase identities. Google, GitHub,
|
|
261
|
+
and email sign-in now share one review-and-confirm claim workflow.
|
|
262
|
+
|
|
263
|
+
### Changed
|
|
264
|
+
|
|
265
|
+
- Setup is idempotent, supported custom config paths are preserved, `.gitignore` updates
|
|
266
|
+
use an exclusive lock and atomic replacement, and `rehearsal init` shows the current
|
|
267
|
+
release template without replacing an existing config.
|
|
268
|
+
|
|
269
|
+
### Fixed
|
|
270
|
+
|
|
271
|
+
- Identity plan JSON no longer serializes the raw approved email or provider subject;
|
|
272
|
+
only the environment-variable name and reviewed SHA-256 receipt leave the process.
|
|
273
|
+
|
|
274
|
+
## [0.1.0-beta.10] - 2026-10-03
|
|
275
|
+
|
|
276
|
+
### Added
|
|
277
|
+
|
|
278
|
+
- `rehearsal open` starts and verifies the configured runtime stack, launches the normal
|
|
279
|
+
application with declared local environment mappings, and keeps it available for
|
|
280
|
+
hands-on testing until interrupted.
|
|
281
|
+
- The guide now offers **Open the sandbox app** after a runtime exists.
|
|
282
|
+
|
|
283
|
+
### Changed
|
|
284
|
+
|
|
285
|
+
- Persistent application sessions stop only their owned application process group on
|
|
286
|
+
`Ctrl+C`, `Ctrl+Z`, terminal close, or termination. The database and Storage runtime
|
|
287
|
+
stay running with local changes preserved across later sessions.
|
|
288
|
+
|
|
289
|
+
### Fixed
|
|
290
|
+
|
|
291
|
+
- `rehearsal open` keeps interruption handling active throughout application teardown,
|
|
292
|
+
so an npm-forwarded `Ctrl+C` cannot terminate the CLI early or orphan the app.
|
|
293
|
+
|
|
294
|
+
## [0.1.0-beta.9] - 2026-10-02
|
|
295
|
+
|
|
296
|
+
### Added
|
|
297
|
+
|
|
298
|
+
- Primary configurations may declare isolated dependent database targets. Rehearsal
|
|
299
|
+
validates unique ownership boundaries, combines migration approval, orders lifecycle
|
|
300
|
+
actions, runs project-owned preparation and proofs, and previews cleanup across the
|
|
301
|
+
complete stack.
|
|
302
|
+
- A packed-package two-target PostgreSQL fixture proves source-to-read-model preparation,
|
|
303
|
+
positive and negative assertions, reverse shutdown, and exact cleanup without a
|
|
304
|
+
project-owned container engine.
|
|
305
|
+
- A separately opted-in, exact-digest PostgreSQL source-access lifecycle with scoped
|
|
306
|
+
temporary roles/views, deny checks, owner-only credentials, and exact retirement.
|
|
307
|
+
- Bounded coherent baseline refresh with executable privacy policy version 2, stable
|
|
308
|
+
keyed pseudonyms, atomic activation, capacity limits, and drift/interruption safety.
|
|
309
|
+
- Approved Supabase Storage inventory/transfer with bucket-prefix, size, path, version,
|
|
310
|
+
and exact-byte controls.
|
|
311
|
+
- Declarative runtime prerequisites and structural checks, plus exact local identity
|
|
312
|
+
association without application callback patches.
|
|
313
|
+
- Package-owned application startup, local environment mapping, readiness, child-process
|
|
314
|
+
teardown, and meaningful positive/negative HTTP proof orchestration.
|
|
315
|
+
- An exact-preview `refresh` command that builds a verified replacement first, resets the
|
|
316
|
+
complete local runtime stack, rolls back on runtime failure, and only then prunes the
|
|
317
|
+
specifically reviewed old baseline generations.
|
|
318
|
+
|
|
319
|
+
### Changed
|
|
320
|
+
|
|
321
|
+
- Shipped source, runtime adapters, repository-only verification, and tests now use a
|
|
322
|
+
domain-based layout with documented placement rules and contract checks.
|
|
323
|
+
- Generated configs include a commented dependent-target example, and the documentation
|
|
324
|
+
explains that avoiding server errors is not a sufficient positive-path proof.
|
|
325
|
+
- Generated configs explain the optional standalone policy paths, direct local runtime
|
|
326
|
+
environment mappings, and application readiness contract.
|
|
327
|
+
- Source, privacy, runtime, identity, onboarding, and security documentation now describe
|
|
328
|
+
the package-owned declarative workflow and its separate authorization boundaries.
|
|
329
|
+
|
|
330
|
+
### Fixed
|
|
331
|
+
|
|
332
|
+
- Supabase restores now install declared schemas and extensions before restoring
|
|
333
|
+
extension-dependent objects, preserve the original `public` schema privilege baseline,
|
|
334
|
+
and add declared triggers only after their functions exist.
|
|
335
|
+
- Supabase runtime environments now include a validated loopback-only database URL and
|
|
336
|
+
standard PostgreSQL variables for package-owned commands.
|
|
337
|
+
- Identity claims can safely replace complete signup defaults, require application role
|
|
338
|
+
references, remap declared text/JSONB and Storage object paths, and verify token-hook
|
|
339
|
+
claims while refusing edited or independent local account data.
|
|
340
|
+
- Baselines and restore checks now identify relations by schema and table, default old
|
|
341
|
+
records to `public`, and restore same-named tables in separate schemas independently.
|
|
342
|
+
- Identity claims can preserve immutable audit authorship while transferring the active
|
|
343
|
+
account, and retain only the synthetic Auth actor required by that history.
|
|
344
|
+
- Storage path transfer now copies through the local Supabase API, verifies exact bytes,
|
|
345
|
+
rolls back staged copies on database failure, and removes the old physical objects
|
|
346
|
+
only after the database commit succeeds.
|
|
347
|
+
- Identity Storage scopes now accept restored objects whose owner is unset, refuse
|
|
348
|
+
conflicting owners, and verify the destination owner before rewriting application
|
|
349
|
+
paths.
|
|
350
|
+
- Runtime-policy seeds may explicitly follow a named identity association, so later
|
|
351
|
+
verification checks the transferred key without recreating an obsolete placeholder
|
|
352
|
+
role.
|
|
353
|
+
- Failed project proofs always report their exit status and bounded output byte counts
|
|
354
|
+
without echoing arbitrary project logs.
|
|
355
|
+
- State-changing commands now use a project-wide operation lock and detect replacement
|
|
356
|
+
of the installed Rehearsal package while an operation is running.
|
|
357
|
+
- Identity claims now refuse to rewrite copied Storage paths when referenced physical
|
|
358
|
+
objects are missing.
|
|
359
|
+
|
|
8
360
|
## [0.1.0-beta.8] - 2026-10-02
|
|
9
361
|
|
|
10
362
|
### Fixed
|
|
@@ -202,7 +554,18 @@ a Changelog, and versions will follow Semantic Versioning after the package exis
|
|
|
202
554
|
publication uses short-lived trusted OIDC, and every release tag must already exist on
|
|
203
555
|
protected `main`.
|
|
204
556
|
|
|
205
|
-
[Unreleased]: https://github.com/Ddupasquier/rehearsal-db/compare/v0.1.0-
|
|
557
|
+
[Unreleased]: https://github.com/Ddupasquier/rehearsal-db/compare/v0.1.0-rc.1...HEAD
|
|
558
|
+
[0.1.0-rc.1]: https://github.com/Ddupasquier/rehearsal-db/compare/v0.1.0-beta.18...v0.1.0-rc.1
|
|
559
|
+
[0.1.0-beta.18]: https://github.com/Ddupasquier/rehearsal-db/compare/v0.1.0-beta.17...v0.1.0-beta.18
|
|
560
|
+
[0.1.0-beta.17]: https://github.com/Ddupasquier/rehearsal-db/compare/v0.1.0-beta.16...v0.1.0-beta.17
|
|
561
|
+
[0.1.0-beta.16]: https://github.com/Ddupasquier/rehearsal-db/compare/v0.1.0-beta.15...v0.1.0-beta.16
|
|
562
|
+
[0.1.0-beta.15]: https://github.com/Ddupasquier/rehearsal-db/compare/v0.1.0-beta.14...v0.1.0-beta.15
|
|
563
|
+
[0.1.0-beta.14]: https://github.com/Ddupasquier/rehearsal-db/compare/v0.1.0-beta.13...v0.1.0-beta.14
|
|
564
|
+
[0.1.0-beta.13]: https://github.com/Ddupasquier/rehearsal-db/compare/v0.1.0-beta.12...v0.1.0-beta.13
|
|
565
|
+
[0.1.0-beta.12]: https://github.com/Ddupasquier/rehearsal-db/compare/v0.1.0-beta.11...v0.1.0-beta.12
|
|
566
|
+
[0.1.0-beta.11]: https://github.com/Ddupasquier/rehearsal-db/compare/v0.1.0-beta.10...v0.1.0-beta.11
|
|
567
|
+
[0.1.0-beta.10]: https://github.com/Ddupasquier/rehearsal-db/compare/v0.1.0-beta.9...v0.1.0-beta.10
|
|
568
|
+
[0.1.0-beta.9]: https://github.com/Ddupasquier/rehearsal-db/compare/v0.1.0-beta.8...v0.1.0-beta.9
|
|
206
569
|
[0.1.0-beta.8]: https://github.com/Ddupasquier/rehearsal-db/compare/v0.1.0-beta.7...v0.1.0-beta.8
|
|
207
570
|
[0.1.0-beta.7]: https://github.com/Ddupasquier/rehearsal-db/compare/v0.1.0-beta.6...v0.1.0-beta.7
|
|
208
571
|
[0.1.0-beta.6]: https://github.com/Ddupasquier/rehearsal-db/compare/v0.1.0-beta.5...v0.1.0-beta.6
|
package/COMPATIBILITY.md
CHANGED
|
@@ -21,7 +21,34 @@ The first stable `1.0.0` requires external beta evidence, a support policy, and
|
|
|
21
21
|
public API. Supporting additional database families, package managers, or operating
|
|
22
22
|
systems is not implied by the 0.x contract.
|
|
23
23
|
|
|
24
|
+
Rehearsal supports maintained even-numbered Node.js release lines that pass its CI
|
|
25
|
+
matrix. Beta.13 supports Node.js 22, 24, and 26; Node.js 24 LTS is the recommended
|
|
26
|
+
default and the release-build runtime. End-of-life and odd-numbered Node.js releases are
|
|
27
|
+
not supported. A future release may remove a Node.js line after its upstream end-of-life
|
|
28
|
+
date, with that change called out in the changelog.
|
|
29
|
+
|
|
30
|
+
The npm install hook may create project scaffolding only when it proves one application
|
|
31
|
+
root. Ordinary npm application installs are covered. A workspace is automatic only when
|
|
32
|
+
one declaring consumer is already visible in its manifest or lockfile; npm can save a
|
|
33
|
+
new `--workspace` declaration after dependency hooks run, so a first workspace install
|
|
34
|
+
may use the guided fallback. pnpm and Yarn install layouts are not yet an
|
|
35
|
+
automatic-generation contract. Run `npx rehearsal` from the application directory for
|
|
36
|
+
all skipped cases. Global, cache, temporary `npx`, and ambiguous multi-application
|
|
37
|
+
workspace installs do not receive files.
|
|
38
|
+
|
|
24
39
|
The PostgreSQL target covers timestamped SQL migrations running in a dedicated local
|
|
25
|
-
`postgres` Docker image.
|
|
26
|
-
|
|
27
|
-
|
|
40
|
+
`postgres` Docker image. Runtime commands reject hosted connection strings and existing
|
|
41
|
+
unmanaged servers. The separately opted-in PostgreSQL preparation boundary may use a
|
|
42
|
+
reviewed, short-lived source reader; this does not make a hosted database a runtime
|
|
43
|
+
target. ORM-specific nested migration formats remain unsupported. Supabase Storage and
|
|
44
|
+
Auth behavior apply only to the Supabase runtime.
|
|
45
|
+
|
|
46
|
+
A primary config may declare flat dependent PostgreSQL or Supabase targets. Each target
|
|
47
|
+
must have its own complete config, immutable baseline, project ID, ports, environment
|
|
48
|
+
file, and artifact directory. Nested dependency graphs and shared runtime ownership are
|
|
49
|
+
not supported.
|
|
50
|
+
|
|
51
|
+
Executable privacy policy version 2, source-access policy version 1, runtime policy
|
|
52
|
+
version 1, and identity policy version 1 are strict declarative contracts. Unknown
|
|
53
|
+
fields fail closed. They do not imply support for arbitrary transformations, SQL,
|
|
54
|
+
provider administration, consent decisions, or every PostgreSQL extension.
|
package/README.md
CHANGED
|
@@ -1,18 +1,28 @@
|
|
|
1
1
|
# Rehearsal
|
|
2
2
|
|
|
3
|
+
[](https://www.npmjs.com/package/@rehearsal-db/core)
|
|
4
|
+
|
|
5
|
+
[Read the documentation](https://ddupasquier.github.io/rehearsal-db/) · [View on npm](https://www.npmjs.com/package/@rehearsal-db/core) · [Report a problem](https://github.com/Ddupasquier/rehearsal-db/issues)
|
|
6
|
+
|
|
3
7
|
Rehearsal tests PostgreSQL and Supabase migrations on your computer before you run them
|
|
4
8
|
anywhere important. It restores safe test data into a disposable local database, applies
|
|
5
9
|
only the migrations you approve, and runs your project's own test command.
|
|
6
10
|
|
|
7
|
-
|
|
8
|
-
|
|
11
|
+
Projects with a separate publication or read-model database can declare it as a
|
|
12
|
+
dependent target. Rehearsal then manages the complete isolated runtime stack.
|
|
13
|
+
|
|
14
|
+
Normal rehearsal commands never connect to a hosted database. An optional, separately
|
|
15
|
+
approved preparation workflow can create a short-lived read-only export surface, stream
|
|
16
|
+
it through a reviewed privacy policy, and retire the access again. It is never part of
|
|
17
|
+
`run`, `reset`, `migrate`, or application launch. Rehearsal is not a backup system or a
|
|
18
|
+
production deployment tool.
|
|
9
19
|
|
|
10
20
|
> Rehearsal is in public beta. Use it on a branch and keep a working backup of your
|
|
11
21
|
> project.
|
|
12
22
|
|
|
13
23
|
## What you need
|
|
14
24
|
|
|
15
|
-
- Node.js 24 and npm
|
|
25
|
+
- Node.js 22, 24, or 26 and npm (Node.js 24 LTS recommended)
|
|
16
26
|
- Docker Desktop, Colima, or another Docker-compatible engine
|
|
17
27
|
- timestamped `.sql` migration files
|
|
18
28
|
- a project test command that can prove the migrated application works
|
|
@@ -31,11 +41,17 @@ npm install --save-dev @rehearsal-db/core@beta
|
|
|
31
41
|
npx rehearsal
|
|
32
42
|
```
|
|
33
43
|
|
|
34
|
-
|
|
35
|
-
`rehearsal.config.mjs`
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
overwritten.
|
|
44
|
+
For an ordinary npm application install, Rehearsal safely creates a commented
|
|
45
|
+
`rehearsal.config.mjs` in the project root, adds only its local-artifact entries to
|
|
46
|
+
`.gitignore`, and prepares the isolated local runtime configuration. It detects the
|
|
47
|
+
project name, database target, migration paths, commands, and free ports. Review lines
|
|
48
|
+
marked `CHECK`, then open the guide. Existing files are never overwritten. If a supported
|
|
49
|
+
root or nested config already exists, Rehearsal reports that active path and does not
|
|
50
|
+
create a competing file; see [Configuration](docs/configuration.md#workspaces-and-custom-paths).
|
|
51
|
+
|
|
52
|
+
If install scripts are disabled or the workspace root is ambiguous, installation makes
|
|
53
|
+
no guess. Run `npx rehearsal` inside the application and choose **Set the stage** for the
|
|
54
|
+
same previewed setup.
|
|
39
55
|
|
|
40
56
|
For PostgreSQL, download the reviewed local image once before running the guide:
|
|
41
57
|
|
|
@@ -45,6 +61,11 @@ docker pull postgres:17-alpine
|
|
|
45
61
|
|
|
46
62
|
Rehearsal itself never downloads a database image during a rehearsal.
|
|
47
63
|
|
|
64
|
+
For local Google or GitHub sign-in, the generated config includes a commented
|
|
65
|
+
`supabase.authentication` example. It names an ignored owner-only credential file;
|
|
66
|
+
Rehearsal generates the provider block and local callback inside the disposable runtime.
|
|
67
|
+
See [Supabase authentication](docs/configuration.md#supabase-authentication).
|
|
68
|
+
|
|
48
69
|
## Three terms you will see
|
|
49
70
|
|
|
50
71
|
- **Baseline:** a locked, safe starting copy of your schema and test data.
|
|
@@ -52,16 +73,28 @@ Rehearsal itself never downloads a database image during a rehearsal.
|
|
|
52
73
|
- **Runtime:** the disposable local database where the rehearsal happens.
|
|
53
74
|
|
|
54
75
|
The baseline may contain synthetic data or properly sanitized production-shaped data.
|
|
55
|
-
Start with synthetic data.
|
|
76
|
+
Start with synthetic data. Real source preparation is opt-in and requires separate
|
|
77
|
+
source-owner approval; see [Standalone workflow](docs/standalone-workflow.md).
|
|
56
78
|
|
|
57
79
|
## The normal workflow
|
|
58
80
|
|
|
59
81
|
1. Run `npx rehearsal`.
|
|
60
|
-
2.
|
|
82
|
+
2. Review the generated local-only configuration, or let the guide create it when the
|
|
83
|
+
install hook safely skipped it.
|
|
61
84
|
3. Review the sanitization policy and create the baseline.
|
|
62
85
|
4. Review the exact candidate migration list.
|
|
63
86
|
5. Run the rehearsal and your application proof.
|
|
64
|
-
6.
|
|
87
|
+
6. Choose **Open the sandbox app** for hands-on testing, then verify, reset, stop, or
|
|
88
|
+
discard the runtime.
|
|
89
|
+
|
|
90
|
+
`npx rehearsal open` starts and verifies the existing local runtime, keeps the configured
|
|
91
|
+
app available until you press `Ctrl+C`, and preserves database and Storage changes for
|
|
92
|
+
the next session.
|
|
93
|
+
|
|
94
|
+
For an approved production-shaped copy, the optional sequence is `source plan`, `source
|
|
95
|
+
apply`, `refresh`, and `source retire`. `refresh` verifies the replacement before it
|
|
96
|
+
resets the local runtime or removes an old copy. Every source-side or identity change has
|
|
97
|
+
its own exact confirmation digest.
|
|
65
98
|
|
|
66
99
|
When local disk space gets tight, choose **Clean up disk space** in the guide. Rehearsal
|
|
67
100
|
previews old baseline generations first and keeps runtime or shared-image removal
|
|
@@ -85,15 +118,16 @@ loads.
|
|
|
85
118
|
|
|
86
119
|
## Supported today
|
|
87
120
|
|
|
88
|
-
| Environment
|
|
89
|
-
|
|
|
90
|
-
| Supabase CLI projects
|
|
91
|
-
| Ordinary PostgreSQL in local Docker
|
|
92
|
-
| macOS and Linux
|
|
93
|
-
| WSL
|
|
94
|
-
| Native Windows
|
|
95
|
-
| Hosted database URLs
|
|
96
|
-
|
|
|
121
|
+
| Environment | Support |
|
|
122
|
+
| ------------------------------------------------ | ---------------------- |
|
|
123
|
+
| Supabase CLI projects | Supported |
|
|
124
|
+
| Ordinary PostgreSQL in local Docker | Supported |
|
|
125
|
+
| macOS and Linux | Supported |
|
|
126
|
+
| WSL | Experimental |
|
|
127
|
+
| Native Windows | Not yet supported |
|
|
128
|
+
| Hosted database URLs | Intentionally rejected |
|
|
129
|
+
| Optional read-only PostgreSQL source preparation | Explicit opt-in beta |
|
|
130
|
+
| MySQL, MongoDB, and other database families | Not yet supported |
|
|
97
131
|
|
|
98
132
|
See [COMPATIBILITY.md](COMPATIBILITY.md) for the exact support contract.
|
|
99
133
|
|
|
@@ -101,6 +135,7 @@ See [COMPATIBILITY.md](COMPATIBILITY.md) for the exact support contract.
|
|
|
101
135
|
|
|
102
136
|
Start here:
|
|
103
137
|
|
|
138
|
+
- [Documentation home](docs/index.md) — choose the shortest path for your goal
|
|
104
139
|
- [Getting started](docs/getting-started.md) — set up your own project
|
|
105
140
|
- [Safe hands-on tutorial](docs/tutorial.md) — try the full flow in a disposable project
|
|
106
141
|
- [Troubleshooting](docs/troubleshooting.md) — fix common setup problems
|
|
@@ -110,12 +145,17 @@ Reference:
|
|
|
110
145
|
|
|
111
146
|
- [CLI commands](docs/commands.md)
|
|
112
147
|
- [Configuration](docs/configuration.md)
|
|
148
|
+
- [TypeScript types](docs/typescript.md)
|
|
113
149
|
- [Baselines](docs/baselines.md)
|
|
114
150
|
- [Sanitization](docs/sanitization.md)
|
|
115
151
|
- [Security model](docs/security-model.md)
|
|
116
152
|
- [Project adapters](docs/adapters.md)
|
|
117
153
|
- [Production data boundary](docs/production-source.md)
|
|
118
|
-
- [
|
|
154
|
+
- [Standalone workflow and security gates](docs/standalone-workflow.md)
|
|
155
|
+
- [Runtime and local identity policies](docs/runtime-policies.md)
|
|
156
|
+
- [Glossary](docs/glossary.md)
|
|
157
|
+
- [Repository architecture](docs/architecture.md)
|
|
158
|
+
- [Stability and the first stable release](docs/stability.md)
|
|
119
159
|
- [Release process](docs/releasing.md)
|
|
120
160
|
|
|
121
161
|
## Getting support
|
|
@@ -133,13 +173,20 @@ problems belong in the private process described in [SECURITY.md](SECURITY.md).
|
|
|
133
173
|
|
|
134
174
|
## For contributors
|
|
135
175
|
|
|
136
|
-
Use Node.js 24, run `npm ci`, then run:
|
|
176
|
+
Use a supported Node.js release (22, 24, or 26), run `npm ci`, then run:
|
|
137
177
|
|
|
138
178
|
```bash
|
|
139
179
|
npm run check
|
|
180
|
+
npm run test:fixture:standalone
|
|
140
181
|
npm run test:fixture:postgresql
|
|
141
182
|
npm run test:fixture
|
|
142
183
|
```
|
|
143
184
|
|
|
144
185
|
The fixture commands install the packed package into clean synthetic projects. They do
|
|
145
186
|
not connect to hosted services. See [CONTRIBUTING.md](CONTRIBUTING.md) for the full rules.
|
|
187
|
+
|
|
188
|
+
Preview the styled documentation site locally with:
|
|
189
|
+
|
|
190
|
+
```bash
|
|
191
|
+
npm run docs:preview
|
|
192
|
+
```
|