You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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.
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):
Modular backend: abstract messaging so it swaps Supabase↔.NET (EF Core) by env var #266 — Modular backend: abstract messaging so it swaps Supabase↔.NET (EF Core) by env var. The MessagingProvider interface + NEXT_PUBLIC_BACKEND_PROVIDER switch + a Supabase impl + a skeleton .NET/EF impl with the messaging RLS rules re-expressed as an explicit app-side auth contract. The first real step — proves the seam on one domain.
Migration anchor: swap ScriptHammer's Supabase backend for ASP.NET Core + EF Core (.NET), KDG as reference #265 — Migration anchor: swap the whole Supabase backend for ASP.NET Core + EF Core (.NET), KDG as reference. The full paradigm migration: 75 RLS policies → EF filters/authorization handlers, 12 edge functions → controllers/middleware, 18 realtime files → SignalR, 81 Supabase-client files. The flagship — "we migrated our entire production backend."
#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.
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.
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.
What "enterprise-ready" means here
The repo's own
eval-*labels name the gap precisely. ScriptHammer today reads aseval-3— "hard backend task on a template-framed repo." The goal iseval-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:
SECURITY DEFINERmembership 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.When 1–4 hold, ScriptHammer clears the
eval-3 → eval-1bar 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):MessagingProviderinterface +NEXT_PUBLIC_BACKEND_PROVIDERswitch + a Supabase impl + a skeleton .NET/EF impl with the messaging RLS rules re-expressed as an explicit app-side auth contract. The first real step — proves the seam on one domain.Production operations posture:
Already met (the correctness floor):
Sequencing (recommendation, not a commitment)
#266 → #265is 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