@nextcommerce/campaigns-os 1.41.2 → 1.43.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +178 -0
- package/README.md +6 -4
- package/agents/claude/CLAUDE.md +5 -1
- package/campaign-spec/dist/types.d.ts +2 -0
- package/contracts/effects.v1.json +111 -18
- package/contracts/migration-sidecar-bundle.v0.json +9 -0
- package/contracts/release-ledger.json +752 -0
- package/contracts/supported-surface.json +12 -11
- package/docs/build-packet.md +56 -6
- package/docs/campaigns-os-build-flow.md +2 -2
- package/docs/effects.md +70 -1
- package/docs/local-setup.md +51 -0
- package/docs/migration-sidecar-bundle.md +6 -1
- package/docs/orientation-contract-reference.md +1 -1
- package/docs/progress-snapshots.md +6 -0
- package/docs/qa-and-test-orders.md +26 -10
- package/docs/runtime-readiness.md +1 -1
- package/docs/skills-revision.md +10 -10
- package/package.json +3 -2
- package/schemas/campaign-runtime-assembly-report.v0.schema.json +6 -1
- package/schemas/campaign-runtime-build-packet.v0.schema.json +6 -1
- package/schemas/campaign-spec.v4.schema.json +4 -0
- package/schemas/campaigns-os-progress-snapshot.v0.schema.json +1 -0
- package/schemas/campaigns-os-qa-verdict-sidecar.v0.schema.json +1 -0
- package/schemas/campaigns-os-qa-verdict.v0.schema.json +1 -0
- package/schemas/campaigns-os-run-record.v0.schema.json +1 -0
- package/skills/campaign-lifecycle-orientation/SKILL.md +13 -8
- package/skills/campaign-readback-classification/SKILL.md +3 -3
- package/skills/campaign-run-evidence/SKILL.md +8 -6
- package/skills/contribution-intake/SKILL.md +3 -3
- package/skills/next-campaigns-build/SKILL.md +3 -3
- package/skills/next-campaigns-os/SKILL.md +17 -4
- package/skills/next-campaigns-os/references/session-intake.md +4 -4
- 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 +10 -9
- package/skills.json +11 -11
- package/src/cli.mjs +187 -70
- package/src/finding-cause.mjs +14 -10
- package/src/lifecycle.mjs +5 -4
- package/src/polish-node.mjs +5 -2
- package/src/progress-node.mjs +3 -2
- package/src/progress.mjs +5 -3
- package/src/qa-node.mjs +58 -26
- package/src/qa-publish.mjs +4 -0
- package/src/qa-sidecar.mjs +2 -0
- package/src/qa-verdict-discovery.mjs +11 -0
- package/src/qa-verdict-publish.mjs +1 -0
- package/src/qa-verdict.mjs +8 -1
- package/src/readback.mjs +2 -1
- package/src/run-record-closeout.mjs +3 -4
- package/src/run-record.mjs +4 -0
- package/src/sidecar-bundle.mjs +21 -0
- package/src/spec-source-identity.mjs +44 -0
- package/src/stage-ledger.mjs +4 -1
- package/src/tooling-setup.mjs +160 -0
|
@@ -6,6 +6,8 @@
|
|
|
6
6
|
"type": "object",
|
|
7
7
|
"additionalProperties": true,
|
|
8
8
|
"required": ["schema_version", "funnels"],
|
|
9
|
+
"if": { "required": ["spec_identity"], "properties": { "spec_identity": { "required": ["local_spec_id"] } } },
|
|
10
|
+
"then": { "not": { "required": ["map_id"] } },
|
|
9
11
|
"properties": {
|
|
10
12
|
"schema_version": {
|
|
11
13
|
"enum": ["4.2", "4.3"],
|
|
@@ -364,8 +366,10 @@
|
|
|
364
366
|
"specIdentity": {
|
|
365
367
|
"type": "object",
|
|
366
368
|
"additionalProperties": true,
|
|
369
|
+
"not": { "required": ["map_id", "local_spec_id"] },
|
|
367
370
|
"properties": {
|
|
368
371
|
"source": { "type": "string", "description": "Observed values: campaign-map-builder, hand-authored-simulation, local-experimental." },
|
|
372
|
+
"local_spec_id": { "type": "string", "pattern": "^[A-Za-z0-9_-]{1,64}$", "description": "Stable repository-owned CampaignSpec identity; never a saved Map ID. Keep unchanged across local revisions." },
|
|
369
373
|
"map_id": { "type": "string" },
|
|
370
374
|
"id": { "type": "string" },
|
|
371
375
|
"map_url": { "type": "string" },
|
|
@@ -29,6 +29,7 @@
|
|
|
29
29
|
"description": "Same literal as the full verdict — the sidecar is the same contract projected, not a second schema lineage."
|
|
30
30
|
},
|
|
31
31
|
"run_id": { "type": "string", "minLength": 1 },
|
|
32
|
+
"local_spec_id": { "type": "string", "pattern": "^[A-Za-z0-9_-]{1,64}$", "description": "Stable repository-owned CampaignSpec identity; never a saved Map ID. Keep unchanged across local revisions." },
|
|
32
33
|
"campaign_slug": {
|
|
33
34
|
"type": "string",
|
|
34
35
|
"minLength": 1,
|
|
@@ -29,6 +29,7 @@
|
|
|
29
29
|
"minLength": 1,
|
|
30
30
|
"description": "The QA run identity, also the verdict filename under qa-output/<map-id>/. The portal receiver additionally restricts it to [A-Za-z0-9_-]{1,64}."
|
|
31
31
|
},
|
|
32
|
+
"local_spec_id": { "type": "string", "pattern": "^[A-Za-z0-9_-]{1,64}$", "description": "Stable repository-owned CampaignSpec identity; never a saved Map ID. Keep unchanged across local revisions." },
|
|
32
33
|
"campaign_slug": {
|
|
33
34
|
"type": "string",
|
|
34
35
|
"minLength": 1,
|
|
@@ -155,6 +155,7 @@
|
|
|
155
155
|
"additionalProperties": false,
|
|
156
156
|
"description": "Best-effort run identity — the join keys that make telemetry useful. Missing identity never blocks capture.",
|
|
157
157
|
"properties": {
|
|
158
|
+
"local_spec_id": { "type": ["string", "null"], "pattern": "^[A-Za-z0-9_-]{1,64}$", "description": "Stable repository-owned CampaignSpec identity; never a saved Map ID. Keep unchanged across local revisions. Null or omitted means no local identity." },
|
|
158
159
|
"map_id": { "type": ["string", "null"] },
|
|
159
160
|
"campaign_slug": { "type": ["string", "null"] },
|
|
160
161
|
"template_family": { "type": ["string", "null"] },
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: campaign-lifecycle-orientation
|
|
3
|
-
version: 1.0.
|
|
3
|
+
version: 1.0.7
|
|
4
4
|
description: Orient a reader to the Campaigns OS lifecycle artifacts a run has already emitted, without advancing any stage or changing any state.
|
|
5
5
|
---
|
|
6
6
|
|
|
7
|
-
Bundle revision: 1.
|
|
8
|
-
Run `npx --no-install campaigns-os tooling status --skills-revision 1.
|
|
7
|
+
Bundle revision: 1.43.1+skills.1
|
|
8
|
+
Run `npx --no-install campaigns-os tooling status --skills-revision 1.43.1+skills.1`
|
|
9
9
|
from the campaign's Page Kit folder, where it runs the project's pinned copy and
|
|
10
10
|
never installs one, at the start of each task. Start a fresh session if it
|
|
11
11
|
reports `mismatch`: this text is already in your context and is never re-read
|
|
@@ -70,9 +70,13 @@ output sidecar, theme evidence and normalized inputs
|
|
|
70
70
|
separate system, and QA then tests a deployed URL
|
|
71
71
|
(`docs/qa-and-test-orders.md`).
|
|
72
72
|
|
|
73
|
-
Keep
|
|
74
|
-
and keys QA evidence storage
|
|
75
|
-
|
|
73
|
+
Keep stable campaign identity separate from routing. The **Map ID** identifies
|
|
74
|
+
a saved campaign map and keys its QA evidence storage. A local-spec packet
|
|
75
|
+
instead carries **local_spec_id**, keeps `map_id` null, and stores QA under
|
|
76
|
+
`local-spec-<local_spec_id>`. The **public route slug** is the shopper-facing
|
|
77
|
+
path segment. Read the packet's identity kind and route separately; a shared
|
|
78
|
+
route cannot make evidence from another local spec belong to this campaign
|
|
79
|
+
(`docs/build-packet.md`, "Local-spec entry").
|
|
76
80
|
|
|
77
81
|
Campaign pages are typed. The page-type vocabulary is `presell`, `landing`,
|
|
78
82
|
`select`, `checkout`, `upsell`, `downsell` and `thankyou`; `select` is where a
|
|
@@ -95,8 +99,9 @@ only from implementation files this skill may not cite, so do not branch on one.
|
|
|
95
99
|
## Read the stage record
|
|
96
100
|
|
|
97
101
|
`campaigns-os next --packet <packet> --json` (tier `A`: it captures a progress
|
|
98
|
-
snapshot under the target and, under Run Telemetry
|
|
99
|
-
observation off the machine
|
|
102
|
+
snapshot under the target and, for saved-Map packets under Run Telemetry
|
|
103
|
+
consent, can POST that observation off the machine; local-spec observations
|
|
104
|
+
stay local) reads the recorded state and names the next
|
|
100
105
|
incomplete stage among `setup`, `build`, `polish`, `deploy` and `qa`. That is a
|
|
101
106
|
writing, potentially sending command. If all you need is where the run stands,
|
|
102
107
|
prefer the readback below.
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: campaign-readback-classification
|
|
3
|
-
version: 1.0.
|
|
3
|
+
version: 1.0.7
|
|
4
4
|
description: Classify a selected campaign from the readback projection's v2 fields and write a read-only handoff without turning diagnosis into permission.
|
|
5
5
|
---
|
|
6
6
|
|
|
7
|
-
Bundle revision: 1.
|
|
8
|
-
Run `npx --no-install campaigns-os tooling status --skills-revision 1.
|
|
7
|
+
Bundle revision: 1.43.1+skills.1
|
|
8
|
+
Run `npx --no-install campaigns-os tooling status --skills-revision 1.43.1+skills.1`
|
|
9
9
|
from the campaign's Page Kit folder, where it runs the project's pinned copy and
|
|
10
10
|
never installs one, at the start of each task. Start a fresh session if it
|
|
11
11
|
reports `mismatch`: this text is already in your context and is never re-read
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: campaign-run-evidence
|
|
3
|
-
version: 1.0.
|
|
3
|
+
version: 1.0.7
|
|
4
4
|
description: Interpret existing Campaigns OS doctor, QA and proof-depth evidence without claiming more proof than the artifacts contain.
|
|
5
5
|
---
|
|
6
6
|
|
|
7
|
-
Bundle revision: 1.
|
|
8
|
-
Run `npx --no-install campaigns-os tooling status --skills-revision 1.
|
|
7
|
+
Bundle revision: 1.43.1+skills.1
|
|
8
|
+
Run `npx --no-install campaigns-os tooling status --skills-revision 1.43.1+skills.1`
|
|
9
9
|
from the campaign's Page Kit folder, where it runs the project's pinned copy and
|
|
10
10
|
never installs one, at the start of each task. Start a fresh session if it
|
|
11
11
|
reports `mismatch`: this text is already in your context and is never re-read
|
|
@@ -59,9 +59,11 @@ nothing about ordering — it records a policy and an unmet one.
|
|
|
59
59
|
|
|
60
60
|
## Interpret the verdict exactly
|
|
61
61
|
|
|
62
|
-
Only a JSON QA verdict is a verdict. The runner writes its full verdict
|
|
63
|
-
|
|
64
|
-
the local one.
|
|
62
|
+
Only a JSON QA verdict is a verdict. The runner writes its full verdict locally.
|
|
63
|
+
Saved-Map QA may publish it under the existing consent and flag controls; a
|
|
64
|
+
publication failure does not erase the local one. Local-spec packet verdicts
|
|
65
|
+
stay local even with `--post-verdict`, and `qa publish` refuses those packets.
|
|
66
|
+
The readback projects `.campaign-runtime/qa-verdict.json` when
|
|
65
67
|
that sidecar has been copied into the campaign repository. A markdown QA
|
|
66
68
|
report, a ledger or a gate script is not a verdict and must not be scanned for
|
|
67
69
|
a disposition, a run id or a blocker. Where two JSON verdicts exist, interpret
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: contribution-intake
|
|
3
|
-
version: 1.0.
|
|
3
|
+
version: 1.0.7
|
|
4
4
|
description: Turn a suggestion about the agent surface into a classified, evidence-checked proposal and, only with attended approval, one issue on this repository's tracker.
|
|
5
5
|
---
|
|
6
6
|
|
|
7
|
-
Bundle revision: 1.
|
|
8
|
-
Run `npx --no-install campaigns-os tooling status --skills-revision 1.
|
|
7
|
+
Bundle revision: 1.43.1+skills.1
|
|
8
|
+
Run `npx --no-install campaigns-os tooling status --skills-revision 1.43.1+skills.1`
|
|
9
9
|
from the campaign's Page Kit folder, where it runs the project's pinned copy and
|
|
10
10
|
never installs one, at the start of each task. Start a fresh session if it
|
|
11
11
|
reports `mismatch`: this text is already in your context and is never re-read
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: next-campaigns-build
|
|
3
|
-
version: 1.0.
|
|
3
|
+
version: 1.0.12
|
|
4
4
|
description: Assemble a NEXT campaign from a doctor-cleared Build Packet, CampaignSpec/API values, prepared HTML/assets, page-kit, and starter-template contracts.
|
|
5
5
|
---
|
|
6
6
|
|
|
7
|
-
Bundle revision: 1.
|
|
8
|
-
Run `npx --no-install campaigns-os tooling status --skills-revision 1.
|
|
7
|
+
Bundle revision: 1.43.1+skills.1
|
|
8
|
+
Run `npx --no-install campaigns-os tooling status --skills-revision 1.43.1+skills.1`
|
|
9
9
|
from the campaign's Page Kit folder, where it runs the project's pinned copy and
|
|
10
10
|
never installs one, at the start of each task. Start a fresh session if it
|
|
11
11
|
reports `mismatch`: this text is already in your context and is never re-read
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: next-campaigns-os
|
|
3
|
-
version: 1.0.
|
|
3
|
+
version: 1.0.27
|
|
4
4
|
description: Coordinate Campaigns OS lifecycle workflows from CampaignSpec, Build Packet, starter-template contracts, stage reports, deploy evidence, and QA proof depth.
|
|
5
5
|
---
|
|
6
6
|
|
|
7
|
-
Bundle revision: 1.
|
|
8
|
-
Run `npx --no-install campaigns-os tooling status --skills-revision 1.
|
|
7
|
+
Bundle revision: 1.43.1+skills.1
|
|
8
|
+
Run `npx --no-install campaigns-os tooling status --skills-revision 1.43.1+skills.1`
|
|
9
9
|
from the campaign's Page Kit folder, where it runs the project's pinned copy and
|
|
10
10
|
never installs one, at the start of each task. Start a fresh session if it
|
|
11
11
|
reports `mismatch`: this text is already in your context and is never re-read
|
|
@@ -60,7 +60,20 @@ but those wrappers should not redefine the public contract.
|
|
|
60
60
|
|
|
61
61
|
Workflow:
|
|
62
62
|
|
|
63
|
-
|
|
63
|
+
Local-spec runs use packet-based QA and repository evidence. They never post QA
|
|
64
|
+
to the Map portal or claim saved-Map revision alignment. Existing lifecycle
|
|
65
|
+
gates remain in force; use `local-serve` for the first localhost proof.
|
|
66
|
+
|
|
67
|
+
1. Confirm the selected campaign is configured in Campaigns App. Use its current
|
|
68
|
+
saved Map export when available. For HTML-and-brief intake without a Map, author
|
|
69
|
+
a normal CampaignSpec from the source design, operator's brief and verified
|
|
70
|
+
Campaigns API commerce values. Follow `docs/build-packet.md` "Local-spec entry":
|
|
71
|
+
create one `spec_identity.local_spec_id` (UUID), preserve it through revisions,
|
|
72
|
+
set `public_route_slug`, and omit saved-Map identity/URLs. Do not ask the operator
|
|
73
|
+
to author a spec or fabricate a Map ID. Verify store/campaign binding and real
|
|
74
|
+
package/offer references. Store contact and policy details can come from the
|
|
75
|
+
brief; gateway access is optional. Current authoring is v4.3+ while preserving
|
|
76
|
+
the v4.2 `funnels[]` topology as the compatibility shape.
|
|
64
77
|
2. Run `campaigns-os start` or `campaigns-os prepare-build` (tier `A`: they write the
|
|
65
78
|
Build Packet, Build Context, assembly report, run session and `.gitignore` under
|
|
66
79
|
the target plus a Run Record under the working directory, and they contact the
|
|
@@ -40,7 +40,7 @@ end-to-end campaign.
|
|
|
40
40
|
|
|
41
41
|
Required before build:
|
|
42
42
|
|
|
43
|
-
- Map ID or CampaignSpec
|
|
43
|
+
- Saved Map ID/export, or the configured store/campaign details, public key, prepared HTML/assets and brief from which the agent authors a local CampaignSpec. Do not make a saved Map a prerequisite; follow `docs/build-packet.md` "Local-spec entry".
|
|
44
44
|
- Public route slug and target repo/output directory.
|
|
45
45
|
- Source type and source files: Figma, exported HTML, prepared HTML, existing campaign, or other.
|
|
46
46
|
- Pages in scope and any pages to preserve.
|
|
@@ -101,10 +101,10 @@ Use when the user wants evidence on a deployed campaign and no source edit.
|
|
|
101
101
|
|
|
102
102
|
Collect:
|
|
103
103
|
|
|
104
|
-
- Map ID
|
|
105
|
-
- Build Packet path
|
|
104
|
+
- Saved Map ID or local-spec Build Packet, plus the tested base URL.
|
|
105
|
+
- Build Packet path; required for a local spec, otherwise enough info to resolve topology.
|
|
106
106
|
- Whether browser QA should run.
|
|
107
|
-
-
|
|
107
|
+
- For a saved Map, whether the verdict should use the QA portal publish path or stay local-only. Local-spec packet QA always keeps verdicts and progress local, even with `--post-verdict`; `qa publish` refuses it. Run Telemetry retains its consent controls.
|
|
108
108
|
- Typed-card test-order depth (`common`/explicit/`full`).
|
|
109
109
|
|
|
110
110
|
Route to QA. Do not patch campaign code from the QA-only path.
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: next-campaigns-os-setup
|
|
3
|
-
version: 2.0.
|
|
3
|
+
version: 2.0.10
|
|
4
4
|
description: Bootstrap or prepare a target page-kit campaign repo from a doctor-cleared Campaigns OS Build Packet before full build wiring. Formerly installed as next-campaigns-setup; renamed 2026-08 to stop colliding with the published NextCommerceCo/skills scaffolder of that name.
|
|
5
5
|
---
|
|
6
6
|
|
|
7
|
-
Bundle revision: 1.
|
|
8
|
-
Run `npx --no-install campaigns-os tooling status --skills-revision 1.
|
|
7
|
+
Bundle revision: 1.43.1+skills.1
|
|
8
|
+
Run `npx --no-install campaigns-os tooling status --skills-revision 1.43.1+skills.1`
|
|
9
9
|
from the campaign's Page Kit folder, where it runs the project's pinned copy and
|
|
10
10
|
never installs one, at the start of each task. Start a fresh session if it
|
|
11
11
|
reports `mismatch`: this text is already in your context and is never re-read
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: next-campaigns-polish
|
|
3
|
-
version: 1.1.
|
|
3
|
+
version: 1.1.11
|
|
4
4
|
description: Run the visual/runtime polish pass after build and before QA for a Campaigns OS campaign.
|
|
5
5
|
---
|
|
6
6
|
|
|
7
|
-
Bundle revision: 1.
|
|
8
|
-
Run `npx --no-install campaigns-os tooling status --skills-revision 1.
|
|
7
|
+
Bundle revision: 1.43.1+skills.1
|
|
8
|
+
Run `npx --no-install campaigns-os tooling status --skills-revision 1.43.1+skills.1`
|
|
9
9
|
from the campaign's Page Kit folder, where it runs the project's pinned copy and
|
|
10
10
|
never installs one, at the start of each task. Start a fresh session if it
|
|
11
11
|
reports `mismatch`: this text is already in your context and is never re-read
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: next-campaigns-qa
|
|
3
|
-
version: 1.3.
|
|
4
|
-
description: Run spec-aware QA from a
|
|
3
|
+
version: 1.3.11
|
|
4
|
+
description: Run spec-aware QA from a saved Map or local-spec Build Packet and tested campaign URL after build, polish, and deploy/local evidence exist, including Playwright typed-card test-order proof.
|
|
5
5
|
---
|
|
6
6
|
|
|
7
|
-
Bundle revision: 1.
|
|
8
|
-
Run `npx --no-install campaigns-os tooling status --skills-revision 1.
|
|
7
|
+
Bundle revision: 1.43.1+skills.1
|
|
8
|
+
Run `npx --no-install campaigns-os tooling status --skills-revision 1.43.1+skills.1`
|
|
9
9
|
from the campaign's Page Kit folder, where it runs the project's pinned copy and
|
|
10
10
|
never installs one, at the start of each task. Start a fresh session if it
|
|
11
11
|
reports `mismatch`: this text is already in your context and is never re-read
|
|
@@ -45,7 +45,7 @@ The effect class in each parenthetical below is the declared row of
|
|
|
45
45
|
Read that file, not this text, when an exact path or endpoint matters.
|
|
46
46
|
|
|
47
47
|
|
|
48
|
-
Use this after the campaign has a preview or production URL and the assembly report records build and polish status. The public v0 runner is Node/npm-based, with an owned Playwright browser pass. `qa resolve` is tier `A` (it fetches `--base-url`; `--no-probe` is tier `B` and local); every `qa run` form is tier `C` — it overwrites the stored verdict and the assembly report, places
|
|
48
|
+
Use this after the campaign has a tested localhost, preview or production URL and the assembly report records build and polish status. The public v0 runner is Node/npm-based, with an owned Playwright browser pass. `qa resolve` is tier `A` (it fetches `--base-url`; `--no-probe` is tier `B` and local); every `qa run` form is tier `C` — it overwrites the stored verdict and the assembly report, places requested typed-card test orders against the campaign, and can post saved-Map verdicts and progress under their existing controls. Local-spec packet verdicts and progress stay local; `qa parity` is tier `A` (it drives the fixture's scenario through the candidate funnel with real typed-card orders and publishes the verdict, but takes no packet, so it writes only under `qa-output/` — never the packet, the assembly report or the verdict sidecar; `--no-post-verdict` drops the publish and stays tier `A`):
|
|
49
49
|
|
|
50
50
|
```bash
|
|
51
51
|
npx --no-install campaigns-os qa install-browser
|
|
@@ -53,9 +53,9 @@ npx --no-install campaigns-os qa resolve --packet campaign-runtime.build.json
|
|
|
53
53
|
npx --no-install campaigns-os qa run --packet campaign-runtime.build.json --base-url <preview-url>
|
|
54
54
|
# Fixture-driven migration parity proof. Publishes to the QA portal by default.
|
|
55
55
|
npx --no-install campaigns-os qa parity --fixture <parity-fixture.json> --scenario <scenario-id> --base-url <preview-url>
|
|
56
|
-
# Browser QA + typed-card proof.
|
|
56
|
+
# Browser QA + typed-card proof. Saved-Map publishing follows consent; local-spec QA stays local.
|
|
57
57
|
npx --no-install campaigns-os qa run --packet campaign-runtime.build.json --base-url <preview-url> --browser --test-order common
|
|
58
|
-
#
|
|
58
|
+
# Keep a saved-Map verdict local (local-spec verdicts are always local).
|
|
59
59
|
npx --no-install campaigns-os qa run --packet campaign-runtime.build.json --base-url <preview-url> --browser --test-order common --no-post-verdict
|
|
60
60
|
```
|
|
61
61
|
|
|
@@ -66,7 +66,7 @@ already installed.
|
|
|
66
66
|
|
|
67
67
|
Inputs:
|
|
68
68
|
|
|
69
|
-
-
|
|
69
|
+
- Build Packet with a saved Map ID or `local_spec_id`; local-spec QA requires `--packet`
|
|
70
70
|
- tested base URL (localhost dev URL, preview URL, or production URL)
|
|
71
71
|
- assembly report
|
|
72
72
|
- Test-order coverage choice (`common` default vs explicit paths vs topology-complete `full`) and SDK origin state (localhost is a Development domain; non-localhost origins need allowlist confirmation so the SDK loads)
|
|
@@ -89,7 +89,8 @@ Rules:
|
|
|
89
89
|
- A missing or topology-unrecognized receipt is `MANUAL_REVIEW`/`WARN`; a recognized receipt with no dataLayer, outbound Meta, or outbound GA4 Purchase is `FAIL`/`BLOCKER`. Capture, unreadable-page, and settle-deadline errors on a recognized receipt are explicit non-waivable blockers. The `analytics-correctness:purchase-fires` waiver applies only to a genuine recognized-receipt/no-signal failure, and is recorded with `campaigns-os qa waive --assertion analytics-correctness:purchase-fires --reason "<why>"` (tier `C`: it overwrites the assembly report and doctor output; the lane is scoped to that one assertion and every other is refused).
|
|
90
90
|
- Keep QA in a tight sequence: install the Playwright browser, resolve topology, run browser QA plus typed-card proof with `--test-order common` by default. Test orders need no permission step. Pause only for missing inputs, out-of-scope runtime pages that block checkout proof, or merchant-specific uncertainty.
|
|
91
91
|
- Use `--browser` for rendered browser evidence. Browser QA must use the package-owned Playwright flow, not external agent/browser skills.
|
|
92
|
-
- QA
|
|
92
|
+
- Saved-Map QA publishes to the QA portal under the existing consent and flag controls; report the portal link only when publication succeeds. Pass `--no-post-verdict` (or `--local-only`) to keep that verdict local. This stays tier `C`: served-page probes, requested orders, Run Telemetry and progress retain their own controls. See `docs/qa-and-test-orders.md` for the saved-Map publication policy.
|
|
93
|
+
- Local-spec QA always keeps verdicts and progress local. `qa run` suppresses portal publication even with `--post-verdict`; `qa publish` refuses local-spec packets with `local_spec`. Report the local verdict/sidecar as evidence, never a dashboard link. A matching route cannot replace a matching `local_spec_id`, and QA refuses a foreign or stale local Assembly Report. Run Telemetry still follows its consent controls.
|
|
93
94
|
- Browser QA must include checkout commerce geometry evidence, not just mount counts: express-wallet buttons rendered in the current browser, card/CVV hosted iframe host dimensions, iframe text-path height, and center alignment. Apple Pay is browser/device eligible, so record mounted wallet kinds instead of requiring Apple Pay in Chrome-only QA.
|
|
94
95
|
- `qa resolve` accepts either the deploy host or the campaign-root URL; when a Build Packet carries `campaign.public_route_slug`, the runner resolves page URLs under that slug.
|
|
95
96
|
- Routing meta tags must be checked in runtime form. `next-success-url`, `next-upsell-accept-url`, and `next-upsell-decline-url` should point at campaign-root paths such as `/campaign-slug/upsell/`, not source filenames or unrooted spec literals.
|
package/skills.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "campaigns-os-skills",
|
|
3
3
|
"description": "Skills bundled with Campaigns OS. `skills.sh` installs these into the shared agent skill directories (~/.claude/skills, ~/.codex/skills), so each one is a versioned package: bump the version whenever a package changes. `bundle_revision` identifies the bundle as a whole — `<package version>+skills.<n>`, where the prefix is this package's version and `<n>` counts the skill-text revisions published against it. It advances whenever ANY bundled skill changes, every SKILL.md states it on its first body line, and `campaigns-os tooling status --skills-revision <value>` compares the value an agent read from a skill against the bundle on disk. See docs/skills-revision.md.",
|
|
4
|
-
"bundle_revision": "1.
|
|
4
|
+
"bundle_revision": "1.43.1+skills.1",
|
|
5
5
|
"homepage": "https://github.com/NextCommerceCo/campaigns-os",
|
|
6
6
|
"retired_skills": [
|
|
7
7
|
{
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
{
|
|
17
17
|
"id": "next-campaigns-os",
|
|
18
18
|
"name": "Campaigns OS Lifecycle",
|
|
19
|
-
"version": "1.0.
|
|
19
|
+
"version": "1.0.27",
|
|
20
20
|
"path": "skills/next-campaigns-os/SKILL.md",
|
|
21
21
|
"domain": "campaigns",
|
|
22
22
|
"description": "Coordinate Campaigns OS lifecycle workflows from CampaignSpec, Build Packet, starter-template contracts, stage reports, deploy evidence, and QA proof depth."
|
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
{
|
|
25
25
|
"id": "next-campaigns-os-setup",
|
|
26
26
|
"name": "Campaigns OS Setup",
|
|
27
|
-
"version": "2.0.
|
|
27
|
+
"version": "2.0.10",
|
|
28
28
|
"path": "skills/next-campaigns-os-setup/SKILL.md",
|
|
29
29
|
"domain": "campaigns",
|
|
30
30
|
"description": "Bootstrap or prepare a target page-kit campaign repo from a doctor-cleared Campaigns OS Build Packet before full build wiring. Formerly next-campaigns-setup; renamed to release that name to the published NextCommerceCo/skills scaffolder."
|
|
@@ -32,7 +32,7 @@
|
|
|
32
32
|
{
|
|
33
33
|
"id": "next-campaigns-build",
|
|
34
34
|
"name": "Campaign Build",
|
|
35
|
-
"version": "1.0.
|
|
35
|
+
"version": "1.0.12",
|
|
36
36
|
"path": "skills/next-campaigns-build/SKILL.md",
|
|
37
37
|
"domain": "campaigns",
|
|
38
38
|
"description": "Assemble a NEXT campaign from a doctor-cleared Build Packet, CampaignSpec/API values, prepared HTML/assets, page-kit, and starter-template contracts."
|
|
@@ -40,7 +40,7 @@
|
|
|
40
40
|
{
|
|
41
41
|
"id": "next-campaigns-polish",
|
|
42
42
|
"name": "Campaign Polish",
|
|
43
|
-
"version": "1.1.
|
|
43
|
+
"version": "1.1.11",
|
|
44
44
|
"path": "skills/next-campaigns-polish/SKILL.md",
|
|
45
45
|
"domain": "campaigns",
|
|
46
46
|
"description": "Run the visual/runtime polish pass after build and before QA for a Campaigns OS campaign."
|
|
@@ -48,15 +48,15 @@
|
|
|
48
48
|
{
|
|
49
49
|
"id": "next-campaigns-qa",
|
|
50
50
|
"name": "Campaign QA",
|
|
51
|
-
"version": "1.3.
|
|
51
|
+
"version": "1.3.11",
|
|
52
52
|
"path": "skills/next-campaigns-qa/SKILL.md",
|
|
53
53
|
"domain": "campaigns",
|
|
54
|
-
"description": "Run spec-aware QA from a
|
|
54
|
+
"description": "Run spec-aware QA from a saved Map or local-spec Build Packet and tested campaign URL after build, polish, and deploy/local evidence exist, including Playwright typed-card test-order proof."
|
|
55
55
|
},
|
|
56
56
|
{
|
|
57
57
|
"id": "campaign-lifecycle-orientation",
|
|
58
58
|
"name": "Campaign Lifecycle Orientation",
|
|
59
|
-
"version": "1.0.
|
|
59
|
+
"version": "1.0.7",
|
|
60
60
|
"path": "skills/campaign-lifecycle-orientation/SKILL.md",
|
|
61
61
|
"domain": "campaigns",
|
|
62
62
|
"description": "Orient a reader to the Campaigns OS lifecycle artifacts a run has already emitted, without advancing their state: the shared vocabulary, doctor as a gate, the stage record, and the store-theme/Page Kit two-worlds trap."
|
|
@@ -64,7 +64,7 @@
|
|
|
64
64
|
{
|
|
65
65
|
"id": "campaign-run-evidence",
|
|
66
66
|
"name": "Campaign Run Evidence",
|
|
67
|
-
"version": "1.0.
|
|
67
|
+
"version": "1.0.7",
|
|
68
68
|
"path": "skills/campaign-run-evidence/SKILL.md",
|
|
69
69
|
"domain": "campaigns",
|
|
70
70
|
"description": "Interpret existing doctor, QA verdict and proof-depth evidence without claiming more proof than the artifacts contain, and keep funnel proof apart from merchant launch readiness."
|
|
@@ -72,7 +72,7 @@
|
|
|
72
72
|
{
|
|
73
73
|
"id": "campaign-readback-classification",
|
|
74
74
|
"name": "Campaign Readback Classification",
|
|
75
|
-
"version": "1.0.
|
|
75
|
+
"version": "1.0.7",
|
|
76
76
|
"path": "skills/campaign-readback-classification/SKILL.md",
|
|
77
77
|
"domain": "campaigns",
|
|
78
78
|
"description": "Classify a selected campaign from the campaigns-os-readback/v2 fields (artifacts, staleness.stale_keys, clean, doctor, divergences, skip_cascades) and write a read-only handoff without turning diagnosis into permission."
|
|
@@ -80,7 +80,7 @@
|
|
|
80
80
|
{
|
|
81
81
|
"id": "contribution-intake",
|
|
82
82
|
"name": "Contribution Intake",
|
|
83
|
-
"version": "1.0.
|
|
83
|
+
"version": "1.0.7",
|
|
84
84
|
"path": "skills/contribution-intake/SKILL.md",
|
|
85
85
|
"domain": "campaigns",
|
|
86
86
|
"description": "Turn a suggestion about the agent surface into a classified, evidence-checked and redacted proposal, filed on this repository tracker only with attended approval."
|