@functional-systems/lambdadb-mcp 0.1.6-dev.21 → 0.2.0-dev.2

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
@@ -2,6 +2,20 @@
2
2
 
3
3
  ## Unreleased
4
4
 
5
+ - Gate every publication run on the deployed live smoke: dev builds run all live
6
+ suites against the dev environment before publication, and release
7
+ verification and GitHub Releases run them against production. The project key
8
+ is read from Secrets Manager through a GitHub OIDC role and passed only to the
9
+ test process. `npm run test:live:all` runs every live suite sequentially.
10
+
11
+ - Move releases to trunk-based `main`; `develop` is retired. `main` carries the
12
+ next version as `X.Y.Z-dev.0` (now `0.2.0-dev.0`), and each eligible merge
13
+ publishes `X.Y.Z-dev.N`, where N counts first-parent commits since the newest
14
+ stable tag and restarts after each stable release. A merge that sets an RC or
15
+ stable version is verified without publication, and its GitHub Release
16
+ publishes it. After publication, a workflow opens the next development version
17
+ pull request. `scripts/version.mjs` updates every version source.
18
+
5
19
  - Pin the LambdaDB SDK to 0.10.0. Expand Query/Fetch/List and rerank limits to
6
20
  1000 on supporting servers, retaining facet and collection-list limits of 100.
7
21
  Vector dimensions now require integers from 64 to 4096 and similarity accepts
package/CONTRIBUTING.md CHANGED
@@ -2,9 +2,11 @@
2
2
 
3
3
  ## Branches and validation
4
4
 
5
- Create a focused `feat/*` or `fix/*` branch from current `develop`; open PRs with
6
- `develop` explicitly selected as the base. Keep local credentials and unrelated
7
- changes outside the PR. Use a dedicated worktree when another checkout is in use.
5
+ Create a focused `feat/*` or `fix/*` branch from current `main` and open the PR
6
+ against `main`; maintainers merge it with **Squash and merge**. `main` is the only
7
+ long-lived branch: there are no `develop`, release or hotfix branches. Keep local
8
+ credentials and unrelated changes outside the PR. Use a dedicated worktree when
9
+ another checkout is in use.
8
10
 
9
11
  Use Node.js 22.14.0 or newer. CI verifies the exact minimum 22.14.0 and current
10
12
  22.x and 24.x LTS releases. Node 20 is end-of-life and is no longer supported.
@@ -26,33 +28,40 @@ lifecycle scripts in a temporary consumer directory, and runs the MCP contracts
26
28
  against the installed executable over stdio. An optional tarball argument tests
27
29
  an already packed file without rebuilding it. Fixtures use loopback HTTP and
28
30
  synthetic credentials; they never call a LambdaDB service. Live verification is
29
- separate and requires explicit designation of a development project.
31
+ separate and requires explicit designation of a project. `npm run test:live:all`
32
+ runs every live suite sequentially; the publication job runs it as a deployed
33
+ smoke gate (dev environment for dev builds, production for release verification
34
+ and releases) before any registry write. See RELEASING.md for the gates and how
35
+ to run them locally.
30
36
 
31
- The `CI` workflow in `.github/workflows/publish.yaml` runs for PRs and pushes to
32
- `develop`/`main`, manual validation and published GitHub Releases. Require the
37
+ The `CI` workflow in `.github/workflows/publish.yaml` runs for PRs into and pushes
38
+ to `main`, manual validation and published GitHub Releases. Require the
33
39
  `Node.js 22.14.0`, `Node.js 22` and `Node.js 24` checks in branch protection;
34
40
  replace any old `Node 20*` / `Node 22` / `Node 24` check requirements when adopting
35
41
  this workflow. Branch protection is an administrator setup step, not configured
36
- by this change. Validation has read-only permissions and no service credentials.
42
+ by this change. Validation has read-only permissions and no service credentials;
43
+ only the publication job on `main` pushes and GitHub Releases reads a dedicated
44
+ smoke project key.
37
45
 
38
46
  ## Releases and compatibility
39
47
 
