chore(domain): yourplatform.com → breakpilot.com
Apply the platform-domain decision (2026-05-18) to every manifest, overlay, DNS template, README, and script in this repo. Refs: M1.1
This commit is contained in:
@@ -11,7 +11,7 @@ jobs:
|
|||||||
runs-on: docker
|
runs-on: docker
|
||||||
environment:
|
environment:
|
||||||
name: production # Gitea Environments — requires sign-off per branch protection
|
name: production # Gitea Environments — requires sign-off per branch protection
|
||||||
url: https://yourplatform.com
|
url: https://breakpilot.com
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
with: { fetch-depth: 0 }
|
with: { fetch-depth: 0 }
|
||||||
@@ -22,7 +22,7 @@ jobs:
|
|||||||
|
|
||||||
- name: verify stage soak (>= 24h on this image)
|
- name: verify stage soak (>= 24h on this image)
|
||||||
run: |
|
run: |
|
||||||
IMG=registry.yourplatform.com/${{ github.event.repository.name }}:env-stage
|
IMG=registry.breakpilot.com/${{ github.event.repository.name }}:env-stage
|
||||||
SOAK_SECONDS=$(orca image-age --env=stage --image $IMG)
|
SOAK_SECONDS=$(orca image-age --env=stage --image $IMG)
|
||||||
if [ "$SOAK_SECONDS" -lt 86400 ]; then
|
if [ "$SOAK_SECONDS" -lt 86400 ]; then
|
||||||
echo "Stage soak only $SOAK_SECONDS s, < 24h. Aborting."
|
echo "Stage soak only $SOAK_SECONDS s, < 24h. Aborting."
|
||||||
@@ -34,12 +34,12 @@ jobs:
|
|||||||
- name: re-tag image as semver + env-prod
|
- name: re-tag image as semver + env-prod
|
||||||
uses: docker/login-action@v3
|
uses: docker/login-action@v3
|
||||||
with:
|
with:
|
||||||
registry: registry.yourplatform.com
|
registry: registry.breakpilot.com
|
||||||
username: ${{ secrets.REGISTRY_USER }}
|
username: ${{ secrets.REGISTRY_USER }}
|
||||||
password: ${{ secrets.REGISTRY_PASS }}
|
password: ${{ secrets.REGISTRY_PASS }}
|
||||||
|
|
||||||
- run: |
|
- run: |
|
||||||
IMG=registry.yourplatform.com/${{ github.event.repository.name }}
|
IMG=registry.breakpilot.com/${{ github.event.repository.name }}
|
||||||
docker pull $IMG:env-stage
|
docker pull $IMG:env-stage
|
||||||
docker tag $IMG:env-stage $IMG:v${{ steps.v.outputs.version }}
|
docker tag $IMG:env-stage $IMG:v${{ steps.v.outputs.version }}
|
||||||
docker tag $IMG:env-stage $IMG:env-prod
|
docker tag $IMG:env-stage $IMG:env-prod
|
||||||
|
|||||||
+1
-1
@@ -86,4 +86,4 @@ When reviewing, check in this order:
|
|||||||
|
|
||||||
## Questions
|
## Questions
|
||||||
|
|
||||||
`#engineering` channel · `oncall@yourplatform.com` · or open a PR with a `[WIP]` prefix and ask in the description.
|
`#engineering` channel · `oncall@breakpilot.com` · or open a PR with a `[WIP]` prefix and ask in the description.
|
||||||
|
|||||||
@@ -35,7 +35,7 @@ The single source of truth for which container runs on which VM in which environ
|
|||||||
│ ├── vm-data.toml m2.medium, private, data plane (scale driver)
|
│ ├── vm-data.toml m2.medium, private, data plane (scale driver)
|
||||||
│ └── stage.toml m2.small, public IP, ephemeral
|
│ └── stage.toml m2.small, public IP, ephemeral
|
||||||
├── dns/
|
├── dns/
|
||||||
│ └── yourplatform.com.zone.template PowerDNS zone — body lands in M0.3
|
│ └── breakpilot.com.zone.template PowerDNS zone — body lands in M0.3
|
||||||
├── cluster.toml.tmpl # Cluster-level config (acme_email, backup, ai); rendered per env
|
├── cluster.toml.tmpl # Cluster-level config (acme_email, backup, ai); rendered per env
|
||||||
├── scripts/
|
├── scripts/
|
||||||
│ ├── validate.sh # `make validate`
|
│ ├── validate.sh # `make validate`
|
||||||
@@ -100,7 +100,7 @@ Until the milestone PR lands, the stub still parses and `make validate` stays gr
|
|||||||
## Observability
|
## Observability
|
||||||
|
|
||||||
- Traces, logs, metrics: [SigNoz](https://signoz.meghsakha.com) — service name per individual container
|
- Traces, logs, metrics: [SigNoz](https://signoz.meghsakha.com) — service name per individual container
|
||||||
- On-call: `oncall@yourplatform.com` · runbooks at `platform/docs/runbooks/`
|
- On-call: `oncall@breakpilot.com` · runbooks at `platform/docs/runbooks/`
|
||||||
|
|
||||||
## Contributing
|
## Contributing
|
||||||
|
|
||||||
|
|||||||
+2
-2
@@ -7,11 +7,11 @@
|
|||||||
[cluster]
|
[cluster]
|
||||||
name = "breakpilot-${ENV}"
|
name = "breakpilot-${ENV}"
|
||||||
domain = "${DOMAIN}"
|
domain = "${DOMAIN}"
|
||||||
acme_email = "oncall@yourplatform.com"
|
acme_email = "oncall@breakpilot.com"
|
||||||
|
|
||||||
[ai]
|
[ai]
|
||||||
provider = "litellm"
|
provider = "litellm"
|
||||||
endpoint = "https://llm.yourplatform.com"
|
endpoint = "https://llm.breakpilot.com"
|
||||||
model = "gpt-oss-120b"
|
model = "gpt-oss-120b"
|
||||||
api_key = "${secrets.LITELLM_API_KEY}"
|
api_key = "${secrets.LITELLM_API_KEY}"
|
||||||
|
|
||||||
|
|||||||
@@ -1,11 +1,11 @@
|
|||||||
; PowerDNS authoritative zone for yourplatform.com.
|
; PowerDNS authoritative zone for breakpilot.com.
|
||||||
; Source-of-truth: this file. Synced into PowerDNS by M0.3 deploy step.
|
; Source-of-truth: this file. Synced into PowerDNS by M0.3 deploy step.
|
||||||
; Real records (apex, wildcards, A, MX, SPF/DKIM/DMARC) land with M0.3.
|
; Real records (apex, wildcards, A, MX, SPF/DKIM/DMARC) land with M0.3.
|
||||||
|
|
||||||
$ORIGIN yourplatform.com.
|
$ORIGIN breakpilot.com.
|
||||||
$TTL 60
|
$TTL 60
|
||||||
|
|
||||||
@ IN SOA ns1.yourplatform.com. oncall.yourplatform.com. (
|
@ IN SOA ns1.breakpilot.com. oncall.breakpilot.com. (
|
||||||
; serial — bumped by CI on every commit
|
; serial — bumped by CI on every commit
|
||||||
2026051800
|
2026051800
|
||||||
3600 ; refresh
|
3600 ; refresh
|
||||||
@@ -14,7 +14,7 @@ $TTL 60
|
|||||||
60 ; minimum TTL
|
60 ; minimum TTL
|
||||||
)
|
)
|
||||||
|
|
||||||
@ IN NS ns1.yourplatform.com.
|
@ IN NS ns1.breakpilot.com.
|
||||||
@ IN NS ns2.yourplatform.com.
|
@ IN NS ns2.breakpilot.com.
|
||||||
|
|
||||||
; A records, wildcards, mail/spf/dkim/dmarc land in M0.3
|
; A records, wildcards, mail/spf/dkim/dmarc land in M0.3
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
|
|
||||||
[[service]]
|
[[service]]
|
||||||
name = "admin-compliance"
|
name = "admin-compliance"
|
||||||
image = "registry.yourplatform.com/admin-compliance:env-stage"
|
image = "registry.breakpilot.com/admin-compliance:env-stage"
|
||||||
port = 3002
|
port = 3002
|
||||||
|
|
||||||
[service.placement]
|
[service.placement]
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
|
|
||||||
[[service]]
|
[[service]]
|
||||||
name = "ai-compliance-sdk"
|
name = "ai-compliance-sdk"
|
||||||
image = "registry.yourplatform.com/ai-compliance-sdk:env-stage"
|
image = "registry.breakpilot.com/ai-compliance-sdk:env-stage"
|
||||||
port = 3001
|
port = 3001
|
||||||
|
|
||||||
[service.placement]
|
[service.placement]
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
|
|
||||||
[[service]]
|
[[service]]
|
||||||
name = "backend-compliance"
|
name = "backend-compliance"
|
||||||
image = "registry.yourplatform.com/backend-compliance:env-stage"
|
image = "registry.breakpilot.com/backend-compliance:env-stage"
|
||||||
port = 3000
|
port = 3000
|
||||||
|
|
||||||
[service.placement]
|
[service.placement]
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
|
|
||||||
[[service]]
|
[[service]]
|
||||||
name = "certifai-dashboard"
|
name = "certifai-dashboard"
|
||||||
image = "registry.yourplatform.com/certifai:env-stage"
|
image = "registry.breakpilot.com/certifai:env-stage"
|
||||||
port = 3000
|
port = 3000
|
||||||
|
|
||||||
[service.placement]
|
[service.placement]
|
||||||
|
|||||||
@@ -3,9 +3,9 @@
|
|||||||
|
|
||||||
[[service]]
|
[[service]]
|
||||||
name = "customer-portal"
|
name = "customer-portal"
|
||||||
image = "registry.yourplatform.com/portal:env-stage"
|
image = "registry.breakpilot.com/portal:env-stage"
|
||||||
port = 3000
|
port = 3000
|
||||||
domain = "*.stage.yourplatform.com"
|
domain = "*.stage.breakpilot.com"
|
||||||
|
|
||||||
[service.placement]
|
[service.placement]
|
||||||
node = "stage"
|
node = "stage"
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
|
|
||||||
[[service]]
|
[[service]]
|
||||||
name = "tenant-registry"
|
name = "tenant-registry"
|
||||||
image = "registry.yourplatform.com/tenant-registry:env-stage"
|
image = "registry.breakpilot.com/tenant-registry:env-stage"
|
||||||
port = 8080
|
port = 8080
|
||||||
depends_on = ["pg-app-stage"]
|
depends_on = ["pg-app-stage"]
|
||||||
|
|
||||||
@@ -16,4 +16,4 @@ memory = "512Mi"
|
|||||||
cpu = 0.25
|
cpu = 0.25
|
||||||
|
|
||||||
[service.env]
|
[service.env]
|
||||||
KEYCLOAK_ISSUER = "https://auth.yourplatform.com/realms/breakpilot-prod"
|
KEYCLOAK_ISSUER = "https://auth.breakpilot.com/realms/breakpilot-prod"
|
||||||
|
|||||||
@@ -3,9 +3,9 @@
|
|||||||
|
|
||||||
[[service]]
|
[[service]]
|
||||||
name = "customer-portal"
|
name = "customer-portal"
|
||||||
image = "registry.yourplatform.com/portal:placeholder"
|
image = "registry.breakpilot.com/portal:placeholder"
|
||||||
port = 3000
|
port = 3000
|
||||||
domain = "*.yourplatform.com"
|
domain = "*.breakpilot.com"
|
||||||
depends_on = ["tenant-registry"]
|
depends_on = ["tenant-registry"]
|
||||||
|
|
||||||
[service.placement]
|
[service.placement]
|
||||||
@@ -16,5 +16,5 @@ memory = "1Gi"
|
|||||||
cpu = 1.0
|
cpu = 1.0
|
||||||
|
|
||||||
[service.env]
|
[service.env]
|
||||||
KEYCLOAK_ISSUER = "https://auth.yourplatform.com/realms/breakpilot-prod"
|
KEYCLOAK_ISSUER = "https://auth.breakpilot.com/realms/breakpilot-prod"
|
||||||
TENANT_REGISTRY_URL = "http://tenant-registry:8080"
|
TENANT_REGISTRY_URL = "http://tenant-registry:8080"
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
name = "erpnext"
|
name = "erpnext"
|
||||||
image = "frappe/erpnext:v15"
|
image = "frappe/erpnext:v15"
|
||||||
port = 8000
|
port = 8000
|
||||||
domain = "erp.yourplatform.com"
|
domain = "erp.breakpilot.com"
|
||||||
depends_on = ["mariadb", "redis-erpnext"]
|
depends_on = ["mariadb", "redis-erpnext"]
|
||||||
|
|
||||||
[service.placement]
|
[service.placement]
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
name = "stalwart"
|
name = "stalwart"
|
||||||
image = "stalwartlabs/mail-server:latest"
|
image = "stalwartlabs/mail-server:latest"
|
||||||
port = 587
|
port = 587
|
||||||
domain = "mail.yourplatform.com"
|
domain = "mail.breakpilot.com"
|
||||||
extra_ports = ["25:25", "465:465", "587:587", "993:993"]
|
extra_ports = ["25:25", "465:465", "587:587", "993:993"]
|
||||||
|
|
||||||
[service.placement]
|
[service.placement]
|
||||||
@@ -19,4 +19,4 @@ cpu = 0.5
|
|||||||
path = "/opt/stalwart-mail"
|
path = "/opt/stalwart-mail"
|
||||||
|
|
||||||
[service.env]
|
[service.env]
|
||||||
STALWART__SERVER__HOSTNAME = "mail.yourplatform.com"
|
STALWART__SERVER__HOSTNAME = "mail.breakpilot.com"
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
|
|
||||||
[[service]]
|
[[service]]
|
||||||
name = "tenant-registry"
|
name = "tenant-registry"
|
||||||
image = "registry.yourplatform.com/tenant-registry:placeholder"
|
image = "registry.breakpilot.com/tenant-registry:placeholder"
|
||||||
port = 8080
|
port = 8080
|
||||||
|
|
||||||
[service.placement]
|
[service.placement]
|
||||||
@@ -15,6 +15,6 @@ cpu = 0.5
|
|||||||
|
|
||||||
[service.env]
|
[service.env]
|
||||||
DATABASE_URL = "${secrets.TENANT_REGISTRY_DB_URL}"
|
DATABASE_URL = "${secrets.TENANT_REGISTRY_DB_URL}"
|
||||||
KEYCLOAK_ISSUER = "https://auth.yourplatform.com/realms/breakpilot-prod"
|
KEYCLOAK_ISSUER = "https://auth.breakpilot.com/realms/breakpilot-prod"
|
||||||
KEYCLOAK_ADMIN_USER = "${secrets.KEYCLOAK_ADMIN_USER}"
|
KEYCLOAK_ADMIN_USER = "${secrets.KEYCLOAK_ADMIN_USER}"
|
||||||
KEYCLOAK_ADMIN_PASS = "${secrets.KEYCLOAK_ADMIN_PASS}"
|
KEYCLOAK_ADMIN_PASS = "${secrets.KEYCLOAK_ADMIN_PASS}"
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
|
|
||||||
[[service]]
|
[[service]]
|
||||||
name = "admin-compliance"
|
name = "admin-compliance"
|
||||||
image = "registry.yourplatform.com/admin-compliance:placeholder"
|
image = "registry.breakpilot.com/admin-compliance:placeholder"
|
||||||
port = 3002
|
port = 3002
|
||||||
depends_on = ["backend-compliance", "ai-compliance-sdk"]
|
depends_on = ["backend-compliance", "ai-compliance-sdk"]
|
||||||
|
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
|
|
||||||
[[service]]
|
[[service]]
|
||||||
name = "ai-compliance-sdk"
|
name = "ai-compliance-sdk"
|
||||||
image = "registry.yourplatform.com/ai-compliance-sdk:placeholder"
|
image = "registry.breakpilot.com/ai-compliance-sdk:placeholder"
|
||||||
port = 3001
|
port = 3001
|
||||||
depends_on = ["pg-app", "qdrant", "litellm"]
|
depends_on = ["pg-app", "qdrant", "litellm"]
|
||||||
|
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
|
|
||||||
[[service]]
|
[[service]]
|
||||||
name = "backend-compliance"
|
name = "backend-compliance"
|
||||||
image = "registry.yourplatform.com/backend-compliance:placeholder"
|
image = "registry.breakpilot.com/backend-compliance:placeholder"
|
||||||
port = 3000
|
port = 3000
|
||||||
depends_on = ["pg-app", "minio"]
|
depends_on = ["pg-app", "minio"]
|
||||||
|
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
|
|
||||||
[[service]]
|
[[service]]
|
||||||
name = "certifai-dashboard"
|
name = "certifai-dashboard"
|
||||||
image = "registry.yourplatform.com/certifai:placeholder"
|
image = "registry.breakpilot.com/certifai:placeholder"
|
||||||
port = 3000
|
port = 3000
|
||||||
depends_on = ["mongodb", "litellm"]
|
depends_on = ["mongodb", "litellm"]
|
||||||
|
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
name = "gitea"
|
name = "gitea"
|
||||||
image = "gitea/gitea:1.22"
|
image = "gitea/gitea:1.22"
|
||||||
port = 3000
|
port = 3000
|
||||||
domain = "git.yourplatform.com"
|
domain = "git.breakpilot.com"
|
||||||
|
|
||||||
[service.placement]
|
[service.placement]
|
||||||
node = "vm-edge"
|
node = "vm-edge"
|
||||||
@@ -22,4 +22,4 @@ USER_UID = "1000"
|
|||||||
USER_GID = "1000"
|
USER_GID = "1000"
|
||||||
GITEA__database__DB_TYPE = "sqlite3"
|
GITEA__database__DB_TYPE = "sqlite3"
|
||||||
GITEA__database__PATH = "/data/gitea/gitea.db"
|
GITEA__database__PATH = "/data/gitea/gitea.db"
|
||||||
GITEA__server__ROOT_URL = "https://git.yourplatform.com"
|
GITEA__server__ROOT_URL = "https://git.breakpilot.com"
|
||||||
|
|||||||
@@ -19,4 +19,4 @@ DB_CONNECTION_URI = "${secrets.INFISICAL_DB_URI}"
|
|||||||
REDIS_URL = "redis://redis-infisical:6379"
|
REDIS_URL = "redis://redis-infisical:6379"
|
||||||
ENCRYPTION_KEY = "${secrets.INFISICAL_ENCRYPTION_KEY}"
|
ENCRYPTION_KEY = "${secrets.INFISICAL_ENCRYPTION_KEY}"
|
||||||
AUTH_SECRET = "${secrets.INFISICAL_AUTH_SECRET}"
|
AUTH_SECRET = "${secrets.INFISICAL_AUTH_SECRET}"
|
||||||
SITE_URL = "https://infisical.yourplatform.com"
|
SITE_URL = "https://infisical.breakpilot.com"
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
name = "keycloak"
|
name = "keycloak"
|
||||||
image = "quay.io/keycloak/keycloak:26.0"
|
image = "quay.io/keycloak/keycloak:26.0"
|
||||||
port = 8443
|
port = 8443
|
||||||
domain = "auth.yourplatform.com"
|
domain = "auth.breakpilot.com"
|
||||||
depends_on = ["pg-keycloak"]
|
depends_on = ["pg-keycloak"]
|
||||||
|
|
||||||
[service.placement]
|
[service.placement]
|
||||||
@@ -19,7 +19,7 @@ cpu = 1.0
|
|||||||
[service.env]
|
[service.env]
|
||||||
KC_DB = "postgres"
|
KC_DB = "postgres"
|
||||||
KC_DB_URL = "${secrets.KC_DB_URL}"
|
KC_DB_URL = "${secrets.KC_DB_URL}"
|
||||||
KC_HOSTNAME = "auth.yourplatform.com"
|
KC_HOSTNAME = "auth.breakpilot.com"
|
||||||
KC_PROXY_HEADERS = "xforwarded"
|
KC_PROXY_HEADERS = "xforwarded"
|
||||||
KC_HEALTH_ENABLED = "true"
|
KC_HEALTH_ENABLED = "true"
|
||||||
JAVA_OPTS_APPEND = "-Xms1g -Xmx1500m"
|
JAVA_OPTS_APPEND = "-Xms1g -Xmx1500m"
|
||||||
|
|||||||
Reference in New Issue
Block a user