blun-king-cli 9.1.597 → 9.1.600

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.
Files changed (106) hide show
  1. package/CHANGELOG.md +39 -0
  2. package/README.md +17 -1
  3. package/agent-spine-plugin/CHANGELOG.md +1 -1
  4. package/agent-spine-plugin/docs/host-integration.md +1 -15
  5. package/agent-spine-plugin/docs/preflight-recall.md +1 -1
  6. package/agent-spine-plugin/scripts/check-install.js +1 -6
  7. package/agent-spine-plugin/scripts/hermetic-process.js +8 -0
  8. package/agent-spine-plugin/scripts/release-check.js +2 -3
  9. package/agent-spine-plugin/scripts/run-tests-hermetic.js +8 -11
  10. package/agent-spine-plugin/src/hook.js +40 -40
  11. package/agent-spine-plugin/src/lib/briefing.js +6 -3
  12. package/agent-spine-plugin/src/lib/hook-context.js +63 -64
  13. package/agent-spine-plugin/src/lib/hook-output.js +115 -94
  14. package/agent-spine-plugin/src/lib/hook-timeline.js +20 -11
  15. package/agent-spine-plugin/src/lib/host-instruction-budget.js +8 -14
  16. package/agent-spine-plugin/src/lib/mcp-timeline-tools.js +0 -7
  17. package/agent-spine-plugin/src/lib/pre-answer-timeline-recall.js +104 -0
  18. package/agent-spine-plugin/src/lib/session-timeline-codex.js +0 -4
  19. package/agent-spine-plugin/src/lib/session-timeline-enrollment-source.js +0 -3
  20. package/agent-spine-plugin/src/lib/session-timeline-enrollment-storage.js +0 -4
  21. package/agent-spine-plugin/src/lib/session-timeline-enrollment-transport.js +0 -2
  22. package/agent-spine-plugin/src/lib/session-timeline-enrollment.js +0 -22
  23. package/agent-spine-plugin/src/lib/session-timeline-host-origin.js +0 -4
  24. package/agent-spine-plugin/src/lib/session-timeline-prior.js +42 -50
  25. package/agent-spine-plugin/src/lib/session-timeline-provider.js +0 -3
  26. package/agent-spine-plugin/src/lib/session-timeline-query.js +0 -1
  27. package/agent-spine-plugin/src/lib/session-timeline-sid-acl.js +0 -4
  28. package/agent-spine-plugin/src/lib/session-timeline-source.js +0 -3
  29. package/agent-spine-plugin/src/lib/session-timeline-transport.js +0 -8
  30. package/agent-spine-plugin/src/lib/session-timeline-windows-acl.js +0 -3
  31. package/agent-spine-plugin/src/lib/session-timeline.js +370 -408
  32. package/agent-spine-plugin/src/lib/source-roots.js +26 -16
  33. package/agent-spine-plugin/src/lib/timeline-user-feedback.js +0 -1
  34. package/bin/core-bootstrap.js +18 -10
  35. package/bin/launcher-mode.js +5 -0
  36. package/bin/launcher-runtime.js +27 -0
  37. package/bin/verify-bundled-agent-sources.cjs +28 -2
  38. package/blun.mjs +798 -143
  39. package/bundled-agent-sources.json +192 -155
  40. package/package.json +1 -1
  41. package/standard-skills/translate-native/README.md +1334 -1
  42. package/standard-skills/translate-native/SKILL.md +1 -1
  43. package/standard-skills/translate-native/VERSION +1 -1
  44. package/standard-skills/translate-native/docs/PREMORTEM.md +901 -0
  45. package/standard-skills/translate-native/docs/WEBSITE_LOCALIZATION.md +208 -41
  46. package/standard-skills/translate-native/docs/WEBSITE_LOCALIZATION_API.md +1319 -77
  47. package/standard-skills/translate-native/docs/WEBSITE_LOCALIZATION_EVIDENCE_HTTP.md +66 -11
  48. package/standard-skills/translate-native/docs/WEBSITE_LOCALIZATION_HTTP_PROVIDER.md +19 -1
  49. package/standard-skills/translate-native/docs/WEBSITE_LOCALIZATION_RECEIPT_VERIFIER_HTTP.md +24 -6
  50. package/standard-skills/translate-native/integrations/commercial_localization_profile.py +23 -0
  51. package/standard-skills/translate-native/integrations/website_localization.py +234 -10
  52. package/standard-skills/translate-native/integrations/website_localization_benchmark.py +39 -3
  53. package/standard-skills/translate-native/integrations/website_localization_cms.py +512 -10
  54. package/standard-skills/translate-native/integrations/website_localization_cms_client.py +116 -0
  55. package/standard-skills/translate-native/integrations/website_localization_cms_receiver.py +101 -11
  56. package/standard-skills/translate-native/integrations/website_localization_cms_receiver_runtime.py +12 -1
  57. package/standard-skills/translate-native/integrations/website_localization_cms_receiver_store.py +186 -24
  58. package/standard-skills/translate-native/integrations/website_localization_cms_source_client.py +64 -1
  59. package/standard-skills/translate-native/integrations/website_localization_cms_source_delivery.py +528 -5
  60. package/standard-skills/translate-native/integrations/website_localization_cms_source_delivery_auth.py +918 -0
  61. package/standard-skills/translate-native/integrations/website_localization_cms_source_delivery_auth_runtime.py +609 -0
  62. package/standard-skills/translate-native/integrations/website_localization_cms_source_delivery_client.py +885 -0
  63. package/standard-skills/translate-native/integrations/website_localization_cms_source_delivery_http.py +1244 -0
  64. package/standard-skills/translate-native/integrations/website_localization_cms_source_delivery_runtime.py +220 -0
  65. package/standard-skills/translate-native/integrations/website_localization_cms_source_delivery_sidecar_adapter.py +331 -0
  66. package/standard-skills/translate-native/integrations/website_localization_cms_source_delivery_submission_capabilities_http.py +444 -0
  67. package/standard-skills/translate-native/integrations/website_localization_cms_source_delivery_submission_client.py +673 -0
  68. package/standard-skills/translate-native/integrations/website_localization_cms_source_delivery_submission_dispatch.py +1317 -0
  69. package/standard-skills/translate-native/integrations/website_localization_cms_source_delivery_submission_dispatch_client.py +826 -0
  70. package/standard-skills/translate-native/integrations/website_localization_cms_source_delivery_submission_dispatch_http.py +1152 -0
  71. package/standard-skills/translate-native/integrations/website_localization_cms_source_delivery_submission_dispatch_openapi.py +896 -0
  72. package/standard-skills/translate-native/integrations/website_localization_cms_source_delivery_submission_dispatch_runtime.py +621 -0
  73. package/standard-skills/translate-native/integrations/website_localization_cms_source_delivery_submission_http.py +1180 -0
  74. package/standard-skills/translate-native/integrations/website_localization_cms_source_delivery_submission_runtime.py +1479 -0
  75. package/standard-skills/translate-native/integrations/website_localization_cms_source_http.py +133 -17
  76. package/standard-skills/translate-native/integrations/website_localization_cms_source_runtime.py +319 -4
  77. package/standard-skills/translate-native/integrations/website_localization_cms_source_service.py +72 -2
  78. package/standard-skills/translate-native/integrations/website_localization_cms_terminal_notification_http.py +13 -0
  79. package/standard-skills/translate-native/integrations/website_localization_cms_terminal_notification_receiver.py +56 -13
  80. package/standard-skills/translate-native/integrations/website_localization_cms_terminal_notification_receiver_openapi.py +335 -0
  81. package/standard-skills/translate-native/integrations/website_localization_cms_terminal_notification_receiver_runtime.py +66 -1
  82. package/standard-skills/translate-native/integrations/website_localization_cms_terminal_processing_monitor.py +73 -7
  83. package/standard-skills/translate-native/integrations/website_localization_cms_terminal_receiver_client.py +93 -9
  84. package/standard-skills/translate-native/integrations/website_localization_evidence_http.py +221 -11
  85. package/standard-skills/translate-native/integrations/website_localization_health.py +6 -0
  86. package/standard-skills/translate-native/integrations/website_localization_http_provider.py +1 -1
  87. package/standard-skills/translate-native/integrations/website_localization_quality_profiles.py +350 -0
  88. package/standard-skills/translate-native/integrations/website_localization_queue.py +126 -56
  89. package/standard-skills/translate-native/integrations/website_localization_receipt_verifier_http.py +166 -13
  90. package/standard-skills/translate-native/integrations/website_localization_release.py +423 -17
  91. package/standard-skills/translate-native/integrations/website_localization_release_coordinator.py +168 -13
  92. package/standard-skills/translate-native/integrations/website_localization_runner.py +10 -0
  93. package/standard-skills/translate-native/integrations/website_localization_worker.py +213 -9
  94. package/standard-skills/translate-native/provenance.json +2 -2
  95. package/standard-skills/translate-native/references/commercial-localization.md +96 -17
  96. package/standard-skills/translate-native/scripts/blun_language_guard.py +3 -1
  97. package/standard-skills/translate-native/scripts/check_commercial_review.py +69 -9
  98. package/standard-skills/translate-native/scripts/commercial_localization_profile.py +829 -31
  99. package/standard-tools/language-guard/VERSION +1 -1
  100. package/standard-tools/language-guard/blun_language_guard.py +3 -1
  101. package/standard-tools/language-guard/check_commercial_review.py +69 -9
  102. package/standard-tools/language-guard/commercial_localization_profile.py +829 -31
  103. package/standard-tools/language-guard/provenance.json +2 -2
  104. package/standard-tools/manifest.json +1 -1
  105. package/worker-host.mjs +215 -82
  106. package/agent-spine-plugin/scripts/check-install-king.js +0 -37
@@ -87,7 +87,8 @@ are derived from canonical JSON bound to:
87
87
  plus content type;
88
88
  - glossary and quality-policy versions;
89
89
  - provider, model ID, and model version;
90
- - Translate Native software version.
90
+ - Translate Native software version;
91
+ - for commercial work, the exact current review-evidence-contract SHA-256.
91
92
 
92
93
  Changing any bound value creates a new job and plan identity. A queue may
93
94
  therefore deduplicate an exact retry, while stale work cannot silently survive
@@ -110,6 +111,20 @@ states, bounded attempt counts, the next eligible attempt time, result hashes,
110
111
  and stable error codes. Free-form error detail is represented only by a
111
112
  SHA-256 hash so status inspection does not disclose customer prose. Payloads
112
113
  are hashed on insertion and checked again before a worker receives them.
114
+ Immediately before leasing, the queue also replays the exact current worker
115
+ binding. A stale but internally consistent job becomes terminal with
116
+ `job_binding_invalid` without consuming an attempt or reaching caches, asset
117
+ resolvers, or providers. A bounded batch of up to 24 consecutive stale jobs is
118
+ quarantined in the same transaction before the first current job is leased,
119
+ covering one complete EU-locale plan without an unbounded write transaction.
120
+ Expected contract mismatch is distinct from validator unavailability:
121
+ unexpected failure or payload mutation rolls back the complete
122
+ quarantine-and-lease batch and leaves every job pending.
123
+ The read-only health monitor additionally replays the complete current
124
+ planner/worker validation for every stored job. Canonical but obsolete jobs,
125
+ including commercial jobs from an earlier evidence-contract generation, block
126
+ health locally with `queue.job_binding_invalid`, independently of provider
127
+ health and without changing queue state.
113
128
 
114
129
  Queue `succeeded` means only that a worker returned finite, NFC JSON. It is not
115
130
  a native-quality attestation, signed release, or publication permission. The
@@ -856,7 +871,7 @@ byte-for-byte without signing again. A failed, omitted, duplicated, exchanged,
856
871
  or policy-stale work item therefore cannot disappear behind a partial aggregate,
857
872
  and a crash cannot silently replace the report used for a claim. Existing v1
858
873
  and v2 campaign databases migrate transactionally to the v3 report schema.
859
- Case-result schema v7 and report schema v11 bind the same `valid_until` value.
874
+ Case-result schema v8 and report schema v11 bind the same `valid_until` value.
860
875
 
861
876
  After finalization, `BenchmarkCampaignStore.load_report` is the read-only
862
877
  consumer boundary. It opens a consistent snapshot, requires the exact complete
@@ -1031,16 +1046,24 @@ service or hardware-backed signer; the repository tests use HMAC only as a
1031
1046
  deterministic test double.
1032
1047
 
1033
1048
  The receipt-verifier contract receives exactly `binding` and `receipt`.
1034
- `binding` uses `blun.localization-quality-receipt-binding.v2` and contains the
1049
+ `binding` uses `blun.localization-quality-receipt-binding.v9` and contains the
1035
1050
  review purpose, job and canonical result hashes, full source and target text
1036
1051
  plus hashes and locales, content type, glossary and policy versions, primary
1037
1052
  and optional review-provider identities, software version, two-pass
1038
- confidence, locale quality profile, optional commercial profile, its exact
1039
- content-free targeted-review summary, and the human/independent-review
1040
- requirements. The verifier must cryptographically
1053
+ confidence, locale quality profile, and, for commercial content, the exact
1054
+ nested locale-specific commercial profile plus its content-free targeted-review
1055
+ summary and exact advertised review-evidence-contract SHA-256, the canonical
1056
+ advertised routing-contract SHA-256 for every commercial result, the canonical
1057
+ advertised resolution-contract SHA-256 when targeted
1058
+ review is unresolved, the private text-free mapping from each opaque offer
1059
+ index to its ordered source and target Unicode code-point spans, and the
1060
+ human/independent-review
1061
+ requirements. It also carries the canonical quality-evidence request ID and
1062
+ evidence revision that produced the opaque receipt. The verifier must cryptographically
1041
1063
  bind every field. It must reject a receipt issued for another result, policy,
1042
1064
  model, profile, software version, locale, or review purpose. In particular, a
1043
- quality receipt cannot satisfy a qualified-human or independent-model review.
1065
+ quality receipt cannot satisfy a qualified-human or independent-model review,
1066
+ and an old receipt cannot be relabelled under a newer evidence response.
1044
1067
 
1045
1068
  For deployments that keep verification behind a network trust boundary,
1046
1069
  `integrations/website_localization_receipt_verifier_http.py` provides one
@@ -1098,13 +1121,18 @@ source and target, plus their hashes, the CMS event, plan and job identities,
1098
1121
  source and target locales, content type, glossary and policy versions,
1099
1122
  provider/model identity, software version, and a host-chosen
1100
1123
  `evidence_revision`. Its deterministic `request_id` binds all non-text fields
1101
- and the exact validated queue-result hash. The adapter may call an independent
1124
+ and the exact validated queue-result hash; both text hashes bind the complete
1125
+ source and target bytes. The durable store and HTTPS adapter independently
1126
+ recompute the ID from the same closed v8 identity field set before persistence
1127
+ or network access. The coordinator carries that exact ID and revision into
1128
+ each v5 receipt binding and the v5 signed approval; missing or substituted
1129
+ context blocks before receipt verification or signing. The adapter may call an independent
1102
1130
  model, a qualified native reviewer, or a host-owned review service; no
1103
1131
  provider transport or credential is built into the coordinator.
1104
1132
 
1105
1133
  For deployments that need a concrete network boundary,
1106
1134
  `integrations/website_localization_evidence_http.py` implements that interface
1107
- as one request-bound HTTPS attempt. It validates the exact v4 evidence request,
1135
+ as one request-bound HTTPS attempt. It validates the exact v8 evidence request,
1108
1136
  canonicalizes native Unicode without ASCII folding, binds the inner digest and
1109
1137
  deterministic evidence ID in both headers and body, disables redirects, and
1110
1138
  strictly validates the response envelope before the coordinator verifies its
@@ -1304,14 +1332,35 @@ creates one `blun.cms-localization-publication.v3` payload for the complete
1304
1332
  locale set. It includes the site and website version, source identity, signed
1305
1333
  source sequence and hash,
1306
1334
  and, for each locale, the exact target text and hash, approval ID, expiry, and
1307
- a `blun.website-localization-release-evidence.v1` object. That content-free
1308
- object binds the signed approval and worker-result hashes, quality-receipt
1309
- hash, and either a null commercial scope or the exact commercial-profile ID
1310
- and validated review summary. It contains no source text, target text, amount,
1335
+ a `blun.website-localization-release-evidence.v14` object. That content-free
1336
+ object binds the exact machine-readable release-evidence-contract SHA-256,
1337
+ signed approval and worker-result hashes, quality-receipt
1338
+ hash, canonical evidence request ID and evidence revision, and the exact
1339
+ current target-locale quality-profile locale, version, and digest. It then
1340
+ binds either a null commercial scope or the exact commercial-profile ID,
1341
+ locale-specific commercial quality-profile version and digest, and validated
1342
+ review summary including its exact review-evidence-contract digest, plus the
1343
+ exact current content-free offer-routing- and resolution-contract digests. The
1344
+ resolution-policy digest is present even when the summary is already verified,
1345
+ while the separate resolution result remains absent. If that
1346
+ summary requires targeted review, the object also binds
1347
+ the exact ordered dimensions, commercial profile, resolution-contract digest,
1348
+ resolution method, receipt hash, primary provider identity, and independent
1349
+ provider identity when a second model was used. The receiver proves the two
1350
+ provider IDs differ and rejects a missing, stale, unexpected, cross-scope, or
1351
+ method-inconsistent resolution before the host commit. It contains no source
1352
+ text, target text, amount, private offer-routing map,
1311
1353
  currency, tax wording, brand, or reviewer explanation. A CMS can therefore
1312
- pin the advertised profile and reject missing, malformed, or drifted evidence
1354
+ identify the exact evidence and contract generation, pin the advertised profile, and reject
1355
+ missing, malformed, or drifted evidence
1313
1356
  before replacing its current content, without treating a cross-language regex
1314
1357
  as semantic proof.
1358
+ The reference receiver repeats the exact general locale-quality lookup for
1359
+ every active read, health check, and idempotent replay. This universal binding
1360
+ is independent of the additional commercial quality profile. A later language,
1361
+ morphology, terminology, or evaluation-profile generation therefore blocks the
1362
+ old bundle without overwriting it; the structural tombstone path remains
1363
+ available.
1315
1364
  Its deterministic `delivery_id` is an idempotency key over those immutable
1316
1365
  bytes. The host-owned publication authority signs and immediately verifies the
1317
1366
  payload before the durable outbox accepts it. A partial, changed, expired, or
@@ -1399,8 +1448,17 @@ signed payload with a host-supplied
1399
1448
  `PublicationExpectation`. That expectation binds the exact current event,
1400
1449
  site, website version, plan, source identity, source generation and hash,
1401
1450
  complete sorted required-locale set, content type, and commercial profile.
1402
- A correctly signed but partial, stale, or differently scoped publication is
1403
- therefore rejected before any CMS write.
1451
+ The public capabilities additionally carry a separately hashed release-evidence
1452
+ contract with the exact field, digest, lineage, commercial-scope, and privacy
1453
+ rules. Every signed approval and release proof binds its exact contract digest.
1454
+ The runtime validates that complete contract against its canonical registry,
1455
+ so stale evidence and altered but self-rehashed substitutes block before host
1456
+ code.
1457
+ For commercial content, the receiver also recomputes each locale's canonical
1458
+ commercial quality-profile version and digest and requires the signed v7
1459
+ release evidence to match it exactly. A correctly signed but partial, stale,
1460
+ cross-locale, or differently scoped publication is therefore rejected before
1461
+ any CMS write.
1404
1462
 
1405
1463
  The host supplies one commit callback. It must atomically and idempotently bind
1406
1464
  the stable `(delivery_id, payload_sha256)` pair to the expected source revision,
@@ -1453,7 +1511,9 @@ must redact authorization headers and verified target text from logs.
1453
1511
  Deployments without an existing atomic CMS transaction can use
1454
1512
  `integrations/website_localization_cms_receiver_store.py` as the durable
1455
1513
  reference host behind that WSGI application. Give `DurableCMSReceiverStore` a
1456
- dedicated host-owned SQLite connection. The trusted CMS first calls
1514
+ dedicated host-owned SQLite connection, the receiver's canonical
1515
+ `release_evidence_is_current` validator, and a closed validator backed by the
1516
+ configured publisher authority. The trusted CMS first calls
1457
1517
  `register_source` with its exact current source expectation, then wires the
1458
1518
  store's publication resolver, commit, tombstone resolver, delete, and health
1459
1519
  methods directly into `CMSReceiverApplication`. Resolver results are exact
@@ -1473,10 +1533,19 @@ Backups and filesystem-level retention remain the host's responsibility. For
1473
1533
  deletion, the trusted host must separately call `register_tombstone` with the exact active
1474
1534
  publication ID, payload hash, generation, and locale set. A successful delete
1475
1535
  atomically clears the active pointer, removes localized prose, and retains only
