@nextcommerce/campaigns-os 1.57.0 → 1.60.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.
Files changed (55) hide show
  1. package/CHANGELOG.md +176 -0
  2. package/README.md +6 -5
  3. package/campaign-spec/dist/checkout-flow.d.ts +7 -0
  4. package/campaign-spec/dist/checkout-flow.js +17 -1
  5. package/compatibility.json +1 -1
  6. package/contracts/campaign-cart-sdk-support-policy.v0.json +2 -2
  7. package/contracts/commerce-surface-catalog.json +27 -28
  8. package/contracts/effects.v1.json +5 -5
  9. package/contracts/release-ledger.json +975 -0
  10. package/contracts/supported-surface.json +4 -4
  11. package/contracts/template-brand-contract.shared-commerce.v0.json +1 -1
  12. package/docs/build-packet.md +35 -19
  13. package/docs/campaign-build-brief.md +1 -1
  14. package/docs/campaigns-os-build-flow.md +1 -1
  15. package/docs/local-setup.md +1 -1
  16. package/docs/orientation-contract-reference.md +1 -1
  17. package/docs/polish-evidence.md +1 -1
  18. package/docs/qa-and-test-orders.md +54 -12
  19. package/docs/runtime-readiness.md +1 -1
  20. package/docs/skills-revision.md +10 -10
  21. package/package.json +1 -1
  22. package/schemas/campaign-runtime-build-context.v0.schema.json +2 -1
  23. package/schemas/campaign-runtime-build-packet.v0.schema.json +2 -1
  24. package/skills/campaign-lifecycle-orientation/SKILL.md +3 -3
  25. package/skills/campaign-readback-classification/SKILL.md +3 -3
  26. package/skills/campaign-run-evidence/SKILL.md +3 -3
  27. package/skills/contribution-intake/SKILL.md +3 -3
  28. package/skills/next-campaigns-build/SKILL.md +7 -7
  29. package/skills/next-campaigns-os/SKILL.md +3 -3
  30. package/skills/next-campaigns-os-setup/SKILL.md +3 -3
  31. package/skills/next-campaigns-polish/SKILL.md +9 -10
  32. package/skills/next-campaigns-qa/SKILL.md +3 -3
  33. package/skills/next-campaigns-sdk-bump/SKILL.md +193 -0
  34. package/skills.json +18 -10
  35. package/src/built-site-scope.mjs +96 -12
  36. package/src/campaign-identity.mjs +6 -4
  37. package/src/cli.mjs +50 -81
  38. package/src/doctor/checks.mjs +79 -6
  39. package/src/doctor/inspect.mjs +2 -8
  40. package/src/doctor/next-step.mjs +9 -17
  41. package/src/orchestration-stage-contract.mjs +6 -3
  42. package/src/page-kit-build-summary.mjs +21 -1
  43. package/src/page-kit-campaign-config.mjs +19 -0
  44. package/src/polish-gate.mjs +1 -5
  45. package/src/polish-node.mjs +5 -4
  46. package/src/progress-node.mjs +2 -1
  47. package/src/qa-browser.mjs +137 -2
  48. package/src/qa-cart-entry.mjs +105 -0
  49. package/src/qa-node.mjs +3 -1
  50. package/src/qa-verdict.mjs +24 -1
  51. package/src/sdk-attribute-index.mjs +8 -7
  52. package/src/source-html-intake.mjs +27 -18
  53. package/src/spec-derive.mjs +24 -9
  54. package/src/stage-ledger.mjs +27 -1
  55. package/src/stage-record.mjs +218 -35
@@ -7676,6 +7676,981 @@
7676
7676
  }
7677
7677
  ],
7678
7678
  "entry_sha256": "00e7dc8146ae7c1e860f2496ade44d5f4e98f3f25120d1a313021e5ff5d28e7c"
