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.

Reconnecting…
The server was updated. Reloading the page to pick up the latest version.