adobe-to-docusign-migrator/docs/agent-harness/EXECUTION-BOARD.md

3.6 KiB

Execution Board (Living Kanban)

Last updated: 2026-04-17


Completed (v1 — CLI Pipeline)

  • Adobe Sign OAuth setup + token auto-refresh (src/auth_adobe.py, src/adobe_api.py)
  • Template download pipeline — metadata, fields, docs, PDF (src/download_templates.py)
  • Field type mapping — all major Adobe field types → DocuSign tabs (see field-mapping.md)
  • Coordinate system fix — y passthrough (top-origin, no conversion needed)
  • Conditional logic mapping → conditionalParentLabel/Value (see validation/conditional-logic-eval.md)
  • DocuSign template JSON composition (src/compose_docusign_template.py)
  • DocuSign JWT upload (src/upload_docusign_template.py)
  • Regression checklist for all field types (see tests/FIELD-TYPE-REGRESSION.md)
  • End-to-end round-trip test (3 real Adobe templates → DocuSign)

Phase 1 — Idempotent Upload (2026-04-17)

  • Add find_existing_template(name) to upload_docusign_template.py — lists DS templates by name, returns most-recently-modified match
  • Change upload_template() to upsert: PUT if match found, POST if not
  • Add --force-create CLI flag to bypass upsert
  • Write tests/test_upload_upsert.py — 4 tests passing

Phase 2 — FastAPI Backend Foundation (2026-04-17)

  • Add new dependencies to requirements.txt
  • Create web/ directory structure (app.py, config.py, session.py, routers/, static/)
  • Implement GET /health endpoint
  • Write tests/test_api_health.py — 2 tests passing

Phase 3 — Auth Endpoints (2026-04-17)

  • Implement Adobe Sign OAuth start + callback + disconnect in web/routers/auth.py
  • Implement DocuSign OAuth start + callback + disconnect
  • Implement GET /api/auth/status
  • Write tests/test_api_auth.py — 4 tests passing

Phase 4 — Template Listing API (2026-04-17)

  • Implement GET /api/templates/adobe in web/routers/templates.py
  • Implement GET /api/templates/docusign
  • Implement GET /api/templates/status — computes not_migrated / migrated / needs_update
  • Write tests/test_api_templates.py — 7 tests passing

Phase 5 — Migration API (2026-04-17)

  • Implement POST /api/migrate in web/routers/migrate.py — download → compose → upsert pipeline
  • Implement GET /api/migrate/history — reads/writes migration-output/.history.json
  • Write tests/test_api_migrate.py — 7 tests passing

Phase 6 — Frontend (2026-04-17)

  • Create web/static/index.html — side-by-side template browser layout
  • Create web/static/app.js — auth status check, template listing, migrate flow, history
  • Create web/static/style.css — status badges, layout

Phase 7 — End-to-End & Regression (2026-04-17)

  • Write tests/test_e2e.py — 7-step full pipeline test, 1 test passing
  • Write tests/test_regression.py — compose pipeline vs snapshots, 4 tests passing
  • Create tests/fixtures/expected/ — snapshot JSONs for David Tag Demo, NDA, Rob Test
  • Full suite: 29/29 passing

Gitea

  • Committed and pushed all changes (2026-04-17)

Results & Lessons Learned

  • (2026-04-14) NDA, David Tag Demo, Rob Test all converted cleanly
  • (2026-04-15) Coordinate bug fixed — y is top-origin in both platforms, no conversion needed
  • (2026-04-15) Paul Adobe Template created via API; Company/Title fields require manual UI fix (API limitation)
  • (2026-04-17) v2 planning complete — idempotent upload + web UI implementation begins