Skip to content

[EPIC] Enterprise-ready: make ScriptHammer a repo you can build real work on (eval-3 → eval-1) #280

Description

@TortoiseWolfe

Umbrella / epic. This is the standing tracking issue for making ScriptHammer enterprise-ready. It defines the bar, tracks the child work, and records the constraint driving it.

Blocking constraint (owner): "I can't use this repo for real work until it's enterprise-ready." This arc gates real production use of ScriptHammer. Until the bar below is met, ScriptHammer is a shipping template + reference app, not a foundation the owner will build real work on.

What "enterprise-ready" means here

The repo's own eval-* labels name the gap precisely. ScriptHammer today reads as eval-3 — "hard backend task on a template-framed repo." The goal is eval-1 — "established enterprise OSS or enterprise-clone repo": something a company would adopt, staff, and maintain in production. The prior repositioning work (#250, #152 — both CLOSED) fixed the framing/narrative; this arc fixes the engineering substance so the framing is earned, not asserted.

Concretely, "enterprise-ready" = all of:

  1. Swappable, non-vendor-locked backend. The app is not hard-wired to Supabase. A team can run it on a backend they control (ASP.NET Core + EF Core, KDG-style) by configuration, with the security model preserved. → Modular backend: abstract messaging so it swaps Supabase↔.NET (EF Core) by env var #266, Migration anchor: swap ScriptHammer's Supabase backend for ASP.NET Core + EF Core (.NET), KDG as reference #265.
  2. Security model that survives the swap. The 75 RLS policies / SECURITY DEFINER membership helpers / 15-min edit window / no-delete ban are re-expressed as an explicit, tested app-side authorization contract on any backend — no rule silently dropped. → Modular backend: abstract messaging so it swaps Supabase↔.NET (EF Core) by env var #266, Migration anchor: swap ScriptHammer's Supabase backend for ASP.NET Core + EF Core (.NET), KDG as reference #265.
  3. Production operations posture. Container hygiene, secrets handling, observability (Sentry live), health/self-heal, and a documented deploy story that isn't "GitHub Pages + one shared Supabase project." → Docker best-practices audit: 0 high / 4 med / 2 low (Bret Fisher rubric) #275 (docker audit), Sentry DSN flip ([Gap-Audit] 044 Error Handler Integrations: Sentry/LogRocket integration + PII scrubbing + session replay #45), ops backlog.
  4. Compliance + data-integrity already met. GDPR export/erasure, audit logging, payment integrity, messaging reliability — the correctness floor a real product needs. → DONE (cluster PayPal payments are double-counted in admin revenue #239–248 shipped 2026-07-13, PRs fix(#239,#240,#241,#242): close the security-critical auth/payments bug cluster #276fix(#244,#245,#246): make concurrent + offline message delivery reliable #279).

When 1–4 hold, ScriptHammer clears the eval-3 → eval-1 bar and the owner can build real work on it.

Child tickets (the tracked work)

Backend independence — the core of the bar (eval-3, tied to the closed #106 arc):

Production operations posture:

Already met (the correctness floor):

Sequencing (recommendation, not a commitment)

#266 → #265 is the natural order: prove the provider seam on the messaging domain first (bounded, one domain, the security-contract problem in miniature), then do the full backend migration with that pattern established. #275 + Sentry are independent ops work that can slot in anytime. None of this conflicts with the Combined Arms (048) game arc — 048's match server is a separate Node/TS deployable with no Supabase schema changes, so the two arcs run independently.

Relationship to the roadmap (#115)

This arc is not the current active arc (#115 points at 048 Combined Arms). This umbrella exists so the enterprise bar is tracked and visible regardless of what the active arc is — the owner's constraint (real work is blocked until this is met) means it should be scheduled deliberately, not left implicit. When the owner wants to prioritize it, promote #266 into the roadmap's "next 3 sessions."

How to use this issue

  • New enterprise-gating work → add a child checkbox here + link the ticket.
  • A child ships → check it, note the PR.
  • When items 1–4 under "What enterprise-ready means" all hold → the bar is met; close this umbrella and the repo is cleared for the owner's real work.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enterpriseEnterprise-readiness umbrella + gating work (the eval-3 → eval-1 arc)epicUmbrella / tracking issue with child tickets

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions