THE PLAN
A marketplace where members learn, experiment, and build, then sell what they create.
Recently shipped to staging-next · synced 2026-08-14
b5aa2b86a chore(revamp-plan): sync worktree gallery/index.html to live page (append 2730bc9f6)bd3526f60 requirements: record Ethan 2026-08-14 access-model resolution (REQ-031..033), resolves REQ-026 (#842)2730bc9f6 requirements: record Ethan 2026-08-14 community/cohort/product interview answers (REQ-025..030), two supersessionsf3efc39fb chore(revamp-plan): sync worktree gallery/index.html to live page (append a8ff37cec..23583e14a, 9 commits)a8ff37cec fix(stdb): merge unlanded ctx.sender auth fix for feature_flags/notification_types/tier_config seeds725dfe6f8 chore(revamp-plan): sync worktree gallery/index.html to live page (append a204da53c, 69eb0fe15)f6643a61e fix(ci): switch run_seed_step to flat 180s retry gap -- exponential backoff never converged401abe505 fix: gate seedDefaultNotificationTypes/seedDefaultTierConfig by ctx.sender, not callerEmail34686f570 fix(stdb): remove vestigial callerEmail param from seedDefaultFeatureFlagsbe43ec2cf RED test: spoofed-email-arg case for seedDefaultFeatureFlagsfa02c0c83 agent-currency: exempt in-flight explorer PR files, re-stamp manifest5b6103ab7 fix(stdb): stop using autoInc for feature_flags -- explicit ids at both insert sites23583e14a fix(staging-seed): fail closed when the feature-flag seed failsa204da53c fix(ci): widen run_seed_step retry budget to match seed_demo_data's proven 5 attempts69eb0fe15 chore(revamp-plan): sync worktree gallery/index.html to live page (append 5bd7bed2e)5bd7bed2e fix(ci): retry run_seed_step on transient post-publish 530s5df9fc372 chore(revamp-plan): sync worktree gallery/index.html to live page (43 commits through 2026-08-13)39239e8fe mockups(offer-builder): three structurally distinct builder options + preview registration28bab552d Merge main into staging-next (ancestry only: every byte of main is already here)2480afb37 fix(security): close live STAGING anonymous exposure of the feedback table (#838)28b1c2f1d rescue: land requirements-registry + coverage guard from dangling laptop worktree (#814)c0c94569e feat: seed real downloadable files for staging marketplace listings (#807)32ef81d3a explorer: category-first browsing grounded in Kristin transcripts (#823)aff2a28b6 test(feedback): fix stale suppressEntirely assertions blocking staging-next (#836)d06406066 fix(security): close live production anonymous exposure of the feedback table (#835)7940d319c Merge fix/staging-seed-failclosed into staging-nextb8306be20 fix(ci): staging-seed.sh fails loudly on genuine seeder errors instead of swallowing them310bfc2d1 fix(stdb): feature_flags autoInc collides with corrupt sequence -- explicit ids at both insert sites (#830)bdb89b56a fix(feedback): stop silently dropping connection/auth/InternalError reports4efdd27d5 test: sabotage-proof runtime coverage for staging-seed.sh swallow bug (RED)c7df6dbc6 Merge fix/env-config-fail-closed: fail-closed connection-target resolutionc8b7fb95c fix(env): fail-closed connection-target resolution (2026-08-12 fail-open incident)e48b9a4a3 test(env): RED - fail-closed env resolution guard (2026-08-12 fail-open incident)f96226638 fix(explorer): failed-read visual distinction + mockup toggle (#829)99cfbe27a fix(explorer): W1/W2/W3 adversarial-pass fixes -- honest doc comment, distinct failed-read state, mockup ownership (#828)c5fa8ef13 fix(ci): staging schema-drift gate never re-authenticated with STDB_PREVIEW_TOKEN (#826)4b3454217 explorer: re-stamp ownership manifest for PR #820 content (ExplorerHomeView redesign, mockup registry entry) (#825)cbbe5ad24 Communities-containing-cohorts: schema seam + mockup (deny-by-default, no reducers) (#822)b3a970934 explorer: redesign marketplace shell (drop-in, seam-first mockup) (#820)10afa40fc explorer: fix staging-next structural-guard redness (owner, flag registry, seed allowlist, casing) (#821)50d920e39 explorer: close adversarial-verify warn findings on d51de6f64b2e73f9dc explorer: style the coming-soon fallback (design-gate REFUSE fix)d51de6f64 explorer: wire /explorer grid to real public marketplace_listings (active only)7efc7fea2 feat: explorer marketplace public shell (login-to-purchase)7290c14a5 docs: mark project-local explorer-surface agent superseded by global owner8f666a630 fix(stripe-setup): register webhook with https URL behind Cloudflare Tunnel (#818)57e2b9a92 swarm: job-1786201020-17308 (#817)512245609 swarm: job-1786200692-31728 (#816)9c75a6abb swarm: job-1786200971-3120 (#815)70445fce2 docs: capture R2 + Stream ground-truth findings (2026-08-07)cf6ff5280 chore(agents): create cohorts owner agent; cross-reference from live-chat-spacesdfbb2bf08 chore(agents): land live-chat-spaces owner agent onto staging-next2739132fe feat(commerce): badge-conditional marketplace revenue split (80/20 standard, 90/10 founding member) (#804)a9bff2fcd fix: rename internal 'experiment' listing kind to 'live_session' (#802)cf1ccb1f2 WIP: continue Catalyst->Creator tier rename (uncommitted work found during worktree cleanup audit, 2026-08-07) (#801)81890f0ae feat(marketplace): shared Archive control for listings (admin + creator surfaces) (#798)4ab701a66 docs(visual-verify): document the first-connection dev-login reload gotcha7b06e3ea2 feat(offer-wizard): add visible action buttons to entry-step offer cards (#799)037296bc5 fix(agent-currency): re-stamp StartForkView.vue for gate-autofocus promotioncbe61d274 Promote: auto-focus gratitude gate input on page load (desktop only)eefd19c43 Promote staging-next to main: 186 commits (schema resilience, RLS lockdowns, marketplace/creator-studio work, CI repairs, error-reporter timeout fix)c700cb27d feat(offer-wizard): Live Cohort entry (Option C) goes live (#795)a59ee8fd3 chore(revamp-plan): sync worktree gallery/index.html to live page79253ac44 fix(marketplace): send sessionAt/sessionJoinUrlEnc on every create/update listing call (#796)915b669a4 docs(agents): give the mockup preview harness an owner (joyos-labs-marketing) (#797)ab324a161 docs(agents): correct offer-builder Bundle Builder claim to match live merge5cbdb1452 Merge feat/offer-wizard-bundle-builder: Bundle Builder live on the Offer Wizard entry step7b701688b chore(doctrine): repoint offer-builder ownership + re-stamp agent-currency manifested4865acf fix(offer-wizard): skipImage() must also skip the session step for Bundle Builderce99061ed feat(offer-wizard): make Bundle Builder live -- kind 'bundle' via existing reducer, session step skippedad4356071 test(offer-wizard): RED tests for interactive Bundle Builder entry (kind=bundle, session step skipped)5b7022df0 chore(revamp-plan): sync worktree gallery/index.html to live page8cf2beda5 Merge fix/gate-autofocus-touch-guard: also skip autofocus on coarse-pointer touch tablets06e4fb64a fix(start-gate): gate autofocus on pointer coarseness too, not just viewport width73696c27d Merge fix/gate-input-autofocus: auto-focus gratitude gate input on page load (desktop only)4ff988244 feat(start-gate): auto-focus gratitude input on page load, desktop only0dd70b861 Landing mockups: 3 ground-up directions (Feed/Exchange/Wall) at /dev/mockups/* (#792)3f9faac3b Merge branch 'refs/heads/feat/landing-fresh-ground-up-import' into staging-next32ceb246e feat(landing): add depth and sections to all three fresh directionsbe25a673d fix(landing): mobile-breakpoint defects on Exchange/Wall + drop seat-counter urgency58d55fd5f fix: structural masonry for Wall (count-agnostic), regen non-wellness portrait, make reciprocity visible in Wall tilesf19241b09 wip: three fresh landing-page mockup directions (feed/exchange/wall)08388c893 fix(feedback): bound submit_client_error POST with a timeout (#790)4634ecb8c fix(ci): repair 3 genuine RED failures at staging-next tip (#791)0f32eced8 Merge fix/webhook-account-value-handlers-20260805 into staging-next303087ec6 feat(stripe-webhook): enumeration guard proves every ACCOUNT_VALUE_EVENTS entry is handled or exempted803cda575 docs: correct joyos-billing agent doc for new subscription handlers, re-stamp reviewed pairs07d844043 Merge remote-tracking branch 'origin/staging-next' into fix/webhook-account-value-handlers-20260805ea7315cd9 docs: add branch-inventory refresh and offer-builder buildout plan64e4a52f0 fix(spacetimedb): resolve community_records binding-drift conflict on lockdown mergeb15153a13 Merge lockdown fix/lockdown-community-records-anon-exposure-20260805 (521bbaf99) into staging-next521bbaf99 fix(spacetimedb): lock down community_records anonymous exposure14ad98e7e fix(agent-currency): re-stamp after feedback_message index fix + stranded-identity reactive fix; record in-flight session-fields-serializer spec as known-absent (PR #782)0cd4623e1 fix(stripe): handle subscription.created/paused/resumed events, no longer silent gapcd612d721 docs: retire remaining per-PR-preview language, point verification at staging64f627e0c chore: regenerate STDB bindings for feedback_message.feedback_id indexdf6e7ea3b fix(spacetimedb): index feedback_message.feedback_id to unbreak admin subscriptions1debbc325 fix(sync): detect a stranded identity reactively so it surfaces the sign-in pathb30472b77 Capture 2026-08-04 co-founder call roadmap items (planning only, no code)accd8c47e Merge branch 'fix/dedupe-community-agent-def-20260802' into staging-next (PR #781, re-landed with preserved ancestry after squash-merge correction)7cf9c8689 Revert "fix(agents): dedupe community.md / joyos-community.md agent definitions (#781)"4b2cabea4 fix(agents): dedupe community.md / joyos-community.md agent definitions (#781)d22c1a738 chore(agents): commit the community.md pre-merge backup (companion to acb4ef36e)acb4ef36e fix(agents): dedupe community.md / joyos-community.md agent definitions960b60cb8 Merge pull request #780 from braceyourself/docs/backlog-stale-instruction-fix-202608020201a7cf8 docs: correct stale merge-286-first instruction in sibling backlog docs4a7f3277e docs: correct stale merge-286-first instruction in launch backlog39ec49dba Merge pull request #779 from braceyourself/fix/legacy-writer-guard-anchor-fetch-202608029549e38c0 docs(community): record the anchored-fetch guard fix, re-stamp ownership manifeste306a2cc5 fix(guard): anchor no-legacy-writer POST detection to fetch() call args, not proximity window0ecba6298 Merge pull request #771 from braceyourself/fix/gratitude-roundtrip-probe-filter-collision24e0088b7 docs(community): record the no-legacy-writer guard's proximity-regex false positive, then re-stamp ownership manifestc0508bc5a fix(e2e): drop literal /api/community-gratitude text from a test title to stop a false-positive CI guard match689a7ae52 fix(agent-currency): re-stage manifest re-stamp that was missed before the merge commitbc0c61d2a Merge origin/staging-next into fix/gratitude-roundtrip-probe-filter-collision68b875839 Merge pull request #778 from braceyourself/fix/retire-legacy-community-records-writer-202608028b223b35a fix(gratitude): remove the last live writers into the retired community_records tablecc8472f05 Merge pull request #777 from braceyourself/docs/recovered-doctrine-and-backup-path-fix-20260802d701a4a97 docs: fold in two recovered doctrine sections, correct stale backup-path claim, mark bare-root shadow trap resolved8b0d384b5 Merge pull request #776 from braceyourself/docs/admin-emails-collapse-doc-correction-202608022fba90da4 docs: correct stale ADMIN_EMAILS hand-copy claim after PR #770 collapse37f152d38 Merge pull request #770 from braceyourself/refactor/admin-emails-collapse-to-3-sources30a6548a6 fix(auth): re-arm the deferred sign-in redirect when 'online' fires during a flap (#775)9ca89ce65 fix(agent-currency): retire the redundant adminEmailsParity guard, correct 3 stale agent docs78b2927cd refactor(admin-emails): collapse 8 hand-copied ADMIN_EMAILS declarations to 3 canonical + 4 importsd6aa60bc8 Merge pull request #774 from braceyourself/fix/agent-currency-distinguish-ownership-from-mention006fad7de fix(agent-currency): refuse to write a manifest with an unexplained dead-file claim7dd0851cc fix(auth): redirect an expired session to login, never a network failure (#772)b4b87ca8a fix(agent-currency): probe module is .mjs, not .js, in the agent docs49aff724a fix(gratitude): round-trip E2E probe text was blocklisted by the display filter89a26327b Merge fix-agent-currency-582f: review joyos-start-gate, re-stamp ownership manifestdb5d750d3 fix(agent-currency): review joyos-start-gate against gratitudeWallLayout.ts C23 change, re-stamp manifest05efd0e68 docs: correct stale gratitude-table claim in CLAUDE.md (2026-08-01 cutover)808bb54e9 fix(start-gate): wall renders cards around the open gate modal at 900x640 (RECIPE C23)d3350058b fix(agent-currency): correct community/joyos-community docs before re-stamping community-gratitude.js23f82511d Merge wall-midsize-viewport-starvation: gratitude wall no longer renders zero cards at mid-size viewports (900x640)150be7b82 chore(agent-currency): re-stamp joyos-start-gate after correcting its stale recipe index60f066916 fix(start-gate): wall renders zero cards at mid-size viewports (900x640)f94f142ea Collapse restated global safe-exec/no-verify rules to delta + cross-reference (context audit 2026-07-23)a98c62f0f feat: add verification spec for feedback #99990312cec9b3880 fix(start): own card no longer strands on resize -- drop fill:forwards from the release animation1d234dbc6 fix(start-gate): narrow own-submission cancel exemption to a same-event time window, not permanentea0ffd0c8 fix(start-gate): own-submission card no longer cancelled by the same-event gate-close redistribution7c3faf767 fix(gratitude): catch QA meta-commentary about the product UI in isTestGratitudeBody0cfa49a84 test(gratitude): RED - add QA meta-commentary fixtures for isTestGratitudeBodycd5d3d4ad fix(rls): close anonymous exposure of 1357 feedback_message rows; repair two RLS-guard parser blind spots (#769)297c64a6f fix(rls): close anonymous exposure on user_identities, notification_preferences, archetype_responses (#767)a2560c5de docs: correct stale RLS-closed HTTP-signature claim in CLAUDE.md (#768)33e1023f6 chore(agent-currency): re-stamp manifest after PR726 conflict resolutionef3488869 Merge remote-tracking branch 'origin/main' into resolve/pr726-conflict-20260801e4d595e9b Merge PR #764: sync ADMIN_EMAILS across all copies, add drift guardedc5bf0b6 chore(agents): re-stamp ownership manifest for the 3 admin-email filesc0a864d83 fix: sync ADMIN_EMAILS across all 8 copies, add drift guardd5857c5e1 Merge pull request #763 from braceyourself/offer-attachmentsf8f3aeccf Merge pull request #766 from braceyourself/doctrine-bare-root-ci-capacity-202608017e856c7a3 Merge pull request #765 from braceyourself/docs/landing-procedure-updatebf67a6d62 chore: regenerate ownership manifest + schema snapshot after rebase onto staging-next945008d98 test: raise timeout on large-file digital-upload tests (env contention, not a bug)40bd2a233 feat(creator-studio): let creators attach a digital file to an offer7fa724d10 Merge pull request #760 from braceyourself/fix/gratitude-attribution-default-2026080117eaa75f0 Merge pull request #762 from braceyourself/fix/ll-header-login-signup4af8b42ab chore(agents): re-stamp ownership manifest after gratitude-attribution repurposea68312a79 feat(gratitude): expose consented attribution on the public feed + wire onboarding/settings79e0a3f83 feat(gratitude): schema + reducer for public-attribution-by-default90ab864ff docs: document bare-repo root stale-file trap, CI runner capacity, and agent-currency re-stamp rule9f6dc3047 docs+guard: fix stale land-on-staging procedure claims, add orphaned-branch detectoraec834a6d Merge pull request #759 from braceyourself/fix/access-registry-agent-currency-manifestaae28cf5d Merge pull request #756 from braceyourself/fix/library-bundle-fulfillment562cc803f chore(agent-currency): re-stamp ownership manifest for LearningLabLayout.vue608f83740 Merge pull request #758 from braceyourself/fix/gratitude-e2e-auth-determinism453633b29 chore(agent-currency): re-stamp joyos-labs-learning-lab after MyLibraryView.vue change270545fec fix(learning-lab): add Bundle fulfillment group and panel so a purchased bundle is reachable7c6cf3f20 Merge pull request #761 from braceyourself/docs/offer-builder-doctrine-update5d0b57a5f fix(e2e): deterministic auth gate + pathname-anchored wall assertionecd8f260c fix(learning-lab): relabel auth-broken header CTA to Login, add Signup link08c93f3e3 docs: add Offer Builder update-on-semantics-change doctrine section68f56697e fix(agents): stop backticking not-yet-built access-registry paths in prosed793140da fix(e2e): correct wall-check root cause to URL-substring tautology, fail-safe on poll timeout, add real cutover E2Eaaf9c36e6 Merge pull request #757 from braceyourself/magic-link-verify-reducer-fail-loud64533088b fix(auth): verify-magic-link reports reducer-call infra failure as 503, not 41019fa611ad fix(e2e): replace fixed-timeout wall-auth check with a bounded poll for terminal statead71b997f Merge pull request #755 from braceyourself/fix/gratitude-single-source-of-truthc851c630b docs(agents): correct stale gratitude-table claims after single-source-of-truth cutover79aab17b0 feat(gratitude): single-source-of-truth cutover -- public gate reads gratitude_entries directlyccfe6aeb3 fix(start): dedup wall pool by text before positional cycle (#754)2da053fb3 Merge pull request #753 from braceyourself/fix/agent-currency-review-20260801c24c9cb60 fix(agents): review and correct all 44 stale agent/file pairs, re-stamp07376c79b Merge pull request #752 from braceyourself/fix/arch-map-tests-ci-tsconfig-20260801e1e0809b1 fix(arch-map): add local tsconfig.json so CI does not walk up to root's21c0c0dfc Merge pull request #751 from braceyourself/fix/deploy-blocking-tests-202608015ba263f0c fix(ci): clear 20 of 23 stale-test failures blocking main's deploy pipeline022fc2f40 fix(admin): add kristin@joyos.global to the client ADMIN_EMAILS lists (#750)8dcd5102c fix(ci): make merge-on-green fail closed when PR checks are absent (#748)3d067e613 ci: restore PR-triggered vitest gate + add PR CI coverage watchdog (#745)b72b17228 Merge pull request #747 from braceyourself/fix/arch-map-dead-tests-guarda703b34db Merge pull request #746 from braceyourself/fix/dashboard-sections-year-labelsa39835f63 fix(dashboard): replace vacuous parity guard with a real epicPhases fixturebd1a39d82 fix(arch-map): add local tsconfig.json so CI does not walk up to root'sc033fc5bc ci: run arch-map's own vitest suite and stop calling it deaddec080eab chore(agent-currency): re-stamp joyos-dashboard after reviewing useAuth.ts, AppShell.vue, SettingsView.vue72d646fc2 fix(dashboard): update YearSection sections.test.ts for removed epicPhases fallbackacb0190f2 Merge pull request #744 from braceyourself/fix/dashboard-tests-202607311031056a9 fix(dashboard): remove hardcoded epicPhases fallback + fix stale useStripe mocks17cdd558a Merge pull request #742 from braceyourself/fix/auth-onboarding-tests-2026073199c09e695 fix(auth): log exchange-token appToken verify failures; fix stale WelcomeHero aria-label assertionb83774172 Merge pull request #743 from braceyourself/listing-id-reuse-marketplace-views-202607317185f1502 fix(marketplace): fold marketplace_listing_views into listing-id-reuse allocator685c750ab Merge pull request #738 from braceyourself/fix/stdb-tests-202607318cfe89e3d Merge pull request #741 from braceyourself/fix/gratitude-anon-echo-test600f264a2 fix(tests): update two stale STDB guard tests against deliberate later changesb736d7ddb fix(test): update anon-gratitude-echo A.5.7 for deliberate /start banner narrowing90344e49f test(outbox): tolerate additional named imports in the loadOutboxOnBoot wiring guard (#739)1c4190a42 Merge pull request #740 from braceyourself/fix-billing-tests-20260731f96a904d3 fix(tests): update myTier-reactivity mock to real SDK (ctx, row) callback signaturea0edab738 Merge pull request #737 from braceyourself/fix/env-scoped-row-counts-and-guardbd17e26d9 fix(docs): qualify every gratitude-table row count with its environment+module, add structural guardcbe21841c Merge PR #724 into staging-next: keep both RLS-guard fixes, drop neitherfe325df51 Merge pull request #736 from braceyourself/fix/learninglab-spec-honesty-202607310387c3625 test(router): fix brittle exact-string nav-link assertion in learning-lab-library-route spec8804f004f test(learning-lab): fix stale vue-router/useSpacetime/useStripe mocks in LearningLabHomeView offline-render + ready-instrument specs46a55cc3a Merge pull request #735 from braceyourself/fix/library-unreadable-container-css7f9cb9fb4 fix(learning-lab): apply container styling to the unreadable-library state + correct an overstated commenta02aa900a Merge pull request #734 from braceyourself/fix/library-unreadable-vs-empty4f0f63351 fix(learning-lab): distinguish an unreadable library from a genuinely empty one23b8f0c7f Merge pull request #733 from braceyourself/creator-dashboard-statse8ac8bc36 docs(creator-stats): document the no-Catalyst-check posture, mirroring creator-orders.jsed813dc08 feat(creator-studio): add Performance stats/graphs panel to dashboard7ba32883b Merge fix/settings-tabs-redesign into staging-next4df00b5c8 fix(settings): redesign tab strip and demote sign-out for clarity517e2fa7f Merge pull request #732 from braceyourself/fix/anon-connect-entry-appjwt-migrate-fallbackac51606c0 fix(auth): close the identity-repair gap for ordinary OIDC token expiry3c485be4b docs(skill): point stdb-rls-filter at the new total-coverage RLS guardc01285659 test(security): add total-coverage RLS guard for every public STDB table9c8e962fd Merge pull request #731 from braceyourself/fix/learning-lab-header-accountidentity-desync1b106b999 fix(learning-lab): wire header identity to accountIdentity, not the stale cached claimd10ea67bb Merge pull request #730 from braceyourself/auth-blocked-stuck-rls-probe15b98e639 fix(auth): do not reconnect when it can only ever produce another anonymous identity1f8936632 Merge pull request #729 from braceyourself/auth-blocked-stuck-rls-probeb7e05a4ac GREEN: fix onInsert/onDelete/onUpdate listener callback arity to match the real SDK signature85b38b5fa RED: fix mock callback arity to match real SDK (ctx, row) signaturea4e9539a1 Merge pull request #727 from braceyourself/fix/magic-link-identity-link-clears-auth-error899b77b52 Merge pull request #728 from braceyourself/sec/swarm-test-skill-followupc2333c63b docs(skills): targeted manifest re-stamp recipe, jobq node-version gotcha, scratchpad-not-private findinge29facb6d fix(auth): clear stale auth-broken state once migrate_identity links a users rowfedacf079 Merge pull request #725 from braceyourself/sec/fix-privacy-guard-and-ci97d4be19b fix(security): update split-privacy-release guard for users/waitlist_signups overrided1dfbbc53 test(security): unblock prod-down test gate on two RLS/privacy guardse9c18b40a Merge pull request #723 from braceyourself/library-pending-purchase-card4add3fc09 fix(learning-lab): render a pending purchase as a real library card, not a banner over an empty shelfd711b6a0d fix(marketplace): resolve idempotent-purchase entitlement lookup, poll for pending-to-activefdd9be56c Merge pull request #721 from braceyourself/creator-stats-stdb6b94973f8 Merge pull request #722 from braceyourself/stripe-tier-derivation-fail-closed7c48b347b docs(skill): warn against editing directly in the live shared staging-next worktree5ab7d0e2a Merge pull request #720 from braceyourself/feat/gratitude-attribution-settings-toggleee9e87769 fix(stripe): fail-closed tier derivation, admin-configured prices reach Stripefe4c5acd8 fix: avoid literal */ inside block comments (mkt_views:*/mkt_views_daily:*)b2e562b52 feat(creator-stats): switch purchases/views to stdb, retire KV read pathd190aa5be Merge pull request #719 from braceyourself/docs/swarm-skill-sabotage-recipe3768edf9c feat(settings): add public-gratitude attribution toggle (reuses existing reducer)625c1d765 docs(swarm-test-invocation): add the in-container sabotage recipeae1cd6e3b Merge pull request #718 from braceyourself/fix/stripe-prices-unchecked-stdb-readec856d6f2 fix(stripe-prices): distinguish an STDB read failure from an unpriced tier6ab6d54d8 Merge pull request #717 from braceyourself/fix/seed-tier-config-price-columnse2b7e1e2c fix(seed-tier-config): seed the two price columns, and derive the guard from the schema68d516342 Merge pull request #715 from braceyourself/fix/stripe-prices-duplicate-formatpricestring9dd6d3927 fix(tier-pricing): move the .d.ts out of functions/, which was 502ing staging958f4ed90 Merge pull request #714 from braceyourself/fix/stripe-prices-duplicate-formatpricestringa0987e042 fix(stripe-prices): remove duplicate formatPriceString that broke every staging deployf256a91e5 Merge pull request #713 from braceyourself/admin-tier-pricing-source-of-truth5af19c1ad merge staging-next: combine loud tier-catalog faults with admin-configured pricing3baef6630 feat(tiers): make the admin Tiers tab the source of truth for membership prices467a2223f Merge pull request #712 from braceyourself/fix/public-tiers-loud-empty-and-seeda82d531f0 fix(public-tiers): fail loudly on an empty or corrupt tier catalog, and seed it durably0758f1ebf Merge pull request #711 from braceyourself/fix/shimmer-test-adversarial-corrections16144bb47 fix(start-gate): shimmer test's setup-call assertion was toothlessf72918512 feat(creator-studio): build real Orders page from live purchase dataf6af14397 Merge pull request #710 from braceyourself/staging-nextc80c78a86 Merge pull request #708 from braceyourself/fix/users-rls-anon-exposure0dcd60e35 Merge pull request #709 from braceyourself/fix/shimmer-ambient-no-hover-dependency556fdd297 fix(start-gate): seam shimmer runs ambient, independent of pointer state20a414d3a Merge pull request #707 from braceyourself/fix/pricing-truth-ai-promptsfd50e5788 fix(security): activate dormant users/waitlist_signups RLS filters, close invites leakced6b1a86 docs(skills): record that the agent-currency gate is already red, so measure the deltaa990c3e5d fix(pricing): stop AI listing prompts anchoring on the retired $5.97 Joy Seeker price1c02384c4 merge: sync staging-next before pricing-truth edits6386b4a24 Merge pull request #706 from braceyourself/fix/wall-card-float-desync07c2b5a07 fix(start-gate): desynchronize wall-card float paths for sequential ids1f18ead01 Merge pull request #705 from braceyourself/fix/client-silent-write-audit66694a619 fix(sync-reliability): syncStatus was swallowing a real subscription failure into 'live'0321c14ce fix(learning-lab): purchase-confirmation banner must not claim Library entitlement before it lands755ed6b70 Merge pull request #704 from braceyourself/fix/client-silent-write-auditdc2af97d2 fix(sync-reliability): stop silent failures in useTable() and unify identity display with the connection's real auth state34c6a03b1 fix(stdb): queryStdb failure can no longer masquerade as an empty result405355278 fix(start-gate): clamp persisted wall-card jitter to the CURRENT reservation (Opus adversarial REFUTE)dd65c545a test(learning-lab): pin guest browse has zero auth friction, login modal only at checkout91854b757 Revert "Merge fix/own-card-emergence-identity: own submitted card emerges from centre again"0e78e56a3 Merge fix/own-card-emergence-identity: own submitted card emerges from centre again33073923b fix(start-gate): own submitted card emerges from centre again (identity-keyed bypass)8e73b6586 test(start-gate): fix tautological seam-exclusion assertions found by sabotage4ca9ad555 Merge origin/staging-next (PR #703) into local staging-next0a9a8281b Merge pull request #703 from braceyourself/fix/wall-seam-jitter-avatare2f3f9603 fix(start-gate): wall cards get real per-axis jitter, avoid the split-line, and survive a resize without colliding84b3b9ab3 fix(start-gate): reconcile capacity-count tests with the merged per-axis perimeter fix + seam exclusionb81071958 fix(learning-lab): make pay-it-forward CTAs usable, not dead buttons4a5b81024 fix(start-gate): wall cards get real per-axis jitter, avoid the split-line, and survive a resize without colliding2aff3d349 Merge remote-tracking branch 'origin/fix/process-guard-test-runner-crash' into staging-next0c257eab3 fix(tests): bind process.stdout.write/process.exit eagerly before mutating processbd247d379 skill(swarm-test): exclude .wrangler and tolerate rsync exit 24 when mirroring the serving worktree7c84059d7 fix(start-gate): per-axis perimeter margin -- short/landscape viewports no longer starve to zero wall slots9a7384f87 docs(billing): document the unhandled-webhook default handler and the two live STDB shape traps2fd1e25f0 fix(tests): isolate process-guard test in a child process to stop it crashing the test runner6a9855565 Merge origin/staging-next (PR #702) into local staging-next117364315 Merge pull request #702 from braceyourself/fix/syncstatus-auth-stuck25931e2f7 fix(sync-status): surface auth-stuck in SyncStatusPill, closing PR #700's sibling gap76fbb9a3c Merge fix/webhook-unhandled-notify: live-STDB shape fixescca24b5dc fix(webhook): admin lookup must not use IN, and identity arrives nested -- both found by live probef064d3475 Merge fix/webhook-unhandled-notify: unclaimed webhook events notify admins instead of a silent 200d24ae2957 feat(webhook): GREEN -- an unclaimed webhook event notifies admins, never a silent 200ea1403c13 test(webhook): RED -- an unclaimed inbound webhook event must notify adminsf5289b131 Merge origin/staging-next into local staging-next (reconcile with fix/wedge-hover-disable)6b9f50c0a Merge branch 'fix/wedge-hover-disable' into staging-next-merge-tmp1e26e22f8 Merge fix/wall-perimeter-edge-margin: perimeter keep-out margin for wall cards21e662d53 fix(start-gate): disable wedge hover effect entirely, no resize/seal-shift/brightness on hoverecc763cc7 Merge pull request #701 from braceyourself/fix/start-gate-trickle-and-pile368834e58 fix(start-gate): an invisible gratitude card must also be inert (a11y)88b393103 Merge fix/wall-edge-clip-and-random-placement: wall cards never clip a viewport edge + genuinely random placementfe23f8f5e Merge origin/staging-next (PR #700 auth-blocked-recovery) into local staging-next617eb1a42 fix(start-gate): perimeter keep-out margin so wall cards sit inboard, not near the edgeeab58cd02 fix(start-gate): wall cards never clip a viewport edge + placement is genuinely random per load3d051b999 fix(stripe-webhook): an account-value event that fails is never a silent 200e3cd47b09 Merge pull request #700 from braceyourself/fix/auth-blocked-actionable-recovery329fdc1f4 fix(auth-blocked): stop claiming an automatic reconnect is ongoing once it genuinely has stopped5f8f89ff1 Merge stripe-account-value-events: an account-value webhook event that fails is never a silent 20003abc05f5 fix(stripe-webhook): an account-value event that fails is never a silent 200de98c4fec Merge origin/staging-next (PR #699 queued/released-card fix) into local staging-nextf44e32a68 Merge pull request #699 from braceyourself/fix/start-gate-trickle-and-pileeeebcb7ed fix(start-gate): queued and already-released cards stop piling opaque on the monogram785d921fd Merge fix/wall-card-never-vanishes: an unanimated gratitude card no longer paints opaque on the monogramf56da6655 fix(start-gate): an unanimated wall card sits at its own slot and still reveals2a80a4931 Merge origin/staging-next69c7776e9 fix(auth): name the missing config key when exchange-token cannot mint a session5f50fe51c fix(auth): name the missing config key when exchange-token cannot mint a sessionf370f4f29 Merge pull request #698 from braceyourself/fix/gratitude-trickle-released51fb12f2 fix(start-gate): batch-then-pump the release queue + fix radial-cards geometry test for the new one-at-a-time modelac0015b05 fix(start-gate): trickle-release queue for fresh gratitude cards (one at a time, random order, paced, never repeats)9c10fdd64 test(start-gate): RED tests for trickle release queue (one-at-a-time, random order, never-repeat)82da7c8d0 fix(ci): guard process env access in stdb-client.js (Pages Functions has no process global)d11d16641 Merge pull request #697 from braceyourself/fix/pinkbox-monogram-stranded-cards8c0b1edb4 fix(start-gate): stop stranding fresh gratitude cards frozen on the monogram9a1de1600 Merge origin/staging-next (PR #696) - disjoint from gratitude-anon-mirror-and-own-pin changes626ebcb82 Merge pull request #696 from braceyourself/fix/start-gate-notification-and-anon-echob589a8df2 Merge fix/gratitude-anon-mirror-and-own-pin: anon gratitude reliably reaches the public wall + own-entry eviction pine54f275c5 fix(start-gate): hide the internal sync/outbox debug chrome on /start, keep it observable to usf6a1d6d31 fix(gratitude): anon submissions reliably reach the public wall + own entry pinned against eviction1c4e592b8 Merge fix/float-ongate-layer: fix parallel-render-tree float bug (Opus adversarial catch)96f77b1ac fix(start-gate): hover/float vars were missing from the on-gate ambient layer (parallel-render-tree bug)dc4463d46 Merge pull request #695 from braceyourself/chore/swarm-skill-full-output-and-control-runc38797867 docs(skills): record two swarm-test-invocation gotchas from 2026-07-30 PR audit45c1e6c04 Merge pull request #684 from braceyourself/feat/table-access-mode-classification0ac5c1120 docs(onboarding): cross-domain onboarding research and a delta plan5d9b2e211 docs(skills): correct visual-verify's banned local dev server and record swarm node-down boundsc4a741bd3 feat(sync-reliability): classify every STDB table as subscription vs apibc93aefcb Merge fix/gate-modal-community-signin: hover/float-in-place motion57e64ec61 feat(start-gate): gratitude wall cards hover/float in place around their resting slot9449964af Merge fix/gate-modal-community-signin: gate-modal copy fixes + wall-scatter banding fix375b0459d fix(start-gate): remove in-card community list, reword sign-in copy, fix wall-scatter banding825da6bc2 Merge pull request #694 from braceyourself/fix/wall-stale-angle-tests4e0972b45 test(start-gate): update 2 stale data-angle assertions missed by the wall redesignb621d9c2e docs(skills): add stripe-webhook-live-diagnosis procedural skille5f9a6087 Merge pull request #693 from braceyourself/feat/gate-wall-redesignaa8fa340c fix(start-gate): fix 3 real bugs caught by Opus adversarial pass56a746480 Merge pull request #692 from braceyourself/feat/gate-wall-redesign06bfeecce fix(start-gate): shrink wall grid cells on narrow viewports (mobile starvation)15195420e test(WallView): stub the community-pool fetch so its rejection cannot log after teardown962d88359 Merge pull request #691 from braceyourself/feat/gate-wall-redesign69d18b8ce feat(start-gate): replace drift-off-screen gratitude cards with a static wall28009f4f8 fix(stripe-webhook): fail closed with 503 when a Stripe config value cannot be decrypted85db54aa3 Merge fix-seal-teleport: no-teleport fix for the stale-origin correction (second Opus adversarial catch)2468c0eec fix(start-gate): fix seal-hover teleport regression from the stale-origin fixd2cff2266 Merge fix/card-acuity-and-slowfeed: acuity, teal-ink fix, stale-origin fix, own-submission slow-feed survivalfdea65a7c fix(start-gate): fix stale radial origin on seal hover-shift + teal ink invisible-over-dark-region bug28c3161ab fix(start-gate): own-submission card survives a slow community-feed fetch53bb9747c fix(start-gate): increase visual acuity of floating gratitude entriesae01bd404 Merge pull request #683 from braceyourself/fix/phase911-test-home-isolationc17f27e7d fix(test-infra): isolate HOME in phase-9.11-e2e-verify CLI-absent test901478712 Merge pull request #682 from braceyourself/fix/rls-split-privacy-release-202607296f0609b81 fix(privacy-release): reword WallView comment to avoid tripping gratitude-pools disambiguation guarde4c75a5bc fix(privacy): narrow RLS split release closing gratitude_entries/joy_profiles + 7 more1836efdc9 Merge PR #690: RLS privacy releasea2ffb7472 chore(stdb): refresh schema snapshot timestamp after regen (no shape drift)4db2b9842 fix(privacy-release): reword WallView comment to avoid tripping gratitude-pools disambiguation guard85246716d fix(privacy): narrow RLS split release closing gratitude_entries/joy_profiles + 7 mored558be3d5 Merge fix/monogram-origin-fade: gratitude cards originate at monogram + stay invisible until clearing it4f4ea6fe8 fix(start-gate): gratitude cards originate at the monogram and stay invisible until clearing it61ae9942f Merge PR #689: bounded API fetch timeout11cd97357 fix(stdb-client): bound every outbound STDB fetch with a timeout6a8ac2a6c Merge origin/staging-next (PR #680 outbox fix) into local staging-nextb6a236b42 Merge PR #680: outbox never drops writes5ff3b2248 test(forms): harden textarea auto-grow wiring guard against comment-residue sabotageadd0be23e fix(outbox): never dead-letter writes; surface anon/rejected STDB auth as an honest, distinct status6f1d0dd3b app-version: expose servedBranch/servedCommit/servedSince (staging-drift observability)699c89305 fix(start): floating-gratitude ink tracks the wedge it is actually over6dd087b49 feat(creator-studio): run onboarding as a modal from within Creator Studioa670c38f4 docs(skills): rewrite visual-verify around the staging tunnel, not a banned local dev server556994419 feat(router): retire the bare /app dashboard and point restart-onboarding at the creator side31bfebbde fix(welcome): make hero tagline readable on cream card and remove tour link74cf7fc0c ci: schedule on shared joyos-swarm label instead of pinning as3a815ba7b8 docs: point to architecture decision map as source of truth76b57b1f5 feat(creator-studio): make onboarding transient instead of a permanent tab003d63698 feat(forms): make textarea auto-grow automatic app-wide, no per-site opt-in6e505c581 remove dead community_records_v2 client subscription surfacee5da1e911 docs: findings writeup for the offer-wizard coaching-disabled fix (PR #681)cada34464 fix(learning-lab): guard the in-page My Library link for guests12e49a5ee docs(arch-map): record swarm, ui-verify and layout-backup recipes in the owning agent954542d1a Merge feat/arch-map: decision record, layout persistence, map-currency doctrine67ed576de fix(learning-lab): hide Home nav tab for guests + redirect guest direct access to Discover124f43fc6 docs(arch-map): standing rule that every change updates the map; drift-guard design; ui and hmr verifiersf6f659867 Merge fix/gratitude-spawn-radius-tight: box-overhang-aware spawn-radius floors74c325d4e fix(start): fold card-box half-diagonal into halo/modal spawn-radius floors690529c2d feat(arch-map): persist node layout outside the model; reset affordancefbba053b9 Merge fix/gratitude-own-submission-emergence: optimistic post-submit card emergence04e3d47e8 fix(start-gate): reset gateCompletedToday mock explicitly per test (own-submission-emergence tests)d34c356bd test(start-gate): RED tests for own-submission emergence (fork-door)08e8b436a feat(arch-map): decision record - durable log of decisions already madec2924457e Merge fix/gratitude-spawn-radius-tight: tighten floating-gratitude-card spawn radiusca2c1b6be fix(start): tighten floating-gratitude-card spawn radius to hug the center composition488fe9432 feat(learning-lab): reactive buttons on the membership cardse9b2da753 test: RED - spawn-radius geometry assertions (birth ring tightening + position-hold + modal floor)5ed730b6c fix(arch-map): state the table enumeration gap instead of implying a totalf681dcceb feat(arch-map): use dagre LR layout so tiers stay legible1a8632c8c feat(arch-map): live architecture decision map from static YAMLbfb240b12 Merge pull request #681 from braceyourself/fix/coaching-disabled-classification059026648 fix(offer-wizard): classify listing kind by category, not live-session toggle5fd8ab0c2 docs: record agent-currency closure, negative-control output and one observed incident11672d95f docs(guard): warn that the ownership snapshot must be regenerated on the desktop075423faf feat(guard): add agent-currency guard with staleness, dangling-skill and ownership detectors407a872cb feat(agents): create owners for eight orphaned features, add swarm-test-invocation skillb3ad9100e chore(agents): correct stale admin and billing agents, wire project skills into gen-1 agents46b61117c Merge pull request #679 from braceyourself/feat/admin-waitlist-csv-export29d15ec70 feat(admin): add CSV export to the waitlist admin tab08e419cb9 Merge pull request #675 from braceyourself/docs/skill-safety-fixes-202607299a08d07ff Merge pull request #666 from braceyourself/fix/main-test-gates-202607282d2455e47 Merge pull request #678 from braceyourself/docs/serving-tree-detection-202607299ce4d5ae0 docs: correct the live-serving-tree detection recipe to the systemd unit250eedd72 deploy.sh: guard push subcommand against non-main branch, multi-file, and spacetimedb changesaf3fd876d docs(skills): gate deploy skill on single-file-only direct push to main; use as3.local in minio skillfaea57ce1 docs: point community agent at the guarded gratitude accessor and fix a dead migration doc linkebe84d628 docs: rewrite stdb-additive-migration skill to remove banned manual publish, wrong bindings path, and push-to-main774180aae merge: reconcile PR #666 with staging-next f95813f9e9fdcbb51a test(gratitude): pin buildGratitudeMirrorRows() 4th arg to attribution.userId608aec6d7 fix(gratitude): anonymize public-by-default community mirror rows7e5842a2a docs: findings for dead consent-export cleanup (collectOptedInIdentities)8459b277a fix(gratitude): remove dead collectOptedInIdentities export, guard against recurrence4ca59a3e1 docs(skill): fix stdb-additive-migration steps that violated repo hard rules43365338a merge: reconcile PR #666 with main dad567f5b, keeping the 0003 migrationa59107171 docs(gratitude): reconcile the Two Gratitude Tables doctrine with the mirrordad567f5b wip(job-1785259537-18545): post-agent checkpoint (claude exit 124) (#669)2be521d0b fix(gratitude): exclude harness rows from the public /start feed39173c1e5 feat(gratitude): public-by-default via G3 mirror, remove zero-row journal read3f0e0bb5d chore(bindings): regenerate client bindings for visits public:false flip223628017 fix(security): close visits table, make gratitude_entries public-by-default for display only143e8fe97 fix(migrations): renumber admin_identities away from 0003, not community_records_is_testd0fc8cd38 Revert "fix(migrations): remove duplicate 0003 community_records_is_test migration"1a589acf2 test(nav): update stale creator-sidebar specs to match approved shape6833ce157 fix(migrations): remove duplicate 0003 community_records_is_test migration3d007f1e7 Merge pull request #637 from braceyourself/staging-nextd0487a774 Merge pull request #640 from braceyourself/fix/is-test-migration278915bbf Declare the additive is_test columns in a migration (0003)562ca4734 Merge pull request #638 from braceyourself/fix/schema-shape-is-test0691a7d50 Update community_records/v2 schema-shape guards for the added is_test column07c120e73 Merge pull request #677 from braceyourself/fix/gratitude-harness-filter-202607299e8f104db fix(gratitude): exclude harness rows from the public /start feedb1dfa43dd swarm: job-1785301434-19926 -- gratitude pool guards, is_test filter parity, migration 0003/0005 dedupe (#676)f95813f9e docs: update serving-tree-recipe port tracing method (#674)d58907dec docs(stdb): add RLS service-reader grant patterns and proven findings8bdb8ea14 fix(offer-wizard): wire AI description assist into the description step (#673)7d7e840ec doc: add SpacetimeDB RLS exemption doctrine to Classic Issues sectiona35ee9a0c fix(onboarding): restart onboarding navigates to /app, not /welcome (#671)0d03f0322 fix(checkout): never report an RLS-hidden users table as "Not a registered user"793ba95ae feat(tooling): add feature status tracker (computed, never hand-typed)afd1b0db9 feat(staging): staging-currency guard (pre-push gate + checker + watchdog leg)cba9012a A gratitude entry that fails to save now gets retried automatically on a timer, instead of sitting stuck until you happen to do something elsec4c9e4f0 Added the failing test that proves a stuck save is retried on its own with no other nudge47a3d0a0 Dismissing the notification-preferences prompt now sticks for good instead of reappearing5b6d1eee Added the failing test for the notification prompt staying dismissedf5ac9010 Settings in the Learning Lab now opens as a panel over the page instead of taking you to a separate screend8ad3819 The welcome page is now a three-step sequence - intro, video, then consent4bdad529 Corrected a stale note about how the creator sidebar is filtered825a611d The creator navigation now respects the creator-onboarding switch, and old removal tests were retiredfbd9ffe2 Added the failing test for the onboarding nav item respecting its switcha6d0fd04 Creator Studio's main area now matches the dark theme so the mobile bottom strip no longer looks off8890e0b6 Creator onboarding is now limited to Catalyst members and admins, and the mobile top bar theme was fixed557413a7 Retired the old staging web address - staging now lives at one place only, joyos-lab.braceyourself.solutions, so there is no confusion about which site is the real one75bff0fd Creator Studio now has a first-pass guided setup walkthrough - four steps, hidden behind an admin-only switch while it is being shapedbdddb521 Swept the live database for anything readable by the public and wrote down every table that is currently exposed7550a8bd Corrected an earlier overstatement in the notes: the stray backup files left in the hooks folder are harmless and need no actione1a23712 Counted every file sitting in leftover working copies that was never saved anywhere else - the remaining risk of losing work is lowcb1d5c96 Retracted an inaccurate claim about the project guidance file and recorded the date of the tree currently serving staging68c0f0d9 Preserved the unsaved edits sitting in 27 leftover working copies, without disturbing any of them5d44e84e Rescued the unpushed commits from 34 leftover working copies up to the backup remote, verifiede4052747 Read-only audit of the 237 leftover working copies on disk - identified roughly 72GB that can be reclaimed, nothing deleted yet8eb7a7ec The landing page now has a clear primary button under the tagline that takes visitors straight into the entry gatef1c35f20 Wrote down the purpose plainly in the project's own guidance: joy is the goal, and values, purpose and meaning are what follow from it9b574de2 Triaged the open change requests and corrected the note explaining which schema check is intentionally skipped20d40940 The floating gratitude cards on the entry gate no longer thin out when the layout tightens - the pool of cards is now independent of how densely they are placed3abe9ca6 Locked in which gratitude source each surface reads from, so community posts and a member's own private entries can never be shown in the wrong place58f289c1 Test-only sample entries are now filtered out no matter where the marker appears in the text, not just at the start4ae8dd1b Added a check that the database client code was generated by the exact pinned tool version - the mismatch that caused last week's outage now fails the build instead of shipping60228139 Creator Studio now has a Learning Lab link in its sidebar, and the entry gate at /start carries the joyOS monogram570f9418 Community gratitude on the entry gate now draws from every post, shown in a random mix, instead of repeating the same three4a8b9d9b Regenerated the database client code so the staging build matches the live schema again (prevents the class of crash that took the site down last week)357a27b4 Email digest no longer dies on a single malformed row; a bad record is skipped instead of stopping the whole digest20ee3ebb Turned on a Stripe test that had silently stopped running, plus a guard so no test file can go dead unnoticed againd3f2623e New guard fails the build if the app ever tries to subscribe to a server-private table, closing the door on a whole class of data-exposure bug8c1dc208 Deploy alerting now watches the staging site too, not just production, so a broken staging deploy is noticed immediately9480d4e6 Removed a duplicate database migration that was blocking staging from deploying at all4a9b0468 Test runner no longer picks up stray leftover checkouts, so test runs are consistent and trustworthy562b39f2 Learning Lab pricing: the $597 Joy Catalyst card copy is now legible on its dark background, and the tier-count heading is correct4e387d2a Build system recovered another orphaned in-progress work checkpoint and replayed it onto the current code basead738833 Build system: recovered an orphaned in-progress work checkpoint and replayed it onto the current code base so nothing was lost8d90df9b Founding Hub avatars: profile-picture lookups were silently blocked by the site's security policy, so avatars never appeared. The lookup is now permitted and avatars loadf5319e9a Test data cleanup: the new “this is test content” marker on community gratitude is now declared properly in the database migration, so the change deploys cleanly17e2850e Safety checks updated so the new test-content marker does not trip the guards that watch for accidental database shape changes371b3d51 Community feed: gratitude posted while testing is now flagged as test content and hidden from the public feed, with a one-click purge for itdc0f3fb8 Wrote the failing tests first proving the public gratitude feed must never show test content3d1130e6 Deploy pipeline: fixed a staging build failure caused by missing database module dependencies07a3cf38 Staging health check no longer flags the per-viewer message table as suspiciously empty, since it only fills in as people read44492ff0 Security: admin group-chat message bodies were readable by anyone connected. Messages are now fanned out per recipient on the server so only the intended people can read themacc71338 Wrote the failing test that reproduced the world-readable admin chat messages before fixing it02f4a70a Finished wiring the app to the new per-recipient message read path93652e49 Security: private one-to-one chat messages were visible across accounts. Reads are now scoped to your own identity1477c409 Wrote the failing test that reproduced cross-account chat message readability310cbcf9 Security: admin power was granted by matching an email address, which can be spoofed. Admin trust now comes from a verified identity, closed everywhere in the codebase8859479f Personal data tables (invites, profiles, and friends) are now readable only by their owner154c5837 Wrote the failing tests exposing the admin-escalation and missing data-privacy holes before any fixf86f5f0a Declared the new verified-admin identity table in the migration so it deploys cleanly9a994971 Deploy alarm: when the health check cannot tell what the live site is serving, it now says so plainly (“freshness unverified”) instead of wrongly claiming the site is out of dateeeb9ea81 Deploy alarm: proved the alarm for real — a failed deploy sends the email, four failures in a row shout louder, an out-of-date live site is caught, and repeat runs do not spam8f91bfd1 Deploy alarm: the live site is now watched every 15 minutes from the always-on server, so a failed deploy or a stale live site raises an alert instead of going unnoticed for hours28c61616 Gratitude gate: proved on the live staging site that /start shows real member gratitude — the words people actually wrote reach the screen, and both halves of the door stay clearly readable on desktop and phone6abff0a8 Housekeeping: saved an in-progress build checkpoint so no work was lost when a long-running job timed outbdcea184 Gratitude gate: the Creator Studio side now reports when it is genuinely ready, and anyone without Catalyst access is turned away immediately instead of being left waiting at the door6dd95af5 Admin settings: the feature-flag on/off switch is now a real click target, so toggling a feature actually responds when you click it09176864 Admin settings: added the failing check that reproduced the unclickable feature-flag switch, so it cannot silently come backafa184cd Gratitude gate: the Learning Lab now reports for itself when it is genuinely ready, so the gate-open overlay lifts at the right moment — and lifts immediately rather than stranding anyone if the connection drops or the community is empty46f42724 Gratitude gate: the floating gratitude cards now settle smoothly once the gate finishes opening, instead of stopping abruptly028bedb7 Housekeeping: folded the fixes that were only on the live staging machine back into the shared staging line, together with the gate hand-off wiringadf994bb Notes: wrote up the 2026-07-25 deploy hold-up (stale tests plus a schema check that could not authenticate) so it is not re-diagnosed from scratch next timeabc7b3c5 Deploy pipeline: the schema safety check can now sign in properly, so deploys stop failing on that step55cd63d9 Deploy pipeline: refreshed old tests that still expected earlier versions of the gate and offer wizard, which were blocking every deployf5f4ab32 Gratitude gate: the two doors on /start are now live — choosing Learning Lab or Creator Studio opens the gate and hands you through to the right side78aea09b Gratitude gate: the “how many floating gratitude cards” setting is now proven to actually change how many appear on /start8fe171dd Gratitude gate: fixed a memory blow-up in the circular card layout, plus the stale tests that were masking itac1c38ce Gratitude gate: closed four issues an adversarial review found in the gate-open transition, so passing through the gate is smooth and correcta6e4d127 Housekeeping: brought the live production line back into the staging line so staging is testing against everything that has shipped81e06b43 Gratitude gate: fixed a crash that could blank the /start page when the floating gratitude cards were placed, and tightened the sign-in test doubles that were hiding ita9ffd1a8 Gratitude gate: first two slices of the gate-open transition — the page now knows when the destination behind the gate is genuinely ready, and an overlay carries the visitor through instead of a hard cut8e6696d1 Gratitude gate: fixed the floating cards’ geometry after an adversarial review, and they now recycle continuously so the field never thins out744a4e24 Gratitude gate: the ambient gratitude snippets were all clumping in the top-left corner; they now scatter properly across the panel31f3c522 Gratitude gate: added the ambient gratitude background layer to the /start fork doorb71f69e8 Creator side: the settings page moved to /creator-studio/settings, with the old address redirecting permanently so no existing link breakse605210d Reliability: pinned the SpacetimeDB command-line tool to one exact version in the deploy pipeline — a silent version drift there was the root cause of the 2026-07-22 production outage52002b32 Reliability: three follow-on deploy-pipeline fixes so a production deploy can no longer hang or stop halfway after the database schema publishes422745e0 Internal: wrote up the 2026-07-22 production incident and the resulting direction to keep the app and the database schema separated81c44569 Reliability: a safety check was failing on the wording of a code comment rather than a real problem, blocking production deploys — reworded so real deploys get throughe2b643ab Gratitude gate: the floating gratitude cards had stopped moving once the gate closed — caught by measuring the live page, and now they keep drifting3eea4ba9 Gratitude gate: gratitude cards now emanate outward from the centre with smoother motion, the call-to-action stays visible at all times, and the whole gate got a mobile passfb7b8a40 Marketplace: a change that would have shown an error when the browser blocks the post-purchase access popup was rolled back for now, so purchase behavior is unchangeda0373bb3 Internal: the control-plane spec for the autonomous build system now answers 9 of its 13 open questions, checked against how the machines actually run todaye2c2f0f4 Gratitude gate: the floating gratitude on /start is brighter and drifts more slowly, hovering a card slows its neighbours and holds an entering card in place, and the cursor no longer changes where nothing is clickable9f78b3dd Privacy settings: proved on live staging that flipping the AI personalization consent toggle really saves to the database in both directions, and locked in that the save still succeeds even if the audit-log write fails (#626)1cd5a3d2 Gratitude gate: signed-out visitors were told “your gratitude hasn’t saved yet” even though it had — the visitor now sees their own entry come back from the server, so the false failure banner is gone (#625)05fb70df Admin can now set how densely the floating gratitude cards scatter on the /start gate, instead of it being hardcoded (#624)4496cdea Privacy settings: turning the AI personalization consent toggle off now actually saves — every consent change had been silently failing and rolling back since the feature shipped (#623)17e5bf93 Marketplace: confirmed on staging that the seeded sample offers really landed in the database and render on the live Learning Lab at their real prices (#622)6a70b61f Learning Lab: full end-to-end pass on staging — browsing, filters, listing detail, checkout start, My Library, Accelerator, settings save, and every legacy redirect all verified working (#621)4b13fb0a Gratitude gate: the ambient floating gratitude on /start is now ghosted tone-on-tone text that floats bottom-to-top and stays fully on one side of the diagonal split, with card density set from an admin setting (#620)3c442631 Marketplace: staging now seeds one real active offer of each type (digital, service, bundle, experiment) for the demo creator, so every offer surface renders with real data instead of placeholders (#619)7cf9c4b2 Landing: the Enter the Lab button now sends signed-in members straight to the /start gate (#618)dfd6162c Swarm build job checkpoint landed (#617)0857a283 Creator Studio: the My Offers panel now lists the creator's real offers instead of a Coming Soon placeholder (#616)b75d495d Staging freshness: the dev tunnel now serves the correct staging-next worktree with an exact refspec, so what you see is what shipped (#615)bd2df6ff Swarm build job checkpoint landed (#614)5b503c62 Creator Studio: RED tests for the My Offers real offer list, ahead of wiring it to live data (#613)b067f901 Gratitude gate G3: the opt-in path is now live and E2E-verified on staging (#612)b856ca16 Staging verify: E2E-confirmed the single-tab checkout, unified Creator Studio shell, and gratitude-gate fixes landed on the tunnel (#604/#605/#606, #609)9dadf3b2 Gratitude fork background: the ambient scatter is now visible and passed the design gate (#UI1/#G4, #607)d64d9523 Gratitude gate: an anonymous identity no longer wipes the daily gate flag (#606)14d60dbc Creator Studio: all /creator-studio routes now share one shell, with the real Studio sub-routes wired in (#605)dd2bda58 Marketplace checkout: clicking buy now opens a single tab instead of two (#604)e9f7b698 Bindings: regenerated with the pinned SpacetimeDB CLI 2.6.1, restoring a procedures export that a drifted CLI had silently dropped (#603)755f5c41 Swarm build job landed (#602)2d1db687 Docs: reconciled the warm-Claude control-plane spec against the real worklog and tick formats (#601)7fa641d8 Docs: warm-Claude control-plane design spec (spec only) (#600)3a87491d Swarm build job landed (#599)882bce9b test(gate-bg): real display-path E2E for ambient gratitude background on /start7dc80e69 fix(fork): scatter gratitude-bg items via precomputed inline positions717c68d3 feat(fork): add ambient gratitude background layer (UI1 GREEN)3fe41e35 test(UI1): RED tests for gratitude ambient background on StartForkViewc5b8638f feat(router): GREEN - settings route moves to /creator-studio/settings with permanent redirect (#UI2)8794a1bd test(router): RED - settings route moves to /creator-studio/settings with permanent redirect (#UI2)6f0f9d46 Offline mode: when reconnect attempts run out, the app now falls back to a slow keep-alive retry and keeps showing “Connecting” instead of giving up9ea46406 Schema-drift gate: fixed two false positives that were flagging every private table as a destructive drop, and added a tombstone allowlist — unblocks the staging schema publishb095a80d Schema migrations: the migration runner now really applies and records migrations against SpacetimeDB, plus a drift check that catches an un-migrated schema change4353fac6 STDB writes: failed writes are now LOUD instead of silently resolving to an empty result6581d3b1 Hooks: stop running the test suite in git hooks on this branchae03b328 Creator Studio: creator-focused sidenav with separate Studio and Account lanesa2b6dfbe Boot: removed the static initial-splash gate entirely — no full-page loading covered1c4c51 Security: closed anonymous read access to magic-link nonces and Stripe subscriptionsc953f9fe Tests: resolved 5 inherited test failures on staging-next5af18d35 CI: allowlist 4 write-on-use tables in the staging empty-table gate7126bcdd CI: publish the staging schema only on pushes to staging-next66e0c50a Schema-migration ledger — slice 2 integrated onto staging-next4b7b0e27 Sign-in: drop the preview-token stranding path, keep the tunnel's anon builde4b676eb Tests: remove hook-scope tests obsoleted by the no-tests-in-git-hooks change (#580)b2d8ab25 Offline mode: re-landed the full offline-mode line (dev/live-tunnel) onto staging-next77282048 Schema-migration ledger — GREEN slice 1: pure kernel, CLI + STDB driver, schema_migrations table + record_migration reducer (#582)285626a9 Top-level 404 handler merged onto staging-next7a1d6671 Router: add top-level 404 handler with NotFoundView0302e51c Hooks: stop running vitest in git hooks + add regression guard (#580)697686f8 Schema-migration ledger kernel — RED slice 1 tests + stub (#579)a702e181 CI: allowlist the mutation_results empty-table gate on staging536ef08 Live E2E proving periodic re-flush recovers a stuck outbox writec70b038 Hotfix: exempt dev-auth-bypass sessions from the no-users-row grace timer3196db4 Hotfix: close stranded-legacy-untagged-anon-token gap in the login-hang fix7c71227 Hotfix: login-hang fix (signed-in-anon-socket authError + sticky-anon token guard)470d432 Docs: staging/CI gotchas — dead AS3 runner, promote-head staleness, outbox re-flush, npm-shim hangd7ea726 Docs: syncable contract spec for the local-first plan975e146 Docs: preserve local-first inversion design of record3e4d5d8 Backmerge of origin/main (login-hang hotfix) into staging-next49b9788 Merged PRs #556, #576, #577, #578