1476
- content-free publication and tombstone bindings for replay detection. Startup
1477
- and health verify the schema, SQLite integrity, active pointers, canonical
1478
- payload and expectation hashes, every locale row, and tombstone state. This
1479
- reference store is not a substitute for an existing CMS authorization model:
1536
+ content-free publication and tombstone bindings for replay detection. The exact
1537
+ canonical publisher signature is stored beside each active payload. Startup and
1538
+ health verify the schema, SQLite integrity, active pointers, canonical payload
1539
+ and expectation hashes, that publisher signature, every locale row, current
1540
+ release-evidence contract, approval expiry, and tombstone state. Active
1541
+ rendering and exact publication replay perform the same authorization checks
1542
+ after every restart. Schema v1 databases migrate to v2 without fabricating
1543
+ signatures: legacy active rows without the original proof stay blocked and
1544
+ unhealthy but remain structurally deletable.
1545
+ Structural-only tombstone operations deliberately remain available when an
1546
+ approval expires or a contract advances, so stale content can still be removed.
1547
+ This reference store is not a substitute for an existing CMS authorization
1548
+ model:
1480
1549
  source and tombstone registration remain trusted host operations and its
1481
1550
  content-reading method
1482
1551
  requires the complete trusted publication expectation for the exact page
@@ -1648,30 +1717,100 @@ public request, response, deployment, and failure contract is documented in
1648
1717
 
1649
1718
  Select `content_type: "commercial"` in the trusted CMS/backend for pricing,
1650
1719
  offers, subscriptions and their contextual CTAs/conditions. This adds the
1651
- versioned `translate-native.commercial.v2` profile to the job payload, job ID
1652
- and plan ID; the existing seven types retain their previous payloads and IDs.
1653
- It is available for every planner locale, including `mt-MT` and `fi-FI`.
1720
+ versioned `translate-native.commercial.v13` profile plus one exact
1721
+ `translate-native.commercial-locale-quality-profile.v2` object to the job
1722
+ payload, job ID and plan ID; the existing seven types retain their previous
1723
+ payloads and IDs. It is available for every planner locale, including `mt-MT`
1724
+ and `fi-FI`.
1654
1725
  The public skill's [commercial guide](../translate-native/references/commercial-localization.md)
1655
1726
  applies to all languages, with no hardcoded project prices, brands or products.
1727
+ For every review dimension, the private evidence must name exactly one verdict
1728
+ for each registered offer in registry order. The worker derives the global
1729
+ verdict from that matrix and requires offer-bound items for every equivalent,
1730
+ changed, or uncertain entry; evidence for one tier therefore cannot silently
1731
+ stand in for another tier.
1732
+
1733
+ When any offer-local verdict remains uncertain, the content-free review
1734
+ summary retains the affected dimension and zero-based position in the private
1735
+ offer registry. It never publishes configured offer identifiers. A qualified
1736
+ human or independent model resolution must acknowledge the exact same ordered
1737
+ scope; missing, duplicated, reordered, cross-dimension, or out-of-range entries
1738
+ block before publication. Global uncertainty remains representable with no
1739
+ offer positions when the evidence cannot safely identify an offer.
1740
+
1741
+ The 24 locale objects are not aliases for one universal prompt. Each has a
1742
+ distinct version and canonical SHA-256, binds the corresponding general locale
1743
+ quality generation, preserves that profile's native, fidelity, adversarial and
1744
+ institutional-reference focus, and adds the ten commercial checks. The worker
1745
+ reconstructs the object before provider access and supplies it to
1746
+ transcreation, source-hidden native review and source-aware fidelity review.
1747
+ Its version and digest are retained in the result's signed quality-profile
1748
+ binding. Changing either locale policy or the generic commercial generation
1749
+ therefore invalidates jobs, cache entries, review receipts and publication
1750
+ authority.
1751
+
1752
+ Each object also embeds `translate-native.commercial-rendering-reference.v1`
1753
+ from the tagged Unicode CLDR 48 JSON release. It records the resolved CLDR
1754
+ locale, default and native numbering systems, grouping threshold, decimal and
1755
+ grouping symbols, and the standard decimal, percent, currency, ISO-currency,
1756
+ approximation, limit, and range patterns. The explicit `de-AT`, `en-IE`, and
1757
+ `pt-PT` regional files are used where they exist; other profiles use the
1758
+ applicable language parent. Non-breaking and narrow non-breaking spaces remain
1759
+ exact Unicode data in the canonical profile and its digest.
1760
+
1761
+ These patterns guide native rendering; they do not prove semantic fidelity.
1762
+ Equivalent number words, written percentages, and digit forms are permitted,
1763
+ while exact values and currency identities must survive without rounding or
1764
+ conversion. Any ambiguity is routed to an independent model or qualified
1765
+ native-domain review and remains blocked until resolved.
1766
+
1767
+ At the outer CMS dispatch boundary,
1768
+ `GET /v1/localization/cms-submission-dispatch/commercial-profile` exposes this
1769
+ same complete profile and 24-locale rendering registry without project
1770
+ content. The separately scoped response is bound to both the public dispatch
1771
+ capability and the live website capability generation. A CMS can therefore
1772
+ discover the exact amount, currency, discount basis, qualifier, tax, billing,
1773
+ commitment, renewal, cancellation, condition, and offer-assignment rules it
1774
+ must preserve without receiving publication authority or any configured
1775
+ price, brand, or product value.
1776
+
1777
+ The profile now embeds a separately versioned and hashed
1778
+ `review_evidence_contract`. It gives CMS and provider adapters the exact closed
1779
+ report fields, limits, Unicode code-point span rules, offer containment,
1780
+ relation semantics, ten-dimension order and verdict invariants without exposing
1781
+ project prices, source or target text, actual spans, brands, or reviewer prose.
1782
+ Capability discovery rejects a missing, altered, reordered, or self-rehashed
1783
+ contract. The contract validates evidence structure only, grants no publication
1784
+ authority, and leaves uncertain meaning on the independent-review route.
1656
1785
 
