Changeset 0.29.0 (#195)

This commit is contained in:
2026-03-17 16:28:47 +00:00
parent 128cbb8174
commit 5d637d3a90
129 changed files with 9418 additions and 3016 deletions

View File

@@ -30,7 +30,7 @@ v0.9.xv0.28.7 Foundation through Platform Polish ✅
│ │
Extension Track Operations Track
│ │
v0.29.0 Starlark Sandbox v0.32.0 Multi-Replica HA
v0.29.0 Starlark Sandbox v0.32.0 Multi-Replica HA
v0.29.1 API Extensions v0.33.0 Observability
v0.29.2 DB Extensions v0.34.0 Data Portability
v0.29.3 Workflow Forms │
@@ -50,12 +50,6 @@ v0.9.xv0.28.7 Foundation through Platform Polish ✅
STT/TTS, desktop app)
```
**Target deployment (v0.50.0):** 3-node cluster, 3-node PG (patroni/cnpg),
S3 (Ceph RGW), CephFS. 510 teams × ~5 users, 4 admins, 100+ anonymous
visitors. Multi-replica backend for node-level HA.
---
## Completed: v0.28.0 — Platform Polish
Audit arc, frontend decomposition, security, infrastructure. Eight
@@ -132,32 +126,50 @@ Memory profile (measured on cluster via `kubectl top`):
Sequential. Each version builds on the previous. Delivers the package
ecosystem, workflow capabilities, and SDK-based surface architecture.
### v0.29.0 — Starlark Sandbox + Permission Model
### v0.29.0 — Starlark Sandbox + Permission Model
Server-side extension runtime. Prove the eval loop, permission pipeline,
and admin UI before adding capabilities.
Server-side extension runtime. Eval loop, permission pipeline,
pre-completion filter chain, and admin review workflow.
Depends on: v0.28.8.
**Phase 0 — Store cleanup (prerequisite):**
- [ ] `SELECT *` → explicit column lists in both store packages
- [ ] Raw SQL hunt: all `database.DB.*` outside `store/` → store methods
- [ ] CI gate: grep-enforced, zero hits
**Phase 0 — Store cleanup (prerequisite):**
- [x] Raw SQL hunt: all ~242 `database.DB.*` calls outside `store/`
migrated to store interface methods (CS0CS7b, 12 changesets)
- [x] CI green on both PG and SQLite pipelines
- [x] ICD runner: 579/580 pass, 1 expected skip
- [x] Documented exception: `events/pg_broadcast.go` (`pg_notify`,
PG-only, no store abstraction needed)
**Starlark runtime:**
- [ ] `go.starlark.net` integration (eval loop, timeout, memory ceiling)
- [ ] Permission model: manifest declarations, admin grant/revoke,
`extension_permissions` table
- [ ] Runtime enforcement: sandbox injects only granted modules
- [ ] Admin UI: permission review, grant/revoke, audit log.
Task permission management (deferred from v0.28.7).
- [ ] Extension lifecycle: `install → pending_review → approved → active`
- [ ] Initial modules: `secrets` (vault-backed), `notifications`
- [ ] `task_type: "starlark"`: sandbox execution with task context.
RBAC gate from v0.28.7 enforced.
- [ ] KB auto-injection: server-side pre-completion filter (Go built-in).
Reference implementation for the filter model Starlark mirrors.
- [ ] ICD runner: `packaging` test tier (deferred from v0.28.7)
**Phase 1 — Starlark runtime:**
- [x] Pre-completion filter chain: composable `PreCompletionFilter`
interface + `Chain` registry. KB auto-inject refactored as first
built-in filter. Extension filters register at order 100+ (CS0)
- [x] `go.starlark.net` integration: sandboxed eval with step limits
(1M ops default), context timeout, captured print output,
disabled `load()`. `MakeModule` helper for Go→Starlark (CS1)
- [x] Permission model: `extension_permissions` table (in 016),
`status` column on `packages` (`active`/`pending_review`/
`suspended`). Manifest `"permissions"` array parsed on install.
Admin review, grant, revoke, grant-all endpoints (CS2)
- [x] Runtime enforcement: `Runner.buildModules()` injects only
granted modules into sandbox namespace (CS3)
- [x] Extension lifecycle: `install → pending_review → grant-all →
active`, revoke → `suspended`. Auto-transitions on grant/revoke.
- [x] Initial modules: `secrets` (GlobalConfig-backed, per-package
key-value store, admin CRUD), `notifications` (wraps
notification service, `send(user_id, title, body?, type?)`) (CS3)
- [x] `task_type: "starlark"`: executor `executeStarlark` loads
package by ID, calls `on_run()` entry point via runner.
RBAC gate `task.starlark` enforced. `system_function` field
holds package ID (CS4)
- [x] KB auto-injection: server-side pre-completion filter chain.
Reference implementation for the filter model Starlark
extensions mirror via `on_pre_completion(ctx)` (CS0+CS3)
- [x] Starlark filter discovery: `DiscoverStarlarkFilters` scans
active packages with `filters.pre_completion` grant (CS3)
- [x] ICD runner: `packaging` test tier — 18 tests covering
permission lifecycle + secrets CRUD (CS5)
### v0.29.1 — API Extensions