From e0fcc1455382dd797de052f2e29bf3c0e4fefe80 Mon Sep 17 00:00:00 2001 From: Claude Date: Sat, 5 Sep 2026 17:20:19 +0000 Subject: [PATCH 1/2] fix(triggers): point repository.directory at the directory the trigger packages actually live in `@objectstack/trigger-record-change` and `@objectstack/trigger-schedule` both declared a `repository.directory` under `packages/plugins/` that does not exist in this repository, so the "Repository" deep link on their npm pages resolves to a 404 instead of to their source. Both are published at 17.3.0. @objectstack/trigger-record-change was packages/plugins/plugin-trigger-record-change now packages/triggers/trigger-record-change @objectstack/trigger-schedule was packages/plugins/plugin-trigger-schedule now packages/triggers/trigger-schedule Residue of two same-day renames, not one: `plugin-trigger-*` -> `trigger-*` inside `packages/plugins/` broke the first segment, and the later promotion of `packages/plugins/trigger-*` to a first-class `packages/triggers/` directory broke the second. Both were pure directory renames with zero content changes, so nothing rewrote the field. Scope as a measured set, not a general claim: across all 81 tracked package.json files, 57 declare `repository.directory`; 55 resolved to the manifest's own directory before this change and 57 of 57 resolve after it. The 24 manifests that declare no `repository.directory` at all are untouched here. ADR-0041's `## References` section carried the same dead path as a source pointer and is corrected with it. The rename table earlier in that record (`plugin-trigger-record-change` -> `@objectstack/trigger-record-change`) is the decision's own history and is deliberately left as written. The corrected value ships inside the npm tarball, so it reaches readers only by being published: a patch changeset accompanies the fix rather than `skip-changeset`. Co-Authored-By: Claude Opus 5 Claude-Session: https://claude.ai/code/session_01XpTx2tbq3pZRYAdoGt6E6Y --- ...ger-packages-repository-directory-15478.md | 19 +++++++++++++++++++ docs/adr/0041-flow-trigger-family.md | 4 ++-- .../trigger-record-change/package.json | 2 +- .../triggers/trigger-schedule/package.json | 2 +- 4 files changed, 23 insertions(+), 4 deletions(-) create mode 100644 .changeset/trigger-packages-repository-directory-15478.md diff --git a/.changeset/trigger-packages-repository-directory-15478.md b/.changeset/trigger-packages-repository-directory-15478.md new file mode 100644 index 0000000000..fdc596f6a4 --- /dev/null +++ b/.changeset/trigger-packages-repository-directory-15478.md @@ -0,0 +1,19 @@ +--- +"@objectstack/trigger-record-change": patch +"@objectstack/trigger-schedule": patch +--- + +`@objectstack/trigger-record-change` and `@objectstack/trigger-schedule` now declare a `repository.directory` that resolves to the directory they actually live in. + +Both manifests declared a path under `packages/plugins/` that no longer exists in the repository: + +| package | declared | actual | +|---|---|---| +| `@objectstack/trigger-record-change` | `packages/plugins/plugin-trigger-record-change` | `packages/triggers/trigger-record-change` | +| `@objectstack/trigger-schedule` | `packages/plugins/plugin-trigger-schedule` | `packages/triggers/trigger-schedule` | + +`repository.directory` is what npm uses to build the **Repository** deep link on a package page, and what tooling uses to locate a monorepo package's source from its tarball. Pointing it at a path that does not exist sends a reader to a 404 instead of to the source — on packages published today at `17.3.0`. The value ships inside the tarball, so this correction only reaches npm by being published; that is why it carries a changeset rather than `skip-changeset`. + +The residue is from two renames landed the same day, not one: `plugin-trigger-*` → `trigger-*` inside `packages/plugins/` first made the declared value wrong, and the later promotion of `packages/plugins/trigger-*` to a first-class `packages/triggers/` directory made it wrong in a second segment. Both were pure directory renames that changed no file contents, so nothing rewrote the field. + +Scope of this change, stated as a measured set rather than a general claim: over all **81** tracked `package.json` files in the repository, **57** declare `repository.directory`; before this change **55** resolved to the manifest's own directory and **2** did not — the two above. After it, **57 of 57** resolve. No other manifest field is edited, and no package's code, exports or behaviour is touched. The remaining **24** manifests declare no `repository.directory` at all; that population is deliberately left alone here and is reported separately, because whether declaring the field is mandatory is a policy question rather than a correction. diff --git a/docs/adr/0041-flow-trigger-family.md b/docs/adr/0041-flow-trigger-family.md index 35a61f8c92..9016f38ff5 100644 --- a/docs/adr/0041-flow-trigger-family.md +++ b/docs/adr/0041-flow-trigger-family.md @@ -191,8 +191,8 @@ other contract-ahead-of-runtime surfaces. - Engine seam: `packages/services/service-automation/src/engine.ts` (`FlowTrigger`, `registerTrigger`, `activateFlowTrigger`) -- Shipped triggers: `packages/plugins/plugin-trigger-record-change`, - `packages/plugins/plugin-trigger-schedule` +- Shipped triggers: `packages/triggers/trigger-record-change`, + `packages/triggers/trigger-schedule` - Reserved surface: `FlowSchema.type` enum (`packages/spec/src/automation/flow.zod.ts`) - Auto-wiring: `packages/cli/src/commands/serve.ts` (trigger `nameMatch` table) - Related: ADR-0018 (descriptor pattern this extends), ADR-0030 (outbox), diff --git a/packages/triggers/trigger-record-change/package.json b/packages/triggers/trigger-record-change/package.json index 74ea8b3a37..52cca9e261 100644 --- a/packages/triggers/trigger-record-change/package.json +++ b/packages/triggers/trigger-record-change/package.json @@ -42,7 +42,7 @@ "repository": { "type": "git", "url": "https://github.com/objectstack-ai/objectstack.git", - "directory": "packages/plugins/plugin-trigger-record-change" + "directory": "packages/triggers/trigger-record-change" }, "homepage": "https://objectstack.ai/docs", "bugs": "https://github.com/objectstack-ai/objectstack/issues", diff --git a/packages/triggers/trigger-schedule/package.json b/packages/triggers/trigger-schedule/package.json index ebfe7200d7..0a13f5c6f2 100644 --- a/packages/triggers/trigger-schedule/package.json +++ b/packages/triggers/trigger-schedule/package.json @@ -41,7 +41,7 @@ "repository": { "type": "git", "url": "https://github.com/objectstack-ai/objectstack.git", - "directory": "packages/plugins/plugin-trigger-schedule" + "directory": "packages/triggers/trigger-schedule" }, "homepage": "https://objectstack.ai/docs", "bugs": "https://github.com/objectstack-ai/objectstack/issues", From 06409ff97605c837dedaeb222d63647361317001 Mon Sep 17 00:00:00 2001 From: Claude Date: Sat, 5 Sep 2026 18:08:27 +0000 Subject: [PATCH 2/2] =?UTF-8?q?docs(changeset):=20correct=20the=20residue?= =?UTF-8?q?=20account=20=E2=80=94=20a=20copy=20edited=20`name`,=20and=20a?= =?UTF-8?q?=20later=20commit=20edited=20the=20adjacent=20`url`?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The shipped changeset claimed the stale `repository.directory` survived two pure renames and that "nothing rewrote the field". Measured, that is false in three ways, and the true account is a stronger argument for a mechanical check rather than a weaker one. f15d6f6f6 NOT a rename: a 26-file copy, +2222/-19, with all four trigger directories briefly coexisting. Each copied manifest differs from its original in exactly one line -- `name` -- so this commit edited the manifest and left `directory` stale. 290c62514 deleted the originals five minutes later. ea4941ad8 the only pure rename: 16 files, 0 insertions, 0 deletions. 9a43e042f six weeks later, rewrote `repository.url` and `bugs` in both of these manifests. The stale `directory` line sits as unchanged context ONE LINE BELOW the edited `url`. The last point is the one worth the correction. "Nothing rewrote the field" reads as the field never having been in anyone's way; in fact an author edited its immediate neighbour inside the same JSON object and the dead line was on screen in a reviewed hunk. A rule is more clearly needed when a human looked at the line and still missed it, so this strengthens the case on the gate card. No code change: the four-line metadata fix is unchanged and its verification still stands. This commit corrects prose only, in the file that ships to release notes. Co-Authored-By: Claude Opus 5 Claude-Session: https://claude.ai/code/session_01XpTx2tbq3pZRYAdoGt6E6Y --- .changeset/trigger-packages-repository-directory-15478.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.changeset/trigger-packages-repository-directory-15478.md b/.changeset/trigger-packages-repository-directory-15478.md index fdc596f6a4..e738f25c0d 100644 --- a/.changeset/trigger-packages-repository-directory-15478.md +++ b/.changeset/trigger-packages-repository-directory-15478.md @@ -14,6 +14,6 @@ Both manifests declared a path under `packages/plugins/` that no longer exists i `repository.directory` is what npm uses to build the **Repository** deep link on a package page, and what tooling uses to locate a monorepo package's source from its tarball. Pointing it at a path that does not exist sends a reader to a 404 instead of to the source — on packages published today at `17.3.0`. The value ships inside the tarball, so this correction only reaches npm by being published; that is why it carries a changeset rather than `skip-changeset`. -The residue is from two renames landed the same day, not one: `plugin-trigger-*` → `trigger-*` inside `packages/plugins/` first made the declared value wrong, and the later promotion of `packages/plugins/trigger-*` to a first-class `packages/triggers/` directory made it wrong in a second segment. Both were pure directory renames that changed no file contents, so nothing rewrote the field. +The residue came from a three-commit sequence on 2026-06-12, and only one of those commits was a pure rename. `f15d6f6f6` **copied** the two packages to `packages/plugins/trigger-*` (26 files, +2222/-19, with all four directories briefly coexisting) and edited exactly one line of each copied manifest — its `name` — leaving `directory` pointing at the path it was copied from; `290c62514` deleted the originals five minutes later; and `ea4941ad8` then promoted `packages/plugins/trigger-*` to a first-class `packages/triggers/` directory as a pure 16-file rename with zero content changes, which made the declared value wrong in a second segment. Six weeks after that, `9a43e042f` (#3380) rewrote `repository.url` and `bugs` in both of these manifests, with the stale `directory` line sitting as unchanged context one line below the edited `url`. So the field was not merely never in anyone's way: one commit edited its immediate neighbour inside the same object, and a later reviewed hunk had the wrong line on screen. Nothing caught it because nothing reads it. Scope of this change, stated as a measured set rather than a general claim: over all **81** tracked `package.json` files in the repository, **57** declare `repository.directory`; before this change **55** resolved to the manifest's own directory and **2** did not — the two above. After it, **57 of 57** resolve. No other manifest field is edited, and no package's code, exports or behaviour is touched. The remaining **24** manifests declare no `repository.directory` at all; that population is deliberately left alone here and is reported separately, because whether declaring the field is mandatory is a policy question rather than a correction.