Skip to content

[Deploy-S1] deploy.targets.* config contract (clean break, no windows alias) #337

Description

@rickylabs

Scope

Introduce a deploy.targets.* config contract in packages/config/src/domain/schemas/deploy-schema.ts, generalizing the current deploy.windows.*-only schema to a per-target discriminated map with a shared base + per-target member schemas. Clean break — no back-compat alias (decision D5, user override 2026-07-03: alpha, breaking changes allowed, ship the production-grade shape directly). The Windows SERVY lane is re-keyed to deploy.targets.windows.

Target / adapter

Config surface for all targets (foundation for every other deploy slice).

Acceptance criteria

  • deploy.targets map keyed by target name; windows member reuses the current Windows field set verbatim under the new key path.
  • Shared base extracted (mode compile|script, denoPath, compileTarget, concurrency, timeouts, bundle opts, workspace, v8HeapMb, generateEnvFile, logging, health); target-specific fields kept in member schemas.
  • Unused docker sub-block + denoBaseImage: 'denoland/deno:2.5' pin migrate under a docker/compose target and re-pin to denoland/deno:2.
  • deploy.windows.* no longer accepted; one-line migration note in config/release docs.
  • deno task check + config schema tests green.

Dependencies

None. Unblocks every other deploy slice (Phase 0 foundation).

Tier / phase

BETA · Phase 0 · milestone 0.0.1-beta.1

Parent epic: #327

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions