Major changes: - Add internal/logging package with field constants, context propagation, sensitive data auto-redaction, and per-component log levels - Add worker timeout constants (TimeoutQuickOp, TimeoutHealthCheck, etc.) - Extend SDLC with callback handlers, generate endpoints, and executor - Add new cookbook trees for aeries and slackpath progression - Add skeleton templates for queue, realtime, and microservices - Add worker component template with async job processing - Refactor services and handlers to use new logging infrastructure - Split component.go into component_infra.go and component_listing.go Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
3.3 KiB
3.3 KiB
Slack Preparation Phase 2 (Execution Plan)
Based on
slack-preparation-thoughts.md, this plan details the specific files and commands needed to enableslackpath-1(Identity) andslackpath-2(Async Workers).
1. Missing Templates (Priority: High)
We must implement these templates in internal/adapter/templates/templates/ so the Tree Runner can execute add-worker, add-db, and add-redis.
worker Template
- Location:
internal/adapter/templates/templates/worker - Structure: Go service similar to
go-apibut optimized for long-running tasks. - Key File:
cmd/worker/main.go(starts a queue consumer instead of an HTTP server). - Dockerfile: Standard Go build.
- Helm Chart: Deployment (not Service/Ingress).
postgres Template
- Location:
internal/adapter/templates/templates/postgres - Nature: Infrastructure Wrapper.
- Helm Chart: Dependencies on
bitnami/postgresqlor a custom StatefulSet. - Outputs: Connection string secret.
redis Template
- Location:
internal/adapter/templates/templates/redis - Nature: Infrastructure Wrapper.
- Helm Chart: Dependencies on
bitnami/redis. - Outputs: Host/Port secrets.
2. Missing Shared Packages (Priority: Critical)
The agent needs standard libraries to avoid writing insecure auth or buggy queues from scratch. These go in pkg/ at the root of the project templates (or the skeleton).
pkg/auth (for Path 1)
- JWT Handling:
Sign(claims) string,Parse(token) (*Claims, error). - Middleware:
func RequireAuth(next http.Handler) http.Handler. - Context:
func GetUser(ctx) User.
pkg/queue (for Path 2)
- Interface:
type JobQueue interface { Enqueue(ctx context.Context, topic string, payload any) error Process(ctx context.Context, topic string, handler func(payload []byte) error) } - Implementation: Redis-based (using
go-redis/v9).
3. SDLC Commands (Priority: Critical)
The cookbooks use commands that don't exist. We must create the prompt definitions.
.claude/commands/spec-feature.md
- Goal: Generate
spec.md. - Instructions: "You are a Technical PM. Analyze the feature slug. Write a requirements doc."
.claude/commands/design-feature.md
- Goal: Generate
design.md. - Instructions: "You are a System Architect. Analyze
spec.md. Define DB Schema, API Contracts, and Package structure."
.claude/commands/implement-feature.md
- Goal: Write Code.
- Instructions: "You are a Senior Go Developer. Read
design.md. Implement the changes. Run tests."
4. API Verification (Priority: Medium)
We need to ensure rdev-api actually handles the POST /projects/{id}/builds endpoint with the prompt payload correctly (routing it to the Claude Code agent).
- Check:
cmd/rdev-api/internal/service/build_service.go(or similar). - Verify: Does it invoke the
claudeCLI inside the project pod?
Execution Order
- Templates: Create
worker,postgres,redisfolders. - Packages: Write
pkg/authandpkg/queuecode to be included in theskeletontemplate. - Commands: Create the 3 markdown files in
.claude/commands/. - Test: Run
slackpath-1.