Skip to content

Consolidate M4–M10 (supersedes #30–#40) - #41

Merged
Satelink-Protocol merged 27 commits into
launch-mvpfrom
feature/m10-beta-readiness-hardening
Nov 10, 2026
Merged

Satelink-Protocol merged 27 commits into
launch-mvpfrom
feature/m10-beta-readiness-hardening

Conversation

@Satelink-Protocol

Copy link
Copy Markdown
Contributor

Consolidates the 11-deep stack #30 → #40 into one merge into launch-mvp. Feature freeze: no new features. The only new commit is a test-isolation fix (see below).

launch-mvp (c71ec8d, PR #29 merge) is an ancestor of this head. Every superseded PR head below is an ancestor of this head (merge-base --is-ancestor, checked 2026-11-10).

Superseded PRs

PR Branch Head Report label
#30 feature/m4-3-upi-security-remediation e4babe6 M4.3 UPI security remediation
#31 feature/m4-3-1-review-remediation 03bf518 M4.3.1 review remediation
#32 feature/m4-3-2-financial-integrity 62cb0a3 M4.3.2 financial integrity
#33 feature/m4-3-3-provider-verification 4c54711 M4.3.3 provider verification
#34 feature/m4-3-4-contract-decision 2c930dd M4.3.4 contract decision (Outcome B)
#35 feature/m5-telegram-operational-workflows 43cf05a M5 Telegram workflows
#36 feature/m6-organiser-workspace 66ad026 M6 organiser workspace / staff / QR check-in
#37 feature/m7-attendee-experience 5453ab1 M7 attendee discovery
#38 feature/m8-realtime-notifications 0b30221 M8 notifications
#39 feature/m9-testing-security-review b8c82c5 M9 E2E / security review
#40 feature/m10-beta-readiness-hardening 142cc62 → this head M10 beta readiness

Added on top of #40's last CI'd head: ea0f5e5 (preview reviewer env detection; previously local-only) and 02bfdba (e2e fix).

Migrations new to launch-mvp

(015 is already on launch-mvp via #29. There is no 021.)

# Purpose Touches existing rows?
016 payment_audits append-only trigger (blocks UPDATE/DELETE) + active-hold index No
017 Index for per-tier active payment holds No
018 Telegram link tokens, notification preferences, quiet hours No (additive)
019 Event-scoped staff (audit/revocation columns on event_team), tickets table, QR check-in Yes: backfills a tickets row for each existing booking (INSERT … SELECT)
020 saved_events + discovery indexes No

Why CI was red on #37–#40

One test, e2e/admin-responsive.spec.js "moderation", failed at all 5 viewports with a strict-mode violation. multi-role-acceptance.spec.js (added in M9) submits real venue leads in the desktop and mobile projects into the shared e2e DB, so the "Status of venue lead" locator matched 3 rows. This was a test-isolation bug, not a product bug. Fix: target the seeded lead's row (02bfdba).

Tests (full suites, CI job lint, unit, e2e)

CI runs npm run lint, the full npm test and the full npm run test:e2e (all Playwright projects: desktop, mobile, responsive × 5 viewports). See the CI result comment below for final counts.

  • Local pre-push on 02bfdba: lint 153/153 files OK; npm test 695 tests, 693 pass, 0 fail, 2 skipped.
  • Previous CI on 142cc62: e2e 182 total = 166 passed, 11 skipped, 5 failed (the single test above).

Rollback

Revert the merge commit on launch-mvp (revert -m 1 <merge-sha>). Migrations 016–020 are additive. Leaving them applied after a code revert is safe, because the old code ignores the new tables, columns, indexes and the audit trigger.

🤖 Generated with Claude Code

Satelink-Protocol and others added 27 commits November 3, 2026 12:04
…ings (SEC-01 - DB-01)

- SEC-01: Extract Base64 response for PhonePe S2S webhook signature calculation
- FIN-01: Enforce strict webhook amount verification and dispute ledger transition
- DATA-01: Gate checkout with sign-in redirect, store guestToken, and add claim API
- CONCUR-01: Hold unexpired intent capacity and re-verify inventory at confirmation
- AUTH-01: Enforce session and guestToken authorization on payment status API
- QR-01: Preserve ISO 18004 Dark Module at (size - 8, 8) and fix V8 block interleaving
- UI-01: Add responsive media queries to isolate mobile intent and desktop QR
- LOG-01: Namespace PhonePe rate limits to phonepe_hook: and phonepe_bad_sig:
- DB-01: Add migration 016 with append-only database trigger on payment_audits
- Update test suite with 8 dedicated M4.3 audit tests (453/453 tests passing)
- Update audit reports and project state docs
… on PR #30

- REV-01: Correct ISO/IEC 18004 QR alignment patterns, RS polynomial generator, Table 12 Format Info, and BCH(18,6) Version Info across V1-V14 with independent jsQR validation
- REV-02: Prevent duplicate active bookings at intent creation, confirmation locked tx, guest claims, and handle SQLSTATE 23505 via defensive savepoints
- REV-03: Enable operational recovery for refund_pending payments, isolate gateway calls outside holding transactions, and support manual finance reconciliation
- REV-04: Enforce strict safe positive integer paise amount matching, exact currency match, and merchant association, preventing underpayment attacks
- REV-05: Expand QR capacity to V14 (362B), enforce byte-length checks, and return HTTP 400 QrPayloadTooLargeError without truncating payment details
- REV-06: Strictly verify webhook merchantId against configured identity, rejecting missing or mismatched IDs with 401
- REV-07: Add additive migration 017 with idx_payments_active_tier_holds index, verified via EXPLAIN Bitmap Index Scan
- docs: update UPI_SECURITY_AUDIT.md, UPI_PROVIDER_READINESS.md, and PROJECT_STATE.md with M4.3.1 remediation matrix
…nt identity, secure manual refund reconciliation & state transition verification
…heck-in

- Implement comprehensive organiser workspace: event overview, readiness checklist, ticket inventory & capacity, attendee lookup & cancellations, and event announcements.
- Add event-scoped staff roles and permissions: organiser, event_manager, door_staff, guest_list_manager, assistant with tokenized invites, immediate access revocation, and audit logging.
- Build server-authoritative QR ticket engine: HMAC-SHA256 signed payloads (NLZ1:<ticketCode>:<HMAC>) bound to event and confirmed booking without attendee PII leakage.
- Deliver mobile-first door check-in scanner: camera BarcodeDetector/canvas detection, manual ticket code fallback, atomic duplicate scan and replay prevention, attendance KPIs, and scan history.
- Add database migration 019: event_team audit enhancement, event_staff_invites, tickets, ticket_scans, event_announcements, and existing booking ticket backfill.
- Comprehensive automated test suite in test/m6-organiser-workspace.test.js with 15/15 passing tests and 642 passing regression tests.
- Update docs/PROJECT_STATE.md and add arch/ORGANISER_WORKSPACE_AND_QR_CHECKIN.md.
…dit, mobile tap target remediation and preview automation runbook
multi-role-acceptance.spec.js (M9) submits real venue leads in the desktop
and mobile projects; with one shared e2e database those rows reach the
responsive project, so the 'Status of venue lead' combobox matched 3 rows
and failed strict mode at every viewport. Target the seeded lead's row.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@vercel

vercel Bot commented Nov 10, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
strangersmeetup Ready Ready Preview Nov 10, 2026 9:34am UTC

@Satelink-Protocol

Copy link
Copy Markdown
Contributor Author

CI green on head 02bfdba — run https://github.com/Jakuraa/StrangersMeetup/actions/runs/42791819075

  • Lint: 153/153 files OK
  • npm test (full): 695 tests · 693 pass · 0 fail · 2 skipped
  • npm run test:e2e (full, all projects): 182 tests · 171 passed · 11 skipped · 0 failed
    • per project: desktop 66, mobile 66, responsive 50 (5 viewports)
    • the 11 skips are viewport-gated by design (mobile-only specs on desktop, one desktop-only spec on mobile)
    • vs the 157 baseline: the count went up by 25 (M5–M9 added specs). The '14' in recent reports came from targeted spec runs, not the CI suite.

@Satelink-Protocol
Satelink-Protocol merged commit 771f6e1 into launch-mvp Nov 10, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant