Part of the origin-dimension implementation plan: adobe/serenity-docs#46 (branch feat/origin_source). Parent WP2 shipped in #2788.
The tolerant resolver is the safety property the whole program rests on: any reader that doesn't find origin but finds source must reuse it, never mint a second root.
src/support/serenity/prompt-tags.js: DIMENSION.SOURCE→DIMENSION.ORIGIN (:43), DIMENSION_ROOT_NAMES (:51), SOURCE_VALUE→ORIGIN_VALUE (:56), CLOSED_DIMENSION_VALUES/CLOSED_DIMENSIONS (:101,:108), STANDARD_PROMPT_TAG_VALUES (:123,:133).
src/support/serenity/tag-tree.js: give the authorship root its own resolver — prefer root named origin; else root named source whose children ⊆ {ai,human}; create origin only if neither exists. Applies to ensureDimensionRoots (:224), provisionDimensionTree (:442), ensureClosedValue (:475).
src/support/serenity/handlers/tags.js: parseCreateTagBody validates against origin, not source, from this PR onward.
markets-subworkspace.js:446: new projects provisioned with origin from deploy onward.
brand-provisioning.js, src/controllers/serenity.js: follow the constant.
- Fixtures/integration tests move to WP-O1's new ids. Spec gate 3 lands here.
src/support/elements/** deliberately excluded — topics.js:135 transformOriginsToFilterDimensions() still parses source: prefix. If Elements reads the AIO tag tree directly, its filters are already broken in prod on the 35 reshaped projects (spec gate 9) — that's triage, not part of this task.
Blocked on the tag-vs-metadata product decision.
Jira: SITES-48001
Part of the origin-dimension implementation plan: adobe/serenity-docs#46 (branch
feat/origin_source). Parent WP2 shipped in #2788.The tolerant resolver is the safety property the whole program rests on: any reader that doesn't find
originbut findssourcemust reuse it, never mint a second root.src/support/serenity/prompt-tags.js:DIMENSION.SOURCE→DIMENSION.ORIGIN(:43),DIMENSION_ROOT_NAMES(:51),SOURCE_VALUE→ORIGIN_VALUE(:56),CLOSED_DIMENSION_VALUES/CLOSED_DIMENSIONS(:101,:108),STANDARD_PROMPT_TAG_VALUES(:123,:133).src/support/serenity/tag-tree.js: give the authorship root its own resolver — prefer root namedorigin; else root namedsourcewhose children ⊆{ai,human}; createoriginonly if neither exists. Applies toensureDimensionRoots(:224),provisionDimensionTree(:442),ensureClosedValue(:475).src/support/serenity/handlers/tags.js:parseCreateTagBodyvalidates againstorigin, notsource, from this PR onward.markets-subworkspace.js:446: new projects provisioned withoriginfrom deploy onward.brand-provisioning.js,src/controllers/serenity.js: follow the constant.src/support/elements/**deliberately excluded —topics.js:135transformOriginsToFilterDimensions()still parsessource:prefix. If Elements reads the AIO tag tree directly, its filters are already broken in prod on the 35 reshaped projects (spec gate 9) — that's triage, not part of this task.Blocked on the tag-vs-metadata product decision.
Jira: SITES-48001