@nextcommerce/campaigns-os 1.43.1 → 1.43.2
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 +4 -2
- package/CHANGELOG.md +451 -0
- package/README.md +2 -2
- package/contracts/agent-relevant-change-policy.v1.json +5 -0
- package/contracts/effects.v1.json +8 -8
- package/contracts/release-ledger.json +672 -0
- package/contracts/supported-surface.json +2 -2
- package/docs/build-packet.md +64 -2
- package/docs/campaigns-os-build-flow.md +1 -0
- package/docs/design-source-package.md +89 -15
- package/docs/effects.md +16 -4
- package/docs/local-setup.md +1 -1
- package/docs/orientation-contract-reference.md +1 -1
- package/docs/progress-snapshots.md +10 -6
- package/docs/qa-and-test-orders.md +131 -7
- package/docs/release-ledger-authoring-guide.md +6 -4
- package/docs/runtime-readiness.md +1 -1
- package/docs/skills-revision.md +10 -10
- package/package.json +1 -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 -4
- package/skills/next-campaigns-os/SKILL.md +3 -3
- package/skills/next-campaigns-os-setup/SKILL.md +3 -3
- package/skills/next-campaigns-polish/SKILL.md +3 -3
- package/skills/next-campaigns-qa/SKILL.md +3 -3
- package/skills.json +10 -10
- package/src/build-brief.mjs +6 -4
- package/src/built-script-syntax.mjs +480 -0
- package/src/campaigns-api-key.mjs +99 -0
- package/src/cli-helpers.mjs +118 -0
- package/src/cli.mjs +1211 -7495
- package/src/design-source-package.mjs +1 -1
- package/src/design-source-publication.mjs +898 -0
- package/src/diagnostic.mjs +2 -1
- package/src/directory-lock.mjs +270 -0
- package/src/doctor/checks.mjs +4415 -0
- package/src/doctor/inspect.mjs +636 -0
- package/src/doctor/next-step.mjs +731 -0
- package/src/install-invocation.mjs +29 -0
- package/src/invocation.mjs +179 -0
- package/src/private-template-source.mjs +1 -1
- package/src/progress-node.mjs +6 -35
- package/src/proof-policy.mjs +1 -1
- package/src/qa-analytics-correctness.mjs +3 -0
- package/src/qa-binding-evidence.mjs +76 -11
- package/src/qa-browser.mjs +778 -77
- package/src/qa-build-scope.mjs +47 -0
- package/src/qa-node.mjs +218 -13
- package/src/source-html-intake.mjs +1 -1
- package/src/source-html-manifest.mjs +9 -2
- package/src/stage-ledger.mjs +28 -0
- package/src/target-lock.mjs +54 -0
- package/src/template-brand-contract.mjs +17 -1
|
@@ -6898,6 +6898,678 @@
|
|
|
6898
6898
|
}
|
|
6899
6899
|
],
|
|
6900
6900
|
"entry_sha256": "7c851b671eb1a3d07f92dc44f66e0ff9d5001905479ad70118c7a025e677f8af"
|
|
6901
|
+
},
|
|
6902
|
+
{
|
|
6903
|
+
"id": "RL-0148",
|
|
6904
|
+
"sequence": 148,
|
|
6905
|
+
"date": "2026-09-25",
|
|
6906
|
+
"kind": "release",
|
|
6907
|
+
"surface_version": null,
|
|
6908
|
+
"changelog_section": "1.43.1+agent.1",
|
|
6909
|
+
"changelog_sha256": "03f39b019de9fde6d2247e4cb057a305baa3b11b8809bfe9c2e8ebbfb27ecc03",
|
|
6910
|
+
"agent_impact": "Doctor recognizes finite numeric commerce references in Map exports. Declared package, shipping and offer IDs no longer produce false undeclared-reference or demo-placeholder findings.",
|
|
6911
|
+
"compatibility": "compatible",
|
|
6912
|
+
"migration": "none",
|
|
6913
|
+
"changes": [
|
|
6914
|
+
{
|
|
6915
|
+
"class": "cli_surface",
|
|
6916
|
+
"path": "src/cli.mjs",
|
|
6917
|
+
"surface_entry": "doctor",
|
|
6918
|
+
"summary": "Normalize commerce references as non-empty strings or finite numbers without widening general text-field handling."
|
|
6919
|
+
}
|
|
6920
|
+
],
|
|
6921
|
+
"entry_sha256": "39c0c107c2fe1a8faad0dd61b1a5d04f17f4f29ad31ed794f74bd97ebe24693a"
|
|
6922
|
+
},
|
|
6923
|
+
{
|
|
6924
|
+
"id": "RL-0149",
|
|
6925
|
+
"sequence": 149,
|
|
6926
|
+
"date": "2026-09-26",
|
|
6927
|
+
"kind": "release",
|
|
6928
|
+
"surface_version": null,
|
|
6929
|
+
"changelog_section": "1.43.1+agent.2",
|
|
6930
|
+
"changelog_sha256": "4fe10d6b45c14c6bf2b0683955a42a52cd77e8518452852e64575c4035116739",
|
|
6931
|
+
"agent_impact": "A refused valued --dry-run on run end leaves stale sessions intact and performs no closeout writes or remit.",
|
|
6932
|
+
"compatibility": "compatible",
|
|
6933
|
+
"migration": "none",
|
|
6934
|
+
"changes": [
|
|
6935
|
+
{
|
|
6936
|
+
"class": "cli_surface",
|
|
6937
|
+
"path": "src/cli.mjs",
|
|
6938
|
+
"surface_entry": "run",
|
|
6939
|
+
"summary": "Skip the stale-session sweep when a supporting command receives any dry-run flag, including a value its handler refuses."
|
|
6940
|
+
},
|
|
6941
|
+
{
|
|
6942
|
+
"class": "documentation",
|
|
6943
|
+
"path": "AGENTS.md",
|
|
6944
|
+
"surface_entry": "AGENTS.md",
|
|
6945
|
+
"summary": "Document the dry-run exception to pre-refusal stale-session closeout."
|
|
6946
|
+
},
|
|
6947
|
+
{
|
|
6948
|
+
"class": "named_surface",
|
|
6949
|
+
"path": "docs/effects.md",
|
|
6950
|
+
"surface_entry": "docs/effects.md",
|
|
6951
|
+
"summary": "Clarify that a valued dry-run flag suppresses stale closeout before refusal."
|
|
6952
|
+
}
|
|
6953
|
+
],
|
|
6954
|
+
"entry_sha256": "1e2836aecf0e9ee37473bf77d20427d7e57a632ba1adb67774e4a4498d3a7927"
|
|
6955
|
+
},
|
|
6956
|
+
{
|
|
6957
|
+
"id": "RL-0150",
|
|
6958
|
+
"sequence": 150,
|
|
6959
|
+
"date": "2026-09-26",
|
|
6960
|
+
"kind": "release",
|
|
6961
|
+
"surface_version": null,
|
|
6962
|
+
"changelog_section": "1.43.1+agent.3",
|
|
6963
|
+
"changelog_sha256": "d99684d3a0040d82cfa0f4452f2a6b4522709b2d66eed334abfc13625924a459",
|
|
6964
|
+
"agent_impact": "Malformed legacy direct-API QA carts and modes are refused before input resolution and append no lifecycle entry. Browser precedence and legacy credential checks are unchanged.",
|
|
6965
|
+
"compatibility": "compatible",
|
|
6966
|
+
"migration": "none",
|
|
6967
|
+
"changes": [
|
|
6968
|
+
{
|
|
6969
|
+
"class": "named_surface",
|
|
6970
|
+
"path": "docs/effects.md",
|
|
6971
|
+
"surface_entry": "docs/effects.md",
|
|
6972
|
+
"summary": "Document legacy API cart and mode argv refusals and the unchanged credential failure boundary."
|
|
6973
|
+
}
|
|
6974
|
+
],
|
|
6975
|
+
"entry_sha256": "011853957b11b9bf964487dbd8d17dbe2164deb2c0f82133de1720a5aaab675a"
|
|
6976
|
+
},
|
|
6977
|
+
{
|
|
6978
|
+
"id": "RL-0151",
|
|
6979
|
+
"sequence": 151,
|
|
6980
|
+
"date": "2026-09-26",
|
|
6981
|
+
"kind": "release",
|
|
6982
|
+
"surface_version": null,
|
|
6983
|
+
"changelog_section": "1.43.1+agent.4",
|
|
6984
|
+
"changelog_sha256": "173ee29da0a362831460bffb96d40683a84b0a790c8570d6f100ef23d76a029d",
|
|
6985
|
+
"agent_impact": "Packet QA excludes recorded unbuilt out-of-scope pages; stock materialization now requires per-page operator opt-in.",
|
|
6986
|
+
"compatibility": "compatible",
|
|
6987
|
+
"migration": "none",
|
|
6988
|
+
"changes": [
|
|
6989
|
+
{
|
|
6990
|
+
"class": "cli_surface",
|
|
6991
|
+
"path": "src/cli.mjs",
|
|
6992
|
+
"surface_entry": "next",
|
|
6993
|
+
"summary": "Keep out-of-scope routes unbuilt by default; require explicit opt-in before materializing stock stand-ins."
|
|
6994
|
+
},
|
|
6995
|
+
{
|
|
6996
|
+
"class": "named_surface",
|
|
6997
|
+
"path": "docs/design-source-package.md",
|
|
6998
|
+
"surface_entry": "docs/design-source-package.md",
|
|
6999
|
+
"summary": "Distinguish source-scope stock classification from permission to publish stock pages."
|
|
7000
|
+
},
|
|
7001
|
+
{
|
|
7002
|
+
"class": "named_surface",
|
|
7003
|
+
"path": "docs/qa-and-test-orders.md",
|
|
7004
|
+
"surface_entry": "docs/qa-and-test-orders.md",
|
|
7005
|
+
"summary": "Document recorded partial scope, skipped evidence, entry selection and materialized-page QA."
|
|
7006
|
+
},
|
|
7007
|
+
{
|
|
7008
|
+
"class": "skill",
|
|
7009
|
+
"path": "skills.json",
|
|
7010
|
+
"surface_entry": "skills.json",
|
|
7011
|
+
"summary": "Advance bundle revision and skill versions so installed agents detect the changed build-scope instructions."
|
|
7012
|
+
},
|
|
7013
|
+
{
|
|
7014
|
+
"class": "skill",
|
|
7015
|
+
"path": "skills/next-campaigns-os/SKILL.md",
|
|
7016
|
+
"surface_entry": null,
|
|
7017
|
+
"summary": "Carry the advanced bundle revision and matching per-skill version."
|
|
7018
|
+
},
|
|
7019
|
+
{
|
|
7020
|
+
"class": "skill",
|
|
7021
|
+
"path": "skills/next-campaigns-os-setup/SKILL.md",
|
|
7022
|
+
"surface_entry": null,
|
|
7023
|
+
"summary": "Carry the advanced bundle revision and matching per-skill version."
|
|
7024
|
+
},
|
|
7025
|
+
{
|
|
7026
|
+
"class": "skill",
|
|
7027
|
+
"path": "skills/next-campaigns-build/SKILL.md",
|
|
7028
|
+
"surface_entry": null,
|
|
7029
|
+
"summary": "Require explicit per-page opt-in before publishing out-of-scope stock pages."
|
|
7030
|
+
},
|
|
7031
|
+
{
|
|
7032
|
+
"class": "skill",
|
|
7033
|
+
"path": "skills/next-campaigns-polish/SKILL.md",
|
|
7034
|
+
"surface_entry": null,
|
|
7035
|
+
"summary": "Carry the advanced bundle revision and matching per-skill version."
|
|
7036
|
+
},
|
|
7037
|
+
{
|
|
7038
|
+
"class": "skill",
|
|
7039
|
+
"path": "skills/next-campaigns-qa/SKILL.md",
|
|
7040
|
+
"surface_entry": null,
|
|
7041
|
+
"summary": "Carry the advanced bundle revision and matching per-skill version."
|
|
7042
|
+
},
|
|
7043
|
+
{
|
|
7044
|
+
"class": "skill",
|
|
7045
|
+
"path": "skills/campaign-lifecycle-orientation/SKILL.md",
|
|
7046
|
+
"surface_entry": null,
|
|
7047
|
+
"summary": "Carry the advanced bundle revision and matching per-skill version."
|
|
7048
|
+
},
|
|
7049
|
+
{
|
|
7050
|
+
"class": "skill",
|
|
7051
|
+
"path": "skills/campaign-run-evidence/SKILL.md",
|
|
7052
|
+
"surface_entry": null,
|
|
7053
|
+
"summary": "Carry the advanced bundle revision and matching per-skill version."
|
|
7054
|
+
},
|
|
7055
|
+
{
|
|
7056
|
+
"class": "skill",
|
|
7057
|
+
"path": "skills/campaign-readback-classification/SKILL.md",
|
|
7058
|
+
"surface_entry": null,
|
|
7059
|
+
"summary": "Carry the advanced bundle revision and matching per-skill version."
|
|
7060
|
+
},
|
|
7061
|
+
{
|
|
7062
|
+
"class": "skill",
|
|
7063
|
+
"path": "skills/contribution-intake/SKILL.md",
|
|
7064
|
+
"surface_entry": null,
|
|
7065
|
+
"summary": "Carry the advanced bundle revision and matching per-skill version."
|
|
7066
|
+
},
|
|
7067
|
+
{
|
|
7068
|
+
"class": "named_surface",
|
|
7069
|
+
"path": "docs/skills-revision.md",
|
|
7070
|
+
"surface_entry": "docs/skills-revision.md",
|
|
7071
|
+
"summary": "Update current bundle revision examples to 1.43.1+skills.2."
|
|
7072
|
+
}
|
|
7073
|
+
],
|
|
7074
|
+
"entry_sha256": "27d696ec2cfae34a6ecb95432d8e15971c7234668d7430b87b5dade3e092836a"
|
|
7075
|
+
},
|
|
7076
|
+
{
|
|
7077
|
+
"id": "RL-0152",
|
|
7078
|
+
"sequence": 152,
|
|
7079
|
+
"date": "2026-09-26",
|
|
7080
|
+
"kind": "release",
|
|
7081
|
+
"surface_version": null,
|
|
7082
|
+
"changelog_section": "1.43.1+agent.5",
|
|
7083
|
+
"changelog_sha256": "2abbb4fca524e64ac46bccf1f11044fdd921db5af73eb4c194e73be0d2bdfafa",
|
|
7084
|
+
"agent_impact": "Doctor and browser QA no longer report hidden starter payment-logos.html logos as payment-method residue; a forced-on logo warning now names the payment_flags.show_<method> frontmatter flag.",
|
|
7085
|
+
"compatibility": "compatible",
|
|
7086
|
+
"migration": "none",
|
|
7087
|
+
"changes": [
|
|
7088
|
+
{
|
|
7089
|
+
"class": "cli_surface",
|
|
7090
|
+
"path": "src/cli.mjs",
|
|
7091
|
+
"surface_entry": "next",
|
|
7092
|
+
"summary": "Skip hidden payment-logos.html logos in the built-checkout payment scan and name the frontmatter flag when a logo is forced on."
|
|
7093
|
+
}
|
|
7094
|
+
],
|
|
7095
|
+
"entry_sha256": "9c7500519109ff5b96d1131f3b3589c6cf291ca47ce7a6f720fb46d8ff96b795"
|
|
7096
|
+
},
|
|
7097
|
+
{
|
|
7098
|
+
"id": "RL-0153",
|
|
7099
|
+
"sequence": 153,
|
|
7100
|
+
"date": "2026-09-26",
|
|
7101
|
+
"kind": "release",
|
|
7102
|
+
"surface_version": null,
|
|
7103
|
+
"changelog_section": "1.43.1+agent.8",
|
|
7104
|
+
"changelog_sha256": "cb96fb1e0376e4d47fa7b09b7f3cf0300be82b70a471f1670706dd855f828767",
|
|
7105
|
+
"agent_impact": "A stale Design Source Package that an earlier prepare-build synthesized, unchanged since, is regenerated by prepare-build/start/build --force instead of refused; the Assembly Report's design_source_package reference gains origin (synthesized or adopted). Any other stale package is still refused, and every refusal names the file and its recovery.",
|
|
7106
|
+
"compatibility": "additive",
|
|
7107
|
+
"migration": "none",
|
|
7108
|
+
"changes": [
|
|
7109
|
+
{
|
|
7110
|
+
"class": "cli_surface",
|
|
7111
|
+
"path": "src/cli.mjs",
|
|
7112
|
+
"surface_entry": "prepare-build",
|
|
7113
|
+
"summary": "--force regenerates a stale producer-synthesized Design Source Package (mode regenerated); the Assembly Report records design_source_package.origin; stale-package refusals name the file and the recovery (--force, or reconcile/delete and rerun)."
|
|
7114
|
+
},
|
|
7115
|
+
{
|
|
7116
|
+
"class": "named_surface",
|
|
7117
|
+
"path": "docs/design-source-package.md",
|
|
7118
|
+
"surface_entry": "docs/design-source-package.md",
|
|
7119
|
+
"summary": "Document report origin, which stale packages --force regenerates, which it still refuses, and the --force alternative to deleting a blocked run's package."
|
|
7120
|
+
},
|
|
7121
|
+
{
|
|
7122
|
+
"class": "named_surface",
|
|
7123
|
+
"path": "docs/build-packet.md",
|
|
7124
|
+
"surface_entry": "docs/build-packet.md",
|
|
7125
|
+
"summary": "State up front that a manifest pages[] entry with both path and skip_reason is invalid, and note the --force regeneration exception."
|
|
7126
|
+
}
|
|
7127
|
+
],
|
|
7128
|
+
"entry_sha256": "35a5cc66c5100d0fd1d44a63daf19bc66d23d4d2998a15ddf90b7193dbd7b1f3"
|
|
7129
|
+
},
|
|
7130
|
+
{
|
|
7131
|
+
"id": "RL-0154",
|
|
7132
|
+
"sequence": 154,
|
|
7133
|
+
"date": "2026-09-26",
|
|
7134
|
+
"kind": "release",
|
|
7135
|
+
"surface_version": null,
|
|
7136
|
+
"changelog_section": "1.43.1+agent.9",
|
|
7137
|
+
"changelog_sha256": "1be8f8385cb6853eaf084747203e96f5a93136914d6f0fba7dd6a70226d8a0d5",
|
|
7138
|
+
"agent_impact": "Doctor now blocks under built_output.script_syntax.parse_failure when a campaign-owned script a built page loads by a local <script src> does not parse, naming the file, line and column; QA adds a script-parse:<page_id> blocker instead of reading an unparsable page script as dynamic.",
|
|
7139
|
+
"compatibility": "compatible",
|
|
7140
|
+
"migration": "none",
|
|
7141
|
+
"changes": [
|
|
7142
|
+
{
|
|
7143
|
+
"class": "cli_surface",
|
|
7144
|
+
"path": "src/cli.mjs",
|
|
7145
|
+
"surface_entry": "doctor",
|
|
7146
|
+
"summary": "Add the unwaivable built_output.script_syntax gate to doctor --built and the packet doctor registry."
|
|
7147
|
+
},
|
|
7148
|
+
{
|
|
7149
|
+
"class": "named_surface",
|
|
7150
|
+
"path": "docs/build-packet.md",
|
|
7151
|
+
"surface_entry": "docs/build-packet.md",
|
|
7152
|
+
"summary": "Document the built-output script syntax gate, its scope and its evidence."
|
|
7153
|
+
},
|
|
7154
|
+
{
|
|
7155
|
+
"class": "named_surface",
|
|
7156
|
+
"path": "docs/campaigns-os-build-flow.md",
|
|
7157
|
+
"surface_entry": "docs/campaigns-os-build-flow.md",
|
|
7158
|
+
"summary": "State that campaign scripts must parse and that doctor blocks when one does not."
|
|
7159
|
+
},
|
|
7160
|
+
{
|
|
7161
|
+
"class": "named_surface",
|
|
7162
|
+
"path": "docs/qa-and-test-orders.md",
|
|
7163
|
+
"surface_entry": "docs/qa-and-test-orders.md",
|
|
7164
|
+
"summary": "Document that QA reports an unparsable page script as a script-parse blocker, not as dynamic."
|
|
7165
|
+
}
|
|
7166
|
+
],
|
|
7167
|
+
"entry_sha256": "81273fac2c4938401143c5236dadae04c1e805e499a4163ab370e4e50a2e02a0"
|
|
7168
|
+
},
|
|
7169
|
+
{
|
|
7170
|
+
"id": "RL-0155",
|
|
7171
|
+
"sequence": 155,
|
|
7172
|
+
"date": "2026-09-26",
|
|
7173
|
+
"kind": "release",
|
|
7174
|
+
"surface_version": null,
|
|
7175
|
+
"changelog_section": "1.43.1+agent.11",
|
|
7176
|
+
"changelog_sha256": "41d14d94c974d6b4bb2924429c7ca26685d38be1d5a9e6fead8e347960c08cb3",
|
|
7177
|
+
"agent_impact": "start, prepare-build and build refuse a bare, empty or whitespace --template-family, --allow-uncertified-template, --theme-policy or --brief, and an out-of-vocabulary --theme-policy, before any spec read, Map fetch or cache write, with no journal entry. A blank value is no longer silently ignored. Certification and brief-file failures are still journaled handler failures.",
|
|
7178
|
+
"compatibility": "compatible",
|
|
7179
|
+
"migration": "Pass a value to each of these flags or omit the flag; a blank value that used to be ignored is now refused.",
|
|
7180
|
+
"changes": [
|
|
7181
|
+
{
|
|
7182
|
+
"class": "cli_surface",
|
|
7183
|
+
"path": "src/cli.mjs",
|
|
7184
|
+
"surface_entry": "prepare-build",
|
|
7185
|
+
"summary": "The intake dispatch refuses blank --template-family, --allow-uncertified-template, --theme-policy and --brief values and an unknown --theme-policy before resolveSpecPath, on the --spec, --map-id and --map-id --cached-spec paths, for start, prepare-build and build."
|
|
7186
|
+
},
|
|
7187
|
+
{
|
|
7188
|
+
"class": "named_surface",
|
|
7189
|
+
"path": "docs/effects.md",
|
|
7190
|
+
"surface_entry": "docs/effects.md",
|
|
7191
|
+
"summary": "List the four late intake flags and the --theme-policy vocabulary among the argv-only refusals, and state that certification and brief-file checks stay journaled."
|
|
7192
|
+
}
|
|
7193
|
+
],
|
|
7194
|
+
"entry_sha256": "f2be3f58c79afb40343b1dc3b6baa8a8065be0a93b04c45ec870e5f91b7a49d1"
|
|
7195
|
+
},
|
|
7196
|
+
{
|
|
7197
|
+
"id": "RL-0157",
|
|
7198
|
+
"sequence": 156,
|
|
7199
|
+
"date": "2026-09-27",
|
|
7200
|
+
"kind": "release",
|
|
7201
|
+
"surface_version": null,
|
|
7202
|
+
"changelog_section": "1.43.1+agent.15",
|
|
7203
|
+
"changelog_sha256": "d78eb0be3faaada970e67f8e659164b4e080c07a404d057e79dbff37b505156f",
|
|
7204
|
+
"agent_impact": "Doctor now warns under built_output.script_syntax.missing_script when a built page loads a local script that is not in the built output; it does not block. The script syntax gate resolves each script src against the <base href> in effect when the script is prepared, and falls back to the page URL for a data:, javascript: or unparsable base.",
|
|
7205
|
+
"compatibility": "compatible",
|
|
7206
|
+
"migration": "none",
|
|
7207
|
+
"changes": [
|
|
7208
|
+
{
|
|
7209
|
+
"class": "cli_surface",
|
|
7210
|
+
"path": "src/cli.mjs",
|
|
7211
|
+
"surface_entry": "doctor",
|
|
7212
|
+
"summary": "Surface the script syntax gate's missing-script findings as doctor warnings on doctor --built and the packet doctor registry, unless a parse failure blocks the gate."
|
|
7213
|
+
},
|
|
7214
|
+
{
|
|
7215
|
+
"class": "named_surface",
|
|
7216
|
+
"path": "docs/build-packet.md",
|
|
7217
|
+
"surface_entry": "docs/build-packet.md",
|
|
7218
|
+
"summary": "Document base-element ordering (parse order, HTML namespace, URL-parser whitespace) and the rejected-base fallback for script resolution, and the missing-script warning and warned[] evidence."
|
|
7219
|
+
}
|
|
7220
|
+
],
|
|
7221
|
+
"entry_sha256": "b704d4bd6f9e83e090200742dd4057d3b263d9884e09b506053b6cb6cd18ad24"
|
|
7222
|
+
},
|
|
7223
|
+
{
|
|
7224
|
+
"id": "RL-0158",
|
|
7225
|
+
"sequence": 157,
|
|
7226
|
+
"date": "2026-09-27",
|
|
7227
|
+
"kind": "release",
|
|
7228
|
+
"surface_version": null,
|
|
7229
|
+
"changelog_section": "1.43.1+agent.16",
|
|
7230
|
+
"changelog_sha256": "e6e03aea1c1cb3bb84827e584e7f3cf849eec5ff7e0d14c4aca5c7aa9b3fbe3f",
|
|
7231
|
+
"agent_impact": "QA's opt-in analytics parity leg now picks its candidate page the way the correctness inventory does on a partial build (the root when in scope and answering, else the first built entry), records capture_page and root_fallback, and reports no_in_scope_page_captured (skipped) or no_capture_page_answered (blocker) without loading the baseline. A topology entry that differs from the root only by its own query string is no longer merged into the root. docs/qa-and-test-orders.md documents the capture fallback, both outcomes, path-based step routing and the local-serve manual_review exception.",
|
|
7232
|
+
"compatibility": "compatible",
|
|
7233
|
+
"migration": "none",
|
|
7234
|
+
"changes": [
|
|
7235
|
+
{
|
|
7236
|
+
"class": "named_surface",
|
|
7237
|
+
"path": "docs/qa-and-test-orders.md",
|
|
7238
|
+
"surface_entry": "docs/qa-and-test-orders.md",
|
|
7239
|
+
"summary": "Document the partial-scope analytics capture fallback for the correctness and parity legs, the no_in_scope_page_captured and no_capture_page_answered outcomes, path-based step routing with query-routed entries kept apart from the root, and the local-serve manual_review exception with data-layer-purchase still blocking."
|
|
7240
|
+
}
|
|
7241
|
+
],
|
|
7242
|
+
"entry_sha256": "36fe47ebc1bd791d6017e5a50a2112597392222419883993eaca378c03a45996"
|
|
7243
|
+
},
|
|
7244
|
+
{
|
|
7245
|
+
"id": "RL-0159",
|
|
7246
|
+
"sequence": 158,
|
|
7247
|
+
"date": "2026-09-27",
|
|
7248
|
+
"kind": "release",
|
|
7249
|
+
"surface_version": null,
|
|
7250
|
+
"changelog_section": "1.43.1+agent.17",
|
|
7251
|
+
"changelog_sha256": "c479b34451dfed258ce2b0a27606a77ab74ffc80bac67def6a53ed6dd1209148",
|
|
7252
|
+
"agent_impact": "prepare-build refuses any configurable output path inside its target lock directory or the staging and tomb directories the lock creates beside it, directly or through a directory alias. The per-target and progress allocation locks publish their owner with the directory and refuse an ownerless lock after about a second, naming it; stage producers that edit the Assembly Report wait for a prepare-build holding the target lock, and waiver --dry-run previews take no lock.",
|
|
7253
|
+
"compatibility": "compatible",
|
|
7254
|
+
"migration": "Choose output paths outside .campaign-runtime/input/.design-source-package.json.lock. A lock directory without owner.json, left by an older release, is no longer recovered after ten seconds: confirm no campaigns-os process is working on the target, then remove it.",
|
|
7255
|
+
"changes": [
|
|
7256
|
+
{
|
|
7257
|
+
"class": "cli_surface",
|
|
7258
|
+
"path": "src/cli.mjs",
|
|
7259
|
+
"surface_entry": "prepare-build",
|
|
7260
|
+
"summary": "Take the per-target lock through the shared target-lock module and reserve the lock directory, its .lock.* siblings and their aliases in the output-collision checks."
|
|
7261
|
+
},
|
|
7262
|
+
{
|
|
7263
|
+
"class": "named_surface",
|
|
7264
|
+
"path": "docs/design-source-package.md",
|
|
7265
|
+
"surface_entry": "docs/design-source-package.md",
|
|
7266
|
+
"summary": "State that stage producers take the target lock, that an ownerless lock is never taken over, and that outputs inside the lock directory are refused."
|
|
7267
|
+
},
|
|
7268
|
+
{
|
|
7269
|
+
"class": "named_surface",
|
|
7270
|
+
"path": "docs/progress-snapshots.md",
|
|
7271
|
+
"surface_entry": "docs/progress-snapshots.md",
|
|
7272
|
+
"summary": "Replace the ten-second ownerless recovery with the atomic owner publication, the ownerless refusal and the offline procedure, and name the lock in the warning."
|
|
7273
|
+
}
|
|
7274
|
+
],
|
|
7275
|
+
"entry_sha256": "6e01214c091eea12b92e18880aad38911c2c093d6e1554da21b90eff3fe62e32"
|
|
7276
|
+
},
|
|
7277
|
+
{
|
|
7278
|
+
"id": "RL-0160",
|
|
7279
|
+
"sequence": 159,
|
|
7280
|
+
"date": "2026-09-27",
|
|
7281
|
+
"kind": "release",
|
|
7282
|
+
"surface_version": null,
|
|
7283
|
+
"changelog_section": "1.43.1+agent.18",
|
|
7284
|
+
"changelog_sha256": "9d67f3051f960cbf01912f4138482cfecf25b2f6ece64ab4f0f14eb975e982e7",
|
|
7285
|
+
"agent_impact": "prepare-build keeps a Design Source Package it synthesized recorded as synthesized across a failure or kill between package and report publication (a pending provenance record beside the package), records the hash of the exact source-html manifest bytes it parsed, and with --map-id writes the fetched spec to the shared cache only under the per-target lock.",
|
|
7286
|
+
"compatibility": "compatible",
|
|
7287
|
+
"migration": "none",
|
|
7288
|
+
"changes": [
|
|
7289
|
+
{
|
|
7290
|
+
"class": "cli_surface",
|
|
7291
|
+
"path": "src/cli.mjs",
|
|
7292
|
+
"surface_entry": "prepare-build",
|
|
7293
|
+
"summary": "Write and consult a pending Design Source Package provenance record around package publication, hash the manifest bytes intake parsed, and defer the --map-id cache write into the prepare-build lock."
|
|
7294
|
+
},
|
|
7295
|
+
{
|
|
7296
|
+
"class": "named_surface",
|
|
7297
|
+
"path": "docs/design-source-package.md",
|
|
7298
|
+
"surface_entry": "docs/design-source-package.md",
|
|
7299
|
+
"summary": "Document the pending provenance record, the lock-held --map-id cache write, and the single-read manifest hash."
|
|
7300
|
+
},
|
|
7301
|
+
{
|
|
7302
|
+
"class": "named_surface",
|
|
7303
|
+
"path": "docs/build-packet.md",
|
|
7304
|
+
"surface_entry": "docs/build-packet.md",
|
|
7305
|
+
"summary": "State that the fetched-spec cache is written only under the per-target prepare-build lock."
|
|
7306
|
+
}
|
|
7307
|
+
],
|
|
7308
|
+
"entry_sha256": "6e0890174577dcc2eca884e5321d163a012ca50ccec56276557133296772b042"
|
|
7309
|
+
},
|
|
7310
|
+
{
|
|
7311
|
+
"id": "RL-0161",
|
|
7312
|
+
"sequence": 160,
|
|
7313
|
+
"date": "2026-09-27",
|
|
7314
|
+
"kind": "release",
|
|
7315
|
+
"surface_version": null,
|
|
7316
|
+
"changelog_section": "1.43.1+agent.19",
|
|
7317
|
+
"changelog_sha256": "48dbf60f2eb321f33e6aaf78206c06ab58107e4b295b2981a9b8d81849a08598",
|
|
7318
|
+
"agent_impact": "No command behaves differently: invocation policy (session-recovery bypasses, where the stale run-session closeout runs and what suppresses it, lifecycle journal exemptions, the --dry-run implementers and the qa run session auto-end) now has one owner in the CLI, and the did-you-mean command list derives from it.",
|
|
7319
|
+
"compatibility": "compatible",
|
|
7320
|
+
"migration": "none",
|
|
7321
|
+
"changes": [
|
|
7322
|
+
{
|
|
7323
|
+
"class": "cli_surface",
|
|
7324
|
+
"path": "src/cli.mjs",
|
|
7325
|
+
"surface_entry": "start",
|
|
7326
|
+
"summary": "Every command, start included, runs the same steps in the same order as before; the rules for which steps run now live in one declaration instead of in each step."
|
|
7327
|
+
}
|
|
7328
|
+
],
|
|
7329
|
+
"entry_sha256": "b07d6b3c6871a4c32c913cde03e4f7612359332a82d23b132cfe178509645a76"
|
|
7330
|
+
},
|
|
7331
|
+
{
|
|
7332
|
+
"id": "RL-0162",
|
|
7333
|
+
"sequence": 161,
|
|
7334
|
+
"date": "2026-09-27",
|
|
7335
|
+
"kind": "release",
|
|
7336
|
+
"surface_version": null,
|
|
7337
|
+
"changelog_section": "1.43.1+agent.20",
|
|
7338
|
+
"changelog_sha256": "b504e2a11e3506ff186f434b113a3c3f461d66611a997e3cf5d6ecddb491d2ff",
|
|
7339
|
+
"agent_impact": "No command behaves differently. The doctor checks, packet inspection and next-step picker moved under src/doctor/, and the agent-relevant change policy now classifies a change there as a CLI-surface change, so doctor check changes keep appearing in this ledger.",
|
|
7340
|
+
"compatibility": "compatible",
|
|
7341
|
+
"migration": "none",
|
|
7342
|
+
"changes": [
|
|
7343
|
+
{
|
|
7344
|
+
"class": "compatibility_policy",
|
|
7345
|
+
"path": "contracts/agent-relevant-change-policy.v1.json",
|
|
7346
|
+
"surface_entry": "contracts/agent-relevant-change-policy.v1.json",
|
|
7347
|
+
"summary": "Classify a change under src/doctor/ as a CLI-surface change, ahead of the broad src/ ignore."
|
|
7348
|
+
},
|
|
7349
|
+
{
|
|
7350
|
+
"class": "cli_surface",
|
|
7351
|
+
"path": "src/cli.mjs",
|
|
7352
|
+
"surface_entry": "doctor",
|
|
7353
|
+
"summary": "The CLI imports the doctor checks, packet inspection, next-step picker and shared helpers from their new modules; every command behaves as before."
|
|
7354
|
+
},
|
|
7355
|
+
{
|
|
7356
|
+
"class": "cli_surface",
|
|
7357
|
+
"path": "src/doctor/checks.mjs",
|
|
7358
|
+
"surface_entry": "doctor",
|
|
7359
|
+
"summary": "The doctor check registries, packet validation and every check they run, moved unchanged out of the CLI module."
|
|
7360
|
+
},
|
|
7361
|
+
{
|
|
7362
|
+
"class": "cli_surface",
|
|
7363
|
+
"path": "src/doctor/inspect.mjs",
|
|
7364
|
+
"surface_entry": "doctor",
|
|
7365
|
+
"summary": "The doctor command, packet inspection and built-output inspection, moved unchanged out of the CLI module."
|
|
7366
|
+
},
|
|
7367
|
+
{
|
|
7368
|
+
"class": "cli_surface",
|
|
7369
|
+
"path": "src/doctor/next-step.mjs",
|
|
7370
|
+
"surface_entry": "next",
|
|
7371
|
+
"summary": "The next-step picker and the gate issues next reads from doctor, moved unchanged out of the CLI module."
|
|
7372
|
+
},
|
|
7373
|
+
{
|
|
7374
|
+
"class": "documentation",
|
|
7375
|
+
"path": "docs/release-ledger-authoring-guide.md",
|
|
7376
|
+
"surface_entry": "docs/release-ledger-authoring-guide.md",
|
|
7377
|
+
"summary": "Name src/agent/ and src/doctor/ alongside src/cli.mjs as the classified paths inside src/."
|
|
7378
|
+
}
|
|
7379
|
+
],
|
|
7380
|
+
"entry_sha256": "365537b5c46368048f99250ef3b794beb170a06cd0b8e7bdfa6e44a99eddd023"
|
|
7381
|
+
},
|
|
7382
|
+
{
|
|
7383
|
+
"id": "RL-0163",
|
|
7384
|
+
"sequence": 162,
|
|
7385
|
+
"date": "2026-09-27",
|
|
7386
|
+
"kind": "release",
|
|
7387
|
+
"surface_version": null,
|
|
7388
|
+
"changelog_section": "1.43.1+agent.21",
|
|
7389
|
+
"changelog_sha256": "6e4df1a341d47dce5e71e045cb0c182400ea4abaf57d5fbe61b39d8cdb3be4f8",
|
|
7390
|
+
"agent_impact": "No command behaves differently: prepare-build, start and build publish the Design Source Package, its pending provenance record and their JSON outputs exactly as before, with that publication now owned by one module instead of restated in prepare-build.",
|
|
7391
|
+
"compatibility": "compatible",
|
|
7392
|
+
"migration": "none",
|
|
7393
|
+
"changes": [
|
|
7394
|
+
{
|
|
7395
|
+
"class": "cli_surface",
|
|
7396
|
+
"path": "src/cli.mjs",
|
|
7397
|
+
"surface_entry": "prepare-build",
|
|
7398
|
+
"summary": "prepare-build names its outputs and hands Design Source Package publication (lock, collision checks, evidence re-checks, pending provenance record, publication order) to its one owner; every on-disk name and message is unchanged."
|
|
7399
|
+
}
|
|
7400
|
+
],
|
|
7401
|
+
"entry_sha256": "0b4d674dd8df3355b63f63afb8a66a6a57e6c13ee237bebacacf13a1b3317a8d"
|
|
7402
|
+
},
|
|
7403
|
+
{
|
|
7404
|
+
"id": "RL-0164",
|
|
7405
|
+
"sequence": 163,
|
|
7406
|
+
"date": "2026-09-28",
|
|
7407
|
+
"kind": "release",
|
|
7408
|
+
"surface_version": null,
|
|
7409
|
+
"changelog_section": "1.43.1+agent.22",
|
|
7410
|
+
"changelog_sha256": "07ef03ec9df3d1b56fae28b712eef11374e6990282b03ce0f56ea6531eafcfb7",
|
|
7411
|
+
"agent_impact": "None. doctor, next, prepare-build, start and build behave exactly as before; a shared path-identity helper moved out of src/doctor/ into the shared helper module, stale lock-holder comments were reworded, a private clone helper was renamed, and unused CLI imports were removed.",
|
|
7412
|
+
"compatibility": "compatible",
|
|
7413
|
+
"migration": "none",
|
|
7414
|
+
"changes": [
|
|
7415
|
+
{
|
|
7416
|
+
"class": "cli_surface",
|
|
7417
|
+
"path": "src/cli.mjs",
|
|
7418
|
+
"surface_entry": "prepare-build",
|
|
7419
|
+
"summary": "The CLI drops three imports nothing used; every command behaves as before."
|
|
7420
|
+
},
|
|
7421
|
+
{
|
|
7422
|
+
"class": "cli_surface",
|
|
7423
|
+
"path": "src/doctor/next-step.mjs",
|
|
7424
|
+
"surface_entry": "next",
|
|
7425
|
+
"summary": "The next-step picker imports the filesystem path-identity helper from the shared helper module instead of defining it; every check and message is unchanged."
|
|
7426
|
+
}
|
|
7427
|
+
],
|
|
7428
|
+
"entry_sha256": "ace0043152c12322dcb17f29b86c44ca09083f4e425460eda4034cc5020068ba"
|
|
7429
|
+
},
|
|
7430
|
+
{
|
|
7431
|
+
"id": "RL-0165",
|
|
7432
|
+
"sequence": 164,
|
|
7433
|
+
"date": "2026-09-28",
|
|
7434
|
+
"kind": "release",
|
|
7435
|
+
"surface_version": null,
|
|
7436
|
+
"changelog_section": "1.43.1+agent.23",
|
|
7437
|
+
"changelog_sha256": "c6406bad6b7c425016e5c2944b3a6134564089364f99082adbdb63eb6792b040",
|
|
7438
|
+
"agent_impact": "None. doctor behaves exactly as before; a code comment in the route_root declaration check was reworded to use a neutral placeholder.",
|
|
7439
|
+
"compatibility": "compatible",
|
|
7440
|
+
"migration": "none",
|
|
7441
|
+
"changes": [
|
|
7442
|
+
{
|
|
7443
|
+
"class": "cli_surface",
|
|
7444
|
+
"path": "src/doctor/checks.mjs",
|
|
7445
|
+
"surface_entry": "doctor",
|
|
7446
|
+
"summary": "A comment in the route_root declaration check now uses a neutral placeholder for its near-miss examples; every check and message is unchanged."
|
|
7447
|
+
}
|
|
7448
|
+
],
|
|
7449
|
+
"entry_sha256": "54a238fae479cad0e0ccc56eee0bb82246d73b8f30e588872e5dccfe46c2904f"
|
|
7450
|
+
},
|
|
7451
|
+
{
|
|
7452
|
+
"id": "RL-0166",
|
|
7453
|
+
"sequence": 165,
|
|
7454
|
+
"date": "2026-09-28",
|
|
7455
|
+
"kind": "release",
|
|
7456
|
+
"surface_version": "1.43.2",
|
|
7457
|
+
"changelog_section": "1.43.2",
|
|
7458
|
+
"changelog_sha256": "86a252e790db16c68334bb38f994da664e960b3e00512522d46cc9faf95506c5",
|
|
7459
|
+
"agent_impact": "None beyond the version. The 1.43.2 package ships the same-surface changes recorded as 1.43.1+agent.1 through 1.43.1+agent.23; effects.v1.json notes for the eight --dry-run invocations now point at the dryRun declaration in src/invocation.mjs instead of the removed DRY_RUN_COMMANDS set, with every declared effect unchanged.",
|
|
7460
|
+
"compatibility": "compatible",
|
|
7461
|
+
"migration": "Update to the exact 1.43.2 package and refresh bundled skills to 1.43.2+skills.1 before starting a new agent session.",
|
|
7462
|
+
"changes": [
|
|
7463
|
+
{
|
|
7464
|
+
"class": "compatibility_policy",
|
|
7465
|
+
"path": "contracts/supported-surface.json",
|
|
7466
|
+
"surface_entry": "contracts/supported-surface.json",
|
|
7467
|
+
"summary": "Advance the supported surface to 1.43.2 and record the new effects.v1.json hash."
|
|
7468
|
+
},
|
|
7469
|
+
{
|
|
7470
|
+
"class": "compatibility_policy",
|
|
7471
|
+
"path": "contracts/effects.v1.json",
|
|
7472
|
+
"surface_entry": "contracts/effects.v1.json",
|
|
7473
|
+
"summary": "Reword eight --dry-run notes to name the dryRun declaration in src/invocation.mjs instead of the removed DRY_RUN_COMMANDS set; declared effects are unchanged."
|
|
7474
|
+
},
|
|
7475
|
+
{
|
|
7476
|
+
"class": "named_surface",
|
|
7477
|
+
"path": "docs/local-setup.md",
|
|
7478
|
+
"surface_entry": "docs/local-setup.md",
|
|
7479
|
+
"summary": "Pin the copy-paste local setup install command to the 1.43.2 package release."
|
|
7480
|
+
},
|
|
7481
|
+
{
|
|
7482
|
+
"class": "documentation",
|
|
7483
|
+
"path": "docs/orientation-contract-reference.md",
|
|
7484
|
+
"surface_entry": "docs/orientation-contract-reference.md",
|
|
7485
|
+
"summary": "Restamp the generated orientation reference for surface 1.43.2."
|
|
7486
|
+
},
|
|
7487
|
+
{
|
|
7488
|
+
"class": "named_surface",
|
|
7489
|
+
"path": "docs/runtime-readiness.md",
|
|
7490
|
+
"surface_entry": "docs/runtime-readiness.md",
|
|
7491
|
+
"summary": "Restamp the generated runtime reference for surface 1.43.2."
|
|
7492
|
+
},
|
|
7493
|
+
{
|
|
7494
|
+
"class": "named_surface",
|
|
7495
|
+
"path": "docs/skills-revision.md",
|
|
7496
|
+
"surface_entry": "docs/skills-revision.md",
|
|
7497
|
+
"summary": "Update displayed bundle revision examples to 1.43.2+skills.1."
|
|
7498
|
+
},
|
|
7499
|
+
{
|
|
7500
|
+
"class": "generated_runtime",
|
|
7501
|
+
"path": "package-lock.json",
|
|
7502
|
+
"surface_entry": null,
|
|
7503
|
+
"summary": "Stamp package version 1.43.2 without changing dependency resolutions."
|
|
7504
|
+
},
|
|
7505
|
+
{
|
|
7506
|
+
"class": "package_export",
|
|
7507
|
+
"path": "package.json",
|
|
7508
|
+
"surface_entry": null,
|
|
7509
|
+
"summary": "Release package version 1.43.2 without changing exports or dependencies."
|
|
7510
|
+
},
|
|
7511
|
+
{
|
|
7512
|
+
"class": "skill",
|
|
7513
|
+
"path": "skills.json",
|
|
7514
|
+
"surface_entry": "skills.json",
|
|
7515
|
+
"summary": "Advance bundle revision to 1.43.2+skills.1 and every skill version one patch."
|
|
7516
|
+
},
|
|
7517
|
+
{
|
|
7518
|
+
"class": "skill",
|
|
7519
|
+
"path": "skills/campaign-lifecycle-orientation/SKILL.md",
|
|
7520
|
+
"surface_entry": null,
|
|
7521
|
+
"summary": "Stamp bundle revision 1.43.2+skills.1 and advance the skill version one patch."
|
|
7522
|
+
},
|
|
7523
|
+
{
|
|
7524
|
+
"class": "skill",
|
|
7525
|
+
"path": "skills/campaign-readback-classification/SKILL.md",
|
|
7526
|
+
"surface_entry": null,
|
|
7527
|
+
"summary": "Stamp bundle revision 1.43.2+skills.1 and advance the skill version one patch."
|
|
7528
|
+
},
|
|
7529
|
+
{
|
|
7530
|
+
"class": "skill",
|
|
7531
|
+
"path": "skills/campaign-run-evidence/SKILL.md",
|
|
7532
|
+
"surface_entry": null,
|
|
7533
|
+
"summary": "Stamp bundle revision 1.43.2+skills.1 and advance the skill version one patch."
|
|
7534
|
+
},
|
|
7535
|
+
{
|
|
7536
|
+
"class": "skill",
|
|
7537
|
+
"path": "skills/contribution-intake/SKILL.md",
|
|
7538
|
+
"surface_entry": null,
|
|
7539
|
+
"summary": "Stamp bundle revision 1.43.2+skills.1 and advance the skill version one patch."
|
|
7540
|
+
},
|
|
7541
|
+
{
|
|
7542
|
+
"class": "skill",
|
|
7543
|
+
"path": "skills/next-campaigns-build/SKILL.md",
|
|
7544
|
+
"surface_entry": null,
|
|
7545
|
+
"summary": "Stamp bundle revision 1.43.2+skills.1 and advance the skill version one patch."
|
|
7546
|
+
},
|
|
7547
|
+
{
|
|
7548
|
+
"class": "skill",
|
|
7549
|
+
"path": "skills/next-campaigns-os/SKILL.md",
|
|
7550
|
+
"surface_entry": null,
|
|
7551
|
+
"summary": "Stamp bundle revision 1.43.2+skills.1 and advance the skill version one patch."
|
|
7552
|
+
},
|
|
7553
|
+
{
|
|
7554
|
+
"class": "skill",
|
|
7555
|
+
"path": "skills/next-campaigns-os-setup/SKILL.md",
|
|
7556
|
+
"surface_entry": null,
|
|
7557
|
+
"summary": "Stamp bundle revision 1.43.2+skills.1 and advance the skill version one patch."
|
|
7558
|
+
},
|
|
7559
|
+
{
|
|
7560
|
+
"class": "skill",
|
|
7561
|
+
"path": "skills/next-campaigns-polish/SKILL.md",
|
|
7562
|
+
"surface_entry": null,
|
|
7563
|
+
"summary": "Stamp bundle revision 1.43.2+skills.1 and advance the skill version one patch."
|
|
7564
|
+
},
|
|
7565
|
+
{
|
|
7566
|
+
"class": "skill",
|
|
7567
|
+
"path": "skills/next-campaigns-qa/SKILL.md",
|
|
7568
|
+
"surface_entry": null,
|
|
7569
|
+
"summary": "Stamp bundle revision 1.43.2+skills.1 and advance the skill version one patch."
|
|
7570
|
+
}
|
|
7571
|
+
],
|
|
7572
|
+
"entry_sha256": "7aa355a3a9aa0b93c526eb1fe426db0fa13fbdb920b96edef93fe62d49d848d6"
|
|
6901
7573
|
}
|
|
6902
7574
|
]
|
|
6903
7575
|
}
|