You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
… post-merge cap
- Rename the public SDK export from `setAttributes` → `experimental_setAttributes`
to signal the unstable surface at every call site (workbench, docs,
e2e + unit tests updated). Internal step name stays
`__builtin_set_attributes`.
- `validateAttributeChanges`: replace `existingCount?: number` with
`existingKeys?: Iterable<string>`. With keys, the cap check uses
real net adds/deletes (an update to an already-present key is zero
net); without keys it falls back to the conservative "every upsert
is +1" shape. Fixes the off-by-design rejection of single-key
updates at the cap boundary.
- `world-local`: rename `withRunAttributeLock` → `withRunFileLock`,
export it, and acquire it from the events-storage run-lifecycle
branches (`run_started`/`run_completed`/`run_failed`/`run_cancelled`).
Each lifecycle write re-reads the run JSON inside the lock so an
attribute write that landed between the pre-validation read and the
write is no longer silently overwritten.
- `world-postgres`: atomic per-run cap. The cap check now lives in the
same `UPDATE` statement as the merge (`WHERE (SELECT COUNT(*) FROM
jsonb_object_keys(merged_expr)) <= ATTRIBUTE_MAX_PER_RUN`), so two
concurrent writers adding disjoint keys at the cap boundary can no
longer both succeed and push the row past 64. A separate re-read on
rejection disambiguates "run not found" from "cap rejected".
- `__builtin_set_attributes`: one process-wide `console.warn` when the
active world adapter doesn't implement `experimentalSetAttributes`,
matching the changelog and `Storage.runs.experimentalSetAttributes`
JSDoc.
Verified #17 (bare-name step lookup) by precedent: the SWC plugin
already special-cases names starting with `__builtin` at
`naming.rs`-adjacent path in `lib.rs:1906` to use the bare function
name as the step ID, which is exactly how `__builtin_response_json`
etc. ship today.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
… post-merge cap
- Rename the public SDK export from `setAttributes` → `experimental_setAttributes`
to signal the unstable surface at every call site (workbench, docs,
e2e + unit tests updated). Internal step name stays
`__builtin_set_attributes`.
- `validateAttributeChanges`: replace `existingCount?: number` with
`existingKeys?: Iterable<string>`. With keys, the cap check uses
real net adds/deletes (an update to an already-present key is zero
net); without keys it falls back to the conservative "every upsert
is +1" shape. Fixes the off-by-design rejection of single-key
updates at the cap boundary.
- `world-local`: rename `withRunAttributeLock` → `withRunFileLock`,
export it, and acquire it from the events-storage run-lifecycle
branches (`run_started`/`run_completed`/`run_failed`/`run_cancelled`).
Each lifecycle write re-reads the run JSON inside the lock so an
attribute write that landed between the pre-validation read and the
write is no longer silently overwritten.
- `world-postgres`: atomic per-run cap. The cap check now lives in the
same `UPDATE` statement as the merge (`WHERE (SELECT COUNT(*) FROM
jsonb_object_keys(merged_expr)) <= ATTRIBUTE_MAX_PER_RUN`), so two
concurrent writers adding disjoint keys at the cap boundary can no
longer both succeed and push the row past 64. A separate re-read on
rejection disambiguates "run not found" from "cap rejected".
- `__builtin_set_attributes`: one process-wide `console.warn` when the
active world adapter doesn't implement `experimentalSetAttributes`,
matching the changelog and `Storage.runs.experimentalSetAttributes`
JSDoc.
Verified #17 (bare-name step lookup) by precedent: the SWC plugin
already special-cases names starting with `__builtin` at
`naming.rs`-adjacent path in `lib.rs:1906` to use the bare function
name as the step ID, which is exactly how `__builtin_response_json`
etc. ship today.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.