40
- Keep develop's reviewed base in `X.Y.Z-dev.N` form. Automatic dev publication
48
+ Between releases, `main` carries the next version as the `X.Y.Z-dev.0`
49
+ placeholder; CI assigns the published dev number. Automatic dev publication
41
50
  requires separate bootstrap, package-specific npm trust and an explicit repository
42
51
  variable. Setup is complete and `NPM_DEV_PUBLISH_ENABLED=true` as verified on
43
- 2026-09-20 (KST); merging into develop can publish a new dev version after CI
52
+ 2026-09-20 (KST); merging into `main` can publish a new dev version after CI
44
53
  succeeds. PRs and manual workflow runs cannot publish.
45
54
  Follow [RELEASING.md](RELEASING.md) for every publication action.
46
55
 
47
- Prepare rc/stable metadata on a release branch and review it into `main`. Promote
48
- with merge commits to preserve main/develop ancestry. When synchronizing main
49
- back into develop through a PR, include the next dev base. Do not leave stable
50
- metadata on develop, where automatic version generation requires a dev version.
51
- Tags, GitHub Releases and bootstrap publication are explicit maintainer actions.
56
+ A release pull request into `main` sets the rc/stable version and a dated
57
+ changelog entry; its merge is verified without publication. Maintenance releases
58
+ are cut from `main`. Tags, GitHub Releases and bootstrap publication are explicit
59
+ maintainer actions. After a release publishes, review the bot-opened pull request
60
+ that restores the next `X.Y.Z-dev.0` placeholder.
52
61
 
53
62
  Treat environment variables, tool names/schemas, read-only defaults, ref semantics,
54
63
  error handling and supported runtimes as public contracts. Document incompatible
55
64
  changes and validate the installed artifact. Update package.json and both root
56
- package-lock.json versions together with `npm version VERSION --no-git-tag-version`.
65
+ package-lock.json versions together with `node scripts/version.mjs set VERSION`.
57
66
  Do not use prerelease channels as implicit write opt-in. Pin workflow actions to
58
67
  reviewed commit SHAs. Never commit keys, `.env` files or signed URLs.
package/README.md CHANGED
@@ -41,8 +41,9 @@ channel for initial setup. See [release status and policy](RELEASING.md).
41
41
 
