Pre-launch — Gluecron is in final validation. Public signups and git hosting for non-owner users open after launch review.
Commitbb3979cunknown_key

chore: tick off pack-content ruleset enforcement as done

Claude committed on June 6, 2026Parent: ec39211
1 file changed+11bb3979c0e1f1393444938d8b9eb2171a30db2df7
1 changed file+1−1
ModifiedTODO.md+1−1View fileUnifiedSplit
2828- [ ] **Container registry (Docker/OCI)** — No files exist for this anywhere in the codebase. npm package registry is complete (`src/lib/packages.ts`). The OCI push/pull protocol needs implementing: `GET /v2/`, `HEAD /v2/:name/blobs/:digest`, `POST /v2/:name/blobs/uploads/`, `PUT /v2/:name/manifests/:ref`. Without Docker support, teams with containerised apps can't fully leave GitHub.
2929- [ ] **Redis SSE fan-out**`src/lib/sse.ts` is a single-process in-memory broadcaster. The TODO(scale) is right in the code. Multi-instance deploys mean live comment updates, PR live view, and push watch only reach subscribers on the same process. Replace the internal broadcaster with Redis pub/sub behind the same interface.
3030- [x] 2026-06-06 **Workflow cache SAVE**`saveCacheEntry()` implemented in `src/lib/actions/cache-action.ts`. DB-backed via `workflow_run_cache` Postgres table; tarballs paths, SHA-256 hashes, 100MB cap, upserts content. Wired in `src/lib/workflow-runner.ts` post-job. LOAD unchanged.
31- [ ] **Pack-content ruleset enforcement**`commit_message_pattern`, `blocked_file_paths`, `max_file_size` in `src/lib/rulesets.ts` need actual git pack inspection to enforce at push time. Currently those rule types are advisory only. Implement in `src/lib/push-policy.ts`.
31- [x] 2026-06-06 **Pack-content ruleset enforcement**`commit_message_pattern`, `blocked_file_paths`, `max_file_size` now blocking at push time via pre-receive hook (`GIT_CONFIG_COUNT` env injection). Git commands: `git log --format="%H %s"`, `git diff --name-only`, `git cat-file -s`. Wired in `src/routes/git.ts` (HTTP) and `src/lib/ssh-server.ts` (SSH). All 10 push-policy + 23 ruleset tests pass.
3232- [x] 2026-06-06 commit:44ed968 **Branch preview expiry cleanup**`expireOldPreviews()` wired as `preview-expiry` autopilot task in `src/lib/autopilot.ts`. Admin UI updated to show 10 tasks including `auto-merge-sweep`, `ai-build-from-issues`, and `preview-expiry`.
3333- [x] 2026-06-06 **Server targets → customer-facing**`src/routes/deploy-targets.tsx` (414 lines). `GET/POST /settings/deploy-targets`, `POST /settings/deploy-targets/:id/delete`, `POST /settings/deploy-targets/:id/test`. AES-256-GCM encryption via `SERVER_TARGETS_KEY`. Ownership-gated. Added to settings subnav and registered in `src/app.tsx`.
3434- [x] 2026-06-06 **Claude Web Sessions → customer-facing**`/:owner/:repo/claude` now open to all authenticated users with repo access. `listSessionsForUser()` scopes sessions to owner. Session list: colour-coded status badges, reverse-chron order. SSE stream via `GET /:owner/:repo/claude/:sessionId/stream?prompt=`. Spawns `claude --print --output-format stream-json`. "✨ Claude AI" sidebar card added to repo home (`src/routes/web.tsx`).
3535