Deployment policy: CEOs deploy to staging only, never tag production
Both DocFast and SnapAPI SKILL.md updated with mandatory deployment rules. Only investor can approve production releases.
This commit is contained in:
parent
f872a71e42
commit
c984f260dd
8 changed files with 172 additions and 29 deletions
|
|
@ -2,25 +2,26 @@
|
|||
"phase": 1,
|
||||
"phaseLabel": "Build Production-Grade Product",
|
||||
"status": "launch-ready",
|
||||
"product": "DocFast — HTML/Markdown to PDF API",
|
||||
"currentPriority": "All systems operational. Email working via mail.cloonar.com. Focus on growth and improvements. DO NOT touch SMTP infrastructure.",
|
||||
"product": "DocFast \u2014 HTML/Markdown to PDF API",
|
||||
"currentPriority": "v0.4.0 deployed. Free tier removed, public demo endpoint live. Focus on growth.",
|
||||
"ownerDirectives_PRIORITY": "Process these IN ORDER. Do not skip.",
|
||||
"ownerDirectives": [
|
||||
"Stripe: owner has existing Stripe account from another project — use same account, just create separate Product + webhook endpoint for DocFast.",
|
||||
"Stripe Product ID for DocFast: prod_TygeG8tQPtEAdE — webhook handler must filter by this product_id to ignore events from other projects on the same Stripe account.",
|
||||
"OFF-SITE BACKUPS: BorgBackup installed and running locally. Need Hetzner Storage Box for true off-site. Ask investor to provision one (~€3/mo for 100GB).",
|
||||
"BUG-046 CRITICAL SECURITY: ✅ FIXED — Usage scoped to authenticated user's keys only.",
|
||||
"BUG-047: ✅ FIXED — Copy button added to Pro key success page.",
|
||||
"BUG-048: ✅ FIXED — Change email links fixed.",
|
||||
"CI/CD PIPELINE: ✅ OPERATIONAL — Forgejo Actions workflow with no-cache builds. Push main→staging, tag v*→prod.",
|
||||
"REPRODUCIBLE INFRASTRUCTURE: ✅ DONE.",
|
||||
"PRO PLAN LIMITS: ✅ DONE — 5,000 PDFs/month at €9/mo. Landing page, JSON-LD, Stripe all consistent.",
|
||||
"STATUS PAGE: ✅ DONE — Styled /status page live.",
|
||||
"SUPPORT EMAIL LIVE: ✅ DONE — support@docfast.dev in FreeScout.",
|
||||
"BUG-049 HIGH: ✅ FIXED — Stripe invoicing enabled.",
|
||||
"WEBSITE TEMPLATING: ✅ DONE.",
|
||||
"BUG-070 CRITICAL: ✅ FIXED — Stripe cancellation webhook handler fixed.",
|
||||
"CI/CD CACHE FIX: ✅ FIXED (Session 56) — Added no-cache:true to docker build. Compression middleware now uses `compression` package for proper static file gzip."
|
||||
"Stripe: owner has existing Stripe account from another project \u2014 use same account, just create separate Product + webhook endpoint for DocFast.",
|
||||
"Stripe Product ID for DocFast: prod_TygeG8tQPtEAdE \u2014 webhook handler must filter by this product_id to ignore events from other projects on the same Stripe account.",
|
||||
"OFF-SITE BACKUPS: BorgBackup installed and running locally. Need Hetzner Storage Box for true off-site. Ask investor to provision one (~\u20ac3/mo for 100GB).",
|
||||
"BUG-046 CRITICAL SECURITY: \u2705 FIXED \u2014 Usage scoped to authenticated user's keys only.",
|
||||
"BUG-047: \u2705 FIXED \u2014 Copy button added to Pro key success page.",
|
||||
"BUG-048: \u2705 FIXED \u2014 Change email links fixed.",
|
||||
"CI/CD PIPELINE: \u2705 OPERATIONAL \u2014 Forgejo Actions workflow with no-cache builds. Push main\u2192staging, tag v*\u2192prod.",
|
||||
"REPRODUCIBLE INFRASTRUCTURE: \u2705 DONE.",
|
||||
"PRO PLAN LIMITS: \u2705 DONE \u2014 5,000 PDFs/month at \u20ac9/mo. Landing page, JSON-LD, Stripe all consistent.",
|
||||
"STATUS PAGE: \u2705 DONE \u2014 Styled /status page live.",
|
||||
"SUPPORT EMAIL LIVE: \u2705 DONE \u2014 support@docfast.dev in FreeScout.",
|
||||
"BUG-049 HIGH: \u2705 FIXED \u2014 Stripe invoicing enabled.",
|
||||
"WEBSITE TEMPLATING: \u2705 DONE.",
|
||||
"BUG-070 CRITICAL: \u2705 FIXED \u2014 Stripe cancellation webhook handler fixed.",
|
||||
"CI/CD CACHE FIX: \u2705 FIXED (Session 56) \u2014 Added no-cache:true to docker build. Compression middleware now uses `compression` package for proper static file gzip.",
|
||||
"FREE TIER REMOVED (v0.4.0): Demo endpoint at /v1/demo/html and /v1/demo/markdown. 5 req/hr/IP, watermarked. No signup needed."
|
||||
],
|
||||
"launchChecklist": {
|
||||
"emailVerificationReal": true,
|
||||
|
|
@ -37,7 +38,7 @@
|
|||
"rateLimitsDataBacked": true,
|
||||
"landingPageHonest": true,
|
||||
"legalPages": true,
|
||||
"legalPagesNote": "Impressum, Privacy Policy, Terms of Service — all live",
|
||||
"legalPagesNote": "Impressum, Privacy Policy, Terms of Service \u2014 all live",
|
||||
"euHostingMarketed": true,
|
||||
"jsDisabledInPdf": true,
|
||||
"zeroConsoleErrors": true,
|
||||
|
|
@ -45,7 +46,7 @@
|
|||
"securityAuditPassed": true,
|
||||
"healthEndpointComplete": true,
|
||||
"cicdPipeline": true,
|
||||
"cicdPipelineNote": "Forgejo Actions with no-cache builds. Push main→staging, tag v*→prod. Fixed session 56.",
|
||||
"cicdPipelineNote": "Forgejo Actions with no-cache builds. Push main\u2192staging, tag v*\u2192prod. Fixed session 56.",
|
||||
"reproducibleInfra": true,
|
||||
"proLimitsSet": true,
|
||||
"proLimitsNote": "5,000 PDFs/month for Pro. Enforced in usage middleware.",
|
||||
|
|
@ -56,7 +57,9 @@
|
|||
"stripeWebhookEvents": true,
|
||||
"emailDelivery": true,
|
||||
"compressionWorking": true,
|
||||
"compressionNote": "Gzip via `compression` package. Verified on production 2026-02-19."
|
||||
"compressionNote": "Gzip via `compression` package. Verified on production 2026-02-19.",
|
||||
"freeAccountsRemoved": true,
|
||||
"demoEndpointLive": true
|
||||
},
|
||||
"loadTestResults": {
|
||||
"k3s_current": {
|
||||
|
|
@ -75,7 +78,7 @@
|
|||
"email": "noreply@docfast.dev",
|
||||
"supportEmail": "support@docfast.dev (FreeScout)",
|
||||
"backups": "CNPG WAL archiving + MinIO. Daily 03:00 UTC, 7-day retention.",
|
||||
"smtp": "mail.cloonar.com:587 — MANAGED BY CLOONAR. DO NOT DEPLOY OWN MAIL SERVER. Verified working 2026-02-19."
|
||||
"smtp": "mail.cloonar.com:587 \u2014 MANAGED BY CLOONAR. DO NOT DEPLOY OWN MAIL SERVER. Verified working 2026-02-19."
|
||||
},
|
||||
"credentials": {
|
||||
"file": "/home/openclaw/.openclaw/workspace/.credentials/docfast.env",
|
||||
|
|
@ -91,9 +94,9 @@
|
|||
"HIGH": [],
|
||||
"MEDIUM": [],
|
||||
"LOW": [],
|
||||
"note": "All clear. SMTP is mail.cloonar.com:587 — tested and verified working."
|
||||
"note": "All clear. SMTP is mail.cloonar.com:587 \u2014 tested and verified working."
|
||||
},
|
||||
"blockers": [],
|
||||
"startDate": "2026-02-14",
|
||||
"sessionCount": 64
|
||||
"sessionCount": 66
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue