SAV talk and coupon launch verification
The launch path is the public SAV talk, followed by
sign-in and coupon redemption on Reinsurance Demo. The demo slide
prints SAVDEMO; the course offer prints COURSES3M. These are live campaign records under
Admin/Coupons, not repository fixtures.
Confirmed coupon entry defect
On 10 September 2026, the deployed Store/Plugin compiled the source in which BuildSubscribe
returned BuildContactForm before constructing the coupon row. ReinsuranceDemo has a sales
contact and Enterprise tier, so a signed-in visitor with no entitlement or covering plan saw
only an inquiry form. The advertised, valid coupon had no entry point.
Contact-sales now offers the same coupon/key controls as the ordinary purchase surface. It uses the existing validation, redemption, grant and installation chain. An inquiry and a coupon use separate temporary status streams; an action in flight owns the screen, and errors leave the applicable retry available. Acquired access still follows the ordinary setup and redirect states. Anonymous visitors still sign in first, and coupon availability grants no permission by itself.
The regression cases run through BuildSubscribe, including contact-sales with and without
an authenticated viewer, ordinary plan sales, errors, inquiry and coupon progress, the sent
confirmation, existing ownership and completed acquisition. A pure case checks that an older
error from one action cannot replace the other action's progress.
The live Tests area also drives the actual host contact-status stream through sending, sent and
error states, using the same stream reader and state-to-panel mapping as the Subscribe area.
It emits one successful outcome only after all three states have been checked: the Tests runner
takes the first outcome, so emitting after each intermediate state would hide later failures.
Campaign findings outside the entry control
At the audit snapshot, both Anonymous and Public had correctly scoped Viewer assignments
under Event/SavGeneralversammlung2026/Talk/_Access, with that talk as mainNode. Its eighteen
declared slides inherit those grants. The sibling Event/SavGeneralversammlung2026/Demo tour
does not inherit them. Event and Posts had no public-read policy; neither partition should
be made public to expose this talk.
Posts/SavThankYou was Draft with a publishing slot of 11 September at 06:00 UTC. Its text
promised an attached swipeable deck and a first comment containing links and coupons, but the
node carried no media and no children. The current SocialPost schema supports image URLs,
not a document attachment. Preparing the promised LinkedIn document carousel therefore needs
the publication path to support it or the copy to match an actual supported attachment. No
social publication was made during this audit.
Both coupon records had been activated on 10 September before this audit: Personal tier,
90 days, and a 31 December validity limit. SAVDEMO was restricted to ReinsuranceDemo and
200 unique viewers; COURSES3M had no redemption cap. The course slide still carried an obsolete
speaker note saying that code was inert pending Plugins #1553. The live coupon type and source
already contained that change. The demo slide's displayed URLs were plain text rather than
clickable links.
During the launch correction, the authored demo slide was updated to version 13 with clickable links. The anonymous browser walk verified those links on the public talk. Signed-in redemption of the advertised demo coupon remains the production acceptance check after this Store change is deployed; a successful source compile does not establish that the complete login, redemption and demo installation path works.
Term semantics still need a separate decision
The deployed CouponRedemption.RedeemFree activates the tier with
validUntil: coupon.TierExpiry(at) and calls Entitlements.GrantEntitlement on the package
where redemption occurs. That package entitlement is permanent. The new tier term consequently
does not make every acquisition from COURSES3M expire after three months, despite the coupon
skill's broader statement that coupons grant plans instead of packages. A redeemed target can
outlive the Personal plan. The finite tier term is also clamped to the coupon's own validity
end, so a late-December redemption receives less than ninety days.
This entry-control correction does not change those access or term semantics. Reconcile the advertised offer and the intended permanent-package/temporary-plan behavior explicitly before claiming that all course access expires after three months. Production end-to-end verification must use a signed-in account with no pre-existing grants; a maintainer account can mask both the missing coupon control and missing dependency access.