Skip to content

5.1.3

Choose a tag to compare

@Justinvolved Justinvolved released this 14 Sep 17:07
· 37 commits to main since this release
fd4c53b

A patch release that folds the measured learnings of the 5.1 experiment into the corpus. One
validator rule now refuses client-exclusivity wording in a dynamo: true skill, so the rule
5.1.1 stated in prose holds at every model tier. The rest is measurement written down where the
work that hits it reads it: the data-access verb and tool traps a live DW 10.28 host produced,
and the Swift 2 storefront traps a measured rebrand hit, both as table rows. It adds and
sharpens rules; it changes no skill contract and no worksOn axis.

  • The validator refuses client-exclusivity wording in a dynamo: true skill. "Dynamo only",
    "stops here", "external client stops", "cannot run this skill", or a compatibility: value
    naming a client is an error, never baselined. The rule 5.1.1 stated in prose now holds at every
    model tier: a skill states a precondition and how to test it (tools/list); it never tells a
    client to stop because of who it is, and an unmeasured claim never lands as instruction.
  • Row-file order is stated as what it is. The deserializer ignores the manifest's files[]
    list, reads a table directory in culture-sensitive file-name order (a convention, not a
    contract), and merges two documents of one identity with the later file winning; on a blank
    host a partial row with no full row beside it inserts a row holding only its columns.
  • The theme-after-layer upload is stated with its workaround. Every edition theme's files/
    lands after every composed layer's files/, last writer wins per path; a brand layer that must
    win a theme path is listed as a theme after the default, with a theme.json binding equal to
    the default's so the binding writes nothing.
  • A listed tool can still be refused. mcp-setup.md's triage table gains the
    Required permission: none. Allowed permission: none. row: the grant is the MCP configuration's
    permission preset, not the client; check the preset, fall back to the Management API read, and
    read a name missing from tools/list as a grant to check rather than a tool that does not exist.
  • Verb and tool traps measured on a live 10.28 host land as table rows in the dw-data-access
    recipes.
    Six product fields are master-only by default, so a master save through ProductSave,
    patch_products_safe or update_products overwrites every variant while echoing success, and the
    unlock (ProductAttributeSettingsSave with VariantEditing) comes first (recipes-pim.md, beside
    ProductAssetByProductKey ignoring the variant id, the category-field lists answering 0 and the
    group sort list 500ing); save_pages metaTitle persisting nothing and PageSave taking
    Unpublished, not Hidden (recipes-content.md); OrderLineSave 500ing on its own round-tripped
    OrderType and GetOrderLineById needing OrderId (recipes-commerce-orders.md); CountryByCode
    binding CountryCode (recipes-commerce.md); get_product_index_status reporting a default index
    the host need not have (recipes-search.md); and the round-trip rule by what the call answers
    (management-api-and-sql.md). dw-pim-modelling's structural model says, in MCP terms, that a
    variant value needs the field to allow changes across variants first.
  • The storefront traps a measured rebrand hit are written down where the storefront work reads them. dw-demo-swift carries them as rows and bullets in the files that own each surface: the customer centre (an account group with no type and no CSR relation never lists, the order list printing the product id, the accounts search that does not narrow), the pricing cascade (a variant's own price row never outranks a lower master or contract row), the deserialize obligation (bind the shop only after every browsable group is related to it, or subgroup product pages render a dw-error), the mobile pass (the header's action links on one row at 390 in both auth states, and the logo width that pushes the cart link down), the theme tier (the per-edge fills the edge motif needs when both sides match), the rebrand recipe (the image handler answering JPEG for webp and for no format, the page-properties icon sentinel drawing NO ICON, the gallery and logo alt defects as tripwire rows), the cheat sheet (verify a variant by its own URL, not the selector click) and the button contract (a page link drops its query string, so a group link is a URL). dw-swift-page-blocks gains the same button gotcha in MCP terms, and dw-demo-base's trap list sharpens four rows with the measured symptom.

🤖 Generated with Claude Code

https://claude.ai/code/session_01NHLDPVz27DFPQyRRzPP839