@nextcommerce/campaigns-os 1.53.0 → 1.55.0
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 +145 -0
- package/CONTEXT.md +8 -5
- package/README.md +26 -11
- package/compatibility.json +1 -1
- package/contracts/campaign-cart-checkout-field-contract.v0.json +10 -0
- package/contracts/campaign-cart-sdk-support-policy.v0.json +2 -2
- package/contracts/commerce-surface-catalog.json +27 -27
- package/contracts/effects.v1.json +96 -37
- package/contracts/release-ledger.json +774 -0
- package/contracts/supported-surface.json +4 -4
- package/contracts/template-brand-contract.shared-commerce.v0.json +1 -1
- package/docs/brand-theme-bridge.md +10 -0
- package/docs/build-packet.md +45 -22
- package/docs/campaign-standardization-report.md +32 -0
- package/docs/campaigns-os-build-flow.md +1 -1
- package/docs/design-source-package.md +7 -3
- package/docs/effects.md +4 -6
- package/docs/local-setup.md +1 -1
- package/docs/orientation-contract-reference.md +1 -1
- package/docs/progress-snapshots.md +3 -1
- package/docs/qa-and-test-orders.md +83 -14
- package/docs/runtime-readiness.md +1 -1
- package/docs/sdk-storage-compatibility.md +15 -0
- package/docs/skills-revision.md +10 -10
- package/docs/supported-surface.md +2 -1
- package/docs/workflow-findings-sidecar.md +57 -2
- package/package.json +3 -1
- package/schemas/campaign-runtime-assembly-report.v0.schema.json +5 -1
- package/schemas/campaigns-os-run-record.v0.schema.json +20 -15
- package/skills/campaign-lifecycle-orientation/SKILL.md +3 -3
- package/skills/campaign-readback-classification/SKILL.md +3 -3
- package/skills/campaign-run-evidence/SKILL.md +3 -3
- package/skills/contribution-intake/SKILL.md +3 -3
- package/skills/next-campaigns-build/SKILL.md +3 -3
- package/skills/next-campaigns-os/SKILL.md +3 -3
- package/skills/next-campaigns-os-setup/SKILL.md +3 -3
- package/skills/next-campaigns-polish/SKILL.md +3 -3
- package/skills/next-campaigns-qa/SKILL.md +4 -4
- package/skills.json +10 -10
- package/src/adapter-decision-contract.mjs +26 -12
- package/src/brand-theme.mjs +44 -8
- package/src/campaign-ecosystem.mjs +153 -31
- package/src/campaign-identity.mjs +33 -4
- package/src/cli.mjs +58 -62
- package/src/consent.mjs +3 -2
- package/src/design-source-publication.mjs +1 -1
- package/src/deviation.mjs +2 -1
- package/src/directory-lock.mjs +79 -7
- package/src/doctor/checks.mjs +28 -8
- package/src/doctor/inspect.mjs +13 -0
- package/src/doctor/next-step.mjs +16 -6
- package/src/invocation.mjs +7 -4
- package/src/lifecycle.mjs +88 -6
- package/src/local-preview-policy.mjs +6 -0
- package/src/login.mjs +2 -1
- package/src/polish-browser.mjs +8 -2
- package/src/polish-node.mjs +6 -1
- package/src/polish-readability.mjs +2 -2
- package/src/progress-node.mjs +3 -2
- package/src/qa-browser.mjs +595 -95
- package/src/qa-cart-entry.mjs +29 -6
- package/src/qa-node.mjs +177 -43
- package/src/qa-verdict-publish.mjs +2 -1
- package/src/run-record.mjs +46 -34
- package/src/sdk-attribute-index.mjs +111 -23
- package/src/sdk-markup.mjs +89 -10
- package/src/sdk-repin.mjs +282 -0
- package/src/stage-ledger.mjs +15 -3
- package/src/stage-record.mjs +85 -17
- package/src/standardization-report.mjs +26 -1
- package/src/target-lock.mjs +9 -1
|
@@ -6197,6 +6197,780 @@
|
|
|
6197
6197
|
}
|
|
6198
6198
|
],
|
|
6199
6199
|
"entry_sha256": "197929e76610b701b015cac7ee37f1f8a75b18e350a8268b679b8ca51a9b7f14"
|
|
6200
|
+
},
|
|
6201
|
+
{
|
|
6202
|
+
"id": "RL-0237",
|
|
6203
|
+
"sequence": 228,
|
|
6204
|
+
"date": "2026-10-06",
|
|
6205
|
+
"kind": "release",
|
|
6206
|
+
"surface_version": null,
|
|
6207
|
+
"changelog_section": "1.53.0+agent.3",
|
|
6208
|
+
"changelog_sha256": "d93e2a6e96de6d7e17d3f1235ff2c9ca6984890fe1026df284c38eacdbcb5557",
|
|
6209
|
+
"agent_impact": "standardize evaluates a campaign_cart_app root's bundled campaign-cart dependency against the SDK support policy by the lowest version its package.json spec allows, recorded as sdk_loader.bundled_dependency.floor_version. An exact pin (0.4.30, =0.4.30, v0.4.30) or one ^, ~ or >= range on a released version is evaluated by that version, unchanged from before. Any other spec (<0.4.39, an ||, hyphen or x-range, a tag) now gets no version_policy evaluation and raises the new warning version.sdk_dependency_floor_unknown; earlier releases evaluated the version written in the spec, so such a range could pass or fail the minimum on a version npm might not install. Prerelease pins still raise version.sdk_prerelease_pin only. resolved_version is unchanged.",
|
|
6210
|
+
"compatibility": "compatible",
|
|
6211
|
+
"migration": "none",
|
|
6212
|
+
"changes": [
|
|
6213
|
+
{
|
|
6214
|
+
"class": "named_surface",
|
|
6215
|
+
"path": "docs/campaign-standardization-report.md",
|
|
6216
|
+
"surface_entry": "docs/campaign-standardization-report.md",
|
|
6217
|
+
"summary": "Describe judging a bundled dependency by its floor_version, which specs have a certain floor, and the version.sdk_dependency_floor_unknown warning for those that do not."
|
|
6218
|
+
}
|
|
6219
|
+
],
|
|
6220
|
+
"entry_sha256": "d98fbc7e8865f4ab5bb35bb7510a787af576ef23dfe5b50377fb2f744af8bf0b"
|
|
6221
|
+
},
|
|
6222
|
+
{
|
|
6223
|
+
"id": "RL-0236",
|
|
6224
|
+
"sequence": 229,
|
|
6225
|
+
"date": "2026-10-06",
|
|
6226
|
+
"kind": "release",
|
|
6227
|
+
"surface_version": null,
|
|
6228
|
+
"changelog_section": "1.53.0+agent.4",
|
|
6229
|
+
"changelog_sha256": "b1de69de9257b9151d0fb38eeb0c23f92bc8a3a405f0c0f6e6d7427b44564c75",
|
|
6230
|
+
"agent_impact": "doctor built_output.sdk_markup WRONG_FIELD_NAME and the standardize checkout field contract now judge first_name and last_name (mapped from Campaign Cart SDK 0.4.39) and phone_number (from 0.4.41) against the SDK version of the page: doctor reads the page's own exact loader pin, then the campaign's _data/campaigns.json sdk_version; standardize reads the file's own exact loader pin, then the lowest exact pin the campaign root declares (exact loader pins; a bundled campaign-cart dependency's exact pin or the floor of a ^, ~ or >= range, any other range reading as unknown; or for Page Kit roots the campaign's campaigns.json sdk_version). On a version at or after the name's since-version the name passes, so pages written to the SDK 0.4.41 field names stop blocking. Below it, or when no exact released version can be read, results are unchanged: first_name and last_name block (WRONG_FIELD_NAME; checkout.unsupported_field_binding) and phone_number blocks in doctor and warns as checkout.unknown_field_binding in standardize; fname, lname and phone pass on every version. WRONG_FIELD_NAME details gain sdk_version and sdk_version_source (loader or campaigns_json) and, for these three names, since; the gate gains campaign_sdk_version. standardize checkout_fields.bindings[] gain since, sdk_version and sdk_version_source (loader, campaign or campaigns_json), and stale-alias and unknown-field evidence for these names carries since and sdk_version.",
|
|
6231
|
+
"compatibility": "compatible",
|
|
6232
|
+
"migration": "none",
|
|
6233
|
+
"changes": [
|
|
6234
|
+
{
|
|
6235
|
+
"class": "cli_surface",
|
|
6236
|
+
"path": "src/doctor/checks.mjs",
|
|
6237
|
+
"surface_entry": "doctor",
|
|
6238
|
+
"summary": "The SDK markup gate passes the campaign's campaigns.json sdk_version to the field-name check as the fallback for a page with no exact loader pin, and records it as campaign_sdk_version."
|
|
6239
|
+
},
|
|
6240
|
+
{
|
|
6241
|
+
"class": "named_surface",
|
|
6242
|
+
"path": "docs/build-packet.md",
|
|
6243
|
+
"surface_entry": "docs/build-packet.md",
|
|
6244
|
+
"summary": "WRONG_FIELD_NAME: first_name and last_name are mapped from SDK 0.4.39 and phone_number from 0.4.41, judged against the page loader pin, then campaigns.json; unknown is judged as an earlier SDK."
|
|
6245
|
+
},
|
|
6246
|
+
{
|
|
6247
|
+
"class": "named_surface",
|
|
6248
|
+
"path": "docs/campaign-standardization-report.md",
|
|
6249
|
+
"surface_entry": "docs/campaign-standardization-report.md",
|
|
6250
|
+
"summary": "Describe the field contract version_gated_aliases and the sdk_version and sdk_version_source each checkout binding records. A bundled dependency counts only through an exact pin or a ^, ~ or >= floor."
|
|
6251
|
+
}
|
|
6252
|
+
],
|
|
6253
|
+
"entry_sha256": "b6af3f03f0bc8e03b7a24d10c65c2cc889ede6e04ce7828b4e78c2562414564b"
|
|
6254
|
+
},
|
|
6255
|
+
{
|
|
6256
|
+
"id": "RL-0238",
|
|
6257
|
+
"sequence": 230,
|
|
6258
|
+
"date": "2026-10-06",
|
|
6259
|
+
"kind": "release",
|
|
6260
|
+
"surface_version": null,
|
|
6261
|
+
"changelog_section": "1.53.0+agent.5",
|
|
6262
|
+
"changelog_sha256": "69caf644546b719adf09b72227b50230250b586e6043de066dfe4b79c70c22df",
|
|
6263
|
+
"agent_impact": "qa run --test-order now types the test card on Campaign Cart SDK 0.4.41 checkouts. 0.4.41 mounts the card number and CVV as iframe[id^=spreedly-hosted-number] and iframe[id^=spreedly-hosted-cvv] (Spreedly Checkout SDK fields loaded by payments.29next.com/js/v1/payment.js) instead of the iFrame v1 spreedly-number-frame / spreedly-cvv-frame ids, and the runner matched only the old ids, so the typed-card step timed out before submit on 0.4.41. The runner now matches either generation. Before typing, card_fields_filled waits up to 15s until no element carries next-loading-spreedly (the SDK sets it from before the card iframes mount until the fields are ready, 0.4.38 to 0.4.41), because digits typed into a 0.4.41 field before then can be dropped, and the SDK then refuses the short number without tokenizing, so order_submitted timed out with no order. After typing, it reads both fields back and retypes, up to 3 attempts in all. The step gains evidence {generation: spreedly-hosted | spreedly-iframe-v1, number_frame_id, cvv_frame_id, ready_wait_ms, attempts}; its detail is unchanged. card_fields_filled now fails by name, with no order submitted, in three cases: when more than one number or CVV iframe matches or the two generations mix (Playwright previously raised a strict-mode violation); when next-loading-spreedly is still set after 15s, meaning the card script never finished loading; and when the fields still do not hold the typed card after 3 attempts (the error gives the digit counts and last four of the number). No verdict field or flag changes; spreedly_tokenized still reads the core.spreedly.com payment_methods request, which 0.4.41 still makes. Pages pinned to 0.4.40 or earlier run as before, plus the readiness wait and the read-back.",
|
|
6264
|
+
"compatibility": "additive",
|
|
6265
|
+
"migration": "none",
|
|
6266
|
+
"changes": [
|
|
6267
|
+
{
|
|
6268
|
+
"class": "named_surface",
|
|
6269
|
+
"path": "docs/qa-and-test-orders.md",
|
|
6270
|
+
"surface_entry": "docs/qa-and-test-orders.md",
|
|
6271
|
+
"summary": "The typed-card step names both card-field generations (Spreedly iFrame fields on SDK 0.4.40 and earlier, the Spreedly-hosted fields NEXT payments.29next.com script mounts on 0.4.41 and later), waits for next-loading-spreedly to clear before typing, and reads both fields back, retyping up to three attempts in all."
|
|
6272
|
+
}
|
|
6273
|
+
],
|
|
6274
|
+
"entry_sha256": "edc4fd10bfe974dd3cfd9e6a6d5f3337a483db0525f6231bf68d3e79e22ac51f"
|
|
6275
|
+
},
|
|
6276
|
+
{
|
|
6277
|
+
"id": "RL-0240",
|
|
6278
|
+
"sequence": 231,
|
|
6279
|
+
"date": "2026-10-06",
|
|
6280
|
+
"kind": "release",
|
|
6281
|
+
"surface_version": null,
|
|
6282
|
+
"changelog_section": "1.53.0+agent.7",
|
|
6283
|
+
"changelog_sha256": "f91240db8674ccb5f7a94f042c93b059aa4f0a138124927b391554f554cafddc",
|
|
6284
|
+
"agent_impact": "doctor --built with --base-url adds a ready line saying the local built files were checked and the URL was not fetched (it only fills deploy.preview_url in the minimal Build Packet), names qa run --site <repo> --base-url <url> --family <family> --browser for the served pages, and sets derived.base_url { value, fetched: false, recorded_as: deploy.preview_url } in JSON. Do not report a doctor --built result as a check of a preview or production site.",
|
|
6285
|
+
"compatibility": "compatible",
|
|
6286
|
+
"migration": "none",
|
|
6287
|
+
"changes": [
|
|
6288
|
+
{
|
|
6289
|
+
"class": "cli_surface",
|
|
6290
|
+
"path": "src/cli.mjs",
|
|
6291
|
+
"surface_entry": "doctor",
|
|
6292
|
+
"summary": "The doctor --built usage line says --base-url is not fetched and fills deploy.preview_url in the minimal packet."
|
|
6293
|
+
},
|
|
6294
|
+
{
|
|
6295
|
+
"class": "cli_surface",
|
|
6296
|
+
"path": "src/doctor/inspect.mjs",
|
|
6297
|
+
"surface_entry": "doctor",
|
|
6298
|
+
"summary": "doctor --built with --base-url reports that only local files were checked, names qa run --site for served pages, and sets derived.base_url.fetched false."
|
|
6299
|
+
},
|
|
6300
|
+
{
|
|
6301
|
+
"class": "named_surface",
|
|
6302
|
+
"path": "docs/qa-and-test-orders.md",
|
|
6303
|
+
"surface_entry": "docs/qa-and-test-orders.md",
|
|
6304
|
+
"summary": "State that doctor --built reads local files only, that --base-url is not fetched, how to check served pages, and that the minimal packet does not drive packet QA."
|
|
6305
|
+
}
|
|
6306
|
+
],
|
|
6307
|
+
"entry_sha256": "6382a67f50d12ae1999b352595ff6faa13fca3e122617e9ba43ce4cc8c77e659"
|
|
6308
|
+
},
|
|
6309
|
+
{
|
|
6310
|
+
"id": "RL-0241",
|
|
6311
|
+
"sequence": 232,
|
|
6312
|
+
"date": "2026-10-06",
|
|
6313
|
+
"kind": "release",
|
|
6314
|
+
"surface_version": null,
|
|
6315
|
+
"changelog_section": "1.53.0+agent.9",
|
|
6316
|
+
"changelog_sha256": "359d517828d411f329a3fe02bb421a676652ffb2662532599e435dd0cf38a5f7",
|
|
6317
|
+
"agent_impact": "When the per-target lock or the progress allocation lock cannot be taken because a file, a symbolic link, or a directory with no owner record that holds other entries sits at the lock path, the refusal names what is there and says it is never removed automatically. Report it as an obstruction to move out of the way, not as a busy or ownerless lock. The holder of a lock also removes staging and released siblings whose recorded owner process no longer exists.",
|
|
6318
|
+
"compatibility": "compatible",
|
|
6319
|
+
"migration": "none",
|
|
6320
|
+
"changes": [
|
|
6321
|
+
{
|
|
6322
|
+
"class": "named_surface",
|
|
6323
|
+
"path": "docs/design-source-package.md",
|
|
6324
|
+
"surface_entry": "docs/design-source-package.md",
|
|
6325
|
+
"summary": "Say that a non-lock entry at the target lock path is named and never removed, and that the holder removes lock siblings left by dead processes."
|
|
6326
|
+
},
|
|
6327
|
+
{
|
|
6328
|
+
"class": "named_surface",
|
|
6329
|
+
"path": "docs/progress-snapshots.md",
|
|
6330
|
+
"surface_entry": "docs/progress-snapshots.md",
|
|
6331
|
+
"summary": "Say that a file or other non-lock entry at the allocation lock path is named in the warning and never removed."
|
|
6332
|
+
}
|
|
6333
|
+
],
|
|
6334
|
+
"entry_sha256": "82debb74a4998923dd9cfb3bea6ed486ba408860001fe79c6dc2460de026bb4a"
|
|
6335
|
+
},
|
|
6336
|
+
{
|
|
6337
|
+
"id": "RL-0244",
|
|
6338
|
+
"sequence": 233,
|
|
6339
|
+
"date": "2026-10-07",
|
|
6340
|
+
"kind": "release",
|
|
6341
|
+
"surface_version": null,
|
|
6342
|
+
"changelog_section": "1.53.0+agent.10",
|
|
6343
|
+
"changelog_sha256": "7b0402af57d09ba68a5ca4fc1b8e9044eafa8f2b8a3d921bf26c6803958126db",
|
|
6344
|
+
"agent_impact": "The vendored starter catalog and the SDK attribute index now describe Campaign Cart SDK 0.4.41. A certified family is verified against 0.4.41, so a missing SDK pin is reported against that version. built_output.sdk_markup accepts the 0.4.41 address block, data-next-i18n and phone attributes and reports sdk_attribute_index_version 0.4.41; built_output.cart_placeholders checks pages pinned to 0.4.41 instead of reporting them unexercised. Read a WRONG_FIELD_NAME finding as naming the 0.4.41 field set, which is the same as 0.4.38 plus the version-gated aliases.",
|
|
6345
|
+
"compatibility": "compatible",
|
|
6346
|
+
"migration": "none",
|
|
6347
|
+
"changes": [
|
|
6348
|
+
{
|
|
6349
|
+
"class": "named_surface",
|
|
6350
|
+
"path": "docs/build-packet.md",
|
|
6351
|
+
"surface_entry": "docs/build-packet.md",
|
|
6352
|
+
"summary": "Say the vendored checkout field names are taken at SDK v0.4.41."
|
|
6353
|
+
}
|
|
6354
|
+
],
|
|
6355
|
+
"entry_sha256": "41994901ffbce1dbdf74e020465ba9622ed062cb310b6021265fe848ae12a559"
|
|
6356
|
+
},
|
|
6357
|
+
{
|
|
6358
|
+
"id": "RL-0245",
|
|
6359
|
+
"sequence": 234,
|
|
6360
|
+
"date": "2026-10-07",
|
|
6361
|
+
"kind": "release",
|
|
6362
|
+
"surface_version": "1.54.0",
|
|
6363
|
+
"changelog_section": "1.54.0",
|
|
6364
|
+
"changelog_sha256": "60ec528377c8a9f14165cfd7d6e09a4e7933c65cd53c6ca3fe8f74ff7acbe91d",
|
|
6365
|
+
"agent_impact": "Surface 1.54.0. Ships 1.53.0+agent.1 through +agent.11, including qa run --test-order typing card fields on Campaign Cart SDK 0.4.41 and the starter catalog, SDK attribute index and support policy at 0.4.41. New subcommand sdk repin --target <static-repo> [--target-sdk <x.y.z>] [--apply] [--json] replaces the hand-run sed step when bumping the Campaign Cart SDK in a static campaign repo (no _data/campaigns.json). It rewrites only the version segment of semver-pinned (@vX.Y.Z or @X.Y.Z) loader.js and campaign-cart.css URLs below the target, the same references standardize lists under sdk_loader.references; @latest, @main, commit and prerelease refs and pins at or above the target are reported in left_alone and never rewritten. The target defaults to the SDK support policy's preferred_minimum. Preview is the default and writes nothing; --apply writes the files and the change record .campaign-runtime/sdk-repin.json (schema campaigns-os-sdk-repin/v0: files_touched, reference_count, from_versions, to_version, rewrites, left_alone), whose path and sha256 the --json result gives for a Run Record to cite. A second run reports nothing_to_change and writes nothing. A page-kit repo is refused with exit 2 (status refused_page_kit); use page-kit sync there. After --apply, run browser QA against the new pin: repin does not prove the SDK works. qa run keeps the verdict local by default when the base URL (from --base-url or the packet's deploy.preview_url) is a local address (localhost or *.localhost, any 127.x.x.x, 0.0.0.0, [::1] or an IPv4-mapped loopback), for saved-Map and local-spec runs alike; publish_decision.reason reads loopback_base_url and the output names qa publish and --post-verdict. An agent that wants a local-address verdict on the Map's QA tab passes --post-verdict or runs qa publish afterwards. Remote base URLs publish as before. record deploy now binds stages.deploy to the build it probed (source_build_fingerprint). After a record build of different output, a stamped deploy reads required and next names deploy before QA: serve the new build and run record deploy again. A byte-identical rebuild keeps the deploy current, and a deploy recorded before this change, with no stamp, is kept as recorded.",
|
|
6366
|
+
"compatibility": "compatible",
|
|
6367
|
+
"migration": "none",
|
|
6368
|
+
"changes": [
|
|
6369
|
+
{
|
|
6370
|
+
"class": "compatibility_policy",
|
|
6371
|
+
"path": "compatibility.json",
|
|
6372
|
+
"surface_entry": null,
|
|
6373
|
+
"summary": "Advance the declared version to 1.54.0."
|
|
6374
|
+
},
|
|
6375
|
+
{
|
|
6376
|
+
"class": "compatibility_policy",
|
|
6377
|
+
"path": "contracts/effects.v1.json",
|
|
6378
|
+
"surface_entry": "contracts/effects.v1.json",
|
|
6379
|
+
"summary": "Declare sdk repin (tier none) and sdk repin --apply (tier B: the rewritten files, the change record and the lifecycle journal), and add --apply to the effect-changing flags; on the eight qa run rows, name the local-address default in the verdict send's condition and record it unobserved under the 127.0.0.1 offline fixture (#486), with qa publish as the proof of that send; state that record deploy stamps the build fingerprint it probed, and that record build makes a completed deploy stamped with other output required."
|
|
6380
|
+
},
|
|
6381
|
+
{
|
|
6382
|
+
"class": "compatibility_policy",
|
|
6383
|
+
"path": "contracts/supported-surface.json",
|
|
6384
|
+
"surface_entry": "contracts/supported-surface.json",
|
|
6385
|
+
"summary": "Advance surface_version to 1.54.0 and record the effects contract and Assembly Report schema hashes."
|
|
6386
|
+
},
|
|
6387
|
+
{
|
|
6388
|
+
"class": "cli_surface",
|
|
6389
|
+
"path": "src/cli.mjs",
|
|
6390
|
+
"surface_entry": "sdk",
|
|
6391
|
+
"summary": "Add the sdk repin subcommand and its usage line: rewrite semver-pinned Campaign Cart loader and stylesheet URLs below the target in a static repo, preview by default, --apply writes the files and the campaigns-os-sdk-repin/v0 change record, --target-sdk overrides the policy target, a page-kit repo is refused with exit 2; the record deploy usage line says the deploy stage carries the build fingerprint it probed and is required again after a record build of other output."
|
|
6392
|
+
},
|
|
6393
|
+
{
|
|
6394
|
+
"class": "compatibility_policy",
|
|
6395
|
+
"path": "docs/supported-surface.md",
|
|
6396
|
+
"surface_entry": "docs/supported-surface.md",
|
|
6397
|
+
"summary": "Add the sdk repin row."
|
|
6398
|
+
},
|
|
6399
|
+
{
|
|
6400
|
+
"class": "named_surface",
|
|
6401
|
+
"path": "docs/sdk-storage-compatibility.md",
|
|
6402
|
+
"surface_entry": "docs/sdk-storage-compatibility.md",
|
|
6403
|
+
"summary": "Document sdk repin as the pin-rewrite step after the storage check for static repos: which references it rewrites and leaves alone, the preview and --apply modes, the change record, and the page-kit refusal."
|
|
6404
|
+
},
|
|
6405
|
+
{
|
|
6406
|
+
"class": "named_surface",
|
|
6407
|
+
"path": "docs/effects.md",
|
|
6408
|
+
"surface_entry": "docs/effects.md",
|
|
6409
|
+
"summary": "List the sdk repin preview among the read-only invocations and --apply among the effect-changing flags."
|
|
6410
|
+
},
|
|
6411
|
+
{
|
|
6412
|
+
"class": "named_surface",
|
|
6413
|
+
"path": "docs/campaign-standardization-report.md",
|
|
6414
|
+
"surface_entry": "docs/campaign-standardization-report.md",
|
|
6415
|
+
"summary": "Point from sdk_loader.references to sdk repin for static repos."
|
|
6416
|
+
},
|
|
6417
|
+
{
|
|
6418
|
+
"class": "named_surface",
|
|
6419
|
+
"path": "docs/qa-and-test-orders.md",
|
|
6420
|
+
"surface_entry": "docs/qa-and-test-orders.md",
|
|
6421
|
+
"summary": "Describe the local-address default and how to publish such a verdict; the local proof steps say record deploy is bound to the build it probed and is owed again after a record build of other output."
|
|
6422
|
+
},
|
|
6423
|
+
{
|
|
6424
|
+
"class": "named_surface",
|
|
6425
|
+
"path": "docs/local-setup.md",
|
|
6426
|
+
"surface_entry": "docs/local-setup.md",
|
|
6427
|
+
"summary": "Pin the 1.54.0 package in the local setup install command."
|
|
6428
|
+
},
|
|
6429
|
+
{
|
|
6430
|
+
"class": "named_surface",
|
|
6431
|
+
"path": "docs/skills-revision.md",
|
|
6432
|
+
"surface_entry": "docs/skills-revision.md",
|
|
6433
|
+
"summary": "Use the current 1.54.0+skills.1 bundle in executable examples."
|
|
6434
|
+
},
|
|
6435
|
+
{
|
|
6436
|
+
"class": "package_export",
|
|
6437
|
+
"path": "package.json",
|
|
6438
|
+
"surface_entry": null,
|
|
6439
|
+
"summary": "Advance the package version to 1.54.0."
|
|
6440
|
+
},
|
|
6441
|
+
{
|
|
6442
|
+
"class": "skill",
|
|
6443
|
+
"path": "skills.json",
|
|
6444
|
+
"surface_entry": "skills.json",
|
|
6445
|
+
"summary": "Advance the bundled skill revision to 1.54.0+skills.1 and each skill version one patch."
|
|
6446
|
+
},
|
|
6447
|
+
{
|
|
6448
|
+
"class": "skill",
|
|
6449
|
+
"path": "skills/campaign-lifecycle-orientation/SKILL.md",
|
|
6450
|
+
"surface_entry": null,
|
|
6451
|
+
"summary": "Publish the 1.54.0+skills.1 bundle revision."
|
|
6452
|
+
},
|
|
6453
|
+
{
|
|
6454
|
+
"class": "skill",
|
|
6455
|
+
"path": "skills/campaign-readback-classification/SKILL.md",
|
|
6456
|
+
"surface_entry": null,
|
|
6457
|
+
"summary": "Publish the 1.54.0+skills.1 bundle revision."
|
|
6458
|
+
},
|
|
6459
|
+
{
|
|
6460
|
+
"class": "skill",
|
|
6461
|
+
"path": "skills/campaign-run-evidence/SKILL.md",
|
|
6462
|
+
"surface_entry": null,
|
|
6463
|
+
"summary": "Publish the 1.54.0+skills.1 bundle revision."
|
|
6464
|
+
},
|
|
6465
|
+
{
|
|
6466
|
+
"class": "skill",
|
|
6467
|
+
"path": "skills/contribution-intake/SKILL.md",
|
|
6468
|
+
"surface_entry": null,
|
|
6469
|
+
"summary": "Publish the 1.54.0+skills.1 bundle revision."
|
|
6470
|
+
},
|
|
6471
|
+
{
|
|
6472
|
+
"class": "skill",
|
|
6473
|
+
"path": "skills/next-campaigns-build/SKILL.md",
|
|
6474
|
+
"surface_entry": null,
|
|
6475
|
+
"summary": "Publish the 1.54.0+skills.1 bundle revision."
|
|
6476
|
+
},
|
|
6477
|
+
{
|
|
6478
|
+
"class": "skill",
|
|
6479
|
+
"path": "skills/next-campaigns-os-setup/SKILL.md",
|
|
6480
|
+
"surface_entry": null,
|
|
6481
|
+
"summary": "Publish the 1.54.0+skills.1 bundle revision."
|
|
6482
|
+
},
|
|
6483
|
+
{
|
|
6484
|
+
"class": "skill",
|
|
6485
|
+
"path": "skills/next-campaigns-os/SKILL.md",
|
|
6486
|
+
"surface_entry": null,
|
|
6487
|
+
"summary": "Publish the 1.54.0+skills.1 bundle revision."
|
|
6488
|
+
},
|
|
6489
|
+
{
|
|
6490
|
+
"class": "skill",
|
|
6491
|
+
"path": "skills/next-campaigns-polish/SKILL.md",
|
|
6492
|
+
"surface_entry": null,
|
|
6493
|
+
"summary": "Publish the 1.54.0+skills.1 bundle revision."
|
|
6494
|
+
},
|
|
6495
|
+
{
|
|
6496
|
+
"class": "skill",
|
|
6497
|
+
"path": "skills/next-campaigns-qa/SKILL.md",
|
|
6498
|
+
"surface_entry": null,
|
|
6499
|
+
"summary": "Publish the 1.54.0+skills.1 bundle revision."
|
|
6500
|
+
},
|
|
6501
|
+
{
|
|
6502
|
+
"class": "documentation",
|
|
6503
|
+
"path": "docs/orientation-contract-reference.md",
|
|
6504
|
+
"surface_entry": "docs/orientation-contract-reference.md",
|
|
6505
|
+
"summary": "Regenerate at surface 1.54.0."
|
|
6506
|
+
},
|
|
6507
|
+
{
|
|
6508
|
+
"class": "named_surface",
|
|
6509
|
+
"path": "docs/runtime-readiness.md",
|
|
6510
|
+
"surface_entry": "docs/runtime-readiness.md",
|
|
6511
|
+
"summary": "Regenerate at surface 1.54.0."
|
|
6512
|
+
},
|
|
6513
|
+
{
|
|
6514
|
+
"class": "generated_runtime",
|
|
6515
|
+
"path": "package-lock.json",
|
|
6516
|
+
"surface_entry": null,
|
|
6517
|
+
"summary": "Advance the package version to 1.54.0."
|
|
6518
|
+
},
|
|
6519
|
+
{
|
|
6520
|
+
"class": "schema",
|
|
6521
|
+
"path": "schemas/campaign-runtime-assembly-report.v0.schema.json",
|
|
6522
|
+
"surface_entry": "schemas/campaign-runtime-assembly-report.v0.schema.json",
|
|
6523
|
+
"summary": "Describe source_build_fingerprint on a stage, which stages.deploy now carries: the build fingerprint record deploy probed."
|
|
6524
|
+
},
|
|
6525
|
+
{
|
|
6526
|
+
"class": "named_surface",
|
|
6527
|
+
"path": "docs/build-packet.md",
|
|
6528
|
+
"surface_entry": "docs/build-packet.md",
|
|
6529
|
+
"summary": "The record build and record deploy rows say deploy is stamped with the build it probed and reset to required by a record build of other output; an unstamped deploy is kept."
|
|
6530
|
+
}
|
|
6531
|
+
],
|
|
6532
|
+
"entry_sha256": "5ab33ca302fa671ac78c3e9b752ed7b251e756b05256f97ff75acd08c58ad5ba"
|
|
6533
|
+
},
|
|
6534
|
+
{
|
|
6535
|
+
"id": "RL-0246",
|
|
6536
|
+
"sequence": 235,
|
|
6537
|
+
"date": "2026-10-07",
|
|
6538
|
+
"kind": "release",
|
|
6539
|
+
"surface_version": null,
|
|
6540
|
+
"changelog_section": "1.54.0+agent.2",
|
|
6541
|
+
"changelog_sha256": "55155add247bb47b07b43252e374b504ac85aef51f6b3315b8b21e85c615df15",
|
|
6542
|
+
"agent_impact": "None for package consumers: this changes repository CI and contributor scripts only. A contributor can run npm run check:fast before pushing, or install it as a pre-push hook with npm run hooks:install; CI runs the same gates on every pull request.",
|
|
6543
|
+
"compatibility": "compatible",
|
|
6544
|
+
"migration": "none",
|
|
6545
|
+
"changes": [
|
|
6546
|
+
{
|
|
6547
|
+
"class": "workflow",
|
|
6548
|
+
"path": ".github/workflows/ci.yml",
|
|
6549
|
+
"surface_entry": null,
|
|
6550
|
+
"summary": "Run the unit and browser lanes as two shards each on separate runners, and cancel a pull request's older run when a newer push arrives; pushes to main are never cancelled."
|
|
6551
|
+
},
|
|
6552
|
+
{
|
|
6553
|
+
"class": "package_export",
|
|
6554
|
+
"path": "package.json",
|
|
6555
|
+
"surface_entry": null,
|
|
6556
|
+
"summary": "Add the contributor scripts check:fast and hooks:install; exports, bin, files and dependencies are unchanged."
|
|
6557
|
+
}
|
|
6558
|
+
],
|
|
6559
|
+
"entry_sha256": "ea7360b560411019e58bf65a1b389cbed5ec9589b7da6f09b7cee1b08b46aed8"
|
|
6560
|
+
},
|
|
6561
|
+
{
|
|
6562
|
+
"id": "RL-0247",
|
|
6563
|
+
"sequence": 236,
|
|
6564
|
+
"date": "2026-10-07",
|
|
6565
|
+
"kind": "release",
|
|
6566
|
+
"surface_version": null,
|
|
6567
|
+
"changelog_section": "1.54.0+agent.4",
|
|
6568
|
+
"changelog_sha256": "320b31d293424ab65875a6b05f1d1f2b79ace291914e8311e69fb52738f584b1",
|
|
6569
|
+
"agent_impact": "Treat ready_with_exceptions as passing QA proof and report every exception to the operator without clearing or waiving it or changing markup just to make it pass. Keep the done closeout action. Repeat build work with record build; follow the deploy prompt for hosted deploy recording. A recorded theme waive needs --waived-by with a named human; qa run --theme-waive is one-run only. Unless the operator has already said test orders are fine for this campaign, ask once, up front, before typed-card test orders because they create real store order records, although no transaction or money movement occurs. No command, gate, flag or verdict-schema behavior changes.",
|
|
6570
|
+
"compatibility": "compatible",
|
|
6571
|
+
"migration": "none",
|
|
6572
|
+
"changes": [
|
|
6573
|
+
{
|
|
6574
|
+
"class": "documentation",
|
|
6575
|
+
"path": "CONTEXT.md",
|
|
6576
|
+
"surface_entry": "CONTEXT.md",
|
|
6577
|
+
"summary": "Explain that typed-card test orders create real store order records and require a once-up-front operator question."
|
|
6578
|
+
},
|
|
6579
|
+
{
|
|
6580
|
+
"class": "named_surface",
|
|
6581
|
+
"path": "docs/build-packet.md",
|
|
6582
|
+
"surface_entry": "docs/build-packet.md",
|
|
6583
|
+
"summary": "The done guidance names record build for repeat build work and distinguishes local-serve recording from hosted deploy instructions."
|
|
6584
|
+
},
|
|
6585
|
+
{
|
|
6586
|
+
"class": "named_surface",
|
|
6587
|
+
"path": "docs/campaigns-os-build-flow.md",
|
|
6588
|
+
"surface_entry": "docs/campaigns-os-build-flow.md",
|
|
6589
|
+
"summary": "Explain the real order record and once-up-front operator question before typed-card test orders."
|
|
6590
|
+
},
|
|
6591
|
+
{
|
|
6592
|
+
"class": "named_surface",
|
|
6593
|
+
"path": "docs/qa-and-test-orders.md",
|
|
6594
|
+
"surface_entry": "docs/qa-and-test-orders.md",
|
|
6595
|
+
"summary": "Explain the real store order record and the once-up-front operator question before test orders."
|
|
6596
|
+
},
|
|
6597
|
+
{
|
|
6598
|
+
"class": "named_surface",
|
|
6599
|
+
"path": "docs/skills-revision.md",
|
|
6600
|
+
"surface_entry": "docs/skills-revision.md",
|
|
6601
|
+
"summary": "Publish the 1.54.0+skills.2 bundle revision."
|
|
6602
|
+
},
|
|
6603
|
+
{
|
|
6604
|
+
"class": "skill",
|
|
6605
|
+
"path": "skills.json",
|
|
6606
|
+
"surface_entry": null,
|
|
6607
|
+
"summary": "Publish the 1.54.0+skills.2 bundle revision."
|
|
6608
|
+
},
|
|
6609
|
+
{
|
|
6610
|
+
"class": "skill",
|
|
6611
|
+
"path": "skills/campaign-lifecycle-orientation/SKILL.md",
|
|
6612
|
+
"surface_entry": null,
|
|
6613
|
+
"summary": "Publish the 1.54.0+skills.2 bundle revision."
|
|
6614
|
+
},
|
|
6615
|
+
{
|
|
6616
|
+
"class": "skill",
|
|
6617
|
+
"path": "skills/campaign-readback-classification/SKILL.md",
|
|
6618
|
+
"surface_entry": null,
|
|
6619
|
+
"summary": "Publish the 1.54.0+skills.2 bundle revision."
|
|
6620
|
+
},
|
|
6621
|
+
{
|
|
6622
|
+
"class": "skill",
|
|
6623
|
+
"path": "skills/campaign-run-evidence/SKILL.md",
|
|
6624
|
+
"surface_entry": null,
|
|
6625
|
+
"summary": "Publish the 1.54.0+skills.2 bundle revision."
|
|
6626
|
+
},
|
|
6627
|
+
{
|
|
6628
|
+
"class": "skill",
|
|
6629
|
+
"path": "skills/contribution-intake/SKILL.md",
|
|
6630
|
+
"surface_entry": null,
|
|
6631
|
+
"summary": "Publish the 1.54.0+skills.2 bundle revision."
|
|
6632
|
+
},
|
|
6633
|
+
{
|
|
6634
|
+
"class": "skill",
|
|
6635
|
+
"path": "skills/next-campaigns-build/SKILL.md",
|
|
6636
|
+
"surface_entry": null,
|
|
6637
|
+
"summary": "Publish the 1.54.0+skills.2 bundle revision."
|
|
6638
|
+
},
|
|
6639
|
+
{
|
|
6640
|
+
"class": "skill",
|
|
6641
|
+
"path": "skills/next-campaigns-os-setup/SKILL.md",
|
|
6642
|
+
"surface_entry": null,
|
|
6643
|
+
"summary": "Publish the 1.54.0+skills.2 bundle revision."
|
|
6644
|
+
},
|
|
6645
|
+
{
|
|
6646
|
+
"class": "skill",
|
|
6647
|
+
"path": "skills/next-campaigns-os/SKILL.md",
|
|
6648
|
+
"surface_entry": null,
|
|
6649
|
+
"summary": "Publish the 1.54.0+skills.2 bundle revision."
|
|
6650
|
+
},
|
|
6651
|
+
{
|
|
6652
|
+
"class": "skill",
|
|
6653
|
+
"path": "skills/next-campaigns-polish/SKILL.md",
|
|
6654
|
+
"surface_entry": null,
|
|
6655
|
+
"summary": "Publish the 1.54.0+skills.2 bundle revision."
|
|
6656
|
+
},
|
|
6657
|
+
{
|
|
6658
|
+
"class": "skill",
|
|
6659
|
+
"path": "skills/next-campaigns-qa/SKILL.md",
|
|
6660
|
+
"surface_entry": null,
|
|
6661
|
+
"summary": "Name the recorded theme waiver with the named-human argument and distinguish the one-run ephemeral QA form."
|
|
6662
|
+
},
|
|
6663
|
+
{
|
|
6664
|
+
"class": "cli_surface",
|
|
6665
|
+
"path": "src/cli.mjs",
|
|
6666
|
+
"surface_entry": "next",
|
|
6667
|
+
"summary": "Clarify passing QA exceptions, stage re-recording, recorded versus ephemeral theme waivers, and the test-order operator question in prompts and notices."
|
|
6668
|
+
},
|
|
6669
|
+
{
|
|
6670
|
+
"class": "cli_surface",
|
|
6671
|
+
"path": "src/doctor/next-step.mjs",
|
|
6672
|
+
"surface_entry": "next",
|
|
6673
|
+
"summary": "Keep the done closeout action alongside the passing-QA exception report instruction."
|
|
6674
|
+
}
|
|
6675
|
+
],
|
|
6676
|
+
"entry_sha256": "05712ef5b61b5e84a2937c2528612206dffde439f2929bb853bd72c015538514"
|
|
6677
|
+
},
|
|
6678
|
+
{
|
|
6679
|
+
"id": "RL-0248",
|
|
6680
|
+
"sequence": 237,
|
|
6681
|
+
"date": "2026-10-07",
|
|
6682
|
+
"kind": "release",
|
|
6683
|
+
"surface_version": null,
|
|
6684
|
+
"changelog_section": "1.54.0+agent.5",
|
|
6685
|
+
"changelog_sha256": "b76dfa416d6d20c2ec5e9c94802e2b811ba7133bf248e9430c283f06e3882398",
|
|
6686
|
+
"agent_impact": "qa run --test-order now drives a bundle-card checkout by each card's data-next-bundle-items. --select-package <pkg>:<qty> and --cart <pkg>:<qty> select the card one of whose declared items is that package at that quantity, preferring a card that declares it alone, even when no inner node repeats the package id; a kit card declaring several items is found by any of them. --cart reads the cards again before each ref. Beside --select-package, --cart never clicks another card in the chosen card's selector group (bundle or plain package cards; a card in no recognised selector container counts as in that group): a ref the chosen card carries is left alone, a ref an order bump or a card in another selector group carries is applied through that control, and any other ref is left unapplied and named in the selected_bundle detail as '--cart <ref:qty> not applied: <reason>'. Read that note as a conflict between the two flags; the order and its reconciliation are those of the card --select-package chose. The browser-order-display-parity row reconciles against the packages and quantities every selected bundle card declares, not its data-next-bundle-id, and, without --select-package, fails when an explicit --cart <ref:qty> is not in the order at that quantity, naming requested and persisted units or saying the order carries no line for the package. Read a failing row whose message says the ordered quantity differs from the request as a wrong-tier order, not a stray charge.",
|
|
6687
|
+
"compatibility": "compatible",
|
|
6688
|
+
"migration": "none",
|
|
6689
|
+
"changes": [
|
|
6690
|
+
{
|
|
6691
|
+
"class": "named_surface",
|
|
6692
|
+
"path": "docs/qa-and-test-orders.md",
|
|
6693
|
+
"surface_entry": "docs/qa-and-test-orders.md",
|
|
6694
|
+
"summary": "Say that --select-package and --cart resolve a bundle card by any one of its data-next-bundle-items, that --cart reads the cards again before each ref, that --cart beside --select-package never clicks another card in the chosen card's selector group (a card in no recognised selector container counts as in it) and names a ref it leaves unapplied, and that display parity reconciles against every selected card's declared packages and, without --select-package, fails on an explicit --cart <ref:qty> the order did not carry at that quantity."
|
|
6695
|
+
}
|
|
6696
|
+
],
|
|
6697
|
+
"entry_sha256": "dbb47405a3d96886de22e8ad85dcf9a703da0ef122eccb33b6c64ecb66ea4b38"
|
|
6698
|
+
},
|
|
6699
|
+
{
|
|
6700
|
+
"id": "RL-0249",
|
|
6701
|
+
"sequence": 238,
|
|
6702
|
+
"date": "2026-10-07",
|
|
6703
|
+
"kind": "release",
|
|
6704
|
+
"surface_version": null,
|
|
6705
|
+
"changelog_section": "1.54.0+agent.6",
|
|
6706
|
+
"changelog_sha256": "e49fec365f247824e1af1863ce8124a8ec62dbda64c8c94c68fc7734b83833f0",
|
|
6707
|
+
"agent_impact": "Doctor blocks receipt order lines hidden by cart state, including when the CampaignSpec alone identifies the receipt page. When the Build Packet or CampaignSpec supplies the campaign API key directly, or Build Packet campaign.api_key_source names an environment variable, doctor compares it with built keys even when all pages agree. Correct these findings before test orders.",
|
|
6708
|
+
"compatibility": "compatible",
|
|
6709
|
+
"migration": "none",
|
|
6710
|
+
"changes": [
|
|
6711
|
+
{
|
|
6712
|
+
"class": "cli_surface",
|
|
6713
|
+
"path": "src/doctor/checks.mjs",
|
|
6714
|
+
"surface_entry": "doctor",
|
|
6715
|
+
"summary": "Block receipt order items hidden by cart-state visibility and compare built API keys with the packet, spec, or environment key declared by the packet."
|
|
6716
|
+
}
|
|
6717
|
+
],
|
|
6718
|
+
"entry_sha256": "b56a454c0160f664fd473cbc834146630c207885c2cbf5c2c8e37d294208da4e"
|
|
6719
|
+
},
|
|
6720
|
+
{
|
|
6721
|
+
"id": "RL-0250",
|
|
6722
|
+
"sequence": 239,
|
|
6723
|
+
"date": "2026-10-07",
|
|
6724
|
+
"kind": "release",
|
|
6725
|
+
"surface_version": null,
|
|
6726
|
+
"changelog_section": "1.54.0+agent.7",
|
|
6727
|
+
"changelog_sha256": "8c43339dac5e7fc33ad1bdff344c5db50b2e7b7f8a5d7b631f309676d70e79ce",
|
|
6728
|
+
"agent_impact": "qa run takes --currency <code> to run QA in one currency of a multi-currency campaign: the run adds ?currency=<CODE> to each funnel entry URL it fetches and loads and to the first page load of each test-order path, keeping the existing query; later loads in that tab and a receipt reload carry none, because Campaign Cart keeps the currency for the tab's session. The code must be three letters and is upper-cased; anything else, an empty value included, is refused before any request. The flag takes one code per run (given twice, the last is used): run qa run once per currency. qa parity --currency, and --currency with --legacy-api-test-order, are refused. Read the run currency from evidence.currency on the entry page http:<page_id> assertion of the full verdict; the stored verdict removes URL queries. An entry URL that does not parse carries evidence.currency_not_applied with the reason instead. A run without the flag is unchanged.",
|
|
6729
|
+
"compatibility": "compatible",
|
|
6730
|
+
"migration": "none",
|
|
6731
|
+
"changes": [
|
|
6732
|
+
{
|
|
6733
|
+
"class": "cli_surface",
|
|
6734
|
+
"path": "src/cli.mjs",
|
|
6735
|
+
"surface_entry": "qa",
|
|
6736
|
+
"summary": "The qa run usage line lists --currency <code>; keep the existing QA recommendation command set while next routes owed Polish and QA stages; show an open adapter-decision template in the build prompt and document the single-list behavior, local proof environment, and build fingerprint source in help."
|
|
6737
|
+
},
|
|
6738
|
+
{
|
|
6739
|
+
"class": "named_surface",
|
|
6740
|
+
"path": "docs/qa-and-test-orders.md",
|
|
6741
|
+
"surface_entry": "docs/qa-and-test-orders.md",
|
|
6742
|
+
"summary": "Describe qa run --currency: one code per run, ?currency=<CODE> on the entry URL and on each test-order path's first load with the existing query kept, the three-letter refusal, the qa parity and legacy-order refusals, and evidence.currency (or evidence.currency_not_applied) on the entry page http row."
|
|
6743
|
+
}
|
|
6744
|
+
],
|
|
6745
|
+
"entry_sha256": "ca7d3c91091fd6c5c857820ffe3ea6b9a62a9f428c0eab26cbf0b1df098fc942"
|
|
6746
|
+
},
|
|
6747
|
+
{
|
|
6748
|
+
"id": "RL-0251",
|
|
6749
|
+
"sequence": 240,
|
|
6750
|
+
"date": "2026-10-07",
|
|
6751
|
+
"kind": "release",
|
|
6752
|
+
"surface_version": null,
|
|
6753
|
+
"changelog_section": "1.54.0+agent.8",
|
|
6754
|
+
"changelog_sha256": "57049338b1514529ff826c0477082d1f9e31de77f0a1308473ab0d7cafb8c01b",
|
|
6755
|
+
"agent_impact": "Next asks for Polish when a local preview theme waiver or changed build leaves it owed, and asks for QA again when the last recorded QA build differs from the current output. A packet preview URL does not replace record deploy. Help invocations never journal, and later start is valid re-intake. Follow next before recording downstream work.",
|
|
6756
|
+
"compatibility": "compatible",
|
|
6757
|
+
"migration": "none",
|
|
6758
|
+
"changes": [
|
|
6759
|
+
{
|
|
6760
|
+
"class": "cli_surface",
|
|
6761
|
+
"path": "src/doctor/next-step.mjs",
|
|
6762
|
+
"surface_entry": "next",
|
|
6763
|
+
"summary": "Pick Polish after a local theme waiver or rebuild, and re-owe QA for a different build while still requiring recorded deploy."
|
|
6764
|
+
},
|
|
6765
|
+
{
|
|
6766
|
+
"class": "named_surface",
|
|
6767
|
+
"path": "docs/build-packet.md",
|
|
6768
|
+
"surface_entry": "docs/build-packet.md",
|
|
6769
|
+
"summary": "Explain the deploy record and QA order after a changed build; list recordable values, explain wrapper_policy intake and read precedence, and document one-list behavior and the report-only write."
|
|
6770
|
+
}
|
|
6771
|
+
],
|
|
6772
|
+
"entry_sha256": "7ffb028e273e591d224628ceea618df57233286a273e7813ec3a1fb0e47479c4"
|
|
6773
|
+
},
|
|
6774
|
+
{
|
|
6775
|
+
"id": "RL-0252",
|
|
6776
|
+
"sequence": 241,
|
|
6777
|
+
"date": "2026-10-07",
|
|
6778
|
+
"kind": "release",
|
|
6779
|
+
"surface_version": null,
|
|
6780
|
+
"changelog_section": "1.54.0+agent.9",
|
|
6781
|
+
"changelog_sha256": "14a10e9c78458f100c075cff330d5a72364dcd5b00c720a3bf5809843269f542",
|
|
6782
|
+
"agent_impact": "After a page-kit build, record the true scalar adapter choices in one record build --adapter-decision list; a repeated flag keeps only the last list. wrapper_policy remains an intake choice. Doctor reads the effective report, context, then packet conversion status for leftover wrappers and its adapter warnings name the recording command. The Build Packet and Build Context are not written by record build.",
|
|
6783
|
+
"compatibility": "additive",
|
|
6784
|
+
"migration": "none",
|
|
6785
|
+
"changes": [
|
|
6786
|
+
{
|
|
6787
|
+
"class": "cli_surface",
|
|
6788
|
+
"path": "src/doctor/checks.mjs",
|
|
6789
|
+
"surface_entry": "doctor",
|
|
6790
|
+
"summary": "Check leftover source document wrappers against the effective report, context, then packet conversion status."
|
|
6791
|
+
}
|
|
6792
|
+
],
|
|
6793
|
+
"entry_sha256": "2604e105b3c308004f617b3fd839acc01f32e75dbe4ebf28324f23569aebc5db"
|
|
6794
|
+
},
|
|
6795
|
+
{
|
|
6796
|
+
"id": "RL-0253",
|
|
6797
|
+
"sequence": 242,
|
|
6798
|
+
"date": "2026-10-07",
|
|
6799
|
+
"kind": "release",
|
|
6800
|
+
"surface_version": null,
|
|
6801
|
+
"changelog_section": "1.54.0+agent.10",
|
|
6802
|
+
"changelog_sha256": "c693a2482b40ae5bc570dc591927fc60c2193d339a2c36df8489c885d0028fdd",
|
|
6803
|
+
"agent_impact": "Theme inspection excludes decorative selector subjects from primary and CTA selection while keeping the primary and CTA matching used on main. An accent-only CTA fallback asks the operator to confirm its colour.",
|
|
6804
|
+
"compatibility": "compatible",
|
|
6805
|
+
"migration": "none",
|
|
6806
|
+
"changes": [
|
|
6807
|
+
{
|
|
6808
|
+
"class": "named_surface",
|
|
6809
|
+
"path": "docs/brand-theme-bridge.md",
|
|
6810
|
+
"surface_entry": "docs/brand-theme-bridge.md",
|
|
6811
|
+
"summary": "Explain decorative subject exclusions, main-compatible primary and CTA matching, and the accent-only fallback warning."
|
|
6812
|
+
}
|
|
6813
|
+
],
|
|
6814
|
+
"entry_sha256": "446b7cc41c5af2352fecedebc543e9bb38a31b025afe2b60848d912e615f902b"
|
|
6815
|
+
},
|
|
6816
|
+
{
|
|
6817
|
+
"id": "RL-0254",
|
|
6818
|
+
"sequence": 243,
|
|
6819
|
+
"date": "2026-10-07",
|
|
6820
|
+
"kind": "release",
|
|
6821
|
+
"surface_version": "1.55.0",
|
|
6822
|
+
"changelog_section": "1.55.0",
|
|
6823
|
+
"changelog_sha256": "cfd5709d45e917e8e4ee92e42b8ceb09d560c9fbf023ca4c6552a55874877e7b",
|
|
6824
|
+
"agent_impact": "Run Records carry QA publish reason, closing path, QA verdict/build binding, prompt wait, bounded doctor/QA codes, and separate needs-input/failure invocation counts. Legacy journal entries keep wait unknown. Agent usage input is gone. Re-emitting a record with agent_usage replaces it with a fresh record without carrying its prior remit state; qa publish posts but cannot stamp that older record as published.",
|
|
6825
|
+
"compatibility": "breaking",
|
|
6826
|
+
"migration": "Stop passing agent usage flags. Re-emitting a legacy agent_usage record replaces it and drops its prior remit state; qa publish posts but cannot stamp it.",
|
|
6827
|
+
"changes": [
|
|
6828
|
+
{
|
|
6829
|
+
"class": "compatibility_policy",
|
|
6830
|
+
"path": "contracts/supported-surface.json",
|
|
6831
|
+
"surface_entry": "contracts/supported-surface.json",
|
|
6832
|
+
"summary": "Advance surface_version to 1.55.0 and record the Run Record schema hash, including lifecycle telemetry fields."
|
|
6833
|
+
},
|
|
6834
|
+
{
|
|
6835
|
+
"class": "named_surface",
|
|
6836
|
+
"path": "docs/effects.md",
|
|
6837
|
+
"surface_entry": "docs/effects.md",
|
|
6838
|
+
"summary": "Remove the obsolete agent usage flag validation description."
|
|
6839
|
+
},
|
|
6840
|
+
{
|
|
6841
|
+
"class": "named_surface",
|
|
6842
|
+
"path": "docs/qa-and-test-orders.md",
|
|
6843
|
+
"surface_entry": "docs/qa-and-test-orders.md",
|
|
6844
|
+
"summary": "Name the nullable QA publish decision reason in the Run Record."
|
|
6845
|
+
},
|
|
6846
|
+
{
|
|
6847
|
+
"class": "compatibility_policy",
|
|
6848
|
+
"path": "docs/supported-surface.md",
|
|
6849
|
+
"surface_entry": "docs/supported-surface.md",
|
|
6850
|
+
"summary": "Mark 1.55.0 breaking: add publish, closeout, QA observation, lifecycle stage wait and finding-code, and run-level exit-count fields; remove agent_usage."
|
|
6851
|
+
},
|
|
6852
|
+
{
|
|
6853
|
+
"class": "named_surface",
|
|
6854
|
+
"path": "docs/workflow-findings-sidecar.md",
|
|
6855
|
+
"surface_entry": "docs/workflow-findings-sidecar.md",
|
|
6856
|
+
"summary": "Document the publish reason, closing path, QA verdict/build binding, prompt wait, code sources, and exit buckets."
|
|
6857
|
+
},
|
|
6858
|
+
{
|
|
6859
|
+
"class": "generated_runtime",
|
|
6860
|
+
"path": "package-lock.json",
|
|
6861
|
+
"surface_entry": null,
|
|
6862
|
+
"summary": "Advance the package version to 1.55.0."
|
|
6863
|
+
},
|
|
6864
|
+
{
|
|
6865
|
+
"class": "package_export",
|
|
6866
|
+
"path": "package.json",
|
|
6867
|
+
"surface_entry": null,
|
|
6868
|
+
"summary": "Advance the package version to 1.55.0 with exports unchanged."
|
|
6869
|
+
},
|
|
6870
|
+
{
|
|
6871
|
+
"class": "schema",
|
|
6872
|
+
"path": "schemas/campaigns-os-run-record.v0.schema.json",
|
|
6873
|
+
"surface_entry": "schemas/campaigns-os-run-record.v0.schema.json",
|
|
6874
|
+
"summary": "Add optional QA publish, closeout, and currency fields plus lifecycle wait, finding codes, and exit buckets; remove agent_usage."
|
|
6875
|
+
},
|
|
6876
|
+
{
|
|
6877
|
+
"class": "cli_surface",
|
|
6878
|
+
"path": "src/cli.mjs",
|
|
6879
|
+
"surface_entry": "run-record",
|
|
6880
|
+
"summary": "Pass each closer through internal options, route prompt wait and finding codes to lifecycle capture, and remove agent usage flags."
|
|
6881
|
+
},
|
|
6882
|
+
{
|
|
6883
|
+
"class": "named_surface",
|
|
6884
|
+
"path": "docs/runtime-readiness.md",
|
|
6885
|
+
"surface_entry": "docs/runtime-readiness.md",
|
|
6886
|
+
"summary": "Regenerate at surface 1.55.0."
|
|
6887
|
+
},
|
|
6888
|
+
{
|
|
6889
|
+
"class": "documentation",
|
|
6890
|
+
"path": "docs/orientation-contract-reference.md",
|
|
6891
|
+
"surface_entry": "docs/orientation-contract-reference.md",
|
|
6892
|
+
"summary": "Regenerate at surface 1.55.0."
|
|
6893
|
+
},
|
|
6894
|
+
{
|
|
6895
|
+
"class": "compatibility_policy",
|
|
6896
|
+
"path": "compatibility.json",
|
|
6897
|
+
"surface_entry": null,
|
|
6898
|
+
"summary": "Advance the declared version to 1.55.0."
|
|
6899
|
+
},
|
|
6900
|
+
{
|
|
6901
|
+
"class": "named_surface",
|
|
6902
|
+
"path": "docs/local-setup.md",
|
|
6903
|
+
"surface_entry": "docs/local-setup.md",
|
|
6904
|
+
"summary": "Pin the 1.55.0 package in the local setup install command."
|
|
6905
|
+
},
|
|
6906
|
+
{
|
|
6907
|
+
"class": "named_surface",
|
|
6908
|
+
"path": "docs/skills-revision.md",
|
|
6909
|
+
"surface_entry": "docs/skills-revision.md",
|
|
6910
|
+
"summary": "Restamp to skills bundle 1.55.0+skills.1."
|
|
6911
|
+
},
|
|
6912
|
+
{
|
|
6913
|
+
"class": "skill",
|
|
6914
|
+
"path": "skills.json",
|
|
6915
|
+
"surface_entry": null,
|
|
6916
|
+
"summary": "Advance bundle_revision to 1.55.0+skills.1 and the patch version of each restamped skill."
|
|
6917
|
+
},
|
|
6918
|
+
{
|
|
6919
|
+
"class": "skill",
|
|
6920
|
+
"path": "skills/campaign-lifecycle-orientation/SKILL.md",
|
|
6921
|
+
"surface_entry": null,
|
|
6922
|
+
"summary": "Restamp to skills bundle 1.55.0+skills.1."
|
|
6923
|
+
},
|
|
6924
|
+
{
|
|
6925
|
+
"class": "skill",
|
|
6926
|
+
"path": "skills/campaign-readback-classification/SKILL.md",
|
|
6927
|
+
"surface_entry": null,
|
|
6928
|
+
"summary": "Restamp to skills bundle 1.55.0+skills.1."
|
|
6929
|
+
},
|
|
6930
|
+
{
|
|
6931
|
+
"class": "skill",
|
|
6932
|
+
"path": "skills/campaign-run-evidence/SKILL.md",
|
|
6933
|
+
"surface_entry": null,
|
|
6934
|
+
"summary": "Restamp to skills bundle 1.55.0+skills.1."
|
|
6935
|
+
},
|
|
6936
|
+
{
|
|
6937
|
+
"class": "skill",
|
|
6938
|
+
"path": "skills/contribution-intake/SKILL.md",
|
|
6939
|
+
"surface_entry": null,
|
|
6940
|
+
"summary": "Restamp to skills bundle 1.55.0+skills.1."
|
|
6941
|
+
},
|
|
6942
|
+
{
|
|
6943
|
+
"class": "skill",
|
|
6944
|
+
"path": "skills/next-campaigns-build/SKILL.md",
|
|
6945
|
+
"surface_entry": null,
|
|
6946
|
+
"summary": "Restamp to skills bundle 1.55.0+skills.1."
|
|
6947
|
+
},
|
|
6948
|
+
{
|
|
6949
|
+
"class": "skill",
|
|
6950
|
+
"path": "skills/next-campaigns-os-setup/SKILL.md",
|
|
6951
|
+
"surface_entry": null,
|
|
6952
|
+
"summary": "Restamp to skills bundle 1.55.0+skills.1."
|
|
6953
|
+
},
|
|
6954
|
+
{
|
|
6955
|
+
"class": "skill",
|
|
6956
|
+
"path": "skills/next-campaigns-os/SKILL.md",
|
|
6957
|
+
"surface_entry": null,
|
|
6958
|
+
"summary": "Restamp to skills bundle 1.55.0+skills.1."
|
|
6959
|
+
},
|
|
6960
|
+
{
|
|
6961
|
+
"class": "skill",
|
|
6962
|
+
"path": "skills/next-campaigns-polish/SKILL.md",
|
|
6963
|
+
"surface_entry": null,
|
|
6964
|
+
"summary": "Restamp to skills bundle 1.55.0+skills.1."
|
|
6965
|
+
},
|
|
6966
|
+
{
|
|
6967
|
+
"class": "skill",
|
|
6968
|
+
"path": "skills/next-campaigns-qa/SKILL.md",
|
|
6969
|
+
"surface_entry": null,
|
|
6970
|
+
"summary": "Restamp to skills bundle 1.55.0+skills.1."
|
|
6971
|
+
}
|
|
6972
|
+
],
|
|
6973
|
+
"entry_sha256": "cdd823b095d9a05eb39d751c20396d25303dcc00dc1a2c12baeb15ac580e6819"
|
|
6200
6974
|
}
|
|
6201
6975
|
]
|
|
6202
6976
|
}
|