Catalog planning examination and final text
This examination checks the supplied planning layer against the pinned implementation and product records. OpenAI supplies the final human text throughout the module and its seven actor rows. Examination does not approve product intent: artifacts remain draft, and implementation-only intent remains proposed.
The examination occurred on 23 October; the report retains the requested 22 October filename. The supplied planning brief is unavailable, as recorded in the findings. Source review covers routes, schemas, persistence, calculations, console components, test assertions and the cited decisions. Service and console suites were read at the pinned commits; they were not executed here. Specification conformance and the specification tool tests were executed separately.
Counts and coverage
The final layer contains 60 module files before this report: five features, six concepts, twenty capabilities, six journeys, twenty acceptance test sets and three supporting documents. The actor file adds seven examined rows. There are 229 rules, 189 requiring proof, 42 capability scenarios, 160 acceptance scenarios, 25 journey steps and 24 journey assertions. Findings total 27, with five open product questions. All six concepts contain the required six sections and fall within the required word range.
The source-anchor audit resolves 895 rule, scenario and binding references against 134 unique pinned files with no missing file, symbol or test-title anchors. Anchor resolution establishes reference existence; semantic review and the remaining proof findings determine whether the complete claim is supported.
| Inventory | Covered / total | Limits or uncovered names |
|---|---|---|
| Product operations | 114 / 114 | Capability ownership is mapped in the module catalog; six health routes are excluded from product scope. |
| Tables | 35 / 35 | Ownership is mapped to capabilities. |
| Permission keys | 71 / 71 | Sixty have route bindings; eleven unused grants are retained as a finding rather than treated as operations. |
| Service test files | 181 / 186 | The excluded health suites belong to catalog, pricing, promotions, configuration and recommendations. |
| Service files supplying acceptance bindings | 92 / 186 | Binding is narrower than file ownership and does not establish every branch in a file. |
| Console test files | 58 / 58 | The module catalog assigns ownership to all 54 unit files and four mock-browser files. |
| Console files supplying acceptance bindings | 7 / 58 | Eight console files are cited overall; only seven supply acceptance bindings. |
| Mock-browser suites | 4 / 4 | Checkout policies, view/edit permissions, merchandise and promotions are mapped; live-browser journey proof is absent. |
| Hosted console route entries | 9 / 9 | Includes entry permission dependencies. |
| Background mechanisms | 4 / 4 | Asset sweep, cleanup work queue, dead-letter queue and asynchronous promotion issuance worker. |
| State machines | 0 / 0 | None exists in the scoped implementation. |
| Bound acceptance scenarios | 155 / 160 | Five remain proposed without a binding. |
The excluded service suites are named precisely below. This exclusion is about product coverage, not whether infrastructure health checks are valuable.
| Excluded file |
|---|
| modules/catalog/tests/e2e/health.e2e.spec.js |
| modules/pricing/tests/e2e/health.e2e.spec.js |
| modules/promotions/tests/e2e/health.e2e.spec.js |
| modules/configuration/tests/e2e/health.e2e.spec.js |
| modules/recommendations/tests/e2e/health.e2e.spec.js |
The eleven permission keys without route bindings are listed explicitly. They remain covered as configuration evidence and debt.
| Unbound permission key | Finding |
|---|---|
| commerce.tax-zones.bulk | FND-COM-CAT-009 |
| commerce.pricing-audiences.bulk | FND-COM-CAT-009 |
| commerce.pricing-schedules.bulk | FND-COM-CAT-009 |
| commerce.product-purchasing-settings.create | FND-COM-CAT-009 |
| commerce.product-purchasing-settings.delete | FND-COM-CAT-009 |
| commerce.product-purchasing-settings.bulk | FND-COM-CAT-009 |
| commerce.product-extensions.create | FND-COM-CAT-009 |
| commerce.product-extensions.bulk | FND-COM-CAT-009 |
| commerce.recommendation-journeys.bulk | FND-COM-CAT-009 |
| commerce.recommendation-rules.delete | FND-COM-CAT-009 |
| commerce.recommendation-rules.bulk | FND-COM-CAT-009 |
Eleven must-prove rules have no acceptance scenario. The unknown registered-flow validation claim retains its existing finding; the added locks, snapshot, delegated cleanup and live offer writes have an explicit proof finding. A passing conformance check recognizes those findings and does not imply behavioural proof.
Verification changes
The following corrections change the established claim or its authority rather than merely its wording.
| Rule or artifact | Correction |
|---|---|
| BR-CAP-COM-CAT-001-09 | Default uniqueness applies when policies exist; an empty workspace resolves no policy. |
| BR-CAP-COM-CAT-001-14 | Snapshot fields are limited to those copied by the helper, and retention now requires proof. |
| BR-CAP-COM-CAT-004-03 | Explicit null and whitespace are distinguished. |
| BR-CAP-COM-CAT-007-11; ATS-COM-CAT-007 | Variant adjustment describes isolated engine fixtures; the live loader supplies empty adjustment collections. |
| BR-CAP-COM-CAT-009-05 | Expiry and consumption restrictions apply to member downloads; staff bypass entitlement consumption. |
| BR-CAP-COM-CAT-013-04; BR-CAP-COM-CAT-016-08 | Rounding uses currency minor units rather than a universal cent. |
| BR-CAP-COM-CAT-018-01 | Preview parity is limited to the tested sample carts. |
| BR-CAP-COM-CAT-018-02; ATS-COM-CAT-018; FND-COM-CAT-007 | Preview includes parts and criteria and can explicitly include automatic drafts; rated shipping remains absent. |
| BR-CAP-COM-CAT-020-03 | First acceptance has an expiry window, but prior acceptance returns before expiry checking and no price is frozen. |
| BR-CAP-COM-CAT-020-05; ATS-COM-CAT-020 | Contact, acting contact or permitted checkout can establish portal ownership; console access is workspace-wide. |
| BR-CAP-COM-CAT-010-01, 010-02, 010-07; BR-CAP-COM-CAT-013-02; BR-CAP-COM-CAT-012-06 | Unrelated or unapproved decisions no longer establish intent for these rules. |
| CON-COM-CAT-001, 003, 006; BR-CAP-COM-CAT-003-10; BR-CAP-COM-CAT-012-01; BR-CAP-COM-CAT-006-10; JNY-COM-CAT-001, 002, 005 | Invalid header, quotation or decision anchors, including the store-validation finding are replaced with existing pinned anchors. |
Nine rules were allocated before writing: configuration, store, category, listing, merchandise-extension, audience and schedule locks; delegated asset cleanup; and transactional live-offer presentation writes. Cleanup remains inferred where local wrappers delegate to the shared composition. Its note distinguishes pinned examples from the dependency contract requiring further proof. Existing capability grain is retained: the twenty capabilities describe outcomes, and the six concepts remain broad nouns with facets.
The exact protected-field differences are recorded below. Existing identifiers, intent evidence and bindings otherwise remain intact. A missing former value is shown as absent; new rows have their complete evidence in the capability and registry.
| Artifact or row | Field | Former value | Final value |
|---|---|---|---|
| ATS-COM-CAT-018-02 | source | "services-commerce:docs/milestones/plans/COMM-M1b-engine.md#4. Not done, and why" | "services-commerce:modules/promotions/services/previews/promotion-previews.ts:includingPromotions" |
| CAP-COM-CAT-001 | product_intent | "confirmed" | "proposed" |
| BR-CAP-COM-CAT-001-14 | must_prove | false | true |
| BR-CAP-COM-CAT-001-16 | New row | absent | Allocated with pinned evidence |
| CAP-COM-CAT-002 | product_intent | "confirmed" | "proposed" |
| CAP-COM-CAT-003 | product_intent | "confirmed" | "proposed" |
| BR-CAP-COM-CAT-003-10 | source | "services-commerce:modules/configuration/services/persistence/stores.ts:header" | "services-commerce:modules/configuration/services/persistence/stores.ts:storeColumns" |
| BR-CAP-COM-CAT-003-13 | New row | absent | Allocated with pinned evidence |
| CAP-COM-CAT-005 | product_intent | "confirmed" | "proposed" |
| BR-CAP-COM-CAT-005-10 | New row | absent | Allocated with pinned evidence |
| CAP-COM-CAT-006 | product_intent | "confirmed" | "proposed" |
| BR-CAP-COM-CAT-006-10 | source | "services-commerce:docs/milestones/COMM-M1b-promotions-and-codes.md#Decisions (R6)" | "services-commerce:docs/milestones/COMM-M1b-promotions-and-codes.md#R6" |
| BR-CAP-COM-CAT-006-13 | New row | absent | Allocated with pinned evidence |
| BR-CAP-COM-CAT-006-14 | New row | absent | Allocated with pinned evidence |
| BR-CAP-COM-CAT-007-11 | source | "services-commerce:modules/pricing/tests/unit/engine/step-3-base-price.spec.js#overrides the standard price with the variant’s by SKU, with provenance of the difference" | "services-commerce:modules/pricing/services/persistence/catalog-products.ts:toCatalogProduct" |
| BR-CAP-COM-CAT-007-11 | provenance | "test" | "observed" |
| BR-CAP-COM-CAT-007-14 | New row | absent | Allocated with pinned evidence |
| CAP-COM-CAT-010 | product_intent | "confirmed" | "proposed" |
| BR-CAP-COM-CAT-010-01 | origin | "COMM-M1 plan A8 (docs/milestones/plans/COMM-M1-plan.md)" | "none" |
| BR-CAP-COM-CAT-010-02 | origin | "COMM-M1 plan A8 (docs/milestones/plans/COMM-M1-plan.md)" | "none" |
| BR-CAP-COM-CAT-010-07 | origin | "COMM-M1 D1 (docs/milestones/COMM-M1-set-up-what-you-sell.md)" | "none" |
| BR-CAP-COM-CAT-010-12 | New row | absent | Allocated with pinned evidence |
| CAP-COM-CAT-011 | product_intent | "confirmed" | "proposed" |
| BR-CAP-COM-CAT-011-11 | New row | absent | Allocated with pinned evidence |
| CAP-COM-CAT-012 | product_intent | "confirmed" | "proposed" |
| BR-CAP-COM-CAT-012-01 | source | "services-commerce:docs/milestones/plans/COMM-M1-plan.md#D4. Let staff see and set a product’s purchasing settings" | "services-commerce:docs/milestones/plans/COMM-M1-plan.md#D4. Let staff see and set a product's purchasing settings" |
| BR-CAP-COM-CAT-012-06 | origin | "COMM-M1 D14 (docs/milestones/COMM-M1-set-up-what-you-sell.md)" | "none" |
| CAP-COM-CAT-013 | product_intent | "confirmed" | "proposed" |
| BR-CAP-COM-CAT-013-02 | origin | "COMM-M1 D1 (docs/milestones/COMM-M1-set-up-what-you-sell.md)" | "none" |
| CAP-COM-CAT-014 | product_intent | "confirmed" | "proposed" |
| CAP-COM-CAT-015 | product_intent | "confirmed" | "proposed" |
| CAP-COM-CAT-016 | product_intent | "confirmed" | "proposed" |
| CAP-COM-CAT-017 | product_intent | "confirmed" | "proposed" |
| BR-CAP-COM-CAT-018-02 | source | "services-commerce:docs/milestones/plans/COMM-M1b-engine.md#4. Not done, and why" | "services-commerce:modules/promotions/services/previews/promotion-previews.ts:includingPromotions" |
| BR-CAP-COM-CAT-018-02 | provenance | "documented" | "observed" |
| BR-CAP-COM-CAT-020-03 | source | "services-commerce:modules/recommendations/tests/e2e/offers.e2e.spec.js#is refused 409 offer_expired, naming when it expired" | "services-commerce:modules/recommendations/services/acceptance/accept-offer.ts:acceptOffer" |
| BR-CAP-COM-CAT-020-03 | provenance | "test" | "observed" |
| BR-CAP-COM-CAT-020-05 | source | "services-commerce:modules/recommendations/tests/e2e/offers.e2e.spec.js#refuses the first member accepting what was presented to the other, 403 offer_not_yours" | "services-commerce:modules/recommendations/services/acceptance/accept-offer.ts:ownedOffer" |
| BR-CAP-COM-CAT-020-05 | provenance | "test" | "observed" |
| BR-CAP-COM-CAT-020-11 | New row | absent | Allocated with pinned evidence |
| CON-COM-CAT-001 | source | "absent" | "services-commerce:modules/configuration/tests/e2e/stores.e2e.spec.js#answers 400 to a store without an ordering profile" |
| CON-COM-CAT-001 | provenance | "absent" | "test" |
| CON-COM-CAT-001 | source | "absent" | "services-commerce:modules/checkout/services/checkout/ordering-profile-resolution.ts:1" |
| CON-COM-CAT-001 | provenance | "absent" | "observed" |
| CON-COM-CAT-002 | source | "absent" | "services-commerce:modules/configuration/tests/e2e/stores.e2e.spec.js#answers 400 to a currency or a business unit on the body: the store carries neither since D23" |
| CON-COM-CAT-002 | provenance | "absent" | "test" |
| CON-COM-CAT-002 | source | "absent" | "services-commerce:modules/catalog/tests/integration/services/storefront/storefront-listings.queries.integration.spec.js#admits under only the listings on a named active shelf, and under all_but those on some other active shelf" |
| CON-COM-CAT-002 | provenance | "absent" | "test" |
| CON-COM-CAT-003 | source | "absent" | "services-commerce:modules/catalog/tests/integration/services/storefront/storefront-listings.queries.integration.spec.js#says whether a product sits on a shelf the store admits" |
| CON-COM-CAT-003 | provenance | "absent" | "test" |
| CON-COM-CAT-003 | source | "absent" | "services-commerce:modules/pricing/services/persistence/catalog-products.ts" |
| CON-COM-CAT-003 | provenance | "absent" | "observed" |
| CON-COM-CAT-003 | source | "absent" | "services-commerce:modules/recommendations/services/evaluation/evaluate-offers.ts:1" |
| CON-COM-CAT-003 | provenance | "absent" | "observed" |
| CON-COM-CAT-004 | source | "absent" | "services-commerce:modules/pricing/tests/e2e/price-quote-public-sale.e2e.spec.js#refuses a draft product to an anonymous caller: 400 product_not_published, naming the store" |
| CON-COM-CAT-004 | provenance | "absent" | "test" |
| CON-COM-CAT-004 | source | "absent" | "services-commerce:docs/milestones/decisions/COMM-M1-D12-andrew-2026-10-19.md" |
| CON-COM-CAT-004 | provenance | "absent" | "documented" |
| CON-COM-CAT-004 | source | "absent" | "services-commerce:modules/pricing/tests/unit/engine/step-3-base-price.spec.js#converts a calculate cell from the base cell at the rate of the day, rounded half away from zero, and freezes the conversion" |
| CON-COM-CAT-004 | provenance | "absent" | "test" |
| CON-COM-CAT-005 | source | "absent" | "services-commerce:docs/milestones/decisions/COMM-M1-D12-evaluation-algorithm.md#2. Two bases per line (D12 point 7)" |
| CON-COM-CAT-005 | provenance | "absent" | "documented" |
| CON-COM-CAT-005 | source | "absent" | "services-commerce:modules/promotions/tests/unit/pricing/parts.spec.js#leaves a line excluded from promotions out of every part, whatever the provider says" |
| CON-COM-CAT-005 | provenance | "absent" | "test" |
| CON-COM-CAT-006 | source | "absent" | "services-commerce:modules/recommendations/tests/e2e/offers.e2e.spec.js#answers one offer: the mug, from the listing, priced $12.00 by the quote, live, to add to the checkout, expiring with the quote" |
| CON-COM-CAT-006 | provenance | "absent" | "test" |
| CON-COM-CAT-006 | source | "absent" | "services-commerce:modules/recommendations/services/evaluation/evaluate-offers.ts:1" |
| CON-COM-CAT-006 | provenance | "absent" | "observed" |
| JNY-COM-CAT-001 | source | "absent" | "services-commerce:docs/milestones/walkthroughs/COMM-M1-handoff.md#Your walkthrough" |
| JNY-COM-CAT-001 | provenance | "absent" | "documented" |
| JNY-COM-CAT-001 | source | "absent" | "services-commerce:modules/configuration/tests/e2e/ordering-profiles.e2e.spec.js#reads the tenant default alone until an application default is set" |
| JNY-COM-CAT-001 | provenance | "absent" | "test" |
| JNY-COM-CAT-001 | source | "absent" | "services-commerce:docs/milestones/walkthroughs/COMM-M1-handoff.md#Your walkthrough" |
| JNY-COM-CAT-001 | provenance | "absent" | "documented" |
| JNY-COM-CAT-001 | source | "absent" | "react-console:e2e/mock/commerce-view-edit.mock.spec.ts#create a store, land on its view, edit the default sort, save, and see it on the view" |
| JNY-COM-CAT-001 | provenance | "absent" | "test" |
| JNY-COM-CAT-001 | source | "absent" | "services-commerce:docs/milestones/plans/COMM-M1-plan.md#10. Walkthrough preview" |
| JNY-COM-CAT-001 | provenance | "absent" | "documented" |
| JNY-COM-CAT-001 | source | "absent" | "services-commerce:modules/configuration/tests/e2e/ordering-profiles.e2e.spec.js#answers 400 currency_not_supported_by_business_unit to a currency the business unit does not transact in" |
| JNY-COM-CAT-001 | provenance | "absent" | "test" |
| JNY-COM-CAT-001 | source | "absent" | "services-commerce:modules/configuration/tests/integration/services/persistence/stores.integration.spec.js#refuses a home category an "all_but" rule leaves out, 400 naming home_category_id" |
| JNY-COM-CAT-001 | provenance | "absent" | "test" |
| JNY-COM-CAT-001 | source | "absent" | "services-commerce:modules/catalog/tests/integration/services/persistence/product-categories.integration.spec.js#is refused 409 category_in_use while a store has it as its home category, naming the store, and deleted once the store moves" |
| JNY-COM-CAT-001 | provenance | "absent" | "test" |
| JNY-COM-CAT-002 | source | "absent" | "services-commerce:docs/milestones/plans/COMM-M1-plan.md#3. How it works for the user" |
| JNY-COM-CAT-002 | provenance | "absent" | "documented" |
| JNY-COM-CAT-002 | source | "absent" | "services-commerce:modules/pricing/tests/e2e/pricing-schedules.e2e.spec.js#answers 200, the id its name suggests, in the tenant of the path, at version 1, with the periods in the order given, their ids derived" |
| JNY-COM-CAT-002 | provenance | "absent" | "test" |
| JNY-COM-CAT-002 | source | "absent" | "services-commerce:docs/milestones/plans/COMM-M1-plan.md#3. How it works for the user" |
| JNY-COM-CAT-002 | provenance | "absent" | "documented" |
| JNY-COM-CAT-002 | source | "absent" | "services-commerce:docs/milestones/plans/COMM-M1-plan.md#3. How it works for the user" |
| JNY-COM-CAT-002 | provenance | "absent" | "documented" |
| JNY-COM-CAT-002 | source | "absent" | "services-commerce:modules/pricing/tests/e2e/product-purchasing-settings.e2e.spec.js#prices the same buyer at the member price under rank, Member coming before Student members" |
| JNY-COM-CAT-002 | provenance | "absent" | "test" |
| JNY-COM-CAT-002 | source | "absent" | "services-commerce:modules/pricing/tests/e2e/pricing-schedules.e2e.spec.js#extends the sold-in Early Bird by a week, Regular starting where it now ends, its first sale untouched" |
| JNY-COM-CAT-002 | provenance | "absent" | "test" |
| JNY-COM-CAT-002 | source | "absent" | "services-commerce:modules/pricing/tests/e2e/pricing-audiences.e2e.spec.js#refuses the delete 409 audience_in_use with the sentence and the details" |
| JNY-COM-CAT-002 | provenance | "absent" | "test" |
| JNY-COM-CAT-002 | source | "absent" | "services-commerce:docs/debt/pricing-schedules-owned-by-event.md" |
| JNY-COM-CAT-002 | provenance | "absent" | "documented" |
| JNY-COM-CAT-003 | source | "absent" | "services-commerce:modules/catalog/tests/e2e/storefront.e2e.spec.js#answers 200 with the selling, published listings in merchandiser order (featured first), the count, no cursor and no diagnosis" |
| JNY-COM-CAT-003 | provenance | "absent" | "test" |
| JNY-COM-CAT-003 | source | "absent" | "services-commerce:modules/catalog/tests/e2e/storefront.e2e.spec.js#shows the standard price with the member price beside it, what signing in may change, and availability in words" |
| JNY-COM-CAT-003 | provenance | "absent" | "test" |
| JNY-COM-CAT-003 | source | "absent" | "services-commerce:modules/pricing/tests/e2e/price-quote-public-sale.e2e.spec.js#refuses a draft product to an anonymous caller: 400 product_not_published, naming the store" |
| JNY-COM-CAT-003 | provenance | "absent" | "test" |
| JNY-COM-CAT-003 | source | "absent" | "services-commerce:modules/pricing/tests/e2e/price-quote-public-sale.e2e.spec.js#prices an unlisted product, which the product page opens by its link" |
| JNY-COM-CAT-003 | provenance | "absent" | "test" |
| JNY-COM-CAT-003 | source | "absent" | "services-commerce:modules/catalog/tests/e2e/storefront.e2e.spec.js#answers an empty page of the closed store, 404 for an unknown store, and refuses a bad query 400" |
| JNY-COM-CAT-003 | provenance | "absent" | "test" |
| JNY-COM-CAT-003 | source | "absent" | "services-commerce:modules/pricing/tests/e2e/price-quote-public-sale.e2e.spec.js#refuses a published product outside the store’s category assortment: 400 product_not_in_store_assortment, naming the store" |
| JNY-COM-CAT-003 | provenance | "absent" | "test" |
| JNY-COM-CAT-004 | source | "absent" | "react-console:e2e/mock/promotions.mock.spec.ts#a new promotion is created for a category, shown on its view, and an edit to 15% comes back to the view" |
| JNY-COM-CAT-004 | provenance | "absent" | "test" |
| JNY-COM-CAT-004 | source | "absent" | "react-console:e2e/mock/promotions.mock.spec.ts#a code is added in the code editor with a limit and a note, and lands on its page" |
| JNY-COM-CAT-004 | provenance | "absent" | "test" |
| JNY-COM-CAT-004 | source | "absent" | "react-console:e2e/mock/promotions.mock.spec.ts#Generate Many starts a job that the Issuances tab lists" |
| JNY-COM-CAT-004 | provenance | "absent" | "test" |
| JNY-COM-CAT-004 | source | "absent" | "services-commerce:modules/promotions/tests/e2e/promotion-previews.e2e.spec.js#is, line for line and total for total, what the real checkout preview answers" |
| JNY-COM-CAT-004 | provenance | "absent" | "test" |
| JNY-COM-CAT-004 | source | "absent" | "services-commerce:modules/promotions/tests/e2e/promotions-security.e2e.spec.js#activates a draft and resumes a paused promotion" |
| JNY-COM-CAT-004 | provenance | "absent" | "test" |
| JNY-COM-CAT-004 | source | "absent" | "services-commerce:modules/promotions/tests/e2e/promotions-security.e2e.spec.js#cannot activate a draft, 403 permission_missing" |
| JNY-COM-CAT-004 | provenance | "absent" | "test" |
| JNY-COM-CAT-004 | source | "absent" | "services-commerce:modules/promotions/tests/e2e/promotions.e2e.spec.js#refuses to activate a coded promotion with no active code, 409 no_active_code" |
| JNY-COM-CAT-004 | provenance | "absent" | "test" |
| JNY-COM-CAT-004 | source | "absent" | "services-commerce:modules/promotions/tests/e2e/promotion-codes.e2e.spec.js#refuses “EARLY25” beside “early 25”, 409 code_taken" |
| JNY-COM-CAT-004 | provenance | "absent" | "test" |
| JNY-COM-CAT-005 | source | "absent" | "services-commerce:docs/milestones/plans/COMM-M1-plan.md#D5. The order of the price calculation" |
| JNY-COM-CAT-005 | provenance | "absent" | "documented" |
| JNY-COM-CAT-005 | source | "absent" | "services-commerce:modules/promotions/tests/unit/pricing/alternatives.spec.js#2. combine = no, member: audience pricing $80.00 against $100.00 less 25 % = $75.00; the promotional price wins" |
| JNY-COM-CAT-005 | provenance | "absent" | "test" |
| JNY-COM-CAT-005 | source | "absent" | "services-commerce:modules/promotions/tests/integration/services/persistence/promotion-redemptions.integration.spec.js#counts one use on the code and one on the promotion" |
| JNY-COM-CAT-005 | provenance | "absent" | "test" |
| JNY-COM-CAT-005 | source | "absent" | "services-commerce:modules/promotions/tests/e2e/promotion-redemptions.e2e.spec.js#records order.promotion_released on the order, with the actor and the reason" |
| JNY-COM-CAT-005 | provenance | "absent" | "test" |
| JNY-COM-CAT-005 | source | "absent" | "services-commerce:modules/promotions/tests/unit/pricing/alternatives.spec.js#3. combine = no, student at $60.00: audience pricing wins, EARLY25 consumes no use, and the buyer is told why" |
| JNY-COM-CAT-005 | provenance | "absent" | "test" |
| JNY-COM-CAT-005 | source | "absent" | "services-commerce:docs/milestones/COMM-M1-set-up-what-you-sell.md#R3-1b" |
| JNY-COM-CAT-005 | provenance | "absent" | "documented" |
| JNY-COM-CAT-005 | source | "absent" | "services-commerce:modules/promotions/tests/unit/pricing/validation.spec.js#expired: at or after the window closes" |
| JNY-COM-CAT-005 | provenance | "absent" | "test" |
| JNY-COM-CAT-005 | source | "absent" | "services-commerce:modules/promotions/tests/unit/pricing/parts.spec.js#refuses a code promotion_check_unavailable when a part is listed unavailable, and discounts nothing" |
| JNY-COM-CAT-005 | provenance | "absent" | "test" |
| JNY-COM-CAT-006 | source | "absent" | "services-commerce:modules/recommendations/tests/e2e/recommendation-rules.e2e.spec.js#moves through active, paused, active, ended, archived" |
| JNY-COM-CAT-006 | provenance | "absent" | "test" |
| JNY-COM-CAT-006 | source | "absent" | "services-commerce:modules/recommendations/tests/e2e/offers.e2e.spec.js#answers one offer: the mug, from the listing, priced $12.00 by the quote, live, to add to the checkout, expiring with the quote" |
| JNY-COM-CAT-006 | provenance | "absent" | "test" |
| JNY-COM-CAT-006 | source | "absent" | "services-commerce:modules/recommendations/tests/e2e/offers.e2e.spec.js#adds the mug to the checkout with the offer on the item when accepted" |
| JNY-COM-CAT-006 | provenance | "absent" | "test" |
| JNY-COM-CAT-006 | source | "absent" | "services-commerce:modules/recommendations/tests/e2e/offers.e2e.spec.js#shows one shown, one accepted and one converted line worth $12.00 on the rule’s performance once the order is accepted" |
| JNY-COM-CAT-006 | provenance | "absent" | "test" |
| JNY-COM-CAT-006 | source | "absent" | "services-commerce:modules/recommendations/tests/e2e/offers.e2e.spec.js#offers nothing inside the dismissal window" |
| JNY-COM-CAT-006 | provenance | "absent" | "test" |
| JNY-COM-CAT-006 | source | "absent" | "services-commerce:modules/recommendations/tests/e2e/offers.e2e.spec.js#is refused 409 offer_expired, naming when it expired" |
| JNY-COM-CAT-006 | provenance | "absent" | "test" |
Final-text register
Every listed artifact received an independent final-text commit after the verification commits. The rewrite covers prose and human fields in rules, facets, scenarios, journey steps and assertions; factual identifiers and evidence are retained except for the corrections above. Supporting documents and every module-added actor row also received final wording.
| Artifact | Final-text scope |
|---|---|
| FINDINGS.md | All explanatory text and register meanings |
| ID_REGISTRY.md | All explanatory text and register meanings |
| MOD-COM-CAT | All explanatory text and register meanings |
| ATS-COM-CAT-001 | All prose and structured human text |
| ATS-COM-CAT-002 | All prose and structured human text |
| ATS-COM-CAT-003 | All prose and structured human text |
| ATS-COM-CAT-004 | All prose and structured human text |
| ATS-COM-CAT-005 | All prose and structured human text |
| ATS-COM-CAT-006 | All prose and structured human text |
| ATS-COM-CAT-007 | All prose and structured human text |
| ATS-COM-CAT-008 | All prose and structured human text |
| ATS-COM-CAT-009 | All prose and structured human text |
| ATS-COM-CAT-010 | All prose and structured human text |
| ATS-COM-CAT-011 | All prose and structured human text |
| ATS-COM-CAT-012 | All prose and structured human text |
| ATS-COM-CAT-013 | All prose and structured human text |
| ATS-COM-CAT-014 | All prose and structured human text |
| ATS-COM-CAT-015 | All prose and structured human text |
| ATS-COM-CAT-016 | All prose and structured human text |
| ATS-COM-CAT-017 | All prose and structured human text |
| ATS-COM-CAT-018 | All prose and structured human text |
| ATS-COM-CAT-019 | All prose and structured human text |
| ATS-COM-CAT-020 | All prose and structured human text |
| CAP-COM-CAT-001 | All prose and structured human text |
| CAP-COM-CAT-002 | All prose and structured human text |
| CAP-COM-CAT-003 | All prose and structured human text |
| CAP-COM-CAT-004 | All prose and structured human text |
| CAP-COM-CAT-005 | All prose and structured human text |
| CAP-COM-CAT-006 | All prose and structured human text |
| CAP-COM-CAT-007 | All prose and structured human text |
| CAP-COM-CAT-008 | All prose and structured human text |
| CAP-COM-CAT-009 | All prose and structured human text |
| CAP-COM-CAT-010 | All prose and structured human text |
| CAP-COM-CAT-011 | All prose and structured human text |
| CAP-COM-CAT-012 | All prose and structured human text |
| CAP-COM-CAT-013 | All prose and structured human text |
| CAP-COM-CAT-014 | All prose and structured human text |
| CAP-COM-CAT-015 | All prose and structured human text |
| CAP-COM-CAT-016 | All prose and structured human text |
| CAP-COM-CAT-017 | All prose and structured human text |
| CAP-COM-CAT-018 | All prose and structured human text |
| CAP-COM-CAT-019 | All prose and structured human text |
| CAP-COM-CAT-020 | All prose and structured human text |
| CON-COM-CAT-001 | All prose and structured human text |
| CON-COM-CAT-002 | All prose and structured human text |
| CON-COM-CAT-003 | All prose and structured human text |
| CON-COM-CAT-004 | All prose and structured human text |
| CON-COM-CAT-005 | All prose and structured human text |
| CON-COM-CAT-006 | All prose and structured human text |
| FEAT-COM-CAT-01 | All prose and structured human text |
| FEAT-COM-CAT-02 | All prose and structured human text |
| FEAT-COM-CAT-03 | All prose and structured human text |
| FEAT-COM-CAT-04 | All prose and structured human text |
| FEAT-COM-CAT-05 | All prose and structured human text |
| JNY-COM-CAT-001 | All prose and structured human text |
| JNY-COM-CAT-002 | All prose and structured human text |
| JNY-COM-CAT-003 | All prose and structured human text |
| JNY-COM-CAT-004 | All prose and structured human text |
| JNY-COM-CAT-005 | All prose and structured human text |
| JNY-COM-CAT-006 | All prose and structured human text |
| ACT-COM-001 | Actor description, goals and abilities |
| ACT-COM-002 | Actor description, goals and abilities |
| ACT-COM-003 | Actor description, goals and abilities |
| ACT-COM-004 | Actor description, goals and abilities |
| ACT-COM-005 | Actor description, goals and abilities |
| ACT-COM-006 | Actor description, goals and abilities |
| ACT-COM-007 | Actor description, goals and abilities |
Disagreements left open
All findings remain open for Product or engineering disposition. The table names each outstanding issue; the findings register retains its sources, severity, kind and affected rules.
| Finding | Remaining issue |
|---|---|
| FND-COM-CAT-001 | Unconfirmed setup and console recommendations |
| FND-COM-CAT-002 | Schedule ownership and missing preparation surface |
| FND-COM-CAT-003 | Accounting tax ownership versus Commerce provider |
| FND-COM-CAT-004 | Policy read versus checkout resolution |
| FND-COM-CAT-005 | First-code cancellation-release defaults |
| FND-COM-CAT-006 | Unicode plan versus ASCII validation |
| FND-COM-CAT-007 | Preview shipping proof and stale deferral |
| FND-COM-CAT-008 | Obsolete promotion scope |
| FND-COM-CAT-009 | Eleven grants without route bindings |
| FND-COM-CAT-010 | Merchandise entry permission dependency |
| FND-COM-CAT-011 | Missing legacy inventory and live-browser proof |
| FND-COM-CAT-012 | Deferred real membership integration |
| FND-COM-CAT-013 | Recommendation scope lacks approval |
| FND-COM-CAT-014 | Digital downloads lack confirming product scope |
| FND-COM-CAT-015 | Public API guards precede held portal delivery |
| FND-COM-CAT-016 | Unknown registered-flow validation contract |
| FND-COM-CAT-017 | Console and backend normalization difference |
| FND-COM-CAT-018 | Promotions milestone lacks engineering and walkthrough acceptance |
| FND-COM-CAT-019 | Milestone status records disagree |
| FND-COM-CAT-020 | Invoice-template and fee handoff gaps |
| FND-COM-CAT-021 | Fee refusal pending invoicing support |
| FND-COM-CAT-022 | Cross-module claims lack direct bound proof |
| FND-COM-CAT-023 | Live variant loader omits adjustments |
| FND-COM-CAT-024 | Offer amount and late-repeat acceptance proof |
| FND-COM-CAT-025 | Original planning brief unavailable |
| FND-COM-CAT-026 | Compound-rule, lock, snapshot, cleanup and write proof |
| FND-COM-CAT-027 | Promotion-action partial effect on interaction-write failure |
The five open questions concern interim schedule preparation, authoritative tax ownership, public direct-link sales of unlisted items, cancellation-release defaults and recommendation approval. Recommendations remain proposed and do not substitute for Andrew’s decisions.
Validation and verdict
The final acceptance run installs dependencies, checks the corpus with zero errors and runs the specification tool tests with four passes and no failures. These checks validate the authored corpus, not the execution of the pinned service and console suites. The store-validation finding also replaces its nonexistent header anchor with the persisted column definition. All commits descend from the supplied specification commit and change only the authorized module, actor file and module status row; nothing is pushed.
The examined layer is a faithful sourced description of the pinned module within the documented inference and proof limits, with implementation evidence separated from Product approval. Its weakest areas are compound-rule proof, live-browser journeys and unresolved ownership or scope decisions. Before design starts, Andrew should resolve the open product questions and engineering should establish targeted proof for the recorded gaps and defects.