rdev/internal/port
jordan ddcfe52b5c
Some checks failed
ci/woodpecker/push/woodpecker Pipeline failed
feat: implement shared notify host model for platform email delivery
Replace per-project notify host provisioning (7-9 API calls + DNS + async
Resend verification) with a shared platform host for all *.threesix.ai projects.

Under the new model:
- CreateProjectNotify: 3 calls only (account + send key + host grant)
- No per-project Resend domain, DNS records, or async verification
- All *.threesix.ai projects share `threesix.ai` as the platform host
- Custom domains still get a dedicated host via ReprovisionNotifyHost

Changes:
- domain/notify.go: slim NotifyCredentials (no Host/From/ResendDomainID);
  add NotifyHostCredentials for reprovision return path
- port/notify_provisioner.go: update interface signatures and docs
- adapter/notify/provisioner.go: rewrite CreateProjectNotify (3 steps);
  rewrite DeleteProjectNotify (account-only vs full cleanup)
- adapter/notify/provisioner_reprovision.go: return *NotifyHostCredentials
- adapter/notify/provisioner_test.go: update tests for new model
- service/project_infra_crud.go: store only NOTIFY_API_KEY on provision
- domain/credential.go: add CredKeyNotifySharedHost/CredKeyNotifySharedFrom
- cmd/rdev-api/config.go: add NotifySharedHost/NotifySharedFrom to InfraConfig
- service/component.go: add notifySharedHost/notifySharedFrom + WithNotifyDefaults
- service/component_deploy.go: inject shared host defaults when no custom host stored
- handlers/notify.go: handle shared-host projects in Reprovision guard;
  add WithSharedNotifyHost builder
- cmd/rdev-api/main.go: wire SharedHost to provisioner, component service,
  and notify handler

Bootstrap: NOTIFY_SHARED_HOST=threesix.ai and NOTIFY_SHARED_FROM=noreply@threesix.ai
stored in credential store (host id=1 already provisioned with Resend provider).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-25 17:04:11 -07:00
..
apikey_repository.go feat: implement project access enforcement and management API 2026-02-21 15:38:37 -07:00
audit_logger.go feat: Implement hexagonal architecture with services, webhooks, queue, and telemetry 2026-01-25 19:57:46 -07:00
blueprint_repository.go feat(foundary): implement complete backend for conversational project design 2026-02-09 00:50:46 -07:00
build_audit.go fix: Persist build audit status when worker claims task 2026-01-29 21:25:04 -07:00
build_event_store.go chore: prepare for composable monorepo template implementation 2026-01-31 11:39:28 -07:00
cache_provisioner.go chore: prepare for composable monorepo template implementation 2026-01-31 11:39:28 -07:00
checkout_repository.go feat: label-based undeploy, GC reconciliation, checkout/sessions, pool status 2026-02-09 19:11:28 -07:00
ci_provider.go feat(saga): implement enterprise-grade resilience architecture 2026-02-08 01:58:02 -07:00
citadel.go feat: add GCS-based persistent media storage, AI generation pipeline, and composable skeleton packages 2026-02-19 21:29:09 -07:00
code_agent.go feat: Add CI pipeline proxy, DNS alias management, and worker executor system 2026-01-27 21:05:28 -07:00
command_executor.go feat: Add claude-config API, security hardening, and testing infrastructure 2026-01-25 01:29:13 -07:00
command_queue.go feat: Implement hexagonal architecture with services, webhooks, queue, and telemetry 2026-01-25 19:57:46 -07:00
component.go fix: go.work race condition with batch components and idempotent provisioning 2026-02-05 12:31:40 -07:00
conversation_repository.go feat(foundary): implement complete backend for conversational project design 2026-02-09 00:50:46 -07:00
credential_store.go feat: Add CI pipeline proxy, DNS alias management, and worker executor system 2026-01-27 21:05:28 -07:00
database_provisioner.go chore: prepare for composable monorepo template implementation 2026-01-31 11:39:28 -07:00
deployer.go fix(rc-5): add Redis ACL persistence + cache reprovision endpoint 2026-02-24 20:22:31 -07:00
dns_provider.go feat: Complete automation gaps for repeatable project deployments 2026-01-29 15:18:31 -07:00
git_repository.go feat: label-based undeploy, GC reconciliation, checkout/sessions, pool status 2026-02-09 19:11:28 -07:00
health.go feat: add diagnostics endpoint and external health monitoring 2026-02-03 19:10:56 -07:00
notify_provisioner.go feat: implement shared notify host model for platform email delivery 2026-02-25 17:04:11 -07:00
operation.go feat: add operations audit system and template improvements 2026-02-01 19:08:57 -07:00
port_test.go feat: implement project access enforcement and management API 2026-02-21 15:38:37 -07:00
preview.go feat(sessions): add command execution endpoint and activity tracking 2026-02-13 08:41:05 -07:00
project_domain_repository.go feat: Add multi-domain support with auto-generated slugs for landing page cookbook 2026-01-28 12:55:59 -07:00
project_repository.go feat: Add claude-config API, security hardening, and testing infrastructure 2026-01-25 01:29:13 -07:00
question_repository.go feat(foundary): implement complete backend for conversational project design 2026-02-09 00:50:46 -07:00
rate_limiter.go feat: Implement hexagonal architecture with services, webhooks, queue, and telemetry 2026-01-25 19:57:46 -07:00
registry_provider.go fix(registry): delete container images on project teardown 2026-02-08 02:56:18 -07:00
saga.go feat(saga): implement enterprise-grade resilience architecture 2026-02-08 01:58:02 -07:00
sdlc_executor.go feat: add artifact pass/fail/needs-fix lifecycle for SDLC execution phases 2026-02-02 22:14:53 -07:00
session_repository.go feat: add claude_id tracking and session improvements for interactive dev 2026-02-24 00:20:32 -07:00
storage_provisioner.go fix(templates): upgrade Go to 1.25 and fix Woodpecker syntax 2026-02-08 23:57:38 -07:00
stream_publisher.go chore: prepare for composable monorepo template implementation 2026-01-31 11:39:28 -07:00
template_provider.go feat: implement composable monorepo template system with component architecture 2026-01-31 19:11:42 -07:00
webhook.go feat: Implement hexagonal architecture with services, webhooks, queue, and telemetry 2026-01-25 19:57:46 -07:00
work_queue.go fix: wire workService to WorkersHandler and add /work/tasks endpoint 2026-02-06 10:35:39 -07:00
worker_registry.go feat: Add CI pipeline proxy, DNS alias management, and worker executor system 2026-01-27 21:05:28 -07:00