Break v0.2.0 roadmap into subversions (0.2.1–0.2.3)
Some checks failed
CI/CD / detect-changes (pull_request) Successful in 4s
CI/CD / test-frontend (pull_request) Successful in 5s
CI/CD / test-go-pg (pull_request) Failing after 2m30s
CI/CD / test-sqlite (pull_request) Successful in 2m54s
CI/CD / build-and-deploy (pull_request) Has been skipped

v0.2.0: RBAC + settings cascade (done)
v0.2.1: default surface routing + ICD
v0.2.2: event bus + trigger system
v0.2.3: SDK stabilization + task extension

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-03-26 18:02:28 +00:00
parent 75a66dc6b9
commit e2196d89b2

View File

@@ -31,28 +31,39 @@ platform that extensions build on.
| 9. CI/CD + Dockerfile | ✅ | Single unified image, FE/BE split removed, DB names updated, k8s var alignment fixes (resource quantities, image name, rollout deployment name) | | 9. CI/CD + Dockerfile | ✅ | Single unified image, FE/BE split removed, DB names updated, k8s var alignment fixes (resource quantities, image name, rollout deployment name) |
| 10. Smoke test | ✅ | K8s deploy live at switchboard.gobha.ai/test, nginx BASE_PATH fixed, login→admin flow verified, branding updated | | 10. Smoke test | ✅ | K8s deploy live at switchboard.gobha.ai/test, nginx BASE_PATH fixed, login→admin flow verified, branding updated |
## v0.2.0 — SDK & Triggers ## v0.2.x — SDK & Triggers
The contract that extensions build against. Three trigger primitives, The contract that extensions build against. Three trigger primitives,
SDK stabilization, and the first rebuilt extension (tasks). SDK stabilization, and the first rebuilt extension (tasks).
### v0.2.0 — RBAC + Settings Cascade (complete)
| Step | Status | Description | | Step | Status | Description |
|------|--------|-------------| |------|--------|-------------|
| Admin → RBAC group | ✅ | `surface.admin.access` permission + Admins system group replaces `role == "admin"` checks. Admin bypass removed from permission middleware. | | Admin → RBAC group | ✅ | `surface.admin.access` permission + Admins system group replaces `role == "admin"` checks. Admin bypass removed from permission middleware. |
| Settings cascade | ✅ | `user_overridable` flag, three-tier resolution (global → team → user), team settings API | | Settings cascade | ✅ | `user_overridable` flag, three-tier resolution (global → team → user), team settings API |
| ~~Settings override model~~ | ✅ | Shipped with settings cascade above |
### v0.2.1 — Default Surface + ICD
| Step | Status | Description |
|------|--------|-------------|
| Default surface routing | 🔲 | `/` redirects to configurable default surface. No surfaces → admin. First install becomes default. Changeable in admin settings. |
| ICD (API contract) | 🔲 | OpenAPI spec from registered routes, kernel-only endpoint docs | | ICD (API contract) | 🔲 | OpenAPI spec from registered routes, kernel-only endpoint docs |
### v0.2.2 — Event Bus + Triggers
| Step | Status | Description |
|------|--------|-------------|
| Event bus subscriptions | 🔲 | Extensions register match expressions at install time |
| Trigger system | 🔲 | Time (cron), webhook (inbound HTTP), event (bus subscription) | | Trigger system | 🔲 | Time (cron), webhook (inbound HTTP), event (bus subscription) |
### v0.2.3 — SDK + Task Extension
| Step | Status | Description |
|------|--------|-------------|
| SDK stabilization | 🔲 | `sb.slots()`, `sb.actions`, `sb.api.ext()`, `sb.storage`, theme tokens, primitive UI | | SDK stabilization | 🔲 | `sb.slots()`, `sb.actions`, `sb.api.ext()`, `sb.storage`, theme tokens, primitive UI |
| Task extension | 🔲 | First proof-of-concept — full task system rebuilt as Starlark extension using triggers + ext_data + notifications |
### Remaining v0.2.0 features
- **Event bus subscriptions**: extensions register match expressions at install time
- **Task extension**: first proof-of-concept — full task system rebuilt as a
Starlark extension using triggers + ext_data + notifications
- ~~**Settings override model**~~: ✅ shipped with settings cascade above
- **Default surface routing**: `/` redirects to configurable default surface.
No surfaces installed → admin surface is default. First surface installed
becomes default. Changeable in admin settings.
## v0.3.0 — Editor Surface ## v0.3.0 — Editor Surface