# Phase 3 handoff — Salesforce Developer + Git/PR + Deploy

## Done (Phase 3a — 26 Aug 2026)

- [`packages/agents/salesforce_developer.py`](../../packages/agents/salesforce_developer.py) — SFDX stubs for CustomField, ValidationRule, PermissionSet under run artifact dir.
- [`packages/integrations/git.py`](../../packages/integrations/git.py) — mock branch + draft PR.
- Orchestrator `implement` node: `design_approve` → `implement` → **`PR_CREATED`**.
- Artifacts: `implementation.json`, `implementation-summary.md`, SFDX XML under `force-app/`.

## Done (Phase 3b — 27 Aug 2026)

- Live GitHub client (`GIT_PROVIDER=github`) via Git Data API — branch, commit `force-app/**`, draft PR.
- Salesforce lower-org deploy validate (`SALESFORCE_PROVIDER=cli`) — `sf project deploy start --dry-run`; results in `deploy.json`.
- Expanded stubs: ApexClass, ApexTrigger, Flow, LightningComponentBundle (plus Phase 3a types).
- Flow: generate stubs → deploy validate → draft PR (deploy failure → `FAILED`).

```text
DESIGN_REVIEW --approve--> IMPLEMENTING --> stubs --> deploy.json --> draft PR --> PR_CREATED
                 \-reject--> FAILED
```

## Inputs

| Artifact / field | Source |
|------------------|--------|
| `requirements.json` | Requirement Analyst |
| `design.json` | Solution Architect (allowlist-enforced) |
| `run.artifacts["design_approved"]` | Must be `true` |

## Outputs

| Field | Purpose |
|-------|---------|
| `Run.branch_name` | `agent-nova/<jira-key>` |
| `Run.pr_url` | Draft PR URL (mock or live) |
| `implementation.json` | Files written, deferred types, commit message |
| `deploy.json` | Lower-org validate success/failure |
| SFDX stubs | Under `data/artifacts/<run_id>/force-app/...` |

## Env (Phase 3b)

```env
GIT_PROVIDER=github
GIT_REPO_URL=https://github.com/org/sfdx-repo
GIT_DEFAULT_BRANCH=main
GITHUB_TOKEN=ghp_...

SALESFORCE_PROVIDER=cli
SALESFORCE_ORG_ALIAS=dev-sandbox
SALESFORCE_DEPLOY_CHECK_ONLY=true
```

## Next (post-3b)

1. Optional non-dry-run apply to lower org (still never production).
2. Higher-quality Apex / Flow / LWC generation beyond stubs.
3. ~~Code Reviewer / QA (Phase 4).~~ **Done — see [Phase 4 handoff](PHASE4_HANDOFF.md).**
4. Live smoke test against client GitHub + sandbox credentials.

## Constraints (unchanged)

- Only metadata in approved `design.json` plan.
- Validate against [Phase 0 allowlist](../phase-0/ALLOWLIST.md).
- No production deploy, destructive deletes, or profile/sharing changes without human approval.
