@nextcommerce/campaigns-os 1.61.0 → 1.63.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/AGENTS.md +2 -1
- package/CHANGELOG.md +127 -0
- package/README.md +86 -438
- package/agents/claude/CLAUDE.md +9 -4
- package/agents/codex/AGENTS.md +8 -4
- package/agents/copilot/copilot-instructions.md +8 -4
- package/agents/cursor/campaigns-os.mdc +10 -4
- package/campaign-spec/README.md +7 -0
- package/campaign-spec/dist/analytics-vendors.d.ts +40 -0
- package/campaign-spec/dist/analytics-vendors.js +44 -0
- package/campaign-spec/dist/checkout-flow.d.ts +18 -0
- package/campaign-spec/dist/checkout-flow.js +28 -0
- package/campaign-spec/dist/index.d.ts +4 -2
- package/campaign-spec/dist/index.js +5 -1
- package/campaign-spec/dist/rules/analytics-contract-shape.d.ts +8 -0
- package/campaign-spec/dist/rules/analytics-contract-shape.js +39 -0
- package/campaign-spec/dist/rules/campaign-currencies.d.ts +30 -0
- package/campaign-spec/dist/rules/campaign-currencies.js +130 -0
- package/campaign-spec/dist/rules/checkout-path-has-packages.d.ts +31 -0
- package/campaign-spec/dist/rules/checkout-path-has-packages.js +79 -0
- package/campaign-spec/dist/rules/index.d.ts +3 -0
- package/campaign-spec/dist/rules/index.js +9 -0
- package/campaign-spec/dist/rules/package-currency-prices.d.ts +29 -0
- package/campaign-spec/dist/rules/package-currency-prices.js +137 -0
- package/campaign-spec/dist/types.d.ts +59 -9
- package/compatibility.json +1 -1
- package/contracts/commerce-surface-catalog.json +59 -53
- package/contracts/effects.v1.json +549 -165
- package/contracts/fixtures/runtime-recipe/accept/current.json +4 -0
- package/contracts/fixtures/runtime-recipe/accept/minimal.json +4 -0
- package/contracts/fixtures/runtime-recipe/dist-states.json +1 -1
- package/contracts/fixtures/runtime-recipe/reject/advisory-enforcement.json +4 -0
- package/contracts/fixtures/runtime-recipe/reject/allowlist-without-hosts.json +4 -0
- package/contracts/fixtures/runtime-recipe/reject/committed-output-claim.json +4 -0
- package/contracts/fixtures/runtime-recipe/reject/engines-disagreement-warns.json +4 -0
- package/contracts/fixtures/runtime-recipe/reject/lifecycle-scripts-enabled.json +4 -0
- package/contracts/fixtures/runtime-recipe/reject/unknown-kind.json +4 -0
- package/contracts/fixtures/runtime-recipe/reject/unknown-network-policy.json +4 -0
- package/contracts/fixtures/runtime-recipe/reject/unknown-output-check.json +4 -0
- package/contracts/fixtures/runtime-recipe/reject/unknown-revision.json +4 -0
- package/contracts/fixtures/runtime-recipe/reject/unknown-step-id.json +4 -0
- package/contracts/fixtures/runtime-recipe/reject/unperformable-check-skipped.json +4 -0
- package/contracts/fixtures/runtime-recipe/reject/unpinned-lockfile.json +4 -0
- package/contracts/release-ledger.json +1260 -0
- package/contracts/runtime-recipe.campaigns-os-node-v1.json +4 -0
- package/contracts/supported-surface.json +8 -8
- package/contracts/template-brand-contract.shared-commerce.v0.json +23 -1
- package/docs/build-packet.md +430 -37
- package/docs/campaign-standardization-report.md +4 -4
- package/docs/campaigns-os-build-flow.md +54 -3
- package/docs/campaignspec-authoring-examples.md +59 -4
- package/docs/design-source-package.md +18 -6
- package/docs/effects.md +17 -9
- package/docs/local-setup.md +1 -1
- package/docs/orientation-contract-reference.md +1 -1
- package/docs/polish-evidence.md +2 -0
- package/docs/progress-snapshots.md +7 -4
- package/docs/qa-and-test-orders.md +147 -1
- package/docs/readback.md +40 -5
- package/docs/runtime-readiness.md +7 -3
- package/docs/sdk-storage-compatibility.md +1 -1
- package/docs/skills-revision.md +10 -10
- package/package.json +1 -1
- package/schemas/campaign-runtime-build-context.v0.schema.json +9 -0
- package/schemas/campaign-runtime-build-packet.v0.schema.json +9 -0
- package/schemas/campaign-spec.v4.schema.json +34 -3
- package/schemas/campaign-spec.v5.schema.json +34 -3
- package/schemas/campaigns-os-readback.v2.schema.json +62 -1
- 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 +4 -3
- package/skills/next-campaigns-os/SKILL.md +6 -4
- package/skills/next-campaigns-os-setup/SKILL.md +5 -3
- package/skills/next-campaigns-polish/SKILL.md +5 -4
- package/skills/next-campaigns-qa/SKILL.md +7 -4
- package/skills/next-campaigns-sdk-bump/SKILL.md +42 -9
- package/skills.json +11 -11
- package/src/brand-theme.mjs +2 -1
- package/src/build-brief.mjs +4 -1
- package/src/campaign-workspace.mjs +288 -15
- package/src/change-scope.mjs +284 -0
- package/src/cli.mjs +308 -86
- package/src/commercial-journey.mjs +16 -3
- package/src/commercial-parity.mjs +15 -7
- package/src/content-residue.mjs +4 -2
- package/src/design-source-package.mjs +36 -0
- package/src/design-source-publication.mjs +9 -6
- package/src/directory-lock.mjs +73 -19
- package/src/doctor/checks.mjs +79 -7
- package/src/doctor/ci.mjs +75 -10
- package/src/doctor/inspect.mjs +23 -6
- package/src/doctor/next-step.mjs +7 -0
- package/src/doctor-sidecar.mjs +3 -2
- package/src/evidence-debt.mjs +47 -7
- package/src/finding-cause.mjs +12 -11
- package/src/input-refresh.mjs +339 -32
- package/src/invocation.mjs +7 -1
- package/src/live-campaign-refs.mjs +7 -2
- package/src/local-preview-policy.mjs +35 -2
- package/src/page-kit-analytics-vendors.mjs +132 -0
- package/src/polish-browser.mjs +3 -1
- package/src/polish-readability.mjs +221 -9
- package/src/polish-visual.mjs +9 -2
- package/src/progress-node.mjs +3 -2
- package/src/qa-analytics-parity.mjs +17 -1
- package/src/qa-browser.mjs +40 -4
- package/src/qa-commercial-parity.mjs +50 -3
- package/src/qa-node.mjs +196 -16
- package/src/qa-publish.mjs +9 -8
- package/src/qa-sidecar.mjs +16 -4
- package/src/qa-vendor-beacons.mjs +232 -0
- package/src/qa-vendor-endpoints.mjs +306 -0
- package/src/qc-accept.mjs +29 -1
- package/src/qc-check-registry.mjs +5 -1
- package/src/qc-results.mjs +73 -26
- package/src/readback.mjs +58 -10
- package/src/route-identity.mjs +10 -0
- package/src/run-record.mjs +18 -10
- package/src/runtime-state-ignore.mjs +6 -2
- package/src/sdk-storage-compatibility.mjs +21 -2
- package/src/source-html-intake.mjs +15 -1
- package/src/spec-derive-campaign.mjs +216 -0
- package/src/spec-derive.mjs +473 -53
- package/src/spec-identity.mjs +14 -0
- package/src/stage-ledger.mjs +40 -1
- package/src/stage-record.mjs +58 -13
- package/src/target-lock.mjs +11 -1
|
@@ -9419,6 +9419,1266 @@
|
|
|
9419
9419
|
}
|
|
9420
9420
|
],
|
|
9421
9421
|
"entry_sha256": "8c2fc5103b4e74c10d0e9b9ff62369ee7eeb1821a7cc9f0912090fa46ede6165"
|
|
9422
|
+
},
|
|
9423
|
+
{
|
|
9424
|
+
"id": "RL-0290",
|
|
9425
|
+
"sequence": 278,
|
|
9426
|
+
"date": "2026-10-24",
|
|
9427
|
+
"kind": "amendment",
|
|
9428
|
+
"amends": "RL-0289",
|
|
9429
|
+
"amendment_reason": "The 1.61.0 section listed only the 1.60.0+agent.7 to agent.10 sections it publishes. The tag also carries 1.60.0+agent.1 through agent.6, released on main after 1.60.0 and never named in a release section. The section now lists all ten; this amendment carries the corrected section hash. RL-0289 is otherwise unchanged. The 1.60.0+agent.2 section (in-page Meta pixel observation, campaigns-os#686) has no ledger entry of its own on main: the ledger links agent.1 (RL-0280) and then agent.3 (RL-0281). That gap predates this amendment; the section is named here because the tag carries it, and a backfill entry for it is separate work.",
|
|
9430
|
+
"surface_version": null,
|
|
9431
|
+
"changelog_section": "1.61.0",
|
|
9432
|
+
"changelog_sha256": "7a17f07adc73539981842f2b18fe9bbe20f5062a1e9690326bbbc124f5b18194",
|
|
9433
|
+
"agent_impact": "RL-0289's publish list is incomplete: it starts at 1.60.0+agent.7 and omits agent.1 through agent.6. Read it as superseded on that point: a 1.61.0 install carries 1.60.0+agent.1 through agent.10. The six earlier sections are the qa run --site slug fix, the in-page Meta pixel observation, the page-type doctor advisories, the sdk-bump skill round-two changes with the v0.4.43 attribute index, the documented qa run test-address flags, and the sdk storage-check report wording. Read those sections when reconciling behaviour against 1.60.0. RL-0289 is otherwise unchanged.",
|
|
9434
|
+
"compatibility": "compatible",
|
|
9435
|
+
"migration": "none",
|
|
9436
|
+
"changes": [
|
|
9437
|
+
{
|
|
9438
|
+
"class": "documentation",
|
|
9439
|
+
"path": null,
|
|
9440
|
+
"surface_entry": "CHANGELOG.md",
|
|
9441
|
+
"summary": "List 1.60.0+agent.1 through agent.6 in the 1.61.0 release section as published sections; the section bytes change, the entry it amends does not."
|
|
9442
|
+
}
|
|
9443
|
+
],
|
|
9444
|
+
"entry_sha256": "9d23c21ceafc7503647f80368a13d30b3d074566bd6d7bcd7a4e07fb482a569b"
|
|
9445
|
+
},
|
|
9446
|
+
{
|
|
9447
|
+
"id": "RL-0291",
|
|
9448
|
+
"sequence": 279,
|
|
9449
|
+
"date": "2026-10-24",
|
|
9450
|
+
"kind": "amendment",
|
|
9451
|
+
"amends": "RL-0290",
|
|
9452
|
+
"amendment_reason": "The 1.61.0 section gained a short plain-language summary above its existing content, for readers skimming the changelog. Its heading, date and bullets are unchanged. This amendment carries the section's new hash; RL-0290 is otherwise unchanged.",
|
|
9453
|
+
"surface_version": null,
|
|
9454
|
+
"changelog_section": "1.61.0",
|
|
9455
|
+
"changelog_sha256": "1528cc028bdd57c2fd8e77df165a1dddfb6ba02b9ed8b9d0bdbec7fb88397372",
|
|
9456
|
+
"agent_impact": "None. The 1.61.0 section now opens with a summary paragraph; the changes RL-0290 records, and everything it says about them, stand as written.",
|
|
9457
|
+
"compatibility": "compatible",
|
|
9458
|
+
"migration": "none",
|
|
9459
|
+
"changes": [
|
|
9460
|
+
{
|
|
9461
|
+
"class": "documentation",
|
|
9462
|
+
"path": null,
|
|
9463
|
+
"surface_entry": "CHANGELOG.md",
|
|
9464
|
+
"summary": "Add a plain-language summary at the top of the 1.61.0 changelog section; the section bytes change, the entry it amends does not."
|
|
9465
|
+
}
|
|
9466
|
+
],
|
|
9467
|
+
"entry_sha256": "836066c2bf381f911682ea7e4f0c5410d5a4a140a36b1e40a8ffb819b3d890d5"
|
|
9468
|
+
},
|
|
9469
|
+
{
|
|
9470
|
+
"id": "RL-0292",
|
|
9471
|
+
"sequence": 280,
|
|
9472
|
+
"date": "2026-10-24",
|
|
9473
|
+
"kind": "amendment",
|
|
9474
|
+
"amends": "RL-0288",
|
|
9475
|
+
"amendment_reason": "The 1.60.0+agent.10 section gained a short plain-language summary above its existing content, for readers skimming the changelog. Its heading, date and bullets are unchanged. This amendment carries the section's new hash; RL-0288 is otherwise unchanged.",
|
|
9476
|
+
"surface_version": null,
|
|
9477
|
+
"changelog_section": "1.60.0+agent.10",
|
|
9478
|
+
"changelog_sha256": "854116099e7c29be864a51f30fa79088a206394e9dfbff00cd836e8656704399",
|
|
9479
|
+
"agent_impact": "None. The 1.60.0+agent.10 section now opens with a summary paragraph; the changes RL-0288 records, and everything it says about them, stand as written.",
|
|
9480
|
+
"compatibility": "compatible",
|
|
9481
|
+
"migration": "none",
|
|
9482
|
+
"changes": [
|
|
9483
|
+
{
|
|
9484
|
+
"class": "documentation",
|
|
9485
|
+
"path": null,
|
|
9486
|
+
"surface_entry": "CHANGELOG.md",
|
|
9487
|
+
"summary": "Add a plain-language summary at the top of the 1.60.0+agent.10 changelog section; the section bytes change, the entry it amends does not."
|
|
9488
|
+
}
|
|
9489
|
+
],
|
|
9490
|
+
"entry_sha256": "637ef794bd2a4076ad180bc5c3a530f228673f74d1ea51bed44bb26b8b2f857a"
|
|
9491
|
+
},
|
|
9492
|
+
{
|
|
9493
|
+
"id": "RL-0293",
|
|
9494
|
+
"sequence": 281,
|
|
9495
|
+
"date": "2026-10-24",
|
|
9496
|
+
"kind": "amendment",
|
|
9497
|
+
"amends": "RL-0287",
|
|
9498
|
+
"amendment_reason": "The 1.60.0+agent.9 section gained a short plain-language summary above its existing content, for readers skimming the changelog. Its heading, date and bullets are unchanged. This amendment carries the section's new hash; RL-0287 is otherwise unchanged.",
|
|
9499
|
+
"surface_version": null,
|
|
9500
|
+
"changelog_section": "1.60.0+agent.9",
|
|
9501
|
+
"changelog_sha256": "ca8f5a76467b73cd95a67cd97ff50a278ce6667a28391776e2c8b0ad752f14ea",
|
|
9502
|
+
"agent_impact": "None. The 1.60.0+agent.9 section now opens with a summary paragraph; the changes RL-0287 records, and everything it says about them, stand as written.",
|
|
9503
|
+
"compatibility": "compatible",
|
|
9504
|
+
"migration": "none",
|
|
9505
|
+
"changes": [
|
|
9506
|
+
{
|
|
9507
|
+
"class": "documentation",
|
|
9508
|
+
"path": null,
|
|
9509
|
+
"surface_entry": "CHANGELOG.md",
|
|
9510
|
+
"summary": "Add a plain-language summary at the top of the 1.60.0+agent.9 changelog section; the section bytes change, the entry it amends does not."
|
|
9511
|
+
}
|
|
9512
|
+
],
|
|
9513
|
+
"entry_sha256": "7f9ac243a700d14ac0bc98ba544d7c27092047791130cee38b3936cb487bdbd1"
|
|
9514
|
+
},
|
|
9515
|
+
{
|
|
9516
|
+
"id": "RL-0294",
|
|
9517
|
+
"sequence": 282,
|
|
9518
|
+
"date": "2026-10-24",
|
|
9519
|
+
"kind": "amendment",
|
|
9520
|
+
"amends": "RL-0286",
|
|
9521
|
+
"amendment_reason": "The 1.60.0+agent.8 section gained a short plain-language summary above its existing content, for readers skimming the changelog. Its heading, date and bullets are unchanged. This amendment carries the section's new hash; RL-0286 is otherwise unchanged.",
|
|
9522
|
+
"surface_version": null,
|
|
9523
|
+
"changelog_section": "1.60.0+agent.8",
|
|
9524
|
+
"changelog_sha256": "316e1ed7542dd196fa09c8f666fe938fb7be473644a9d9168d4b8df0e4af972a",
|
|
9525
|
+
"agent_impact": "None. The 1.60.0+agent.8 section now opens with a summary paragraph; the changes RL-0286 records, and everything it says about them, stand as written.",
|
|
9526
|
+
"compatibility": "compatible",
|
|
9527
|
+
"migration": "none",
|
|
9528
|
+
"changes": [
|
|
9529
|
+
{
|
|
9530
|
+
"class": "documentation",
|
|
9531
|
+
"path": null,
|
|
9532
|
+
"surface_entry": "CHANGELOG.md",
|
|
9533
|
+
"summary": "Add a plain-language summary at the top of the 1.60.0+agent.8 changelog section; the section bytes change, the entry it amends does not."
|
|
9534
|
+
}
|
|
9535
|
+
],
|
|
9536
|
+
"entry_sha256": "76a710ca5a0cbf082499affcd2642e8fd891500c4272633246ed8a31820aaa68"
|
|
9537
|
+
},
|
|
9538
|
+
{
|
|
9539
|
+
"id": "RL-0295",
|
|
9540
|
+
"sequence": 283,
|
|
9541
|
+
"date": "2026-10-24",
|
|
9542
|
+
"kind": "amendment",
|
|
9543
|
+
"amends": "RL-0285",
|
|
9544
|
+
"amendment_reason": "The 1.60.0+agent.7 section gained a short plain-language summary above its existing content, for readers skimming the changelog. Its heading, date and bullets are unchanged. This amendment carries the section's new hash; RL-0285 is otherwise unchanged.",
|
|
9545
|
+
"surface_version": null,
|
|
9546
|
+
"changelog_section": "1.60.0+agent.7",
|
|
9547
|
+
"changelog_sha256": "63df77cb934d392e050167889a41882fdf58c21e099f901e917563e7f8ac3bc7",
|
|
9548
|
+
"agent_impact": "None. The 1.60.0+agent.7 section now opens with a summary paragraph; the changes RL-0285 records, and everything it says about them, stand as written.",
|
|
9549
|
+
"compatibility": "compatible",
|
|
9550
|
+
"migration": "none",
|
|
9551
|
+
"changes": [
|
|
9552
|
+
{
|
|
9553
|
+
"class": "documentation",
|
|
9554
|
+
"path": null,
|
|
9555
|
+
"surface_entry": "CHANGELOG.md",
|
|
9556
|
+
"summary": "Add a plain-language summary at the top of the 1.60.0+agent.7 changelog section; the section bytes change, the entry it amends does not."
|
|
9557
|
+
}
|
|
9558
|
+
],
|
|
9559
|
+
"entry_sha256": "2420fc39ca5d8bbe7a7fc0d434089d52a5ae75d03fee32192dde12b931c0b7df"
|
|
9560
|
+
},
|
|
9561
|
+
{
|
|
9562
|
+
"id": "RL-0296",
|
|
9563
|
+
"sequence": 284,
|
|
9564
|
+
"date": "2026-10-24",
|
|
9565
|
+
"kind": "amendment",
|
|
9566
|
+
"amends": "RL-0284",
|
|
9567
|
+
"amendment_reason": "The 1.60.0+agent.6 section gained a short plain-language summary above its existing content, for readers skimming the changelog. Its heading, date and bullets are unchanged. This amendment carries the section's new hash; RL-0284 is otherwise unchanged.",
|
|
9568
|
+
"surface_version": null,
|
|
9569
|
+
"changelog_section": "1.60.0+agent.6",
|
|
9570
|
+
"changelog_sha256": "25cca79158a80db7fe61967b1622693892fb26490387f773f0bc01eebf762d1d",
|
|
9571
|
+
"agent_impact": "None. The 1.60.0+agent.6 section now opens with a summary paragraph; the changes RL-0284 records, and everything it says about them, stand as written.",
|
|
9572
|
+
"compatibility": "compatible",
|
|
9573
|
+
"migration": "none",
|
|
9574
|
+
"changes": [
|
|
9575
|
+
{
|
|
9576
|
+
"class": "documentation",
|
|
9577
|
+
"path": null,
|
|
9578
|
+
"surface_entry": "CHANGELOG.md",
|
|
9579
|
+
"summary": "Add a plain-language summary at the top of the 1.60.0+agent.6 changelog section; the section bytes change, the entry it amends does not."
|
|
9580
|
+
}
|
|
9581
|
+
],
|
|
9582
|
+
"entry_sha256": "1b3531e5a696060f50319e87a7bc25cde0ac2ea0d2df49b2bfab60d2c875bf65"
|
|
9583
|
+
},
|
|
9584
|
+
{
|
|
9585
|
+
"id": "RL-0297",
|
|
9586
|
+
"sequence": 285,
|
|
9587
|
+
"date": "2026-10-24",
|
|
9588
|
+
"kind": "amendment",
|
|
9589
|
+
"amends": "RL-0283",
|
|
9590
|
+
"amendment_reason": "The 1.60.0+agent.5 section gained a short plain-language summary above its existing content, for readers skimming the changelog. Its heading, date and bullets are unchanged. This amendment carries the section's new hash; RL-0283 is otherwise unchanged.",
|
|
9591
|
+
"surface_version": null,
|
|
9592
|
+
"changelog_section": "1.60.0+agent.5",
|
|
9593
|
+
"changelog_sha256": "d614ad57b22133a6a5c76f79edc1c0dffc776ebe81eff4b2a05872392fadd324",
|
|
9594
|
+
"agent_impact": "None. The 1.60.0+agent.5 section now opens with a summary paragraph; the changes RL-0283 records, and everything it says about them, stand as written.",
|
|
9595
|
+
"compatibility": "compatible",
|
|
9596
|
+
"migration": "none",
|
|
9597
|
+
"changes": [
|
|
9598
|
+
{
|
|
9599
|
+
"class": "documentation",
|
|
9600
|
+
"path": null,
|
|
9601
|
+
"surface_entry": "CHANGELOG.md",
|
|
9602
|
+
"summary": "Add a plain-language summary at the top of the 1.60.0+agent.5 changelog section; the section bytes change, the entry it amends does not."
|
|
9603
|
+
}
|
|
9604
|
+
],
|
|
9605
|
+
"entry_sha256": "3b9f1a02ed5447a0ea3171beef9cd7e16533746d4c8766c4e79f39d90296afdf"
|
|
9606
|
+
},
|
|
9607
|
+
{
|
|
9608
|
+
"id": "RL-0298",
|
|
9609
|
+
"sequence": 286,
|
|
9610
|
+
"date": "2026-10-24",
|
|
9611
|
+
"kind": "amendment",
|
|
9612
|
+
"amends": "RL-0282",
|
|
9613
|
+
"amendment_reason": "The 1.60.0+agent.4 section gained a short plain-language summary above its existing content, for readers skimming the changelog. Its heading, date and bullets are unchanged. This amendment carries the section's new hash; RL-0282 is otherwise unchanged.",
|
|
9614
|
+
"surface_version": null,
|
|
9615
|
+
"changelog_section": "1.60.0+agent.4",
|
|
9616
|
+
"changelog_sha256": "c60dd68995d3fec5388efe3e0e96015eff60ec6a3c6f037a25dc647b69919336",
|
|
9617
|
+
"agent_impact": "None. The 1.60.0+agent.4 section now opens with a summary paragraph; the changes RL-0282 records, and everything it says about them, stand as written.",
|
|
9618
|
+
"compatibility": "compatible",
|
|
9619
|
+
"migration": "none",
|
|
9620
|
+
"changes": [
|
|
9621
|
+
{
|
|
9622
|
+
"class": "documentation",
|
|
9623
|
+
"path": null,
|
|
9624
|
+
"surface_entry": "CHANGELOG.md",
|
|
9625
|
+
"summary": "Add a plain-language summary at the top of the 1.60.0+agent.4 changelog section; the section bytes change, the entry it amends does not."
|
|
9626
|
+
}
|
|
9627
|
+
],
|
|
9628
|
+
"entry_sha256": "13920b10cac21e22b8a0e85de715ba4beb930a741d66d4eb5e46383382b55b5f"
|
|
9629
|
+
},
|
|
9630
|
+
{
|
|
9631
|
+
"id": "RL-0299",
|
|
9632
|
+
"sequence": 287,
|
|
9633
|
+
"date": "2026-10-24",
|
|
9634
|
+
"kind": "amendment",
|
|
9635
|
+
"amends": "RL-0281",
|
|
9636
|
+
"amendment_reason": "The 1.60.0+agent.3 section gained a short plain-language summary above its existing content, for readers skimming the changelog. Its heading, date and bullets are unchanged. This amendment carries the section's new hash; RL-0281 is otherwise unchanged.",
|
|
9637
|
+
"surface_version": null,
|
|
9638
|
+
"changelog_section": "1.60.0+agent.3",
|
|
9639
|
+
"changelog_sha256": "23565203a748876f2ee5167c8e965028023a73ac374bff8580580112376d0bc8",
|
|
9640
|
+
"agent_impact": "None. The 1.60.0+agent.3 section now opens with a summary paragraph; the changes RL-0281 records, and everything it says about them, stand as written.",
|
|
9641
|
+
"compatibility": "compatible",
|
|
9642
|
+
"migration": "none",
|
|
9643
|
+
"changes": [
|
|
9644
|
+
{
|
|
9645
|
+
"class": "documentation",
|
|
9646
|
+
"path": null,
|
|
9647
|
+
"surface_entry": "CHANGELOG.md",
|
|
9648
|
+
"summary": "Add a plain-language summary at the top of the 1.60.0+agent.3 changelog section; the section bytes change, the entry it amends does not."
|
|
9649
|
+
}
|
|
9650
|
+
],
|
|
9651
|
+
"entry_sha256": "720519bb93f0691aa542a256918abfb89cd17323eb0c570542ed8994ac9341ec"
|
|
9652
|
+
},
|
|
9653
|
+
{
|
|
9654
|
+
"id": "RL-0300",
|
|
9655
|
+
"sequence": 288,
|
|
9656
|
+
"date": "2026-10-24",
|
|
9657
|
+
"kind": "amendment",
|
|
9658
|
+
"amends": "RL-0280",
|
|
9659
|
+
"amendment_reason": "The 1.60.0+agent.1 section gained a short plain-language summary above its existing content, for readers skimming the changelog. Its heading, date and bullets are unchanged. This amendment carries the section's new hash; RL-0280 is otherwise unchanged.",
|
|
9660
|
+
"surface_version": null,
|
|
9661
|
+
"changelog_section": "1.60.0+agent.1",
|
|
9662
|
+
"changelog_sha256": "387d37541874a61284c07206762053088e7bd428a316667e2fcc7f3179b6271b",
|
|
9663
|
+
"agent_impact": "None. The 1.60.0+agent.1 section now opens with a summary paragraph; the changes RL-0280 records, and everything it says about them, stand as written.",
|
|
9664
|
+
"compatibility": "compatible",
|
|
9665
|
+
"migration": "none",
|
|
9666
|
+
"changes": [
|
|
9667
|
+
{
|
|
9668
|
+
"class": "documentation",
|
|
9669
|
+
"path": null,
|
|
9670
|
+
"surface_entry": "CHANGELOG.md",
|
|
9671
|
+
"summary": "Add a plain-language summary at the top of the 1.60.0+agent.1 changelog section; the section bytes change, the entry it amends does not."
|
|
9672
|
+
}
|
|
9673
|
+
],
|
|
9674
|
+
"entry_sha256": "113f4693437cbab35a309242675e1ab79b6471e3540a5bbe03e5e7f86a2578d3"
|
|
9675
|
+
},
|
|
9676
|
+
{
|
|
9677
|
+
"id": "RL-0301",
|
|
9678
|
+
"sequence": 289,
|
|
9679
|
+
"date": "2026-10-24",
|
|
9680
|
+
"kind": "amendment",
|
|
9681
|
+
"amends": "RL-0279",
|
|
9682
|
+
"amendment_reason": "The 1.60.0 section gained a short plain-language summary above its existing content, for readers skimming the changelog. Its heading, date and bullets are unchanged. This amendment carries the section's new hash; RL-0279 is otherwise unchanged.",
|
|
9683
|
+
"surface_version": null,
|
|
9684
|
+
"changelog_section": "1.60.0",
|
|
9685
|
+
"changelog_sha256": "1a7e4c8f6a723d2ea7cef5bc19d5aa556c046eb5af58fd8732d5769db6ddcd98",
|
|
9686
|
+
"agent_impact": "None. The 1.60.0 section now opens with a summary paragraph; the changes RL-0279 records, and everything it says about them, stand as written.",
|
|
9687
|
+
"compatibility": "compatible",
|
|
9688
|
+
"migration": "none",
|
|
9689
|
+
"changes": [
|
|
9690
|
+
{
|
|
9691
|
+
"class": "documentation",
|
|
9692
|
+
"path": null,
|
|
9693
|
+
"surface_entry": "CHANGELOG.md",
|
|
9694
|
+
"summary": "Add a plain-language summary at the top of the 1.60.0 changelog section; the section bytes change, the entry it amends does not."
|
|
9695
|
+
}
|
|
9696
|
+
],
|
|
9697
|
+
"entry_sha256": "a2bd9bd9cd1ef6d0234815957e121f24c5c4f9fe997fac1b9d987baf10f666ca"
|
|
9698
|
+
},
|
|
9699
|
+
{
|
|
9700
|
+
"id": "RL-0302",
|
|
9701
|
+
"sequence": 290,
|
|
9702
|
+
"date": "2026-10-24",
|
|
9703
|
+
"kind": "amendment",
|
|
9704
|
+
"amends": "RL-0278",
|
|
9705
|
+
"amendment_reason": "The 1.59.0+agent.13 section gained a short plain-language summary above its existing content, for readers skimming the changelog. Its heading, date and bullets are unchanged. This amendment carries the section's new hash; RL-0278 is otherwise unchanged.",
|
|
9706
|
+
"surface_version": null,
|
|
9707
|
+
"changelog_section": "1.59.0+agent.13",
|
|
9708
|
+
"changelog_sha256": "5a99271a0f9a70dd6fb37e5884e9c0c356c8c62f1196c1c1e786074867ea80ca",
|
|
9709
|
+
"agent_impact": "None. The 1.59.0+agent.13 section now opens with a summary paragraph; the changes RL-0278 records, and everything it says about them, stand as written.",
|
|
9710
|
+
"compatibility": "compatible",
|
|
9711
|
+
"migration": "none",
|
|
9712
|
+
"changes": [
|
|
9713
|
+
{
|
|
9714
|
+
"class": "documentation",
|
|
9715
|
+
"path": null,
|
|
9716
|
+
"surface_entry": "CHANGELOG.md",
|
|
9717
|
+
"summary": "Add a plain-language summary at the top of the 1.59.0+agent.13 changelog section; the section bytes change, the entry it amends does not."
|
|
9718
|
+
}
|
|
9719
|
+
],
|
|
9720
|
+
"entry_sha256": "f9ca1652ee8eacec61153a379eff3b85e28fa70addcd28d2727dad04961940c2"
|
|
9721
|
+
},
|
|
9722
|
+
{
|
|
9723
|
+
"id": "RL-0303",
|
|
9724
|
+
"sequence": 291,
|
|
9725
|
+
"date": "2026-10-24",
|
|
9726
|
+
"kind": "amendment",
|
|
9727
|
+
"amends": "RL-0277",
|
|
9728
|
+
"amendment_reason": "The 1.59.0+agent.12 section gained a short plain-language summary above its existing content, for readers skimming the changelog. Its heading, date and bullets are unchanged. This amendment carries the section's new hash; RL-0277 is otherwise unchanged.",
|
|
9729
|
+
"surface_version": null,
|
|
9730
|
+
"changelog_section": "1.59.0+agent.12",
|
|
9731
|
+
"changelog_sha256": "ebe67d12ac2ac604b63228b7a7fdf2fe601d1d937ab7865a74dd908ecb73c42e",
|
|
9732
|
+
"agent_impact": "None. The 1.59.0+agent.12 section now opens with a summary paragraph; the changes RL-0277 records, and everything it says about them, stand as written.",
|
|
9733
|
+
"compatibility": "compatible",
|
|
9734
|
+
"migration": "none",
|
|
9735
|
+
"changes": [
|
|
9736
|
+
{
|
|
9737
|
+
"class": "documentation",
|
|
9738
|
+
"path": null,
|
|
9739
|
+
"surface_entry": "CHANGELOG.md",
|
|
9740
|
+
"summary": "Add a plain-language summary at the top of the 1.59.0+agent.12 changelog section; the section bytes change, the entry it amends does not."
|
|
9741
|
+
}
|
|
9742
|
+
],
|
|
9743
|
+
"entry_sha256": "c11bfa088e4823d1920084cfdbd6bbc374d97291f706baab0dce43e0c5e403b9"
|
|
9744
|
+
},
|
|
9745
|
+
{
|
|
9746
|
+
"id": "RL-0304",
|
|
9747
|
+
"sequence": 292,
|
|
9748
|
+
"date": "2026-10-24",
|
|
9749
|
+
"kind": "amendment",
|
|
9750
|
+
"amends": "RL-0276",
|
|
9751
|
+
"amendment_reason": "The 1.59.0+agent.11 section gained a short plain-language summary above its existing content, for readers skimming the changelog. Its heading, date and bullets are unchanged. This amendment carries the section's new hash; RL-0276 is otherwise unchanged.",
|
|
9752
|
+
"surface_version": null,
|
|
9753
|
+
"changelog_section": "1.59.0+agent.11",
|
|
9754
|
+
"changelog_sha256": "68cf1cc90720fb53626ca0ba18b09f94d842d09f49937912f44dea95979f5dd8",
|
|
9755
|
+
"agent_impact": "None. The 1.59.0+agent.11 section now opens with a summary paragraph; the changes RL-0276 records, and everything it says about them, stand as written.",
|
|
9756
|
+
"compatibility": "compatible",
|
|
9757
|
+
"migration": "none",
|
|
9758
|
+
"changes": [
|
|
9759
|
+
{
|
|
9760
|
+
"class": "documentation",
|
|
9761
|
+
"path": null,
|
|
9762
|
+
"surface_entry": "CHANGELOG.md",
|
|
9763
|
+
"summary": "Add a plain-language summary at the top of the 1.59.0+agent.11 changelog section; the section bytes change, the entry it amends does not."
|
|
9764
|
+
}
|
|
9765
|
+
],
|
|
9766
|
+
"entry_sha256": "a1f319b383e2b001769bc263b93c0d3ed04741f80759471d6b714fbf557321b2"
|
|
9767
|
+
},
|
|
9768
|
+
{
|
|
9769
|
+
"id": "RL-0305",
|
|
9770
|
+
"sequence": 293,
|
|
9771
|
+
"date": "2026-10-24",
|
|
9772
|
+
"kind": "amendment",
|
|
9773
|
+
"amends": "RL-0275",
|
|
9774
|
+
"amendment_reason": "The 1.59.0+agent.10 section gained a short plain-language summary above its existing content, for readers skimming the changelog. Its heading, date and bullets are unchanged. This amendment carries the section's new hash; RL-0275 is otherwise unchanged.",
|
|
9775
|
+
"surface_version": null,
|
|
9776
|
+
"changelog_section": "1.59.0+agent.10",
|
|
9777
|
+
"changelog_sha256": "f06ca5efaecf49c030a6b74942341bb4a3d5b490610ca1b7d4d7cd149b09ff91",
|
|
9778
|
+
"agent_impact": "None. The 1.59.0+agent.10 section now opens with a summary paragraph; the changes RL-0275 records, and everything it says about them, stand as written.",
|
|
9779
|
+
"compatibility": "compatible",
|
|
9780
|
+
"migration": "none",
|
|
9781
|
+
"changes": [
|
|
9782
|
+
{
|
|
9783
|
+
"class": "documentation",
|
|
9784
|
+
"path": null,
|
|
9785
|
+
"surface_entry": "CHANGELOG.md",
|
|
9786
|
+
"summary": "Add a plain-language summary at the top of the 1.59.0+agent.10 changelog section; the section bytes change, the entry it amends does not."
|
|
9787
|
+
}
|
|
9788
|
+
],
|
|
9789
|
+
"entry_sha256": "d2b6cc5cec06b0201bd28be543c8dc26f1eda4cce80d0202686a35438ded5e1d"
|
|
9790
|
+
},
|
|
9791
|
+
{
|
|
9792
|
+
"id": "RL-0306",
|
|
9793
|
+
"sequence": 294,
|
|
9794
|
+
"date": "2026-10-24",
|
|
9795
|
+
"kind": "amendment",
|
|
9796
|
+
"amends": "RL-0274",
|
|
9797
|
+
"amendment_reason": "The 1.59.0+agent.8 section gained a short plain-language summary above its existing content, for readers skimming the changelog. Its heading, date and bullets are unchanged. This amendment carries the section's new hash; RL-0274 is otherwise unchanged.",
|
|
9798
|
+
"surface_version": null,
|
|
9799
|
+
"changelog_section": "1.59.0+agent.8",
|
|
9800
|
+
"changelog_sha256": "53741122f9f4bff029290f0895dcaf8c3bf0ad3d08122c866b32e14ba0c30172",
|
|
9801
|
+
"agent_impact": "None. The 1.59.0+agent.8 section now opens with a summary paragraph; the changes RL-0274 records, and everything it says about them, stand as written.",
|
|
9802
|
+
"compatibility": "compatible",
|
|
9803
|
+
"migration": "none",
|
|
9804
|
+
"changes": [
|
|
9805
|
+
{
|
|
9806
|
+
"class": "documentation",
|
|
9807
|
+
"path": null,
|
|
9808
|
+
"surface_entry": "CHANGELOG.md",
|
|
9809
|
+
"summary": "Add a plain-language summary at the top of the 1.59.0+agent.8 changelog section; the section bytes change, the entry it amends does not."
|
|
9810
|
+
}
|
|
9811
|
+
],
|
|
9812
|
+
"entry_sha256": "7eddcc548059f6c967aeabedb66b82768b6d17c74cfc95d6811d69d9d07c94f8"
|
|
9813
|
+
},
|
|
9814
|
+
{
|
|
9815
|
+
"id": "RL-0307",
|
|
9816
|
+
"sequence": 295,
|
|
9817
|
+
"date": "2026-10-24",
|
|
9818
|
+
"kind": "amendment",
|
|
9819
|
+
"amends": "RL-0272",
|
|
9820
|
+
"amendment_reason": "The 1.59.0+agent.7 section gained a short plain-language summary above its existing content, for readers skimming the changelog. Its heading, date and bullets are unchanged. This amendment carries the section's new hash; RL-0272 is otherwise unchanged.",
|
|
9821
|
+
"surface_version": null,
|
|
9822
|
+
"changelog_section": "1.59.0+agent.7",
|
|
9823
|
+
"changelog_sha256": "1c40a51c1bffa89ddc3a1af8ddfd497797617c39e285a3e5901cc349044d7818",
|
|
9824
|
+
"agent_impact": "None. The 1.59.0+agent.7 section now opens with a summary paragraph; the changes RL-0272 records, and everything it says about them, stand as written.",
|
|
9825
|
+
"compatibility": "compatible",
|
|
9826
|
+
"migration": "none",
|
|
9827
|
+
"changes": [
|
|
9828
|
+
{
|
|
9829
|
+
"class": "documentation",
|
|
9830
|
+
"path": null,
|
|
9831
|
+
"surface_entry": "CHANGELOG.md",
|
|
9832
|
+
"summary": "Add a plain-language summary at the top of the 1.59.0+agent.7 changelog section; the section bytes change, the entry it amends does not."
|
|
9833
|
+
}
|
|
9834
|
+
],
|
|
9835
|
+
"entry_sha256": "dbd86d414921da3d1134ba76a5d5c205683750c6e3e5d0477483f73f4dd31cf8"
|
|
9836
|
+
},
|
|
9837
|
+
{
|
|
9838
|
+
"id": "RL-0308",
|
|
9839
|
+
"sequence": 296,
|
|
9840
|
+
"date": "2026-10-24",
|
|
9841
|
+
"kind": "amendment",
|
|
9842
|
+
"amends": "RL-0271",
|
|
9843
|
+
"amendment_reason": "The 1.59.0+agent.5 section gained a short plain-language summary above its existing content, for readers skimming the changelog. Its heading, date and bullets are unchanged. This amendment carries the section's new hash; RL-0271 is otherwise unchanged.",
|
|
9844
|
+
"surface_version": null,
|
|
9845
|
+
"changelog_section": "1.59.0+agent.5",
|
|
9846
|
+
"changelog_sha256": "7d6ddb073f430ebf7d2c70b0affaebaf183eb114403cad04f4740ae9e12c0df9",
|
|
9847
|
+
"agent_impact": "None. The 1.59.0+agent.5 section now opens with a summary paragraph; the changes RL-0271 records, and everything it says about them, stand as written.",
|
|
9848
|
+
"compatibility": "compatible",
|
|
9849
|
+
"migration": "none",
|
|
9850
|
+
"changes": [
|
|
9851
|
+
{
|
|
9852
|
+
"class": "documentation",
|
|
9853
|
+
"path": null,
|
|
9854
|
+
"surface_entry": "CHANGELOG.md",
|
|
9855
|
+
"summary": "Add a plain-language summary at the top of the 1.59.0+agent.5 changelog section; the section bytes change, the entry it amends does not."
|
|
9856
|
+
}
|
|
9857
|
+
],
|
|
9858
|
+
"entry_sha256": "d824a4bc616390176ce6117c7c2903df7505bd4c8bb36cbcdc528da94d62bb3e"
|
|
9859
|
+
},
|
|
9860
|
+
{
|
|
9861
|
+
"id": "RL-0309",
|
|
9862
|
+
"sequence": 297,
|
|
9863
|
+
"date": "2026-10-24",
|
|
9864
|
+
"kind": "amendment",
|
|
9865
|
+
"amends": "RL-0273",
|
|
9866
|
+
"amendment_reason": "The 1.59.0+agent.4 section gained a short plain-language summary above its existing content, for readers skimming the changelog. Its heading, date and bullets are unchanged. This amendment carries the section's new hash; RL-0273 is otherwise unchanged.",
|
|
9867
|
+
"surface_version": null,
|
|
9868
|
+
"changelog_section": "1.59.0+agent.4",
|
|
9869
|
+
"changelog_sha256": "842645813edaacc08319ea929356e31b750d0479cab9a979acf5bb095d5099f7",
|
|
9870
|
+
"agent_impact": "None. The 1.59.0+agent.4 section now opens with a summary paragraph; the changes RL-0273 records, and everything it says about them, stand as written.",
|
|
9871
|
+
"compatibility": "compatible",
|
|
9872
|
+
"migration": "none",
|
|
9873
|
+
"changes": [
|
|
9874
|
+
{
|
|
9875
|
+
"class": "documentation",
|
|
9876
|
+
"path": null,
|
|
9877
|
+
"surface_entry": "CHANGELOG.md",
|
|
9878
|
+
"summary": "Add a plain-language summary at the top of the 1.59.0+agent.4 changelog section; the section bytes change, the entry it amends does not."
|
|
9879
|
+
}
|
|
9880
|
+
],
|
|
9881
|
+
"entry_sha256": "3c86339dbb6d472ed5294c1836a2a9b97ad4b32c02a2b67a025a9d5169cacc65"
|
|
9882
|
+
},
|
|
9883
|
+
{
|
|
9884
|
+
"id": "RL-0310",
|
|
9885
|
+
"sequence": 298,
|
|
9886
|
+
"date": "2026-10-24",
|
|
9887
|
+
"kind": "amendment",
|
|
9888
|
+
"amends": "RL-0268",
|
|
9889
|
+
"amendment_reason": "The 1.59.0 section gained a short plain-language summary above its existing content, for readers skimming the changelog. Its heading, date and bullets are unchanged. This amendment carries the section's new hash; RL-0268 is otherwise unchanged.",
|
|
9890
|
+
"surface_version": null,
|
|
9891
|
+
"changelog_section": "1.59.0",
|
|
9892
|
+
"changelog_sha256": "3df95b7dfbb190b6190c0265ec8edf0b0cc1ae59be3a1332185cc38ed2dbc475",
|
|
9893
|
+
"agent_impact": "None. The 1.59.0 section now opens with a summary paragraph; the changes RL-0268 records, and everything it says about them, stand as written.",
|
|
9894
|
+
"compatibility": "compatible",
|
|
9895
|
+
"migration": "none",
|
|
9896
|
+
"changes": [
|
|
9897
|
+
{
|
|
9898
|
+
"class": "documentation",
|
|
9899
|
+
"path": null,
|
|
9900
|
+
"surface_entry": "CHANGELOG.md",
|
|
9901
|
+
"summary": "Add a plain-language summary at the top of the 1.59.0 changelog section; the section bytes change, the entry it amends does not."
|
|
9902
|
+
}
|
|
9903
|
+
],
|
|
9904
|
+
"entry_sha256": "c8d911144e956c791867afb9cc014bbbbf54be8e3faee6448bafea4a588f618c"
|
|
9905
|
+
},
|
|
9906
|
+
{
|
|
9907
|
+
"id": "RL-0311",
|
|
9908
|
+
"sequence": 299,
|
|
9909
|
+
"date": "2026-10-29",
|
|
9910
|
+
"kind": "release",
|
|
9911
|
+
"surface_version": null,
|
|
9912
|
+
"changelog_section": "1.61.0+agent.2",
|
|
9913
|
+
"changelog_sha256": "077018155e9017725a3f64c0e0158a6dae9dc3381eb8869fcccbc943a22d3458",
|
|
9914
|
+
"agent_impact": "An agent running next-campaigns-sdk-bump checks step 3's known-changes table for each version the range crosses. For 0.4.32 it prefers the SDK's dl_purchase; a purchase capture that stays hand-wired moves off the checkout page to the first page after checkout, reads the order's ?ref_id=, sends once per order, and step 6 reloads that page once with beacons blocked to prove it; it never re-adds an order:completed listener there. For 0.4.41 it confirms the campaign has a payment key and removes or ports the page's own Spreedly iframe script, Spreedly-global calls and v1 frame selectors in the same commit as the pin move. For 0.4.43 it checks Shop Pay, and it rebuilds or removes a hand-written modulepreload list of SDK files. For a 3-D Secure order it uses the card in docs/qa-and-test-orders.md after the developer confirms the gateway is in test mode. sdk storage-check now inventories only the tracked files under --scope, so it runs on large repositories; the old 'Cannot inventory tracked Git source files.' failure means the pinned install is npm 1.61.0 or earlier and is fixed by updating the pin. The inventory failure now reads 'Cannot inventory tracked Git source files: <reason>'; an agent matching the old exact text should match the prefix. Re-run tooling status --skills-revision 1.61.0+skills.2 and start a fresh session on mismatch.",
|
|
9915
|
+
"compatibility": "compatible",
|
|
9916
|
+
"migration": "none",
|
|
9917
|
+
"changes": [
|
|
9918
|
+
{
|
|
9919
|
+
"class": "skill",
|
|
9920
|
+
"path": "skills.json",
|
|
9921
|
+
"surface_entry": "skills.json",
|
|
9922
|
+
"summary": "Advance bundle revision to 1.61.0+skills.2 and each skill version one patch."
|
|
9923
|
+
},
|
|
9924
|
+
{
|
|
9925
|
+
"class": "skill",
|
|
9926
|
+
"path": "skills/next-campaigns-sdk-bump/SKILL.md",
|
|
9927
|
+
"surface_entry": null,
|
|
9928
|
+
"summary": "Add the known-changes table (0.4.32 purchase capture with once-per-order sends, 0.4.41 Spreedly hosted fields, 0.4.42, 0.4.43, modulepreload), the 3-D Secure test card, a purchase replay check in step 6, and the update-the-pin answer to the old storage-check failure."
|
|
9929
|
+
},
|
|
9930
|
+
{
|
|
9931
|
+
"class": "skill",
|
|
9932
|
+
"path": "skills/next-campaigns-os/SKILL.md",
|
|
9933
|
+
"surface_entry": null,
|
|
9934
|
+
"summary": "Carry the advanced bundle revision and matching per-skill version."
|
|
9935
|
+
},
|
|
9936
|
+
{
|
|
9937
|
+
"class": "skill",
|
|
9938
|
+
"path": "skills/next-campaigns-os-setup/SKILL.md",
|
|
9939
|
+
"surface_entry": null,
|
|
9940
|
+
"summary": "Carry the advanced bundle revision and matching per-skill version."
|
|
9941
|
+
},
|
|
9942
|
+
{
|
|
9943
|
+
"class": "skill",
|
|
9944
|
+
"path": "skills/next-campaigns-build/SKILL.md",
|
|
9945
|
+
"surface_entry": null,
|
|
9946
|
+
"summary": "Carry the advanced bundle revision and matching per-skill version."
|
|
9947
|
+
},
|
|
9948
|
+
{
|
|
9949
|
+
"class": "skill",
|
|
9950
|
+
"path": "skills/next-campaigns-polish/SKILL.md",
|
|
9951
|
+
"surface_entry": null,
|
|
9952
|
+
"summary": "Carry the advanced bundle revision and matching per-skill version."
|
|
9953
|
+
},
|
|
9954
|
+
{
|
|
9955
|
+
"class": "skill",
|
|
9956
|
+
"path": "skills/next-campaigns-qa/SKILL.md",
|
|
9957
|
+
"surface_entry": null,
|
|
9958
|
+
"summary": "Carry the advanced bundle revision and matching per-skill version."
|
|
9959
|
+
},
|
|
9960
|
+
{
|
|
9961
|
+
"class": "skill",
|
|
9962
|
+
"path": "skills/campaign-lifecycle-orientation/SKILL.md",
|
|
9963
|
+
"surface_entry": null,
|
|
9964
|
+
"summary": "Carry the advanced bundle revision and matching per-skill version."
|
|
9965
|
+
},
|
|
9966
|
+
{
|
|
9967
|
+
"class": "skill",
|
|
9968
|
+
"path": "skills/campaign-run-evidence/SKILL.md",
|
|
9969
|
+
"surface_entry": null,
|
|
9970
|
+
"summary": "Carry the advanced bundle revision and matching per-skill version."
|
|
9971
|
+
},
|
|
9972
|
+
{
|
|
9973
|
+
"class": "skill",
|
|
9974
|
+
"path": "skills/campaign-readback-classification/SKILL.md",
|
|
9975
|
+
"surface_entry": null,
|
|
9976
|
+
"summary": "Carry the advanced bundle revision and matching per-skill version."
|
|
9977
|
+
},
|
|
9978
|
+
{
|
|
9979
|
+
"class": "skill",
|
|
9980
|
+
"path": "skills/contribution-intake/SKILL.md",
|
|
9981
|
+
"surface_entry": null,
|
|
9982
|
+
"summary": "Carry the advanced bundle revision and matching per-skill version."
|
|
9983
|
+
},
|
|
9984
|
+
{
|
|
9985
|
+
"class": "named_surface",
|
|
9986
|
+
"path": "docs/skills-revision.md",
|
|
9987
|
+
"surface_entry": "docs/skills-revision.md",
|
|
9988
|
+
"summary": "Update current bundle revision examples to 1.61.0+skills.2."
|
|
9989
|
+
},
|
|
9990
|
+
{
|
|
9991
|
+
"class": "named_surface",
|
|
9992
|
+
"path": "docs/sdk-storage-compatibility.md",
|
|
9993
|
+
"surface_entry": "docs/sdk-storage-compatibility.md",
|
|
9994
|
+
"summary": "Describe the scoped tracked-file inventory and the new 'Cannot inventory tracked Git source files: <reason>' error."
|
|
9995
|
+
}
|
|
9996
|
+
],
|
|
9997
|
+
"entry_sha256": "61bdc9a4d654769cbd5b3a4695c81783f607bf00d5121c048249726d475aeccc"
|
|
9998
|
+
},
|
|
9999
|
+
{
|
|
10000
|
+
"id": "RL-0312",
|
|
10001
|
+
"sequence": 300,
|
|
10002
|
+
"date": "2026-10-30",
|
|
10003
|
+
"kind": "release",
|
|
10004
|
+
"surface_version": "1.62.0",
|
|
10005
|
+
"changelog_section": "1.62.0",
|
|
10006
|
+
"changelog_sha256": "ee78768231befe6d8c6d5c555a3c603312e4c0153d4bb7a4e952d0f17842e4b4",
|
|
10007
|
+
"agent_impact": "In a Page Kit project with more than one funnel, an agent passes --packet campaign-runtime-<route>.build.json for a later funnel; that funnel's records live under .campaign-runtime/funnels/<route>/ (assembly.runtime_dir), readback without --packet refuses across funnels, and prepare-build refuses to replace another route's packet unless the operator agrees to --force. After deploy or QA has completed, spec derive adds and removes pages from the page tree, re-points the routing and routing hints on the edges that name them, holds a same-type file swap as page_renamed, reports an added page's packages as page_packages_not_derived (author them before doctor's CheckoutPathHasPackages / UpsellHasPackages pass), and refreshes mirrored package and offer fields from one read-only GET /api/campaign (--no-live-refs skips it); doctor blocks a stale routing hint as spec.routing_hint_stale. For a change that touches only some pages' HTML, readback's evidence_debt marks Polish advisory and QA scoped to the changed pages, and qa run --page <id> pays it without test orders. CampaignSpec validation adds CheckoutPathHasPackages (an error for a checkout path nothing sells into) and CampaignCurrencies (malformed ISO codes), and the spec carries analytics.vendors.<vendor>, which spec derive fills from campaigns.json id keys and doctor compares (page_kit.analytics_vendors, advisory). qa run --test-order answers listed vendors' beacons locally by default and records the requests as browser-test-order:vendor-beacons evidence, never purchase proof; --vendor-beacons live sends them. qa run --currency now blocks when an order or the calculate endpoint comes back in another currency. Polish warns layout.conventions for crowded floating CTA bars and CTA labels under 16px. A live lock from another Campaigns OS release is refused at once with ELOCKFORMAT. Refresh skills to 1.62.0+skills.1.",
|
|
10008
|
+
"compatibility": "additive",
|
|
10009
|
+
"migration": "none",
|
|
10010
|
+
"changes": [
|
|
10011
|
+
{
|
|
10012
|
+
"class": "documentation",
|
|
10013
|
+
"path": "AGENTS.md",
|
|
10014
|
+
"surface_entry": "AGENTS.md",
|
|
10015
|
+
"summary": "A --flag=value token, which every command refuses, skips the stale-session closeout that otherwise precedes argument refusal."
|
|
10016
|
+
},
|
|
10017
|
+
{
|
|
10018
|
+
"class": "documentation",
|
|
10019
|
+
"path": "agents/claude/CLAUDE.md",
|
|
10020
|
+
"surface_entry": "agents/claude/CLAUDE.md",
|
|
10021
|
+
"summary": "Revising a live campaign names the page-scoped QA path (qa run --page) for a page-only change."
|
|
10022
|
+
},
|
|
10023
|
+
{
|
|
10024
|
+
"class": "documentation",
|
|
10025
|
+
"path": "agents/codex/AGENTS.md",
|
|
10026
|
+
"surface_entry": "agents/codex/AGENTS.md",
|
|
10027
|
+
"summary": "Revising a live campaign names the page-scoped QA path (qa run --page) for a page-only change."
|
|
10028
|
+
},
|
|
10029
|
+
{
|
|
10030
|
+
"class": "documentation",
|
|
10031
|
+
"path": "agents/copilot/copilot-instructions.md",
|
|
10032
|
+
"surface_entry": "agents/copilot/copilot-instructions.md",
|
|
10033
|
+
"summary": "Revising a live campaign names the page-scoped QA path (qa run --page) for a page-only change."
|
|
10034
|
+
},
|
|
10035
|
+
{
|
|
10036
|
+
"class": "documentation",
|
|
10037
|
+
"path": "agents/cursor/campaigns-os.mdc",
|
|
10038
|
+
"surface_entry": "agents/cursor/campaigns-os.mdc",
|
|
10039
|
+
"summary": "Revising a live campaign names the page-scoped QA path (qa run --page) for a page-only change."
|
|
10040
|
+
},
|
|
10041
|
+
{
|
|
10042
|
+
"class": "generated_runtime",
|
|
10043
|
+
"path": "campaign-spec/analytics-vendors.ts",
|
|
10044
|
+
"surface_entry": null,
|
|
10045
|
+
"summary": "New registry of the starter templates' analytics vendors (ANALYTICS_VENDORS, analyticsVendorByKey, isPlaceholderVendorId)."
|
|
10046
|
+
},
|
|
10047
|
+
{
|
|
10048
|
+
"class": "generated_runtime",
|
|
10049
|
+
"path": "campaign-spec/checkout-flow.ts",
|
|
10050
|
+
"surface_entry": null,
|
|
10051
|
+
"summary": "New isMainCartPackage and sellsMainCartPackage helpers for the main-cart entry contract."
|
|
10052
|
+
},
|
|
10053
|
+
{
|
|
10054
|
+
"class": "generated_runtime",
|
|
10055
|
+
"path": "campaign-spec/index.ts",
|
|
10056
|
+
"surface_entry": null,
|
|
10057
|
+
"summary": "Exports the vendor registry, the main-cart helpers and the two new rules."
|
|
10058
|
+
},
|
|
10059
|
+
{
|
|
10060
|
+
"class": "generated_runtime",
|
|
10061
|
+
"path": "campaign-spec/rules/analytics-contract-shape.ts",
|
|
10062
|
+
"surface_entry": null,
|
|
10063
|
+
"summary": "AnalyticsContractShape warns on unknown vendors, enabled vendors without an id, and non-array event lists."
|
|
10064
|
+
},
|
|
10065
|
+
{
|
|
10066
|
+
"class": "generated_runtime",
|
|
10067
|
+
"path": "campaign-spec/rules/campaign-currencies.ts",
|
|
10068
|
+
"surface_entry": null,
|
|
10069
|
+
"summary": "New CampaignCurrencies rule: ISO 4217 codes for campaign.currency and available_currencies; default missing from the list warns."
|
|
10070
|
+
},
|
|
10071
|
+
{
|
|
10072
|
+
"class": "generated_runtime",
|
|
10073
|
+
"path": "campaign-spec/rules/checkout-path-has-packages.ts",
|
|
10074
|
+
"surface_entry": null,
|
|
10075
|
+
"summary": "New CheckoutPathHasPackages rule: every entry-to-Checkout path passes a page with a main-cart package entry."
|
|
10076
|
+
},
|
|
10077
|
+
{
|
|
10078
|
+
"class": "generated_runtime",
|
|
10079
|
+
"path": "campaign-spec/rules/index.ts",
|
|
10080
|
+
"surface_entry": null,
|
|
10081
|
+
"summary": "Registers CampaignCurrencies and CheckoutPathHasPackages in the rule sets."
|
|
10082
|
+
},
|
|
10083
|
+
{
|
|
10084
|
+
"class": "generated_runtime",
|
|
10085
|
+
"path": "campaign-spec/tsconfig.build.json",
|
|
10086
|
+
"surface_entry": null,
|
|
10087
|
+
"summary": "Builds the new analytics-vendors module into campaign-spec/dist."
|
|
10088
|
+
},
|
|
10089
|
+
{
|
|
10090
|
+
"class": "generated_runtime",
|
|
10091
|
+
"path": "campaign-spec/types.ts",
|
|
10092
|
+
"surface_entry": null,
|
|
10093
|
+
"summary": "AnalyticsContract gains vendors and enabled; new AnalyticsVendor types."
|
|
10094
|
+
},
|
|
10095
|
+
{
|
|
10096
|
+
"class": "compatibility_policy",
|
|
10097
|
+
"path": "compatibility.json",
|
|
10098
|
+
"surface_entry": null,
|
|
10099
|
+
"summary": "Version advances to 1.62.0."
|
|
10100
|
+
},
|
|
10101
|
+
{
|
|
10102
|
+
"class": "compatibility_policy",
|
|
10103
|
+
"path": "contracts/effects.v1.json",
|
|
10104
|
+
"surface_entry": "contracts/effects.v1.json",
|
|
10105
|
+
"summary": "Per-funnel write locations ({runtime}, {packet-runtime}); spec derive declares its live campaign read and --no-live-refs; record spec declares page rebind writes; qa run --test-order answers vendor beacons locally, with new --vendor-beacons live rows; qa run notes name --page."
|
|
10106
|
+
},
|
|
10107
|
+
{
|
|
10108
|
+
"class": "named_surface",
|
|
10109
|
+
"path": "contracts/fixtures/runtime-recipe/accept/current.json",
|
|
10110
|
+
"surface_entry": "contracts/fixtures/runtime-recipe/accept/current.json",
|
|
10111
|
+
"summary": "Regenerated with the three new recipe inputs."
|
|
10112
|
+
},
|
|
10113
|
+
{
|
|
10114
|
+
"class": "named_surface",
|
|
10115
|
+
"path": "contracts/fixtures/runtime-recipe/accept/minimal.json",
|
|
10116
|
+
"surface_entry": "contracts/fixtures/runtime-recipe/accept/minimal.json",
|
|
10117
|
+
"summary": "Regenerated with the three new recipe inputs."
|
|
10118
|
+
},
|
|
10119
|
+
{
|
|
10120
|
+
"class": "named_surface",
|
|
10121
|
+
"path": "contracts/fixtures/runtime-recipe/dist-states.json",
|
|
10122
|
+
"surface_entry": "contracts/fixtures/runtime-recipe/dist-states.json",
|
|
10123
|
+
"summary": "Regenerated with the three new recipe inputs."
|
|
10124
|
+
},
|
|
10125
|
+
{
|
|
10126
|
+
"class": "named_surface",
|
|
10127
|
+
"path": "contracts/fixtures/runtime-recipe/reject/advisory-enforcement.json",
|
|
10128
|
+
"surface_entry": "contracts/fixtures/runtime-recipe/reject/advisory-enforcement.json",
|
|
10129
|
+
"summary": "Regenerated with the three new recipe inputs."
|
|
10130
|
+
},
|
|
10131
|
+
{
|
|
10132
|
+
"class": "named_surface",
|
|
10133
|
+
"path": "contracts/fixtures/runtime-recipe/reject/allowlist-without-hosts.json",
|
|
10134
|
+
"surface_entry": "contracts/fixtures/runtime-recipe/reject/allowlist-without-hosts.json",
|
|
10135
|
+
"summary": "Regenerated with the three new recipe inputs."
|
|
10136
|
+
},
|
|
10137
|
+
{
|
|
10138
|
+
"class": "named_surface",
|
|
10139
|
+
"path": "contracts/fixtures/runtime-recipe/reject/committed-output-claim.json",
|
|
10140
|
+
"surface_entry": "contracts/fixtures/runtime-recipe/reject/committed-output-claim.json",
|
|
10141
|
+
"summary": "Regenerated with the three new recipe inputs."
|
|
10142
|
+
},
|
|
10143
|
+
{
|
|
10144
|
+
"class": "named_surface",
|
|
10145
|
+
"path": "contracts/fixtures/runtime-recipe/reject/engines-disagreement-warns.json",
|
|
10146
|
+
"surface_entry": "contracts/fixtures/runtime-recipe/reject/engines-disagreement-warns.json",
|
|
10147
|
+
"summary": "Regenerated with the three new recipe inputs."
|
|
10148
|
+
},
|
|
10149
|
+
{
|
|
10150
|
+
"class": "named_surface",
|
|
10151
|
+
"path": "contracts/fixtures/runtime-recipe/reject/lifecycle-scripts-enabled.json",
|
|
10152
|
+
"surface_entry": "contracts/fixtures/runtime-recipe/reject/lifecycle-scripts-enabled.json",
|
|
10153
|
+
"summary": "Regenerated with the three new recipe inputs."
|
|
10154
|
+
},
|
|
10155
|
+
{
|
|
10156
|
+
"class": "named_surface",
|
|
10157
|
+
"path": "contracts/fixtures/runtime-recipe/reject/unknown-kind.json",
|
|
10158
|
+
"surface_entry": "contracts/fixtures/runtime-recipe/reject/unknown-kind.json",
|
|
10159
|
+
"summary": "Regenerated with the three new recipe inputs."
|
|
10160
|
+
},
|
|
10161
|
+
{
|
|
10162
|
+
"class": "named_surface",
|
|
10163
|
+
"path": "contracts/fixtures/runtime-recipe/reject/unknown-network-policy.json",
|
|
10164
|
+
"surface_entry": "contracts/fixtures/runtime-recipe/reject/unknown-network-policy.json",
|
|
10165
|
+
"summary": "Regenerated with the three new recipe inputs."
|
|
10166
|
+
},
|
|
10167
|
+
{
|
|
10168
|
+
"class": "named_surface",
|
|
10169
|
+
"path": "contracts/fixtures/runtime-recipe/reject/unknown-output-check.json",
|
|
10170
|
+
"surface_entry": "contracts/fixtures/runtime-recipe/reject/unknown-output-check.json",
|
|
10171
|
+
"summary": "Regenerated with the three new recipe inputs."
|
|
10172
|
+
},
|
|
10173
|
+
{
|
|
10174
|
+
"class": "named_surface",
|
|
10175
|
+
"path": "contracts/fixtures/runtime-recipe/reject/unknown-revision.json",
|
|
10176
|
+
"surface_entry": "contracts/fixtures/runtime-recipe/reject/unknown-revision.json",
|
|
10177
|
+
"summary": "Regenerated with the three new recipe inputs."
|
|
10178
|
+
},
|
|
10179
|
+
{
|
|
10180
|
+
"class": "named_surface",
|
|
10181
|
+
"path": "contracts/fixtures/runtime-recipe/reject/unknown-step-id.json",
|
|
10182
|
+
"surface_entry": "contracts/fixtures/runtime-recipe/reject/unknown-step-id.json",
|
|
10183
|
+
"summary": "Regenerated with the three new recipe inputs."
|
|
10184
|
+
},
|
|
10185
|
+
{
|
|
10186
|
+
"class": "named_surface",
|
|
10187
|
+
"path": "contracts/fixtures/runtime-recipe/reject/unperformable-check-skipped.json",
|
|
10188
|
+
"surface_entry": "contracts/fixtures/runtime-recipe/reject/unperformable-check-skipped.json",
|
|
10189
|
+
"summary": "Regenerated with the three new recipe inputs."
|
|
10190
|
+
},
|
|
10191
|
+
{
|
|
10192
|
+
"class": "named_surface",
|
|
10193
|
+
"path": "contracts/fixtures/runtime-recipe/reject/unpinned-lockfile.json",
|
|
10194
|
+
"surface_entry": "contracts/fixtures/runtime-recipe/reject/unpinned-lockfile.json",
|
|
10195
|
+
"summary": "Regenerated with the three new recipe inputs."
|
|
10196
|
+
},
|
|
10197
|
+
{
|
|
10198
|
+
"class": "hashed_surface",
|
|
10199
|
+
"path": "contracts/runtime-recipe.campaigns-os-node-v1.json",
|
|
10200
|
+
"surface_entry": "contracts/runtime-recipe.campaigns-os-node-v1.json",
|
|
10201
|
+
"summary": "Inputs gain campaign-spec/analytics-vendors.ts, campaign-spec/rules/campaign-currencies.ts and campaign-spec/rules/checkout-path-has-packages.ts."
|
|
10202
|
+
},
|
|
10203
|
+
{
|
|
10204
|
+
"class": "compatibility_policy",
|
|
10205
|
+
"path": "contracts/supported-surface.json",
|
|
10206
|
+
"surface_entry": "contracts/supported-surface.json",
|
|
10207
|
+
"summary": "surface_version 1.62.0 and refreshed hashes for the two runtime schemas, both CampaignSpec schemas, the readback schema and the effects contract."
|
|
10208
|
+
},
|
|
10209
|
+
{
|
|
10210
|
+
"class": "named_surface",
|
|
10211
|
+
"path": "docs/build-packet.md",
|
|
10212
|
+
"surface_entry": "docs/build-packet.md",
|
|
10213
|
+
"summary": "Several funnels in one project, spec derive after handoff (pages, routing, rename hold, page_packages_not_derived, live mirror refresh), record spec page rebinds, template analytics vendors."
|
|
10214
|
+
},
|
|
10215
|
+
{
|
|
10216
|
+
"class": "named_surface",
|
|
10217
|
+
"path": "docs/campaign-standardization-report.md",
|
|
10218
|
+
"surface_entry": "docs/campaign-standardization-report.md",
|
|
10219
|
+
"summary": "standardize refuses --flag=value like every command, before it reads anything."
|
|
10220
|
+
},
|
|
10221
|
+
{
|
|
10222
|
+
"class": "named_surface",
|
|
10223
|
+
"path": "docs/campaigns-os-build-flow.md",
|
|
10224
|
+
"surface_entry": "docs/campaigns-os-build-flow.md",
|
|
10225
|
+
"summary": "Page-only changes owe QA on the changed pages, with Polish advisory."
|
|
10226
|
+
},
|
|
10227
|
+
{
|
|
10228
|
+
"class": "named_surface",
|
|
10229
|
+
"path": "docs/design-source-package.md",
|
|
10230
|
+
"surface_entry": "docs/design-source-package.md",
|
|
10231
|
+
"summary": "Lock format, immediate refusal of another release's live lock, abandoned-directory sweep, unreadable lock path."
|
|
10232
|
+
},
|
|
10233
|
+
{
|
|
10234
|
+
"class": "named_surface",
|
|
10235
|
+
"path": "docs/effects.md",
|
|
10236
|
+
"surface_entry": "docs/effects.md",
|
|
10237
|
+
"summary": "New location tokens, spec derive's live campaign read and tiers, the --vendor-beacons flag and its refusals, and the record spec rebind rule."
|
|
10238
|
+
},
|
|
10239
|
+
{
|
|
10240
|
+
"class": "named_surface",
|
|
10241
|
+
"path": "docs/local-setup.md",
|
|
10242
|
+
"surface_entry": "docs/local-setup.md",
|
|
10243
|
+
"summary": "Install pins @nextcommerce/campaigns-os@1.62.0."
|
|
10244
|
+
},
|
|
10245
|
+
{
|
|
10246
|
+
"class": "documentation",
|
|
10247
|
+
"path": "docs/orientation-contract-reference.md",
|
|
10248
|
+
"surface_entry": "docs/orientation-contract-reference.md",
|
|
10249
|
+
"summary": "Regenerated at supported surface 1.62.0."
|
|
10250
|
+
},
|
|
10251
|
+
{
|
|
10252
|
+
"class": "named_surface",
|
|
10253
|
+
"path": "docs/progress-snapshots.md",
|
|
10254
|
+
"surface_entry": "docs/progress-snapshots.md",
|
|
10255
|
+
"summary": "The progress allocation lock follows the same lock-format rules."
|
|
10256
|
+
},
|
|
10257
|
+
{
|
|
10258
|
+
"class": "named_surface",
|
|
10259
|
+
"path": "docs/qa-and-test-orders.md",
|
|
10260
|
+
"surface_entry": "docs/qa-and-test-orders.md",
|
|
10261
|
+
"summary": "Analytics vendor beacons, --currency blockers, page-scoped QA with --page, per-funnel QA sidecars."
|
|
10262
|
+
},
|
|
10263
|
+
{
|
|
10264
|
+
"class": "named_surface",
|
|
10265
|
+
"path": "docs/readback.md",
|
|
10266
|
+
"surface_entry": "docs/readback.md",
|
|
10267
|
+
"summary": "Readback refuses across funnels without --packet; evidence_debt change, advisory, scope and owed_pages."
|
|
10268
|
+
},
|
|
10269
|
+
{
|
|
10270
|
+
"class": "named_surface",
|
|
10271
|
+
"path": "docs/runtime-readiness.md",
|
|
10272
|
+
"surface_entry": "docs/runtime-readiness.md",
|
|
10273
|
+
"summary": "Regenerated at supported surface 1.62.0 with the three new recipe inputs."
|
|
10274
|
+
},
|
|
10275
|
+
{
|
|
10276
|
+
"class": "named_surface",
|
|
10277
|
+
"path": "docs/skills-revision.md",
|
|
10278
|
+
"surface_entry": "docs/skills-revision.md",
|
|
10279
|
+
"summary": "Examples name bundle revision 1.62.0+skills.1."
|
|
10280
|
+
},
|
|
10281
|
+
{
|
|
10282
|
+
"class": "generated_runtime",
|
|
10283
|
+
"path": "package-lock.json",
|
|
10284
|
+
"surface_entry": null,
|
|
10285
|
+
"summary": "Version advances to 1.62.0."
|
|
10286
|
+
},
|
|
10287
|
+
{
|
|
10288
|
+
"class": "package_export",
|
|
10289
|
+
"path": "package.json",
|
|
10290
|
+
"surface_entry": null,
|
|
10291
|
+
"summary": "Version advances to 1.62.0."
|
|
10292
|
+
},
|
|
10293
|
+
{
|
|
10294
|
+
"class": "schema",
|
|
10295
|
+
"path": "schemas/campaign-runtime-build-context.v0.schema.json",
|
|
10296
|
+
"surface_entry": "schemas/campaign-runtime-build-context.v0.schema.json",
|
|
10297
|
+
"summary": "New spec.route_masked_material_hash and page_map[].origin (repo)."
|
|
10298
|
+
},
|
|
10299
|
+
{
|
|
10300
|
+
"class": "schema",
|
|
10301
|
+
"path": "schemas/campaign-runtime-build-packet.v0.schema.json",
|
|
10302
|
+
"surface_entry": "schemas/campaign-runtime-build-packet.v0.schema.json",
|
|
10303
|
+
"summary": "New optional assembly.runtime_dir and source_html.pages[].origin (repo)."
|
|
10304
|
+
},
|
|
10305
|
+
{
|
|
10306
|
+
"class": "schema",
|
|
10307
|
+
"path": "schemas/campaign-spec.v4.schema.json",
|
|
10308
|
+
"surface_entry": "schemas/campaign-spec.v4.schema.json",
|
|
10309
|
+
"summary": "analytics.vendors.<vendor>; currency and available_currencies ownership; is_upsell on upsell and downsell pages (descriptions)."
|
|
10310
|
+
},
|
|
10311
|
+
{
|
|
10312
|
+
"class": "schema",
|
|
10313
|
+
"path": "schemas/campaign-spec.v5.schema.json",
|
|
10314
|
+
"surface_entry": "schemas/campaign-spec.v5.schema.json",
|
|
10315
|
+
"summary": "analytics.vendors.<vendor>; currency and available_currencies ownership; is_upsell on upsell and downsell pages (descriptions)."
|
|
10316
|
+
},
|
|
10317
|
+
{
|
|
10318
|
+
"class": "schema",
|
|
10319
|
+
"path": "schemas/campaigns-os-readback.v2.schema.json",
|
|
10320
|
+
"surface_entry": "schemas/campaigns-os-readback.v2.schema.json",
|
|
10321
|
+
"summary": "evidence_debt stages gain change, advisory, scope and owed_pages."
|
|
10322
|
+
},
|
|
10323
|
+
{
|
|
10324
|
+
"class": "skill",
|
|
10325
|
+
"path": "skills.json",
|
|
10326
|
+
"surface_entry": "skills.json",
|
|
10327
|
+
"summary": "Advance bundle revision to 1.62.0+skills.1 and each skill version one patch."
|
|
10328
|
+
},
|
|
10329
|
+
{
|
|
10330
|
+
"class": "skill",
|
|
10331
|
+
"path": "skills/campaign-lifecycle-orientation/SKILL.md",
|
|
10332
|
+
"surface_entry": null,
|
|
10333
|
+
"summary": "Carry the advanced bundle revision and matching per-skill version."
|
|
10334
|
+
},
|
|
10335
|
+
{
|
|
10336
|
+
"class": "skill",
|
|
10337
|
+
"path": "skills/campaign-readback-classification/SKILL.md",
|
|
10338
|
+
"surface_entry": null,
|
|
10339
|
+
"summary": "Carry the advanced bundle revision and matching per-skill version."
|
|
10340
|
+
},
|
|
10341
|
+
{
|
|
10342
|
+
"class": "skill",
|
|
10343
|
+
"path": "skills/campaign-run-evidence/SKILL.md",
|
|
10344
|
+
"surface_entry": null,
|
|
10345
|
+
"summary": "Carry the advanced bundle revision and matching per-skill version."
|
|
10346
|
+
},
|
|
10347
|
+
{
|
|
10348
|
+
"class": "skill",
|
|
10349
|
+
"path": "skills/contribution-intake/SKILL.md",
|
|
10350
|
+
"surface_entry": null,
|
|
10351
|
+
"summary": "Carry the advanced bundle revision and matching per-skill version."
|
|
10352
|
+
},
|
|
10353
|
+
{
|
|
10354
|
+
"class": "skill",
|
|
10355
|
+
"path": "skills/next-campaigns-build/SKILL.md",
|
|
10356
|
+
"surface_entry": null,
|
|
10357
|
+
"summary": "Builds in a multi-funnel project read and write the funnel's own records."
|
|
10358
|
+
},
|
|
10359
|
+
{
|
|
10360
|
+
"class": "skill",
|
|
10361
|
+
"path": "skills/next-campaigns-os-setup/SKILL.md",
|
|
10362
|
+
"surface_entry": null,
|
|
10363
|
+
"summary": "Setting up a second funnel: the Funnel: line, the rename steps, and asking before --force."
|
|
10364
|
+
},
|
|
10365
|
+
{
|
|
10366
|
+
"class": "skill",
|
|
10367
|
+
"path": "skills/next-campaigns-os/SKILL.md",
|
|
10368
|
+
"surface_entry": null,
|
|
10369
|
+
"summary": "Per-funnel records, spec derive after handoff, and the page-only exception to full Polish and QA after launch."
|
|
10370
|
+
},
|
|
10371
|
+
{
|
|
10372
|
+
"class": "skill",
|
|
10373
|
+
"path": "skills/next-campaigns-polish/SKILL.md",
|
|
10374
|
+
"surface_entry": null,
|
|
10375
|
+
"summary": "Report layout.conventions warnings and accept them with checkpoint accept; read a later funnel's brief and report under its runtime directory."
|
|
10376
|
+
},
|
|
10377
|
+
{
|
|
10378
|
+
"class": "skill",
|
|
10379
|
+
"path": "skills/next-campaigns-qa/SKILL.md",
|
|
10380
|
+
"surface_entry": null,
|
|
10381
|
+
"summary": "Default vendor-beacon interception, the --currency blockers, page-scoped QA with --page and its refusals, and a later funnel's brief and report paths."
|
|
10382
|
+
},
|
|
10383
|
+
{
|
|
10384
|
+
"class": "skill",
|
|
10385
|
+
"path": "skills/next-campaigns-sdk-bump/SKILL.md",
|
|
10386
|
+
"surface_entry": null,
|
|
10387
|
+
"summary": "Step 6 says qa run --test-order blocks the listed vendors' beacons by default and that --currency blocks a run in another currency."
|
|
10388
|
+
},
|
|
10389
|
+
{
|
|
10390
|
+
"class": "cli_surface",
|
|
10391
|
+
"path": "src/cli.mjs",
|
|
10392
|
+
"surface_entry": null,
|
|
10393
|
+
"summary": "prepare-build per-funnel packets and the --force rename; readback and tooling status across funnels; spec derive --no-live-refs and page scope; qa run --page and --vendor-beacons live in usage; every command refuses a --flag=value token, naming the flag and never the value."
|
|
10394
|
+
},
|
|
10395
|
+
{
|
|
10396
|
+
"class": "cli_surface",
|
|
10397
|
+
"path": "src/doctor/checks.mjs",
|
|
10398
|
+
"surface_entry": null,
|
|
10399
|
+
"summary": "New page_kit.analytics_vendors advisory and blocking spec.routing_hint_stale; per-funnel sidecar paths."
|
|
10400
|
+
},
|
|
10401
|
+
{
|
|
10402
|
+
"class": "cli_surface",
|
|
10403
|
+
"path": "src/doctor/ci.mjs",
|
|
10404
|
+
"surface_entry": null,
|
|
10405
|
+
"summary": "doctor --ci names the change found and what each stage owes; page-only changes count QA on the changed pages; an up-front argv refusal under --ci is a usage error (doctor.ci.usage, exit 2)."
|
|
10406
|
+
},
|
|
10407
|
+
{
|
|
10408
|
+
"class": "cli_surface",
|
|
10409
|
+
"path": "src/doctor/inspect.mjs",
|
|
10410
|
+
"surface_entry": null,
|
|
10411
|
+
"summary": "Doctor reads the funnel's own records from the packet's runtime directory."
|
|
10412
|
+
},
|
|
10413
|
+
{
|
|
10414
|
+
"class": "cli_surface",
|
|
10415
|
+
"path": "src/doctor/next-step.mjs",
|
|
10416
|
+
"surface_entry": null,
|
|
10417
|
+
"summary": "next treats an advisory Polish as not required."
|
|
10418
|
+
}
|
|
10419
|
+
],
|
|
10420
|
+
"entry_sha256": "34151f9822332d3b3e122b637a8d49095fcfd192529bffb26fa923016d1367d5"
|
|
10421
|
+
},
|
|
10422
|
+
{
|
|
10423
|
+
"id": "RL-0313",
|
|
10424
|
+
"sequence": 301,
|
|
10425
|
+
"date": "2026-10-31",
|
|
10426
|
+
"kind": "release",
|
|
10427
|
+
"surface_version": "1.63.0",
|
|
10428
|
+
"changelog_section": "1.63.0",
|
|
10429
|
+
"changelog_sha256": "709a63c33ef9f64e9fceb7e52e7ba1a7b35e2e8fb4404bb56aa0eac8c0702707",
|
|
10430
|
+
"agent_impact": "A page package row may carry prices[] ({ currency, price, price_retail?, price_recurring? } per currency, read from GET /campaigns/?currency=<code>); price and price_retail stay the default currency's. CampaignSpec validation adds PackageCurrencyPrices, a warning for a row whose prices[] lacks a currency the campaign sells in, has a malformed entry, or lists a currency twice. A row without prices[] is unchanged and unchecked. Refresh skills to 1.63.0+skills.1 (a revision restamp; the skill text is otherwise unchanged).",
|
|
10431
|
+
"compatibility": "additive",
|
|
10432
|
+
"migration": "none",
|
|
10433
|
+
"changes": [
|
|
10434
|
+
{
|
|
10435
|
+
"class": "generated_runtime",
|
|
10436
|
+
"path": "campaign-spec/rules/campaign-currencies.ts",
|
|
10437
|
+
"surface_entry": null,
|
|
10438
|
+
"summary": "Exports isCurrencyCode for the package price rule."
|
|
10439
|
+
},
|
|
10440
|
+
{
|
|
10441
|
+
"class": "generated_runtime",
|
|
10442
|
+
"path": "campaign-spec/rules/index.ts",
|
|
10443
|
+
"surface_entry": null,
|
|
10444
|
+
"summary": "Registers PackageCurrencyPrices in the rule sets."
|
|
10445
|
+
},
|
|
10446
|
+
{
|
|
10447
|
+
"class": "generated_runtime",
|
|
10448
|
+
"path": "campaign-spec/rules/package-currency-prices.ts",
|
|
10449
|
+
"surface_entry": null,
|
|
10450
|
+
"summary": "New PackageCurrencyPrices rule: a page package row with prices[] has a well-formed entry for every currency the campaign sells in (warning)."
|
|
10451
|
+
},
|
|
10452
|
+
{
|
|
10453
|
+
"class": "generated_runtime",
|
|
10454
|
+
"path": "campaign-spec/types.ts",
|
|
10455
|
+
"surface_entry": null,
|
|
10456
|
+
"summary": "PagePackage gains prices; new PackageCurrencyPrice type."
|
|
10457
|
+
},
|
|
10458
|
+
{
|
|
10459
|
+
"class": "compatibility_policy",
|
|
10460
|
+
"path": "compatibility.json",
|
|
10461
|
+
"surface_entry": null,
|
|
10462
|
+
"summary": "Version advances to 1.63.0."
|
|
10463
|
+
},
|
|
10464
|
+
{
|
|
10465
|
+
"class": "named_surface",
|
|
10466
|
+
"path": "contracts/fixtures/runtime-recipe/accept/current.json",
|
|
10467
|
+
"surface_entry": "contracts/fixtures/runtime-recipe/accept/current.json",
|
|
10468
|
+
"summary": "Regenerated with the new recipe input."
|
|
10469
|
+
},
|
|
10470
|
+
{
|
|
10471
|
+
"class": "named_surface",
|
|
10472
|
+
"path": "contracts/fixtures/runtime-recipe/accept/minimal.json",
|
|
10473
|
+
"surface_entry": "contracts/fixtures/runtime-recipe/accept/minimal.json",
|
|
10474
|
+
"summary": "Regenerated with the new recipe input."
|
|
10475
|
+
},
|
|
10476
|
+
{
|
|
10477
|
+
"class": "named_surface",
|
|
10478
|
+
"path": "contracts/fixtures/runtime-recipe/dist-states.json",
|
|
10479
|
+
"surface_entry": "contracts/fixtures/runtime-recipe/dist-states.json",
|
|
10480
|
+
"summary": "Regenerated with the new recipe input."
|
|
10481
|
+
},
|
|
10482
|
+
{
|
|
10483
|
+
"class": "named_surface",
|
|
10484
|
+
"path": "contracts/fixtures/runtime-recipe/reject/advisory-enforcement.json",
|
|
10485
|
+
"surface_entry": "contracts/fixtures/runtime-recipe/reject/advisory-enforcement.json",
|
|
10486
|
+
"summary": "Regenerated with the new recipe input."
|
|
10487
|
+
},
|
|
10488
|
+
{
|
|
10489
|
+
"class": "named_surface",
|
|
10490
|
+
"path": "contracts/fixtures/runtime-recipe/reject/allowlist-without-hosts.json",
|
|
10491
|
+
"surface_entry": "contracts/fixtures/runtime-recipe/reject/allowlist-without-hosts.json",
|
|
10492
|
+
"summary": "Regenerated with the new recipe input."
|
|
10493
|
+
},
|
|
10494
|
+
{
|
|
10495
|
+
"class": "named_surface",
|
|
10496
|
+
"path": "contracts/fixtures/runtime-recipe/reject/committed-output-claim.json",
|
|
10497
|
+
"surface_entry": "contracts/fixtures/runtime-recipe/reject/committed-output-claim.json",
|
|
10498
|
+
"summary": "Regenerated with the new recipe input."
|
|
10499
|
+
},
|
|
10500
|
+
{
|
|
10501
|
+
"class": "named_surface",
|
|
10502
|
+
"path": "contracts/fixtures/runtime-recipe/reject/engines-disagreement-warns.json",
|
|
10503
|
+
"surface_entry": "contracts/fixtures/runtime-recipe/reject/engines-disagreement-warns.json",
|
|
10504
|
+
"summary": "Regenerated with the new recipe input."
|
|
10505
|
+
},
|
|
10506
|
+
{
|
|
10507
|
+
"class": "named_surface",
|
|
10508
|
+
"path": "contracts/fixtures/runtime-recipe/reject/lifecycle-scripts-enabled.json",
|
|
10509
|
+
"surface_entry": "contracts/fixtures/runtime-recipe/reject/lifecycle-scripts-enabled.json",
|
|
10510
|
+
"summary": "Regenerated with the new recipe input."
|
|
10511
|
+
},
|
|
10512
|
+
{
|
|
10513
|
+
"class": "named_surface",
|
|
10514
|
+
"path": "contracts/fixtures/runtime-recipe/reject/unknown-kind.json",
|
|
10515
|
+
"surface_entry": "contracts/fixtures/runtime-recipe/reject/unknown-kind.json",
|
|
10516
|
+
"summary": "Regenerated with the new recipe input."
|
|
10517
|
+
},
|
|
10518
|
+
{
|
|
10519
|
+
"class": "named_surface",
|
|
10520
|
+
"path": "contracts/fixtures/runtime-recipe/reject/unknown-network-policy.json",
|
|
10521
|
+
"surface_entry": "contracts/fixtures/runtime-recipe/reject/unknown-network-policy.json",
|
|
10522
|
+
"summary": "Regenerated with the new recipe input."
|
|
10523
|
+
},
|
|
10524
|
+
{
|
|
10525
|
+
"class": "named_surface",
|
|
10526
|
+
"path": "contracts/fixtures/runtime-recipe/reject/unknown-output-check.json",
|
|
10527
|
+
"surface_entry": "contracts/fixtures/runtime-recipe/reject/unknown-output-check.json",
|
|
10528
|
+
"summary": "Regenerated with the new recipe input."
|
|
10529
|
+
},
|
|
10530
|
+
{
|
|
10531
|
+
"class": "named_surface",
|
|
10532
|
+
"path": "contracts/fixtures/runtime-recipe/reject/unknown-revision.json",
|
|
10533
|
+
"surface_entry": "contracts/fixtures/runtime-recipe/reject/unknown-revision.json",
|
|
10534
|
+
"summary": "Regenerated with the new recipe input."
|
|
10535
|
+
},
|
|
10536
|
+
{
|
|
10537
|
+
"class": "named_surface",
|
|
10538
|
+
"path": "contracts/fixtures/runtime-recipe/reject/unknown-step-id.json",
|
|
10539
|
+
"surface_entry": "contracts/fixtures/runtime-recipe/reject/unknown-step-id.json",
|
|
10540
|
+
"summary": "Regenerated with the new recipe input."
|
|
10541
|
+
},
|
|
10542
|
+
{
|
|
10543
|
+
"class": "named_surface",
|
|
10544
|
+
"path": "contracts/fixtures/runtime-recipe/reject/unperformable-check-skipped.json",
|
|
10545
|
+
"surface_entry": "contracts/fixtures/runtime-recipe/reject/unperformable-check-skipped.json",
|
|
10546
|
+
"summary": "Regenerated with the new recipe input."
|
|
10547
|
+
},
|
|
10548
|
+
{
|
|
10549
|
+
"class": "named_surface",
|
|
10550
|
+
"path": "contracts/fixtures/runtime-recipe/reject/unpinned-lockfile.json",
|
|
10551
|
+
"surface_entry": "contracts/fixtures/runtime-recipe/reject/unpinned-lockfile.json",
|
|
10552
|
+
"summary": "Regenerated with the new recipe input."
|
|
10553
|
+
},
|
|
10554
|
+
{
|
|
10555
|
+
"class": "hashed_surface",
|
|
10556
|
+
"path": "contracts/runtime-recipe.campaigns-os-node-v1.json",
|
|
10557
|
+
"surface_entry": "contracts/runtime-recipe.campaigns-os-node-v1.json",
|
|
10558
|
+
"summary": "Inputs gain campaign-spec/rules/package-currency-prices.ts."
|
|
10559
|
+
},
|
|
10560
|
+
{
|
|
10561
|
+
"class": "compatibility_policy",
|
|
10562
|
+
"path": "contracts/supported-surface.json",
|
|
10563
|
+
"surface_entry": "contracts/supported-surface.json",
|
|
10564
|
+
"summary": "surface_version 1.63.0 and refreshed hashes for both CampaignSpec schemas and the runtime recipe."
|
|
10565
|
+
},
|
|
10566
|
+
{
|
|
10567
|
+
"class": "named_surface",
|
|
10568
|
+
"path": "docs/local-setup.md",
|
|
10569
|
+
"surface_entry": "docs/local-setup.md",
|
|
10570
|
+
"summary": "Install pins @nextcommerce/campaigns-os@1.63.0."
|
|
10571
|
+
},
|
|
10572
|
+
{
|
|
10573
|
+
"class": "documentation",
|
|
10574
|
+
"path": "docs/orientation-contract-reference.md",
|
|
10575
|
+
"surface_entry": "docs/orientation-contract-reference.md",
|
|
10576
|
+
"summary": "Regenerated at supported surface 1.63.0."
|
|
10577
|
+
},
|
|
10578
|
+
{
|
|
10579
|
+
"class": "named_surface",
|
|
10580
|
+
"path": "docs/runtime-readiness.md",
|
|
10581
|
+
"surface_entry": "docs/runtime-readiness.md",
|
|
10582
|
+
"summary": "Regenerated at supported surface 1.63.0 with the new recipe input."
|
|
10583
|
+
},
|
|
10584
|
+
{
|
|
10585
|
+
"class": "named_surface",
|
|
10586
|
+
"path": "docs/skills-revision.md",
|
|
10587
|
+
"surface_entry": "docs/skills-revision.md",
|
|
10588
|
+
"summary": "Examples name bundle revision 1.63.0+skills.1."
|
|
10589
|
+
},
|
|
10590
|
+
{
|
|
10591
|
+
"class": "generated_runtime",
|
|
10592
|
+
"path": "package-lock.json",
|
|
10593
|
+
"surface_entry": null,
|
|
10594
|
+
"summary": "Version advances to 1.63.0."
|
|
10595
|
+
},
|
|
10596
|
+
{
|
|
10597
|
+
"class": "package_export",
|
|
10598
|
+
"path": "package.json",
|
|
10599
|
+
"surface_entry": null,
|
|
10600
|
+
"summary": "Version advances to 1.63.0."
|
|
10601
|
+
},
|
|
10602
|
+
{
|
|
10603
|
+
"class": "schema",
|
|
10604
|
+
"path": "schemas/campaign-spec.v4.schema.json",
|
|
10605
|
+
"surface_entry": "schemas/campaign-spec.v4.schema.json",
|
|
10606
|
+
"summary": "pagePackage.prices: an optional per-currency price list."
|
|
10607
|
+
},
|
|
10608
|
+
{
|
|
10609
|
+
"class": "schema",
|
|
10610
|
+
"path": "schemas/campaign-spec.v5.schema.json",
|
|
10611
|
+
"surface_entry": "schemas/campaign-spec.v5.schema.json",
|
|
10612
|
+
"summary": "pagePackage.prices: an optional per-currency price list."
|
|
10613
|
+
},
|
|
10614
|
+
{
|
|
10615
|
+
"class": "skill",
|
|
10616
|
+
"path": "skills.json",
|
|
10617
|
+
"surface_entry": "skills.json",
|
|
10618
|
+
"summary": "Advance bundle revision to 1.63.0+skills.1 and each skill version one patch."
|
|
10619
|
+
},
|
|
10620
|
+
{
|
|
10621
|
+
"class": "skill",
|
|
10622
|
+
"path": "skills/campaign-lifecycle-orientation/SKILL.md",
|
|
10623
|
+
"surface_entry": null,
|
|
10624
|
+
"summary": "Carry the advanced bundle revision and matching per-skill version."
|
|
10625
|
+
},
|
|
10626
|
+
{
|
|
10627
|
+
"class": "skill",
|
|
10628
|
+
"path": "skills/campaign-readback-classification/SKILL.md",
|
|
10629
|
+
"surface_entry": null,
|
|
10630
|
+
"summary": "Carry the advanced bundle revision and matching per-skill version."
|
|
10631
|
+
},
|
|
10632
|
+
{
|
|
10633
|
+
"class": "skill",
|
|
10634
|
+
"path": "skills/campaign-run-evidence/SKILL.md",
|
|
10635
|
+
"surface_entry": null,
|
|
10636
|
+
"summary": "Carry the advanced bundle revision and matching per-skill version."
|
|
10637
|
+
},
|
|
10638
|
+
{
|
|
10639
|
+
"class": "skill",
|
|
10640
|
+
"path": "skills/contribution-intake/SKILL.md",
|
|
10641
|
+
"surface_entry": null,
|
|
10642
|
+
"summary": "Carry the advanced bundle revision and matching per-skill version."
|
|
10643
|
+
},
|
|
10644
|
+
{
|
|
10645
|
+
"class": "skill",
|
|
10646
|
+
"path": "skills/next-campaigns-build/SKILL.md",
|
|
10647
|
+
"surface_entry": null,
|
|
10648
|
+
"summary": "Carry the advanced bundle revision and matching per-skill version."
|
|
10649
|
+
},
|
|
10650
|
+
{
|
|
10651
|
+
"class": "skill",
|
|
10652
|
+
"path": "skills/next-campaigns-os-setup/SKILL.md",
|
|
10653
|
+
"surface_entry": null,
|
|
10654
|
+
"summary": "Carry the advanced bundle revision and matching per-skill version."
|
|
10655
|
+
},
|
|
10656
|
+
{
|
|
10657
|
+
"class": "skill",
|
|
10658
|
+
"path": "skills/next-campaigns-os/SKILL.md",
|
|
10659
|
+
"surface_entry": null,
|
|
10660
|
+
"summary": "Carry the advanced bundle revision and matching per-skill version."
|
|
10661
|
+
},
|
|
10662
|
+
{
|
|
10663
|
+
"class": "skill",
|
|
10664
|
+
"path": "skills/next-campaigns-polish/SKILL.md",
|
|
10665
|
+
"surface_entry": null,
|
|
10666
|
+
"summary": "Carry the advanced bundle revision and matching per-skill version."
|
|
10667
|
+
},
|
|
10668
|
+
{
|
|
10669
|
+
"class": "skill",
|
|
10670
|
+
"path": "skills/next-campaigns-qa/SKILL.md",
|
|
10671
|
+
"surface_entry": null,
|
|
10672
|
+
"summary": "Carry the advanced bundle revision and matching per-skill version."
|
|
10673
|
+
},
|
|
10674
|
+
{
|
|
10675
|
+
"class": "skill",
|
|
10676
|
+
"path": "skills/next-campaigns-sdk-bump/SKILL.md",
|
|
10677
|
+
"surface_entry": null,
|
|
10678
|
+
"summary": "Carry the advanced bundle revision and matching per-skill version."
|
|
10679
|
+
}
|
|
10680
|
+
],
|
|
10681
|
+
"entry_sha256": "a5fe5aad03d3bf64be6fd7af32b8038867982fad1ee0c8a91a733eccdb46106b"
|
|
9422
10682
|
}
|
|
9423
10683
|
]
|
|
9424
10684
|
}
|