Skip to content

v2.1.17

Choose a tag to compare

@mikekhristo mikekhristo released this 06 Sep 18:45
· 1 commit to main since this release

Changelog

  • 3aeceb66a9506bc0a7639393c2c5452cfa9374db chore(types): regenerate after get_attribution_match_rate_for_project (#5848)
  • 88c9451fc425242197fa0442db21c66db0fcbbdf ci(shared-types): run the package's vitest suite on every PR (#5853)
  • 78c1be957c3afafe074a039b3f3f09a7af538574 docs(library): archive guidance at the decision and where it bites (#5860) (#5893)
  • 9c35ff3f37853c54376e1aba95fe40e85a2eee85 docs(paid-growth): the founder signed the M1 close packet; S3 (PG-103) opens (#5862)
  • 59ea8ccc6fda0401111a4ce02d2cbf278e786719 feat(cora): a durable receipt for a delegated engineer session (COR-002) (#5913)
  • 32e096c8063ad9322e3e07e3f463b46a69a01f0b feat(measurement): daily FX rates and the ROAS band per channel (#5899)
  • 1350bb0d08c5d1c18d8a9210b3e627d42b3d0bc2 feat(measurement): release alerts on money events, per app version (#5910)
  • eadc183fe938d08c38dafd186dde4bab290676e9 feat(measurement): the ROAS band per creative, with the early read named (#5902)
  • 8073ca33663c7281d1e5d7f56d8e88d98644f30c feat(measurement): the default first-run funnel per SDK app (#5900)
  • 9061e56d426861cad5598705eb3388e536ad35d2 feat(measurement): the event and property catalog per SDK app (#5897)
  • 4f64b44827ef16d544134aee7e8b24461d8e73c5 feat(paid-growth): an Apple plan binds its demand proof from Layers' own keyword tiers and storefront rankings (PG-400 slice 4, PR 3) (#5871)
  • 8639fb401baf61c832b649ffcb45b4af1b2e6983 feat(paid-growth): an Apple plan reaches the ledger and is refused there, not at the platform gate (PG-400 slice 3) (#5854)
  • fdff6abad9b6eadb2eb094efdfd45482cc022faf feat(paid-growth): the Apple provider adapter reads its readiness ladder and refuses every write (PG-400 slice 2) (#5841)
  • dc7ab8d32ab0ab7704627251fbb223c98f047d91 feat(paid-growth): the Google conversion goal is threaded as a lane fact — app_install only (PG-500 PR 1) (#5867)
  • 3f96040c677fe7ae9e4bded6e5428addfdd3e867 feat(paid-growth): the TikTok daily floor table holds every currency TikTok publishes (PG-305) (#5863)
  • d63675f7c44b738010d8e84061b24b3072b9d55c feat(paid-growth): the organic scorer stops starting (PG-103 phase 1a) (#5866)
  • 2c12b5a3faefff5e04de6623b46281d20dd4dbb1 fix(cli): auth status, log and restore read the store whoami reads, and name it (#5915)
  • c9e8dfa8f397675fd6a3c51c3c872e838c6d3946 fix(db): delete a project's imported ads history with the project (#5883)
  • 793f08a8b5065612d5b26a79b8c0e63cde2ef349 fix(discovery): wave the post-walk measure pass, cancel its vendor reads, and name the failure (#5846)
  • d9cbfcb5333569b389ef2536ca92b9d7f67e3951 fix(mcp): layers://attribution reads its own project, not the fleet (#5843)
  • 76b6834ba6549b86bb51333408639204479345cf fix(mcp): a bad storefront code is a refusal, not a permanent outage (#5852)
  • 420d791f00f4dddc6bb26c652aac68a3a72db4be fix(mcp): a dead onboarding crawl says so, and names the call that restarts it (#5849)
  • 004d536e188b2b814aca45596039d4f42d118579 fix(mcp): a store that has no such listing is a refusal, not an outage (#5845)
  • 637a2189661a9e0cb7fa377713ce511fe869d80e fix(mcp): an approved piece in the queue no longer blocks every growth read (#5885)
  • b46844bda7769e13277cec89db4ff691498543b1 fix(mcp): read the attribution split the way the funnel counts it (#5850)
  • 2c7b0d5abe2596d36eb22e501752d022f6c584c3 fix(mcp): the short-link minter judges expiry on the caller's clock (#5865)
  • 9f4b71b376a2e361b74f24f9c7d55122ec5c4765 fix(paid-growth): a Spark-authorized owned post gets its creative identity, even when Layers published it (#5857)
  • 7e20f90770142e2157ba84e639d6a58aa4f537b1 fix(paid-growth): a finished build never answers provider_pending forever (#5874) (#5875)
  • 604edabb93a1d351dbafacbbfe8be052dca5a2b2 fix(paid-growth): a paused create is a paused campaign and paused ad groups; the seeded ad is enabled by design (#5878)
  • a3788b1640243d8a3f8f01411952cc972ea5d55a fix(paid-growth): the certification driver retries the same key until the paused create settles (PATCH-09) (#5872)
  • da91e739891d2ab7f22c2a512d0f4bd878396786 fix(paid-growth): the plan's schedule is computed once per run, so a replay carries the bytes the key was minted with (#5855)
  • ba25ab0a4fbfc8f25300824884c13348fdcf78e7 fix(paid-growth): the promoted build carries the rulebook admission, and a successful confirm answers 200 (#5868)
  • ba2ed7fdfbbd1b6058f6877f4a473d9cdc7b19bf fix(paid-media): the manual TikTok budget edit judges the account's own currency with the shared cap verdict (#5864) (#5891)
  • c1b7eec773addba70bed5f1327b57c33d510f87e fix(sdk-ingest): event and user property values keep their JSON type (#5901)
  • 0a719bc69a9988d053a79041207d0592ec33c62a fix(temporal): keep discovery alive during vendor waits (#5873)
  • 31682bb0c0f3c63863eccb497cdc94fe884bae69 fix(temporal): the outer create ledger carries the child's cleanup status and custody (#5876) (#5892)
  • 47dde005c7a0cf2bc5ef352cc58e9af5ee0aa0ad fix(web): the managed-account confirm says where the money goes (#5870)
  • b46b952db12d12335e0aadec765d0b4580ee5a02 test(api): the onboard-product harness compares the crawl cutoff as an instant, not a string (#5858)
  • da69518975b498fcadba44bf4ab4dadde60255c1 test(api): the tampered-signature probe always tampers (#5847)