1657
1786
  The three provider calls stay ordered: transcreation, source-hidden native
1658
1787
  editing, source-aware fidelity. Commercial fidelity additionally returns
1659
1788
  `commercial_review` with the profile schema, `coverage` (`complete` or
1660
- `uncertain`), and `checks` for `amount_currency`, `discount_basis`, `qualifiers`,
1789
+ `uncertain`), a canonical `offers` registry, and `checks` for
1790
+ `amount_currency`, `discount_basis`, `qualifiers`,
1661
1791
  `tax_status`, `billing_interval`, `commitment`, `renewal`, `cancellation`,
1662
- `conditions`, and `offer_assignment`. Every check has `status` (`equivalent`,
1792
+ `conditions`, and `offer_assignment`. Each registered offer has a unique ID and
1793
+ ordered, non-overlapping source and target regions; multiple discontiguous
1794
+ regions may bind linked footnotes, but no region may overlap another offer.
1795
+ Every check has `status` (`equivalent`,
1663
1796
  `not_present`, `changed`, `uncertain`) and `items`; each item has `offer`,
1664
1797
  `relation` (`matched`, `source_only`, or `target_only`), `source_span`,
1665
1798
  `target_span`, and `explanation`. Spans are zero-based Unicode code-point
1666
- offsets with an exclusive end. A one-sided item uses `null` only for the side
1799
+ offsets with an exclusive end and must remain inside the named offer's declared
1800
+ regions. A one-sided item uses `null` only for the side
1667
1801
  that is absent, so an omitted condition and an invented target claim can be
1668
- represented without fabricating a counterpart. The exact response contract and
1669
- dimension guidance are supplied in each fidelity request.
1802
+ represented without fabricating a counterpart. The illustrative response shape
1803
+ and dimension guidance are supplied alongside the complete, separately hashed
1804
+ `review_evidence_contract` in each commercial fidelity request. The worker
1805
+ verifies that contract against the installed public commercial profile before
1806
+ any provider access. It remains absent from transcreation and source-hidden
1807
+ native review, preserving the independent first quality stage.
1670
1808
 
1671
1809
  Equivalent checks require matched evidence; absent dimensions require empty
1672
- items. A dimension-level changed or uncertain verdict requires at least one
1673
- specific evidence item, while globally uncertain coverage may remain span-free
1674
- instead of inventing a location. Changed terms, missing dimensions, invalid
1810
+ items, and equivalent `offer_assignment` evidence names every registered offer
1811
+ exactly once. A dimension-level changed or uncertain verdict requires at least
1812
+ one specific evidence item, while globally uncertain coverage may remain
1813
+ span-free instead of inventing a location. Changed terms, missing dimensions, invalid
1675
1814
  relations/spans or a normal PASS without the commercial report block the worker
1676
1815
  without a publishable result. Uncertain coverage, an uncertain dimension or an
1677
1816
  all-absent report instead preserve the candidate as a low-confidence fidelity
@@ -1682,15 +1821,42 @@ publish. The evidence request and independent verifier both receive the bound
1682
1821
  commercial profile and policy context. The old known-good translation remains.
1683
1822
  Do not classify legal text as commercial to bypass the legal human-review gate.
1684
1823
 
1685
- The full commercial response hash stays in the normal quality-pass receipt;
1686
- job IDs bind the profile version through queue, signed memory and publication.
1824
+ The full commercial response hash stays in the normal quality-pass receipt.
1825
+ Plan v3 and job v3 also carry the exact current review-evidence-contract
1826
+ SHA-256. That digest participates in every commercial job ID, idempotency key,
1827
+ and plan ID, and the worker joins it to the complete fidelity-request contract
1828
+ before provider access. A contract-only policy change therefore creates new
1829
+ work identity and cannot reuse a stale queue or translation-memory entry.
1687
1830
  The content-free result summary uses
1688
- `translate-native.commercial-review-summary.v1`; the authenticated capability
1831
+ `translate-native.commercial-review-summary.v6`; the authenticated capability
1689
1832
  response publishes its exact separately hashed machine contract, including the
1690
1833
  ordered allowed dimensions and the invariant between status and unresolved
1691
- dimensions. Quality-evidence request v5 and receipt-binding v2 carry that exact
1692
- summary, so adapters can reject unknown, reordered or contradictory review
1693
- scope without reconstructing it from prose.
1834
+ dimensions. Its evidence digest covers a versioned canonical binding of the
1835
+ commercial profile, exact advertised review-evidence-contract SHA-256, exact
1836
+ UTF-8 source and target hashes, and complete review evidence. Quality-evidence
1837
+ request v13 and receipt-binding v9 carry that exact summary. Every commercial
1838
+ evidence request now also carries the exact public routing-contract SHA-256,
1839
+ including verified results without a private route, so the evidence provider
1840
+ can issue a receipt for the same binding later enforced by the verifier and
1841
+ signed release. The digest participates in the deterministic request identity;
1842
+ non-commercial requests require `null`. When review is
1843
+ required, they additionally carry a private
1844
+ `translate-native.commercial-review-routing.v2` context that maps each opaque
1845
+ offer index to its exact ordered source and target regions. It contains no
1846
+ configured offer IDs, text, prices, brands, or reviewer prose, is validated
1847
+ against both complete texts before network access, and participates in request
1848
+ and receipt identity. Its required `contract_sha256` must match the separately
1849
+ advertised machine-readable routing contract, whose public shape fixes Unicode
1850
+ offset, exclusive-end, length, order, overlap, privacy, and trust-boundary
1851
+ semantics without exposing an actual route. The route itself is deliberately
1852
+ absent from CMS release evidence.
1853
+ The unresolved quality-evidence request carries the complete content-free
1854
+ routing contract beside the route. Its deterministic identity covers both, and
1855
+ the HTTPS adapter reconstructs the canonical contract before authentication or
1856
+ transport so an external reviewer need not rely on separate discovery.
1857
+ Adapters can therefore route a reviewer to the affected offer without exposing
1858
+ project configuration publicly, while rejecting unknown, reordered,
1859
+ contradictory, or transplanted scope.
1694
1860
  As before, the host must verify an independent quality receipt before signing.
1695
1861
  Schema validation does not prove that a model's semantic findings are true or
1696
1862
  complete. The receipt verifier must validate evidence held by the trusted host;
@@ -1703,9 +1869,10 @@ allows equivalent locale forms, and converts unresolved evidence into a bound
1703
1869
  low-confidence review route. Keeping source evidence out of the native pass
1704
1870
  prevents source-shaped copy from receiving an
1705
1871
  artificial advantage. Version-bound job IDs prevent old policy/cache reuse.
1706
- Tests exercise the contract across all 24 locale routes, ten defect dimensions,
1707
- native digit/number-word representations, multiple offers, source blindness,
1708
- queue terminal failures and the actual worker-to-signed-publication path.
1872
+ Tests exercise distinct canonical profiles across all 24 locale routes, ten
1873
+ defect dimensions, native digit/number-word representations, multiple offers,
1874
+ source blindness, locale-profile tampering, queue terminal failures and the
1875
+ actual worker-to-signed-publication path.
1709
1876
  Scripted adapters test enforcement, not real native quality or DeepL superiority.
1710
1877
 
1711
1878
  ## One-transition service loop