42
42
  [MCP 0.1.5](https://github.com/lambdadb/lambdadb-mcp/releases/tag/v0.1.5) is published
43
43
  with LambdaDB SDK `0.8.1`, MCP SDK `1.32.2`, patched dependencies and Kiro/Claude
44
- query-schema compatibility. This checkout starts the next `0.1.6-dev.1` source
45
- base; check npm for the current published dev version. Existing direct MCP
44
+ query-schema compatibility. Releases are now trunk-based on `main`, which carries
45
+ the next version as the `0.2.0-dev.0` placeholder; each eligible merge publishes
46
+ `0.2.0-dev.N`. Check npm for the current published dev version. Existing direct MCP
46
47
  installations need the new MCP version and an agent restart. CLI 0.1.5 still pins
47
48
  MCP 0.1.4 and needs a subsequent CLI release with an updated pin.
48
49
 
@@ -445,7 +446,7 @@ They do not require credentials
445
446
  or create remote collections. `test:package` additionally installs the actual
446
447
  tarball in a clean consumer directory and repeats the tool contracts over real
447
448
  stdio, checking version identity, config errors, stdout and process termination.
448
- CI validates Node 22.14.0, current 22.x and 24.x on PRs and pushes to develop/main.
449
+ CI validates Node 22.14.0, current 22.x and 24.x on PRs into and pushes to main.
449
450
  See [CONTRIBUTING.md](CONTRIBUTING.md) and [RELEASING.md](RELEASING.md) for checks,
450
451
  release policy and the explicitly enabled automatic dev publication gate.
451
452
 
@@ -504,6 +505,13 @@ retrieval scores and actual docsUrl hydration, then deletes and verifies absence
504
505
  These live suites are outside default checks and credential-free CI. Verify the
505
506
  target's deployment provenance before running; the source pin alone is insufficient.
506
507
 
508
+ To run all three live suites one after another with every opt-in, as the
509
+ publication workflow does (see [RELEASING.md](RELEASING.md)):
510
+
511
+ ```bash
512
+ LAMBDADB_RUN_LIVE_TESTS=1 LAMBDADB_RUN_LIVE_RERANK_TESTS=1 LAMBDADB_LIVE_CONFIRM_PROJECT=YOUR_DEV_PROJECT npm run test:live:all
513
+ ```
514
+
507
515
  If the environment file is outside the worktree:
508
516
 
509
517
  ```bash
package/RELEASING.md CHANGED
@@ -1,5 +1,75 @@
1
1
  # Releasing LambdaDB MCP
2
2
 
3
+ ## Release model
4
+
5
+ Releases are trunk-based: `main` is the only long-lived branch and the default
6
+ branch. Every change reaches `main` through a pull request; feature and fix pull
7
+ requests are merged with **Squash and merge**. The organization ruleset
8
+ `protect-main` requires a pull request with one approval (the `dev` team may
9
+ bypass the approval) and blocks deletion and force pushes. There are no
10
+ `develop`, release or hotfix branches; maintenance releases are cut from `main`,
11
+ and anything merged into `main` ships in the next release.
12
+
13
+ | Channel | Committed version | Published version | Trigger | Git tag | npm dist-tag |
14
+ | --- | --- | --- | --- | --- | --- |
15
+ | Development | `X.Y.Z-dev.0` | `X.Y.Z-dev.N` (N ≥ 1, assigned by CI) | `main` push, explicitly enabled | None | dev |
16
+ | Release candidate | `X.Y.Z-rc.N` | `X.Y.Z-rc.N` | Published GitHub prerelease `vX.Y.Z-rc.N` | `vX.Y.Z-rc.N` | rc |
17
+ | Stable | `X.Y.Z` | `X.Y.Z` | Published GitHub release `vX.Y.Z` | `vX.Y.Z` | latest |
18
+
19
+ Between releases, `main` carries the next version with the development
20
+ placeholder `X.Y.Z-dev.0`; number 0 is never published. A release pull request
21
+ sets the RC or stable version, and that exact merge commit on `main` is tagged.
22
+ Published version, committed version and tag agree. Only these canonical forms
23
+ are accepted, without leading zeroes or build suffixes. `package.json` and both
24
+ root lockfile versions must match. MCP initialize reads its version from the
25
+ installed package.json; there is no second version constant. The repository URL
26
+ must identify this exact public GitHub repository.
27
+
28
+ Change every version source at once with the version script. It keeps each
29
+ file's formatting, accepts only committed forms (`X.Y.Z-dev.0`, `X.Y.Z-rc.N`,
30
+ `X.Y.Z`) and fails unless all sources agree afterwards:
31
+
32
+ ```sh
33
+ node scripts/version.mjs get # print the committed version
34
+ node scripts/version.mjs set 0.2.0-rc.1 # release pull request
35
+ node scripts/version.mjs set 0.2.1-dev.0 # next development version
36
+ ```
37
+
38
+ The `CI` workflow (`.github/workflows/publish.yaml`) selects one run mode:
39
+
40
+ - Pull requests into `main` and manual runs: validation only, no credentials
41
+ and no live tests.
42
+ - `main` push with `X.Y.Z-dev.0`: validation, the deployed live smoke against
43
+ the dev environment, then an automatic dev build (see below).
44
+ - `main` push with `X.Y.Z-rc.N` or `X.Y.Z` (a release pull request merge):
45
+ validation plus the publication job's release metadata, changelog, ancestry,
46
+ pack and installed-package checks and the deployed live smoke against
47
+ production, with no publication. Tag only after it passes.
48
+ - Published GitHub Release: the same checks against the tag, including the
49
+ production live smoke, then publication of its RC or stable version.
50
+
51
+ Every publication-job run passes the deployed live smoke (see "Deployed live
52
+ smoke gates") before any registry write; a smoke failure stops the job.
53
+
54
+ After an RC or stable publication succeeds, the "Open next development version"
55
+ workflow (`.github/workflows/next-dev-version.yaml`) opens a pull request that
56
+ restores the placeholder: the same `X.Y.Z-dev.0` after an RC, or the next patch
57
+ `X.Y.(Z+1)-dev.0` after a stable release. Change it with
58
+ `node scripts/version.mjs set` if the next release is a minor or major version,
59
+ then review and merge it. The branch is named after the release tag
60
+ (`chore/next-dev-after-vX.Y.Z-rc.N`), so consecutive RCs each get their own pull
61
+ request. Rerunning the workflow is safe: it reuses an existing branch and opens
62
+ a pull request only when that branch has none in any state.
63
+ Pull requests opened by GitHub Actions do not trigger CI, and `main` requires no
64
+ status checks, so the workflow does not dispatch CI; run the `CI` workflow on the
65
+ branch manually for checks before merging, and the `main` push runs the full
66
+ checks when it merges. The workflow has `contents: write` and
67
+ `pull-requests: write` and never publishes.
68
+
69
+ The release records that follow, through "Historical bootstrap and 0.1.0
70
+ status", are dated records from the earlier develop/main flow and are kept
71
+ unchanged.
72
+
3
73
  ## Current stable release: 0.1.5 (2026-10-25 KST)
4
74
 
5
75
  [v0.1.5](https://github.com/lambdadb/lambdadb-mcp/releases/tag/v0.1.5) tags main
@@ -144,23 +214,15 @@ As verified on **2026-09-20 (KST)**:
144
214
  the `0.1.1-dev.1` base; CI generates its dev counter from first-parent history.
145
215
  Eligible develop pushes can publish the next dev version while leaving
146
216
  `latest` on `0.1.0`.
147
- - See the [validation record](https://github.com/lambdadb/lambdadb-mcp/blob/develop/docs/validation/2026-09-20-npm.md) for package,
217
+ - See the [validation record](https://github.com/lambdadb/lambdadb-mcp/blob/main/docs/validation/2026-09-20-npm.md) for package,
148
218
  provenance, and live-service evidence and their separate scopes.
149
219
 
150
220
  These are dated observations, not fixed channel values. Recheck the registry and
151
221
  repository variable before the next release. The bootstrap and trust sections
152
222
  below describe setup and recovery; they are not outstanding setup tasks.
153
223
 
154
- | Source | Version | Trigger | npm dist-tag |
155
- | --- | --- | --- | --- |
156
- | develop | `X.Y.Z-dev.N` | Successful push validation, explicitly enabled | dev |
157
- | reviewed main history | `X.Y.Z-rc.N` | Published GitHub prerelease `vX.Y.Z-rc.N` | rc |
158
- | reviewed main history | `X.Y.Z` | Published GitHub release `vX.Y.Z` | latest |
159
-
160
- Only these canonical forms are accepted, without leading zeroes or build suffixes.
161
- `package.json` and both root lockfile versions must match. MCP initialize reads
162
- its version from the installed package.json; there is no second version constant.
163
- The repository URL must identify this exact public GitHub repository.
224
+ The release model at the top of this document replaces the earlier develop-based
225
+ channel table.
164
226
 
165
227
  ## Validation and the publication artifact
166
228
 
@@ -192,22 +254,114 @@ failures, protocol-only stdout and termination. They do not prove production
192
254
  service behavior or every MCP client UI. Installed dependencies are resolved by
193
255
  npm (the package's development lockfile is not a consumer dependency lock).
194
256
 
195
- Live tests are optional for PR validation, but release owners must explicitly
196
- record performed or not performed. They require a designated development project,
197
- not merely the presence of an existing `.env.local` or credential. See README
198
- for `LAMBDADB_RUN_LIVE_TESTS=1` and project confirmation. Do not load production
199
- credentials into package/CI tests. Authorized development-project live tests have
200
- passed; the [validation record](https://github.com/lambdadb/lambdadb-mcp/blob/develop/docs/validation/2026-09-20-npm.md) identifies the
257
+ Live tests are not part of PR validation. The publication job runs them as the
258
+ deployed live smoke gate described below. Manual live runs require a designated
259
+ project, not merely the presence of an existing `.env.local` or credential. See
260
+ README for `LAMBDADB_RUN_LIVE_TESTS=1` and project confirmation. Never load
261
+ production credentials into package tests or the validation matrix; only the
262
+ publication job's smoke reads the dedicated production smoke project key.
263
+ Authorized development-project live tests have passed; the
264
+ [validation record](https://github.com/lambdadb/lambdadb-mcp/blob/main/docs/validation/2026-09-20-npm.md) identifies the
201
265
  tested source and installed package. These results do not automatically validate
202
266
  a future release candidate.
203
267
 
268
+ ## Deployed live smoke gates
269
+
270
+ | Run mode | Event | Live target | Variable prefix |
271
+ | --- | --- | --- | --- |
272
+ | None | Pull request, manual run | None (no credentials) | None |
273
+ | `dev` | `main` push with `X.Y.Z-dev.0` | Dev environment, then dev publication | `LAMBDADB_DEV_` |
274
+ | `verify` | `main` push with `X.Y.Z-rc.N` or `X.Y.Z` | Production, verification only | `LAMBDADB_PROD_` |
275
+ | `release` | Published GitHub Release | Production, then publication | `LAMBDADB_PROD_` |
276
+
277
+ `node scripts/version.mjs mode` selects the run mode and its Variable prefix. A
278
+ dev run superseded before preparation (no longer the head of `main`) skips the
279
+ smoke together with publication.
280
+
281
+ After the exact publication artifact passes its installed-package tests, the
282
+ publication job assumes the environment's AWS role through GitHub OIDC and runs
283
+ `node scripts/run-live-smoke.mjs`. The runner fails on missing configuration,
284
+ reads the project API key from Secrets Manager with the AWS CLI, masks it, and
285
+ passes it only in the environment of `npm run test:live:all`. It never puts the
286
+ key in files, command arguments, artifacts or GitHub Secrets, and loads no
287
+ dotenv file (`LAMBDADB_ENV_FILE=/dev/null`). It sets every opt-in
288
+ (`LAMBDADB_RUN_LIVE_TESTS=1`, `LAMBDADB_RUN_LIVE_RERANK_TESTS=1`,
289
+ `LAMBDADB_MCP_ENABLE_WRITE_TOOLS=true` and `LAMBDADB_LIVE_CONFIRM_PROJECT` set
290
+ to the project name), and each suite fails rather than skips without them.
291
+
292
+ `test:live:all` builds once and runs `live`, `rerank-live` and `bayesian-live`
293
+ one file at a time (`--test-concurrency=1`); concurrent bulk writes can exceed
294
+ the project's writer capacity and return HTTP 429. Each suite creates its own
295
+ temporary collection, deletes it in cleanup and verifies its absence. The rerank
296
+ and Bayesian suites incur real embedding and reranking inference. The
297
+ publication job allows 60 minutes for these suites.
298
+
299
+ Each smoke target uses these repository Variables. A missing Variable is empty
300
+ and fails the run; it never falls back to the other environment.
301
+
302
+ | Variable | Value |
303
+ | --- | --- |
304
+ | `LAMBDADB_DEV_BASE_URL` | `https://internal-dev-aws-apne2-v3-c05a2b5d492a.lambdadb.ai` |
305
+ | `LAMBDADB_DEV_PROJECT_NAME` | Dedicated MCP smoke project in `dev-aws-apne2-v3` (`mcp-ci`) |
306
+ | `LAMBDADB_DEV_SMOKE_AWS_ROLE_ARN` | Dev AWS OIDC role ARN (`lambdadb-mcp-smoke`) |
307
+ | `LAMBDADB_DEV_SMOKE_SECRET_ARN` | Exact ARN of the dev project's API key secret |
308
+ | `LAMBDADB_PROD_BASE_URL` | `https://aws-ap-northeast-2-v3.lambdadb.ai` |
309
+ | `LAMBDADB_PROD_PROJECT_NAME` | Dedicated MCP smoke project in `prod-aws-apne2-v3` (`mcp-ci`) |
310
+ | `LAMBDADB_PROD_SMOKE_AWS_ROLE_ARN` | Production AWS OIDC role ARN (`lambdadb-mcp-prod-smoke`) |
311
+ | `LAMBDADB_PROD_SMOKE_SECRET_ARN` | Exact ARN of the production project's API key secret |
312
+
313
+ Each key is a plain SecretString in `ap-northeast-2`. Each project is dedicated
314
+ to this smoke, where temporary collections may be created and deleted, with a
315
+ `rateLimit` of at least 100 requests per second. Each role trusts audience
316
+ `sts.amazonaws.com` and only these subjects; the dev role:
317
+
318
+ ```text
319
+ repo:lambdadb/lambdadb-mcp:ref:refs/heads/main
320
+ ```
321
+
322
+ The production role (release verification on `main`, Releases on tags):
323
+
324
+ ```text
325
+ repo:lambdadb/lambdadb-mcp:ref:refs/heads/main
326
+ repo:lambdadb/lambdadb-mcp:ref:refs/tags/v*
327
+ ```
328
+
329
+ Each role may only call `secretsmanager:GetSecretValue` on its own environment's
330
+ smoke secret (plus `kms:Decrypt` on the exact key if a customer-managed KMS key
331
+ is used). Do not grant the workflow an admin key, project creation, deployment
332
+ or secret write permissions. Provisioning the roles, projects, keys and
333
+ Variables is a separate environment setup step; key rotation updates the secret
334
+ without changing the workflow. A smoke failure caused by a server change not yet
335
+ deployed to production blocks verification and release; record the exact error.
336
+
337
+ To run the same suite locally against a designated project, use AWS credentials
338
+ that can read its smoke secret. Outside GitHub Actions the runner prints no mask
339
+ command, so the key is never printed:
340
+
341
+ ```sh
342
+ npm ci
343
+ AWS_PROFILE=YOUR_PROFILE LAMBDADB_BASE_URL=https://... LAMBDADB_PROJECT_NAME=mcp-ci \
344
+ LAMBDADB_SMOKE_SECRET_ARN=arn:aws:secretsmanager:... node scripts/run-live-smoke.mjs
345
+ ```
346
+
347
+ With credentials in `.env.local` (including `LAMBDADB_MCP_ENABLE_WRITE_TOOLS=true`)
348
+ instead, set the opt-ins yourself:
349
+
350
+ ```sh
351
+ LAMBDADB_RUN_LIVE_TESTS=1 LAMBDADB_RUN_LIVE_RERANK_TESTS=1 \
352
+ LAMBDADB_LIVE_CONFIRM_PROJECT=YOUR_PROJECT npm run test:live:all
353
+ ```
354
+
355
+ Record the environment, MCP commit, duration, outcome and cleanup result. A
356
+ source revision alone does not establish the deployed server revision.
357
+
204
358
  ## First package publication: separate manual bootstrap
205
359
 
206
360
  npm trust configuration requires an existing package. See the official
207
361
  [npm trust prerequisites](https://docs.npmjs.com/cli/v11/commands/npm-trust/).
208
362
  The TypeScript SDK's or CLI's trust settings do not cover this package.
209
363
 
210
- 1. Review and merge preparation, validate a clean reviewed develop candidate,
364
+ 1. Review and merge preparation, validate a clean reviewed candidate,
211
365
  and confirm its version is the real bootstrap prerelease `0.1.0-dev.1`.
212
366
  2. Obtain authorization for first publication. An authorized npm
213
367
  `functional-systems` organization owner uses interactive `npm login` with MFA,
@@ -251,46 +405,71 @@ The workflow uses a GitHub-hosted runner, Node 24, npm >=11.5.1,
251
405
  `id-token: write` only in the publication job, public access and provenance.
252
406
  It has no npm token secret. See [npm Trusted Publishing](https://docs.npmjs.com/trusted-publishers/).
253
407
 
254
- ## Enable automatic dev publication: a separate authorization
408
+ ## Automatic dev publication: a separate authorization
255
409
 
256
410
  Leave repository variable `NPM_DEV_PUBLISH_ENABLED` unset or false through
257
- bootstrap and trust setup. Only after authorizing ongoing develop publication,
258
- set it to `true` in GitHub **Settings → Secrets and variables → Actions → Variables**.
411
+ bootstrap and trust setup. Only after authorizing ongoing dev publication, set it
412
+ to `true` in GitHub **Settings → Secrets and variables → Actions → Variables**.
259
413
  This repository completed that activation; the variable was verified as `true` on
260
- 2026-09-20 (KST). The next eligible develop push, or a rerun of its existing push
261
- workflow, can publish. `workflow_dispatch`, PRs and main
262
- pushes validate only. Disable the variable to stop future automatic publication;
263
- do not cancel an in-progress registry write as rollback.
264
-
265
- The generator reuses the CLI's first-parent strategy: for a reviewed base
266
- `X.Y.Z-dev.N`, set N to `git rev-list --first-parent --count HEAD` from a full
267
- checkout. Numbers can have gaps; reruns of the same commit generate the same
268
- version. Disable force pushes/history rewrites. Generated package/lock versions
269
- and gitHead exist only in the runner; no version commits, tags or GitHub Releases
270
- are created for dev builds. Review a new base when starting another release line.
271
-
272
- Remote develop HEAD is checked before preparation and immediately before the
273
- write. Stale jobs and versions older than the current channel are skipped.
274
- All publication jobs share non-cancelling concurrency so registry writes do not
275
- race. A newer pending job can replace an older pending job; this does not promise
276
- a package for every rapid merge. Re-run an explicit release if it was superseded
277
- in the pending queue and still needs publication.
414
+ 2026-09-20 (KST). With it set, a reviewed `main` push whose committed version is
415
+ `X.Y.Z-dev.0` publishes after validation and the dev live smoke pass, and a
416
+ rerun of its existing push workflow can publish. Pull requests, manual runs and
417
+ release verification never publish. Disable the variable to stop future
418
+ automatic publication; the job then still prepares and tests the dev artifact
419
+ and runs the dev live smoke without a registry write. Do not cancel
420
+ an in-progress registry write as rollback.
421
+
422
+ The workflow checks out the exact push SHA and publishes `X.Y.Z-dev.N`, where N
423
+ is the number of first-parent commits on `main` since the newest stable release
424
+ tag (`vA.B.C`) reachable from that commit, or since the root commit when there is
425
+ none. N is the same on every rerun of a commit, restarts at 1 after each stable
426
+ release, and keeps increasing across the RCs of one version. Preparation fails
427
+ unless `X.Y.Z` is newer than the newest stable tag, so a missed next-version
428
+ change cannot publish a lower version, and fails for any committed dev version
429
+ other than the `-dev.0` placeholder. Generated package/lock versions and
430
+ `gitHead` (the source commit) exist only in the runner; no version commits, tags
431
+ or GitHub Releases are created for dev builds. Disable force pushes/history
432
+ rewrites; numbers can have gaps when pushes are superseded.
433
+
434
+ The earlier develop flow numbered dev builds by all first-parent commits on
435
+ `develop` (last published: `0.1.6-dev.21`). The trunk-based `main` starts at
436
+ `0.2.0-dev.0`, so its dev builds sort above every earlier dev build and the next
437
+ release is 0.2.0 unless a release pull request chooses otherwise.
438
+
439
+ Remote `main` HEAD is checked before preparation and immediately before the
440
+ write; a commit that is no longer the head of `main` is skipped. Versions older
441
+ than the current channel are skipped. A version already published from the same
442
+ commit and artifact is skipped as `already-published`; the same version from a
443
+ different commit fails. All publication jobs share non-cancelling concurrency so
444
+ registry writes do not race. A newer pending job can replace an older pending
445
+ job; this does not promise a package for every rapid merge. Re-run an explicit
446
+ release if it was superseded in the pending queue and still needs publication.
278
447
 
279
448
  ## Explicit rc/stable publication
280
449
 
281
- 1. Prepare matching package/lock metadata and a dated
282
- `## [VERSION] - YYYY-MM-DD` changelog entry on a release branch. Review into
283
- main and retain validation/live-test status for the candidate.
284
- 2. Ensure `publish.yaml` exists on the default branch (`main`). The dev push
285
- path does not require that promotion, but GitHub Release handling does.
286
- 3. Obtain authorization, tag the verified main commit as `vVERSION`, and publish
287
- the GitHub Release with `prerelease: true` for rc or `false` for stable.
288
- Draft releases do not publish. Do not create a dev GitHub Release.
450
+ 1. Open a release pull request into `main` that sets the version with
451
+ `node scripts/version.mjs set X.Y.Z-rc.N` (or `X.Y.Z`) and adds a dated
452
+ `## [VERSION] - YYYY-MM-DD` changelog entry. Retain validation/live-test
453
+ status for the candidate.
454
+ 2. Merge it. That `main` push runs the publication job in verification mode:
455
+ release metadata, changelog and ancestry checks, one pack, the
456
+ installed-package tests and the production live smoke, with no publication. Do not merge other pull
457
+ requests until the release is tagged, or tag the release pull request's merge
458
+ commit explicitly.
459
+ 3. After verification passes, obtain authorization, tag that exact merge commit
460
+ on `main` as `vVERSION`, and publish the GitHub Release with
461
+ `prerelease: true` for rc or `false` for stable. Draft releases do not
462
+ publish. Do not create a dev GitHub Release.
289
463
  4. The workflow validates the release tag, package versions, prerelease flag,
290
- changelog and ancestry in origin/main; it packs/tests once and publishes the
291
- exact file to rc/latest with OIDC and provenance. A successful CI run alone
292
- is not publication evidence. Verify npm and synchronize release changes into
293
- develop with its next dev base via PR.
464
+ changelog and ancestry in origin/main; it packs/tests once, runs the
465
+ production live smoke and publishes the exact file to rc/latest with OIDC
466
+ and provenance. A successful CI run alone
467
+ is not publication evidence. Verify npm.
468
+ 5. Review and merge the next development version pull request opened by the
469
+ "Open next development version" workflow (see the release model above).
470
+
471
+ Address RC feedback in new pull requests into `main` and release the next RC
472
+ number. Never reuse a published version or move its tag.
294
473
 
295
474
  ## Duplicate prevention, registry lag and recovery
296
475
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@functional-systems/lambdadb-mcp",
3
- "version": "0.1.6-dev.21",
3
+ "version": "0.2.0-dev.2",
4
4
  "private": false,
5
5
  "description": "MCP server for LambdaDB data plane",
6
6
  "type": "module",
@@ -14,6 +14,7 @@
14
14
  "test:live:bayesian": "npm run build && bash ./scripts/with-env.sh --test test/integration/bayesian-live.test.mjs",
15
15
  "test:live:rerank": "npm run build && bash ./scripts/with-env.sh --test test/integration/rerank-live.test.mjs",
16
16
  "test:live": "npm run build && bash ./scripts/with-env.sh --test test/integration/live.test.mjs",
17
+ "test:live:all": "npm run build && bash ./scripts/with-env.sh --test --test-concurrency=1 test/integration/live.test.mjs test/integration/rerank-live.test.mjs test/integration/bayesian-live.test.mjs",
17
18
  "dev": "tsx watch src/index.ts",
18
19
  "inspect": "bash ./scripts/inspect.sh",
19
20
  "start": "node dist/index.js",
@@ -62,5 +63,5 @@
62
63
  "access": "public",
63
64
  "registry": "https://registry.npmjs.org"
64
65
  },
65
- "gitHead": "c5d5db50c93d51be066b9586445c5c649f7f8a2a"
66
+ "gitHead": "34797abe6de6ca95d9a8f2d8b7238086dd19f38c"
66
67
  }