7679
+ },
7680
+ {
7681
+ "id": "RL-0262",
7682
+ "sequence": 251,
7683
+ "date": "2026-10-08",
7684
+ "kind": "release",
7685
+ "surface_version": null,
7686
+ "changelog_section": "1.57.0+agent.1",
7687
+ "changelog_sha256": "b6aff356276059f9f4447507b1e179895c45019b53fd9b4c5d0b57adbe6d79f0",
7688
+ "agent_impact": "Reading a 4.2/4.3 spec now carries a retyped checkout_step's forward link onto next_page, so a v4 checkout chain linked through success_url upgrades into a valid v5 path instead of failing CheckoutStepReachesCheckout.",
7689
+ "compatibility": "additive",
7690
+ "migration": "none",
7691
+ "changes": [
7692
+ {
7693
+ "class": "generated_runtime",
7694
+ "path": "campaign-spec/checkout-flow.ts",
7695
+ "surface_entry": null,
7696
+ "summary": "upgradeCampaignSpec writes a retyped page's resolved forward target to next_page and drops its success_url."
7697
+ }
7698
+ ],
7699
+ "entry_sha256": "6ff873f77bcaa4d939ab8693932adf69a450c37d202a86414a201ace8d4787ef"
7700
+ },
7701
+ {
7702
+ "id": "RL-0263",
7703
+ "sequence": 252,
7704
+ "date": "2026-10-09",
7705
+ "kind": "release",
7706
+ "surface_version": "1.58.0",
7707
+ "changelog_section": "1.58.0",
7708
+ "changelog_sha256": "d62aaaeb0c36220ab53768ac465d8471bed051738eeea979a3e1f7a786b6c00a",
7709
+ "agent_impact": "On select and checkout_step pages, Build Context page_kit.frontmatter.next_url is now the Checkout's post-payment destination (for next-success-url) and the new next_step is the page's forward link (for data-next-checkout-step and the select checkout link). success_url is no longer emitted. Landing pages keep next_url as their call-to-action target. Refresh the bundled skills to 1.58.0+skills.1.",
7710
+ "compatibility": "breaking",
7711
+ "migration": "Wire a select or checkout_step page's forward navigation from frontmatter next_step, not next_url, and render next_url as next-success-url. Build against starter templates that include campaign-cart-starter-templates#223. Update the pinned package and bundled skills together.",
7712
+ "changes": [
7713
+ {
7714
+ "class": "compatibility_policy",
7715
+ "path": "compatibility.json",
7716
+ "surface_entry": "compatibility.json",
7717
+ "summary": "Name 1.58.0 as the package version."
7718
+ },
7719
+ {
7720
+ "class": "compatibility_policy",
7721
+ "path": "contracts/supported-surface.json",
7722
+ "surface_entry": "contracts/supported-surface.json",
7723
+ "summary": "Advance surface_version to 1.58.0 and record the two schema hashes."
7724
+ },
7725
+ {
7726
+ "class": "named_surface",
7727
+ "path": "docs/build-packet.md",
7728
+ "surface_entry": "docs/build-packet.md",
7729
+ "summary": "Document next_url and next_step on select and checkout_step pages, the landing-page exception, and success_url no longer emitted."
7730
+ },
7731
+ {
7732
+ "class": "named_surface",
7733
+ "path": "docs/local-setup.md",
7734
+ "surface_entry": "docs/local-setup.md",
7735
+ "summary": "Pin the documented toolkit install to 1.58.0."
7736
+ },
7737
+ {
7738
+ "class": "documentation",
7739
+ "path": "docs/orientation-contract-reference.md",
7740
+ "surface_entry": "docs/orientation-contract-reference.md",
7741
+ "summary": "Regenerate the orientation reference at surface 1.58.0."
7742
+ },
7743
+ {
7744
+ "class": "named_surface",
7745
+ "path": "docs/runtime-readiness.md",
7746
+ "surface_entry": "docs/runtime-readiness.md",
7747
+ "summary": "Regenerate runtime readiness at surface 1.58.0."
7748
+ },
7749
+ {
7750
+ "class": "named_surface",
7751
+ "path": "docs/skills-revision.md",
7752
+ "surface_entry": "docs/skills-revision.md",
7753
+ "summary": "Show the current 1.58.0+skills.1 bundle identity in preflight examples."
7754
+ },
7755
+ {
7756
+ "class": "generated_runtime",
7757
+ "path": "package-lock.json",
7758
+ "surface_entry": null,
7759
+ "summary": "Advance both package version stamps to 1.58.0."
7760
+ },
7761
+ {
7762
+ "class": "package_export",
7763
+ "path": "package.json",
7764
+ "surface_entry": null,
7765
+ "summary": "Advance the package version to 1.58.0."
7766
+ },
7767
+ {
7768
+ "class": "schema",
7769
+ "path": "schemas/campaign-runtime-build-context.v0.schema.json",
7770
+ "surface_entry": "schemas/campaign-runtime-build-context.v0.schema.json",
7771
+ "summary": "Allow next_step in page_kit.frontmatter; describe success_url as no longer emitted."
7772
+ },
7773
+ {
7774
+ "class": "schema",
7775
+ "path": "schemas/campaign-runtime-build-packet.v0.schema.json",
7776
+ "surface_entry": "schemas/campaign-runtime-build-packet.v0.schema.json",
7777
+ "summary": "Allow next_step in page_kit.frontmatter; describe success_url as no longer emitted."
7778
+ },
7779
+ {
7780
+ "class": "skill",
7781
+ "path": "skills.json",
7782
+ "surface_entry": "skills.json",
7783
+ "summary": "Advance the bundle to 1.58.0+skills.1 and each bundled skill by one patch."
7784
+ },
7785
+ {
7786
+ "class": "skill",
7787
+ "path": "skills/campaign-lifecycle-orientation/SKILL.md",
7788
+ "surface_entry": null,
7789
+ "summary": "Bump the skill one patch and stamp bundle 1.58.0+skills.1."
7790
+ },
7791
+ {
7792
+ "class": "skill",
7793
+ "path": "skills/campaign-readback-classification/SKILL.md",
7794
+ "surface_entry": null,
7795
+ "summary": "Bump the skill one patch and stamp bundle 1.58.0+skills.1."
7796
+ },
7797
+ {
7798
+ "class": "skill",
7799
+ "path": "skills/campaign-run-evidence/SKILL.md",
7800
+ "surface_entry": null,
7801
+ "summary": "Bump the skill one patch and stamp bundle 1.58.0+skills.1."
7802
+ },
7803
+ {
7804
+ "class": "skill",
7805
+ "path": "skills/contribution-intake/SKILL.md",
7806
+ "surface_entry": null,
7807
+ "summary": "Bump the skill one patch and stamp bundle 1.58.0+skills.1."
7808
+ },
7809
+ {
7810
+ "class": "skill",
7811
+ "path": "skills/next-campaigns-build/SKILL.md",
7812
+ "surface_entry": null,
7813
+ "summary": "Read next_step for the step form and select link and next_url for next-success-url on select and checkout_step pages; take an express landing page's next-success-url from the Checkout's next_url; bump one patch and stamp bundle 1.58.0+skills.1."
7814
+ },
7815
+ {
7816
+ "class": "skill",
7817
+ "path": "skills/next-campaigns-os-setup/SKILL.md",
7818
+ "surface_entry": null,
7819
+ "summary": "Bump the skill one patch and stamp bundle 1.58.0+skills.1."
7820
+ },
7821
+ {
7822
+ "class": "skill",
7823
+ "path": "skills/next-campaigns-os/SKILL.md",
7824
+ "surface_entry": null,
7825
+ "summary": "Bump the skill one patch and stamp bundle 1.58.0+skills.1."
7826
+ },
7827
+ {
7828
+ "class": "skill",
7829
+ "path": "skills/next-campaigns-polish/SKILL.md",
7830
+ "surface_entry": null,
7831
+ "summary": "Bump the skill one patch and stamp bundle 1.58.0+skills.1."
7832
+ },
7833
+ {
7834
+ "class": "skill",
7835
+ "path": "skills/next-campaigns-qa/SKILL.md",
7836
+ "surface_entry": null,
7837
+ "summary": "Bump the skill one patch and stamp bundle 1.58.0+skills.1."
7838
+ },
7839
+ {
7840
+ "class": "cli_surface",
7841
+ "path": "src/cli.mjs",
7842
+ "surface_entry": null,
7843
+ "summary": "Build prompt wires the step form and select link from next_step and next-success-url from next_url, and names no success_url frontmatter key."
7844
+ }
7845
+ ],
7846
+ "entry_sha256": "437ff972f3680e3bd4e46090fbe67833fb8c988e9ad7dd2aa12c566319afae01"
7847
+ },
7848
+ {
7849
+ "id": "RL-0265",
7850
+ "sequence": 253,
7851
+ "date": "2026-10-09",
7852
+ "kind": "release",
7853
+ "surface_version": null,
7854
+ "changelog_section": "1.58.0+agent.2",
7855
+ "changelog_sha256": "3ef901948a1144f1464052911e651a3637c3ebf8001830de91fb5fb0a941fe9b",
7856
+ "agent_impact": "Doctor (and start/build) warns template_contract.select_step_missing before build when the family puts package selection on a select page, its checkout has no selector, and no select page in the Map leads to a Checkout; the fix is adding a Select page between the entry page and checkout in Map Builder. copy.hardcoded_phone ignores digits in HTML comments, <style> blocks and CSS comments.",
7857
+ "compatibility": "additive",
7858
+ "migration": "none",
7859
+ "changes": [
7860
+ {
7861
+ "class": "cli_surface",
7862
+ "path": "src/doctor/checks.mjs",
7863
+ "surface_entry": "doctor",
7864
+ "summary": "Warn template_contract.select_step_missing when a select-step family's Map declares no select page leading to a Checkout, and mask HTML comments, <style> content and CSS comments in the hardcoded phone scan."
7865
+ }
7866
+ ],
7867
+ "entry_sha256": "19f5719805e5419f0ea78731e98e67adf3fba310dca00f9827d26b90dad4cf33"
7868
+ },
7869
+ {
7870
+ "id": "RL-0266",
7871
+ "sequence": 254,
7872
+ "date": "2026-10-09",
7873
+ "kind": "release",
7874
+ "surface_version": null,
7875
+ "changelog_section": "1.58.0+agent.3",
7876
+ "changelog_sha256": "9bef01116d1c80113af92aea5cb07791aec016cfe203e2cd5ac7759ac5786e73",
7877
+ "agent_impact": "doctor built_output.fingerprint_stale and the polish capture fingerprint refusal now list the extra, missing and changed paths (capped at 20 per list) and flag macOS/iCloud sync conflict copies; record build writes the additive stages.assembly.build_manifest that makes the diff possible. Builds recorded earlier refuse as before and say to re-run record build.",
7878
+ "compatibility": "additive",
7879
+ "migration": "none",
7880
+ "changes": [
7881
+ {
7882
+ "class": "named_surface",
7883
+ "path": "docs/build-packet.md",
7884
+ "surface_entry": "docs/build-packet.md",
7885
+ "summary": "Document stages.assembly.build_manifest and the drift paths named on a fingerprint mismatch."
7886
+ },
7887
+ {
7888
+ "class": "cli_surface",
7889
+ "path": "src/doctor/checks.mjs",
7890
+ "surface_entry": null,
7891
+ "summary": "built_output.fingerprint_stale names extra, missing and changed paths against the recorded manifest and flags sync conflict copies."
7892
+ }
7893
+ ],
7894
+ "entry_sha256": "bf5bf930aecd1ff7c31b5fee33a696236114fe5839c5bffb375be5d0eb5e3ff9"
7895
+ },
7896
+ {
7897
+ "id": "RL-0267",
7898
+ "sequence": 255,
7899
+ "date": "2026-10-09",
7900
+ "kind": "release",
7901
+ "surface_version": null,
7902
+ "changelog_section": "1.58.0+agent.4",
7903
+ "changelog_sha256": "4c5b0cd0c5f605b3511ef07e2927ffd1258f586cd82b52105eb56b4e09566d09",
7904
+ "agent_impact": "QA verdict test_orders[] entries now carry attempt (1-based) beside plan_id, so a re-run of a planned path is distinguishable from another path. purchase_proof gains test_order_attempts and order_paths_executed counts planned paths, not attempts. Read paths, attempts and created orders as three separate counts.",
7905
+ "compatibility": "additive",
7906
+ "migration": "none",
7907
+ "changes": [
7908
+ {
7909
+ "class": "named_surface",
7910
+ "path": "docs/qa-and-test-orders.md",
7911
+ "surface_entry": "docs/qa-and-test-orders.md",
7912
+ "summary": "Document the per-entry attempt number, the paths/attempts/orders summary line, and test_order_attempts in purchase_proof."
7913
+ }
7914
+ ],
7915
+ "entry_sha256": "99c2bba07b9cbe7860b60a5af237081c995eee317586b7f06e86e4f8876d9bb5"
7916
+ },
7917
+ {
7918
+ "id": "RL-0269",
7919
+ "sequence": 256,
7920
+ "date": "2026-10-09",
7921
+ "kind": "release",
7922
+ "surface_version": null,
7923
+ "changelog_section": "1.58.0+agent.6",
7924
+ "changelog_sha256": "0b2061ee2bfd66eca93384feda523af157d96767b47c54dca8988d53740fab42",
7925
+ "agent_impact": "qa run --test-order now chooses a select page's bundle-slot variants before clicking the checkout control: a field showing an os-dropdown UI is picked by clicking its toggle and a row (the row matching the select's current value when in stock, else the first in-stock row), even when the select is pre-filled; a native-only select is filled with its first in-stock option only when empty. Choices are recorded as entered_via_landing evidence variant_selections [{ bundle_id, slot, variant_code, value, via }]. A field with no in-stock row or option, or a row that does not show within 2s of opening the dropdown or cannot be clicked, fails before Next with the new cart-entry code cart_entry_variant_unfilled (classified not_created) instead of cart_entry_no_navigation. Pages whose filled selects have no dropdown UI are unchanged.",
7926
+ "compatibility": "additive",
7927
+ "migration": "none",
7928
+ "changes": [
7929
+ {
7930
+ "class": "named_surface",
7931
+ "path": "docs/qa-and-test-orders.md",
7932
+ "surface_entry": "docs/qa-and-test-orders.md",
7933
+ "summary": "Document slot variant choice on select-page cart entry (dropdown row click or native fill), the variant_selections evidence, and the cart_entry_variant_unfilled code."
7934
+ }
7935
+ ],
7936
+ "entry_sha256": "3d4f8131b1d1d74e4a9f21e98bbbc721d6dd36ba98f8f2617f383adc253a9877"
7937
+ },
7938
+ {
7939
+ "id": "RL-0264",
7940
+ "sequence": 257,
7941
+ "date": "2026-10-09",
7942
+ "kind": "release",
7943
+ "surface_version": null,
7944
+ "changelog_section": "1.58.0+agent.7",
7945
+ "changelog_sha256": "560aa59b997b6acfb7f402654d8d449cdc1291f9823a2f48499a5ceaae3330ef",
7946
+ "agent_impact": "The starter catalog now pins campaign-cart-starter-templates d5ff501: multi-step templates read next_step and render next_url as next-success-url, matching 1.58.0 frontmatter, and certified families ship Campaign Cart SDK 0.4.42. The checkout field-name check reads the v0.4.42 index, and pages pinned to 0.4.42 pass the cart placeholder check.",
7947
+ "compatibility": "compatible",
7948
+ "migration": "none",
7949
+ "changes": [
7950
+ {
7951
+ "class": "named_surface",
7952
+ "path": "docs/build-packet.md",
7953
+ "surface_entry": "docs/build-packet.md",
7954
+ "summary": "Name v0.4.42 as the vendored SDK attribute index tag."
7955
+ }
7956
+ ],
7957
+ "entry_sha256": "d4ba96493d2eaabcb0174df8069fd4636824fd65e94d9eb286167a8ddf595cb1"
7958
+ },
7959
+ {
7960
+ "id": "RL-0268",
7961
+ "sequence": 258,
7962
+ "date": "2026-10-09",
7963
+ "kind": "release",
7964
+ "surface_version": "1.59.0",
7965
+ "changelog_section": "1.59.0",
7966
+ "changelog_sha256": "1c4bd4b6e52a716737ac149211ac9a4f9c26281d1290455c70ae10ec9072f047",
7967
+ "agent_impact": "The 1.59.0 package publishes the untagged 1.58.0 multi-step checkout frontmatter change, its five same-surface follow-ups and a hosted record deploy. record deploy now records an https preview on a hosted packet after checking every built page answers 200 and every same-origin script and stylesheet matches the build; the hosted all-template preview no longer skips the deploy stage. Consumers also gain the select-step doctor warning, named files on a stale build fingerprint, attempt-aware QA verdicts, slot variant choice in QA cart entry and the d5ff501 starter catalog; refresh the bundled skills to 1.59.0+skills.1.",
7968
+ "compatibility": "breaking",
7969
+ "migration": "From the last published 1.57.0, wire a select or checkout_step page forward navigation from frontmatter next_step (not next_url), render next_url as next-success-url, and build against starter templates that include campaign-cart-starter-templates#223. On a hosted target run record deploy --base-url <https preview url> after deploying instead of hand-editing stages.deploy. Update the pinned package and bundled skills together.",
7970
+ "changes": [
7971
+ {
7972
+ "class": "compatibility_policy",
7973
+ "path": "compatibility.json",
7974
+ "surface_entry": "compatibility.json",
7975
+ "summary": "Name 1.59.0 as the published package version."
7976
+ },
7977
+ {
7978
+ "class": "compatibility_policy",
7979
+ "path": "contracts/supported-surface.json",
7980
+ "surface_entry": "contracts/supported-surface.json",
7981
+ "summary": "Advance surface_version to 1.59.0 and record the effects contract hash."
7982
+ },
7983
+ {
7984
+ "class": "named_surface",
7985
+ "path": "docs/local-setup.md",
7986
+ "surface_entry": "docs/local-setup.md",
7987
+ "summary": "Pin the documented toolkit install to 1.59.0."
7988
+ },
7989
+ {
7990
+ "class": "documentation",
7991
+ "path": "docs/orientation-contract-reference.md",
7992
+ "surface_entry": "docs/orientation-contract-reference.md",
7993
+ "summary": "Regenerate the orientation reference at surface 1.59.0."
7994
+ },
7995
+ {
7996
+ "class": "named_surface",
7997
+ "path": "docs/runtime-readiness.md",
7998
+ "surface_entry": "docs/runtime-readiness.md",
7999
+ "summary": "Regenerate runtime readiness at surface 1.59.0."
8000
+ },
8001
+ {
8002
+ "class": "named_surface",
8003
+ "path": "docs/skills-revision.md",
8004
+ "surface_entry": "docs/skills-revision.md",
8005
+ "summary": "Show the current 1.59.0+skills.1 bundle identity in preflight examples."
8006
+ },
8007
+ {
8008
+ "class": "generated_runtime",
8009
+ "path": "package-lock.json",
8010
+ "surface_entry": null,
8011
+ "summary": "Advance both package version stamps to 1.59.0."
8012
+ },
8013
+ {
8014
+ "class": "package_export",
8015
+ "path": "package.json",
8016
+ "surface_entry": null,
8017
+ "summary": "Advance the package version to 1.59.0."
8018
+ },
8019
+ {
8020
+ "class": "skill",
8021
+ "path": "skills.json",
8022
+ "surface_entry": "skills.json",
8023
+ "summary": "Advance the bundle to 1.59.0+skills.1 and each bundled skill by one patch."
8024
+ },
8025
+ {
8026
+ "class": "skill",
8027
+ "path": "skills/campaign-lifecycle-orientation/SKILL.md",
8028
+ "surface_entry": null,
8029
+ "summary": "Bump the skill one patch and stamp bundle 1.59.0+skills.1."
8030
+ },
8031
+ {
8032
+ "class": "skill",
8033
+ "path": "skills/campaign-readback-classification/SKILL.md",
8034
+ "surface_entry": null,
8035
+ "summary": "Bump the skill one patch and stamp bundle 1.59.0+skills.1."
8036
+ },
8037
+ {
8038
+ "class": "skill",
8039
+ "path": "skills/campaign-run-evidence/SKILL.md",
8040
+ "surface_entry": null,
8041
+ "summary": "Bump the skill one patch and stamp bundle 1.59.0+skills.1."
8042
+ },
8043
+ {
8044
+ "class": "skill",
8045
+ "path": "skills/contribution-intake/SKILL.md",
8046
+ "surface_entry": null,
8047
+ "summary": "Bump the skill one patch and stamp bundle 1.59.0+skills.1."
8048
+ },
8049
+ {
8050
+ "class": "skill",
8051
+ "path": "skills/next-campaigns-build/SKILL.md",
8052
+ "surface_entry": null,
8053
+ "summary": "Bump the skill one patch and stamp bundle 1.59.0+skills.1."
8054
+ },
8055
+ {
8056
+ "class": "skill",
8057
+ "path": "skills/next-campaigns-os-setup/SKILL.md",
8058
+ "surface_entry": null,
8059
+ "summary": "Bump the skill one patch and stamp bundle 1.59.0+skills.1."
8060
+ },
8061
+ {
8062
+ "class": "skill",
8063
+ "path": "skills/next-campaigns-os/SKILL.md",
8064
+ "surface_entry": null,
8065
+ "summary": "Bump the skill one patch and stamp bundle 1.59.0+skills.1."
8066
+ },
8067
+ {
8068
+ "class": "skill",
8069
+ "path": "skills/next-campaigns-polish/SKILL.md",
8070
+ "surface_entry": null,
8071
+ "summary": "Bump the skill one patch and stamp bundle 1.59.0+skills.1."
8072
+ },
8073
+ {
8074
+ "class": "skill",
8075
+ "path": "skills/next-campaigns-qa/SKILL.md",
8076
+ "surface_entry": null,
8077
+ "summary": "Bump the skill one patch and stamp bundle 1.59.0+skills.1."
8078
+ },
8079
+ {
8080
+ "class": "compatibility_policy",
8081
+ "path": "contracts/effects.v1.json",
8082
+ "surface_entry": "contracts/effects.v1.json",
8083
+ "summary": "record deploy (and --dry-run) declare the hosted https probe: each built page and each same-origin script and stylesheet, compared by sha256. A record build between the probe and the write refuses on either deploy target."
8084
+ },
8085
+ {
8086
+ "class": "named_surface",
8087
+ "path": "docs/build-packet.md",
8088
+ "surface_entry": "docs/build-packet.md",
8089
+ "summary": "Document hosted record deploy, its refusals and evidence, and drop the hosted all-template deploy skip from the stage order and done outcome."
8090
+ },
8091
+ {
8092
+ "class": "named_surface",
8093
+ "path": "docs/qa-and-test-orders.md",
8094
+ "surface_entry": "docs/qa-and-test-orders.md",
8095
+ "summary": "A hosted all-template preview records its deploy with record deploy before QA."
8096
+ },
8097
+ {
8098
+ "class": "cli_surface",
8099
+ "path": "src/cli.mjs",
8100
+ "surface_entry": null,
8101
+ "summary": "record deploy help names the hosted https rules; the hosted deploy prompt and next actions hand off record deploy instead of hand-editing stages.deploy."
8102
+ },
8103
+ {
8104
+ "class": "cli_surface",
8105
+ "path": "src/doctor/next-step.mjs",
8106
+ "surface_entry": "doctor",
8107
+ "summary": "Remove the hosted_template_preview deploy skip and the hosted_preview_satisfies_deploy done outcome."
8108
+ }
8109
+ ],
8110
+ "entry_sha256": "54697c8b2c8e0857687a01f4ac43942202f8e6f9a523fc1151070ac890a0133d"
8111
+ },
8112
+ {
8113
+ "id": "RL-0273",
8114
+ "sequence": 259,
8115
+ "date": "2026-10-14",
8116
+ "kind": "release",
8117
+ "surface_version": null,
8118
+ "changelog_section": "1.59.0+agent.4",
8119
+ "changelog_sha256": "4bfd26f73f0eb599a40cb5fb338653d4fdf511f45ccd0ec291ba67d402c30086",
8120
+ "agent_impact": "When a campaign is set up in the Campaigns App dashboard, expect one package per variant, created by saving an Offer that selects it, and a separate Offer per Buy 1/2/3 tier. The dashboard labels packages Products; pages still reference package IDs. Quickstart and the build-flow commerce section both describe this Create Campaign then Add Offer setup, and that Admin API setups still create packages before Offers.",
8121
+ "compatibility": "compatible",
8122
+ "migration": "none",
8123
+ "changes": [
8124
+ {
8125
+ "class": "named_surface",
8126
+ "path": "docs/campaigns-os-build-flow.md",
8127
+ "surface_entry": "docs/campaigns-os-build-flow.md",
8128
+ "summary": "Describe how the dashboard creates packages from Offers under Commerce Ownership."
8129
+ }
8130
+ ],
8131
+ "entry_sha256": "b0708e5f1d10142d56f4cbc5d346053b89073bc65cb6c69b41afff432908e103"
8132
+ },
8133
+ {
8134
+ "id": "RL-0271",
8135
+ "sequence": 260,
8136
+ "date": "2026-10-15",
8137
+ "kind": "release",
8138
+ "surface_version": null,
8139
+ "changelog_section": "1.59.0+agent.5",
8140
+ "changelog_sha256": "64d75e58cefd497559d4fb0b30817f6d123bfc211ccb461e1c6dbf0b62eb107b",
8141
+ "agent_impact": "On a hosted all-template preview, follow next: record deploy --base-url <preview url>, then qa run, then closeout. The hosted preview URL no longer satisfies the deploy stage on its own (since 1.59.0), and the polish skill, docs and README now say so. A forced next deploy or next qa with an unset, loopback or production-equivalent preview URL prompts for qa policy set --preview-url, matching next actions and doctor. Refresh bundled skills to 1.59.0+skills.2.",
8142
+ "compatibility": "compatible",
8143
+ "migration": "none",
8144
+ "changes": [
8145
+ {
8146
+ "class": "named_surface",
8147
+ "path": "docs/build-packet.md",
8148
+ "surface_entry": "docs/build-packet.md",
8149
+ "summary": "Drop the leftover statement that the hosted all-template preview satisfies the deploy step; QA follows record deploy."
8150
+ },
8151
+ {
8152
+ "class": "named_surface",
8153
+ "path": "docs/skills-revision.md",
8154
+ "surface_entry": "docs/skills-revision.md",
8155
+ "summary": "Show the current 1.59.0+skills.2 bundle identity in preflight examples."
8156
+ },
8157
+ {
8158
+ "class": "skill",
8159
+ "path": "skills.json",
8160
+ "surface_entry": "skills.json",
8161
+ "summary": "Advance the bundle to 1.59.0+skills.2 and each bundled skill by one patch."
8162
+ },
8163
+ {
8164
+ "class": "skill",
8165
+ "path": "skills/next-campaigns-polish/SKILL.md",
8166
+ "surface_entry": null,
8167
+ "summary": "Hand the hosted all-template preview to next: record deploy, then QA, then closeout."
8168
+ },
8169
+ {
8170
+ "class": "skill",
8171
+ "path": "skills/campaign-lifecycle-orientation/SKILL.md",
8172
+ "surface_entry": null,
8173
+ "summary": "Bump the skill one patch and stamp bundle 1.59.0+skills.2."
8174
+ },
8175
+ {
8176
+ "class": "skill",
8177
+ "path": "skills/campaign-readback-classification/SKILL.md",
8178
+ "surface_entry": null,
8179
+ "summary": "Bump the skill one patch and stamp bundle 1.59.0+skills.2."
8180
+ },
8181
+ {
8182
+ "class": "skill",
8183
+ "path": "skills/campaign-run-evidence/SKILL.md",
8184
+ "surface_entry": null,
8185
+ "summary": "Bump the skill one patch and stamp bundle 1.59.0+skills.2."
8186
+ },
8187
+ {
8188
+ "class": "skill",
8189
+ "path": "skills/contribution-intake/SKILL.md",
8190
+ "surface_entry": null,
8191
+ "summary": "Bump the skill one patch and stamp bundle 1.59.0+skills.2."
8192
+ },
8193
+ {
8194
+ "class": "skill",
8195
+ "path": "skills/next-campaigns-build/SKILL.md",
8196
+ "surface_entry": null,
8197
+ "summary": "Bump the skill one patch and stamp bundle 1.59.0+skills.2."
8198
+ },
8199
+ {
8200
+ "class": "skill",
8201
+ "path": "skills/next-campaigns-os-setup/SKILL.md",
8202
+ "surface_entry": null,
8203
+ "summary": "Bump the skill one patch and stamp bundle 1.59.0+skills.2."
8204
+ },
8205
+ {
8206
+ "class": "skill",
8207
+ "path": "skills/next-campaigns-os/SKILL.md",
8208
+ "surface_entry": null,
8209
+ "summary": "Bump the skill one patch and stamp bundle 1.59.0+skills.2."
8210
+ },
8211
+ {
8212
+ "class": "skill",
8213
+ "path": "skills/next-campaigns-qa/SKILL.md",
8214
+ "surface_entry": null,
8215
+ "summary": "Bump the skill one patch and stamp bundle 1.59.0+skills.2."
8216
+ },
8217
+ {
8218
+ "class": "cli_surface",
8219
+ "path": "src/cli.mjs",
8220
+ "surface_entry": null,
8221
+ "summary": "The deploy and QA prompts on an all-template hosted packet use the usable-preview rule next actions and doctor use; the done prompt names record deploy for both deploy targets."
8222
+ }
8223
+ ],
8224
+ "entry_sha256": "2bad692257bfa5a2a5718b1861d1da60ae92c3a4cd23151d659c3867b308c839"
8225
+ },
8226
+ {
8227
+ "id": "RL-0272",
8228
+ "sequence": 261,
8229
+ "date": "2026-10-15",
8230
+ "kind": "release",
8231
+ "surface_version": null,
8232
+ "changelog_section": "1.59.0+agent.7",
8233
+ "changelog_sha256": "766c499fdb0ce69edf48f40f611ffd532a8789665a64208908491b68e0afa70b",
8234
+ "agent_impact": "run status --json now always reports progress.next_command as `campaigns-os next --packet <packet> --json`; it no longer names `run end` when every recorded stage status is terminal, because a stage an input change or a new build owes again still records completed. Follow next, which names `run end` as a required action once the campaign is done and a run session is active. next and doctor output is unchanged.",
8235
+ "compatibility": "compatible",
8236
+ "migration": "none",
8237
+ "changes": [
8238
+ {
8239
+ "class": "cli_surface",
8240
+ "path": "src/cli.mjs",
8241
+ "surface_entry": null,
8242
+ "summary": "run status names next as the next command; next returns the prepare-build recovery answer from one branch and reads the shared readiness ladder."
8243
+ },
8244
+ {
8245
+ "class": "cli_surface",
8246
+ "path": "src/doctor/inspect.mjs",
8247
+ "surface_entry": "doctor",
8248
+ "summary": "Doctor's status reads the shared readiness ladder; its output is unchanged."
8249
+ },
8250
+ {
8251
+ "class": "cli_surface",
8252
+ "path": "src/doctor/next-step.mjs",
8253
+ "surface_entry": "doctor",
8254
+ "summary": "Export the readiness ladder that doctor and next share and drop the stage picker's unused packet parameter; output is unchanged."
8255
+ }
8256
+ ],
8257
+ "entry_sha256": "6182da2e9bf076b2baceb3303518bfed33c3c8cb6ac72cddce70066a490b88c1"
8258
+ },
8259
+ {
8260
+ "id": "RL-0274",
8261
+ "sequence": 262,
8262
+ "date": "2026-10-19",
8263
+ "kind": "release",
8264
+ "surface_version": null,
8265
+ "changelog_section": "1.59.0+agent.8",
8266
+ "changelog_sha256": "a2a97f2d4650f02eecb11398dc05f500f7aaef9a52271825b663009d5cd94ace",
8267
+ "agent_impact": "On a target with next-campaign-page-kit 0.3.0, read doctor's built_output.build_asset_warning: each one names an .html file under assets/ that page-kit neither built nor copied, so a link or iframe to it 404s. Move the file out of assets/ if it is a page, or remove it. On 0.3.0, spec derive and doctor's built-page lookup no longer bind a page to an .html file under the campaign's top-level assets/; 0.2.x targets read as before. New folders install next-campaign-page-kit@0.3.0 from docs/local-setup.md. Refresh bundled skills to 1.59.0+skills.3.",
8268
+ "compatibility": "additive",
8269
+ "migration": "After the first build on page-kit 0.3.0, run record build again: the build fingerprint can change with unchanged source (0.3.0 removes stale _site/<slug>/ output and no longer copies .html under assets/), and polish, deploy and QA are owed again for the new build.",
8270
+ "changes": [
8271
+ {
8272
+ "class": "named_surface",
8273
+ "path": "docs/build-packet.md",
8274
+ "surface_entry": "docs/build-packet.md",
8275
+ "summary": "Say that unpruned _site/ output and an assets/ index.html built as a page are page-kit 0.2.x behaviour, and that 0.3.0 cleans _site/<slug>/ and reports ASSET_IGNORED; the stray_files gate is unchanged."
8276
+ },
8277
+ {
8278
+ "class": "named_surface",
8279
+ "path": "docs/local-setup.md",
8280
+ "surface_entry": "docs/local-setup.md",
8281
+ "summary": "Pin the new-folder page-kit install to next-campaign-page-kit@0.3.0."
8282
+ },
8283
+ {
8284
+ "class": "named_surface",
8285
+ "path": "docs/skills-revision.md",
8286
+ "surface_entry": "docs/skills-revision.md",
8287
+ "summary": "Show the current 1.59.0+skills.3 bundle identity in preflight examples."
8288
+ },
8289
+ {
8290
+ "class": "skill",
8291
+ "path": "skills.json",
8292
+ "surface_entry": "skills.json",
8293
+ "summary": "Advance the bundle to 1.59.0+skills.3 and each bundled skill by one patch."
8294
+ },
8295
+ {
8296
+ "class": "skill",
8297
+ "path": "skills/next-campaigns-build/SKILL.md",
8298
+ "surface_entry": null,
8299
+ "summary": "Name the build summary's assetWarnings and ASSET_IGNORED on page-kit 0.3.0, and what to do with an ignored HTML file under assets/."
8300
+ },
8301
+ {
8302
+ "class": "skill",
8303
+ "path": "skills/campaign-lifecycle-orientation/SKILL.md",
8304
+ "surface_entry": null,
8305
+ "summary": "Bump the skill one patch and stamp bundle 1.59.0+skills.3."
8306
+ },
8307
+ {
8308
+ "class": "skill",
8309
+ "path": "skills/campaign-readback-classification/SKILL.md",
8310
+ "surface_entry": null,
8311
+ "summary": "Bump the skill one patch and stamp bundle 1.59.0+skills.3."
8312
+ },
8313
+ {
8314
+ "class": "skill",
8315
+ "path": "skills/campaign-run-evidence/SKILL.md",
8316
+ "surface_entry": null,
8317
+ "summary": "Bump the skill one patch and stamp bundle 1.59.0+skills.3."
8318
+ },
8319
+ {
8320
+ "class": "skill",
8321
+ "path": "skills/contribution-intake/SKILL.md",
8322
+ "surface_entry": null,
8323
+ "summary": "Bump the skill one patch and stamp bundle 1.59.0+skills.3."
8324
+ },
8325
+ {
8326
+ "class": "skill",
8327
+ "path": "skills/next-campaigns-os-setup/SKILL.md",
8328
+ "surface_entry": null,
8329
+ "summary": "Bump the skill one patch and stamp bundle 1.59.0+skills.3."
8330
+ },
8331
+ {
8332
+ "class": "skill",
8333
+ "path": "skills/next-campaigns-os/SKILL.md",
8334
+ "surface_entry": null,
8335
+ "summary": "Bump the skill one patch and stamp bundle 1.59.0+skills.3."
8336
+ },
8337
+ {
8338
+ "class": "skill",
8339
+ "path": "skills/next-campaigns-polish/SKILL.md",
8340
+ "surface_entry": null,
8341
+ "summary": "Bump the skill one patch and stamp bundle 1.59.0+skills.3."
8342
+ },
8343
+ {
8344
+ "class": "skill",
8345
+ "path": "skills/next-campaigns-qa/SKILL.md",
8346
+ "surface_entry": null,
8347
+ "summary": "Bump the skill one patch and stamp bundle 1.59.0+skills.3."
8348
+ },
8349
+ {
8350
+ "class": "cli_surface",
8351
+ "path": "src/cli.mjs",
8352
+ "surface_entry": null,
8353
+ "summary": "spec derive skips .html under the campaign's top-level assets/ when the target's installed page-kit is 0.3.0 or later; the build prompt names assetWarnings and ASSET_IGNORED."
8354
+ },
8355
+ {
8356
+ "class": "cli_surface",
8357
+ "path": "src/doctor/checks.mjs",
8358
+ "surface_entry": "doctor",
8359
+ "summary": "Doctor reports each build summary assetWarnings entry for the campaign as the non-blocking built_output.build_asset_warning, and on page-kit 0.3.0 or later reads no source permalink from a file under assets/."
8360
+ }
8361
+ ],
8362
+ "entry_sha256": "2127a7133126fd80e7c519f484184463d44b0f1b655350184525b19d76cf979e"
8363
+ },
8364
+ {
8365
+ "id": "RL-0275",
8366
+ "sequence": 263,
8367
+ "date": "2026-10-19",
8368
+ "kind": "release",
8369
+ "surface_version": null,
8370
+ "changelog_section": "1.59.0+agent.10",
8371
+ "changelog_sha256": "a2cc415ae5174c3381b505e8109ce9a30f042593d7e89ac9b25ad2910a0f0092",
8372
+ "agent_impact": "None expected: the lockfile resolves Playwright 1.64.1 and acorn 8.19.0 within the ranges package.json already declares. Browser QA and polish capture run on Playwright 1.64.1; doctor's script syntax check parses with acorn 8.19.0.",
8373
+ "compatibility": "compatible",
8374
+ "migration": "none",
8375
+ "changes": [
8376
+ {
8377
+ "class": "generated_runtime",
8378
+ "path": "package-lock.json",
8379
+ "surface_entry": null,
8380
+ "summary": "Resolve Playwright 1.64.1 and acorn 8.19.0."
8381
+ }
8382
+ ],
8383
+ "entry_sha256": "b0d2fbd5618d4fc635b346ae521085a77e0ac552e67e8f94a9c5ced7049f237b"
8384
+ },
8385
+ {
8386
+ "id": "RL-0276",
8387
+ "sequence": 264,
8388
+ "date": "2026-10-19",
8389
+ "kind": "release",
8390
+ "surface_version": null,
8391
+ "changelog_section": "1.59.0+agent.11",
8392
+ "changelog_sha256": "bbde8ee78d523076a4011ba71cd6674bbc305aa03219c1ba2dd37c6d0fc5ee78",
8393
+ "agent_impact": "None for package consumers: this changes repository CI only (add-to-project and publish workflow action versions).",
8394
+ "compatibility": "compatible",
8395
+ "migration": "none",
8396
+ "changes": [
8397
+ {
8398
+ "class": "workflow",
8399
+ "path": ".github/workflows/add-to-project.yml",
8400
+ "surface_entry": null,
8401
+ "summary": "Move actions/create-github-app-token to 3.3.0."
8402
+ },
8403
+ {
8404
+ "class": "workflow",
8405
+ "path": ".github/workflows/publish.yml",
8406
+ "surface_entry": null,
8407
+ "summary": "Move actions/upload-artifact to 7.0.2 and actions/download-artifact to 8.0.2."
8408
+ }
8409
+ ],
8410
+ "entry_sha256": "dbca912d6c5145cb494f83fe7c334bec6e978bf00f6146c2a7eeb2d706f7cb96"
8411
+ },
8412
+ {
8413
+ "id": "RL-0277",
8414
+ "sequence": 265,
8415
+ "date": "2026-10-19",
8416
+ "kind": "release",
8417
+ "surface_version": null,
8418
+ "changelog_section": "1.59.0+agent.12",
8419
+ "changelog_sha256": "2bd2f6b05e609f8348165e737efc5628af764594fb6cd34b8c0b067a1d08ce6e",
8420
+ "agent_impact": "Refresh bundled skills to 1.59.0+skills.4. For a Campaign Cart 0.4.x to later 0.4.x bump, follow next-campaigns-sdk-bump: it finds hard-coded loader pins as well as sdk_version, scopes sdk repin to the funnel folder, runs sdk storage-check with the target tag's manifest, then doctor and preview test orders under the existing approval rule, and reports what is not proven. It stops at a 0.3.x pin or the legacy Campaigns script.",
8421
+ "compatibility": "additive",
8422
+ "migration": "Run install-skills to install next-campaigns-sdk-bump and the refreshed bundle, then start a fresh agent session.",
8423
+ "changes": [
8424
+ {
8425
+ "class": "named_surface",
8426
+ "path": "docs/skills-revision.md",
8427
+ "surface_entry": "docs/skills-revision.md",
8428
+ "summary": "Show the current 1.59.0+skills.4 bundle identity in preflight examples."
8429
+ },
8430
+ {
8431
+ "class": "skill",
8432
+ "path": "skills.json",
8433
+ "surface_entry": "skills.json",
8434
+ "summary": "Add next-campaigns-sdk-bump 1.0.0, advance the bundle to 1.59.0+skills.4 and each other bundled skill by one patch."
8435
+ },
8436
+ {
8437
+ "class": "skill",
8438
+ "path": "skills/next-campaigns-sdk-bump/SKILL.md",
8439
+ "surface_entry": null,
8440
+ "summary": "New skill: a 0.4.x to later 0.4.x Campaign Cart bump on a page-kit or static repo, from pins through storage check, doctor, preview test orders and hand-back."
8441
+ },
8442
+ {
8443
+ "class": "skill",
8444
+ "path": "skills/campaign-lifecycle-orientation/SKILL.md",
8445
+ "surface_entry": null,
8446
+ "summary": "Bump the skill one patch and stamp bundle 1.59.0+skills.4."
8447
+ },
8448
+ {
8449
+ "class": "skill",
8450
+ "path": "skills/campaign-readback-classification/SKILL.md",
8451
+ "surface_entry": null,
8452
+ "summary": "Bump the skill one patch and stamp bundle 1.59.0+skills.4."
8453
+ },
8454
+ {
8455
+ "class": "skill",
8456
+ "path": "skills/campaign-run-evidence/SKILL.md",
8457
+ "surface_entry": null,
8458
+ "summary": "Bump the skill one patch and stamp bundle 1.59.0+skills.4."
8459
+ },
8460
+ {
8461
+ "class": "skill",
8462
+ "path": "skills/contribution-intake/SKILL.md",
8463
+ "surface_entry": null,
8464
+ "summary": "Bump the skill one patch and stamp bundle 1.59.0+skills.4."
8465
+ },
8466
+ {
8467
+ "class": "skill",
8468
+ "path": "skills/next-campaigns-build/SKILL.md",
8469
+ "surface_entry": null,
8470
+ "summary": "Bump the skill one patch and stamp bundle 1.59.0+skills.4."
8471
+ },
8472
+ {
8473
+ "class": "skill",
8474
+ "path": "skills/next-campaigns-os-setup/SKILL.md",
8475
+ "surface_entry": null,
8476
+ "summary": "Bump the skill one patch and stamp bundle 1.59.0+skills.4."
8477
+ },
8478
+ {
8479
+ "class": "skill",
8480
+ "path": "skills/next-campaigns-os/SKILL.md",
8481
+ "surface_entry": null,
8482
+ "summary": "Bump the skill one patch and stamp bundle 1.59.0+skills.4."
8483
+ },
8484
+ {
8485
+ "class": "skill",
8486
+ "path": "skills/next-campaigns-polish/SKILL.md",
8487
+ "surface_entry": null,
8488
+ "summary": "Bump the skill one patch and stamp bundle 1.59.0+skills.4."
8489
+ },
8490
+ {
8491
+ "class": "skill",
8492
+ "path": "skills/next-campaigns-qa/SKILL.md",
8493
+ "surface_entry": null,
8494
+ "summary": "Bump the skill one patch and stamp bundle 1.59.0+skills.4."
8495
+ }
8496
+ ],
8497
+ "entry_sha256": "f258fb6a51dfb20ab1b4eb71dd18fdc224ce6ee553ca3653be5efa581e644655"
8498
+ },
8499
+ {
8500
+ "id": "RL-0278",
8501
+ "sequence": 266,
8502
+ "date": "2026-10-19",
8503
+ "kind": "release",
8504
+ "surface_version": null,
8505
+ "changelog_section": "1.59.0+agent.13",
8506
+ "changelog_sha256": "0e1ce83cf5555290a681ff08d83a03a1e4210aca22b8d349a9af26022513f241",
8507
+ "agent_impact": "After a CampaignSpec-only change, when the operator records build with --deviation-reason over the same output a completed Polish reviewed, Polish reads current again and next moves on toward QA; do not retake Polish captures for that unchanged build. QA is still owed for the changed CampaignSpec. A brief presentation change, a different build, or a build recorded without the deviation reason still owes Polish.",
8508
+ "compatibility": "compatible",
8509
+ "migration": "none",
8510
+ "changes": [
8511
+ {
8512
+ "class": "named_surface",
8513
+ "path": "docs/build-packet.md",
8514
+ "surface_entry": "docs/build-packet.md",
8515
+ "summary": "Name the exception: a deviation-recorded build of the output a completed Polish reviewed restores that Polish after a CampaignSpec-only change."
8516
+ },
8517
+ {
8518
+ "class": "named_surface",
8519
+ "path": "docs/campaign-build-brief.md",
8520
+ "surface_entry": "docs/campaign-build-brief.md",
8521
+ "summary": "Say that a CampaignSpec-only change kept with record build --deviation-reason keeps Polish, and that a presentation change still owes it."
8522
+ }
8523
+ ],
8524
+ "entry_sha256": "8f05d402dfed44c9c94136551ea1aa97aecf3850346484a8f3f3a4d6540052f2"
8525
+ },
8526
+ {
8527
+ "id": "RL-0279",
8528
+ "sequence": 267,
8529
+ "date": "2026-10-20",
8530
+ "kind": "release",
8531
+ "surface_version": "1.60.0",
8532
+ "changelog_section": "1.60.0",
8533
+ "changelog_sha256": "9d37d356a3ffaa2f44c66f14c643bae9dbee69bce507db6076dfa0aa92110106",
8534
+ "agent_impact": "The 1.60.0 package publishes the ten same-surface changes since 1.59.0 (agent.4 to agent.13). Consumers gain the next-campaigns-sdk-bump skill (with the fixes from its first live bump), page-kit 0.3.0 support with asset warnings, the 3987b18 starter catalog, QA build binding and run status fixes, and Polish carry-over after a spec-only change; refresh the bundled skills to 1.60.0+skills.1.",
8535
+ "compatibility": "additive",
8536
+ "migration": "From the published 1.59.0, update the pinned package and run install-skills to get 1.60.0+skills.1, including next-campaigns-sdk-bump. After the first build on page-kit 0.3.0, run record build again: the build fingerprint can change with unchanged source, so Polish, deploy and QA are owed again.",
8537
+ "changes": [
8538
+ {
8539
+ "class": "compatibility_policy",
8540
+ "path": "compatibility.json",
8541
+ "surface_entry": "compatibility.json",
8542
+ "summary": "Name 1.60.0 as the published package version."
8543
+ },
8544
+ {
8545
+ "class": "compatibility_policy",
8546
+ "path": "contracts/supported-surface.json",
8547
+ "surface_entry": "contracts/supported-surface.json",
8548
+ "summary": "Advance surface_version to 1.60.0 for the package release."
8549
+ },
8550
+ {
8551
+ "class": "named_surface",
8552
+ "path": "docs/local-setup.md",
8553
+ "surface_entry": "docs/local-setup.md",
8554
+ "summary": "Pin the documented toolkit install to 1.60.0."
8555
+ },
8556
+ {
8557
+ "class": "documentation",
8558
+ "path": "docs/orientation-contract-reference.md",
8559
+ "surface_entry": "docs/orientation-contract-reference.md",
8560
+ "summary": "Regenerate the orientation reference at surface 1.60.0."
8561
+ },
8562
+ {
8563
+ "class": "named_surface",
8564
+ "path": "docs/runtime-readiness.md",
8565
+ "surface_entry": "docs/runtime-readiness.md",
8566
+ "summary": "Regenerate runtime readiness at surface 1.60.0."
8567
+ },
8568
+ {
8569
+ "class": "named_surface",
8570
+ "path": "docs/skills-revision.md",
8571
+ "surface_entry": "docs/skills-revision.md",
8572
+ "summary": "Show the current 1.60.0+skills.1 bundle identity in preflight examples."
8573
+ },
8574
+ {
8575
+ "class": "generated_runtime",
8576
+ "path": "package-lock.json",
8577
+ "surface_entry": null,
8578
+ "summary": "Advance both package version stamps to 1.60.0."
8579
+ },
8580
+ {
8581
+ "class": "package_export",
8582
+ "path": "package.json",
8583
+ "surface_entry": null,
8584
+ "summary": "Advance the package version to 1.60.0."
8585
+ },
8586
+ {
8587
+ "class": "skill",
8588
+ "path": "skills.json",
8589
+ "surface_entry": "skills.json",
8590
+ "summary": "Advance the bundle to 1.60.0+skills.1 and each bundled skill by one patch."
8591
+ },
8592
+ {
8593
+ "class": "skill",
8594
+ "path": "skills/campaign-lifecycle-orientation/SKILL.md",
8595
+ "surface_entry": null,
8596
+ "summary": "Bump the skill one patch and stamp bundle 1.60.0+skills.1."
8597
+ },
8598
+ {
8599
+ "class": "skill",
8600
+ "path": "skills/campaign-readback-classification/SKILL.md",
8601
+ "surface_entry": null,
8602
+ "summary": "Bump the skill one patch and stamp bundle 1.60.0+skills.1."
8603
+ },
8604
+ {
8605
+ "class": "skill",
8606
+ "path": "skills/campaign-run-evidence/SKILL.md",
8607
+ "surface_entry": null,
8608
+ "summary": "Bump the skill one patch and stamp bundle 1.60.0+skills.1."
8609
+ },
8610
+ {
8611
+ "class": "skill",
8612
+ "path": "skills/contribution-intake/SKILL.md",
8613
+ "surface_entry": null,
8614
+ "summary": "Bump the skill one patch and stamp bundle 1.60.0+skills.1."
8615
+ },
8616
+ {
8617
+ "class": "skill",
8618
+ "path": "skills/next-campaigns-build/SKILL.md",
8619
+ "surface_entry": null,
8620
+ "summary": "Bump the skill one patch and stamp bundle 1.60.0+skills.1."
8621
+ },
8622
+ {
8623
+ "class": "skill",
8624
+ "path": "skills/next-campaigns-os-setup/SKILL.md",
8625
+ "surface_entry": null,
8626
+ "summary": "Bump the skill one patch and stamp bundle 1.60.0+skills.1."
8627
+ },
8628
+ {
8629
+ "class": "skill",
8630
+ "path": "skills/next-campaigns-os/SKILL.md",
8631
+ "surface_entry": null,
8632
+ "summary": "Bump the skill one patch and stamp bundle 1.60.0+skills.1."
8633
+ },
8634
+ {
8635
+ "class": "skill",
8636
+ "path": "skills/next-campaigns-polish/SKILL.md",
8637
+ "surface_entry": null,
8638
+ "summary": "Bump the skill one patch and stamp bundle 1.60.0+skills.1."
8639
+ },
8640
+ {
8641
+ "class": "skill",
8642
+ "path": "skills/next-campaigns-qa/SKILL.md",
8643
+ "surface_entry": null,
8644
+ "summary": "Bump the skill one patch and stamp bundle 1.60.0+skills.1."
8645
+ },
8646
+ {
8647
+ "class": "skill",
8648
+ "path": "skills/next-campaigns-sdk-bump/SKILL.md",
8649
+ "surface_entry": null,
8650
+ "summary": "Apply the first live-bump feedback (#683: removed features, next:initialized guard, legacy detection, manifest range, QA portal and qa-output) and stamp bundle 1.60.0+skills.1."
8651
+ }
8652
+ ],
8653
+ "entry_sha256": "25d3db88fb7e0259e9b3a4b91244cf504d0bd99bfc815ab60393b3982927564f"
7679
8654
  }
7680
8655
  ]
7681
8656
  }