Add low/base/high demand forecasts, service objectives with timestamped observations, and workload operations labor for resource:tenant:coulomb:coulomb-social.
72 lines
3.3 KiB
Markdown
72 lines
3.3 KiB
Markdown
# Service objectives and usage observations — coulomb-social (2026-08)
|
||
|
||
| Field | Value |
|
||
|-------|--------|
|
||
| Resource | `resource:tenant:coulomb:coulomb-social` |
|
||
| Workplan | CSOC-WP-0005-T02 |
|
||
| Created | 2026-08-12T09:03:47Z |
|
||
| Machine record | `service-objectives-and-observations-2026-08.json` |
|
||
|
||
## Service objectives (application-owned)
|
||
|
||
These are **planning requirements** for evaluating infrastructure options and
|
||
forecast error — not external contractual SLAs.
|
||
|
||
| Domain | Objective | Notes |
|
||
|--------|-----------|--------|
|
||
| Availability | 99.5% monthly for app HTTPS | Excludes scheduled maintenance and pure dependency outages |
|
||
| Latency | `/healthz` p99 ≤ 500 ms | Synthetic-friendly |
|
||
| Latency | Auth HTML p95 ≤ 1.5 s | App home, session pages |
|
||
| Latency | Space markdown p95 ≤ 3 s | Includes Forgejo fetch; cold cache separate |
|
||
| Recovery | RPO ≤ 60 min, RTO ≤ 4 h | DB via apps-pg; content via Forgejo policy |
|
||
| Retention | DB backups ≥ 30 days | Executed by platform; app requires recoverability |
|
||
| Retention | App logs ≥ 14 days | Platform log sink when wired |
|
||
| Isolation | `tenant_id` filter + instance-per-client | No cross-tenant list/detail |
|
||
| Auth | NetKingdom OIDC; no local passwords | ADR-0001 |
|
||
| Content safety | Sanitized markdown HTML | ADR-0002 |
|
||
|
||
### Dependency inheritance (not double-owned)
|
||
|
||
| Dependency | What we inherit |
|
||
|------------|-----------------|
|
||
| apps-pg | Physical DB backup/restore mechanics |
|
||
| reef-railiance k3s | Node/pod availability |
|
||
| Forgejo | Markdown durability and git history |
|
||
| KeyCape / Authelia | Sign-in path availability |
|
||
|
||
## Observations (timestamped, non-secret)
|
||
|
||
| Measure | Value | When | Authority |
|
||
|---------|-------|------|-----------|
|
||
| public_healthz | ok | 2026-08-12T09:03:47Z | curl app.coulomb.social |
|
||
| public_landing_http_status | 200 | 2026-08-12T09:03:47Z | curl |
|
||
| demo_fixture_raw_bytes | 586 | 2026-08-12T09:03:47Z | Forgejo public raw |
|
||
| declared_replicas | 1 | 2026-08-12 | railiance-apps chart |
|
||
| declared_cpu_request_millicores | 100 | 2026-08-12 | chart |
|
||
| declared_memory_request_mi | 256 | 2026-08-12 | chart |
|
||
| declared_cpu_limit_millicores | 1000 | 2026-08-12 | chart |
|
||
| declared_memory_limit_mi | 1024 | 2026-08-12 | chart |
|
||
| media_persistence_enabled | false | 2026-08-12 | chart |
|
||
| helm_image_tag | 7fcd0cf | 2026-08-12 | helm values |
|
||
| portfolio_ready_replicas | 1 | 2026-08-11 | RESOURCE-WP-0003 discovery |
|
||
| commissioned_on | 2026-08-09 | inventory | resource-control |
|
||
| app_database_gb_logical | **unknown** | 2026-08-12 | needs apps-pg measure |
|
||
| production_member_count | **unknown** | 2026-08-12 | needs prod DB shell |
|
||
| observed_cpu/memory | **unknown** | 2026-08-12 | cluster metrics authority |
|
||
|
||
Explicit **unknown** is preferred over invented utilization. Cluster samples
|
||
belong in railiance-cluster evidence; logical DB size may be published here
|
||
once an operator can run a non-secret `pg_database_size` (or app management
|
||
command) without credentials in git.
|
||
|
||
## Forecast error measurement
|
||
|
||
After each month, compare demand proxies (T01) to:
|
||
|
||
1. request/login counts from ingress or app metrics (when exported),
|
||
2. logical DB size,
|
||
3. member/space counts from app DB,
|
||
4. operator hours from T03.
|
||
|
||
Record actuals as a dated observation append (new file or JSON revision), never
|
||
rewrite prior observations.
|