ADLC
Toolkit

ticket-sync

Two-way sync between ADLC tickets and an external tracker (GitHub Issues), dry-run by default and failing closed on conflict.

ticket-sync

ADLC phase: P0 Triage (external integration) · Gate: a non-clean pull fails closed (exit 2) rather than overwriting the local ticket store.

The ADLC lifecycle, with P0 highlighted. Read the theory for P0

What it defends against

The ticket backlog and its external tracker drift apart the moment either is edited alone. ticket-sync reconciles both directions through the gh CLI against either the canonical sharded store or the legacy bridge. It is dry-run by default, and a pull that hits an unresolvable conflict aborts before any write (and before any push), so an unreconciled sync can never clobber the rails trust root. Sync bookkeeping lives in a gitignored, rebuildable sidecar; a stable sentinel key plus a pre-create adoption scan make create idempotent, so a re-run never duplicates an issue.

Usage

adlc ticket <pull|push|sync|doctor> [--write] [--force] [--allow-rail-narrowing] [--json]

The standalone binary is adlc-ticket-sync; the same command dispatches through the umbrella as adlc ticket.

Command / FlagDescription
pullImport issues into the active ticket store (3-way reconcile; unions; fails closed on conflict).
pushWrite tickets back: update synced issues, idempotent create for local-only tickets, display-only status.
syncpull then push; a non-clean pull aborts before push.
doctorRead-only, offline health checks (config / tickets / schema drift / sidecar / stale lock).
--writeApply changes (dry-run without it).
--forceOverride a blocked pull.
--allow-rail-narrowingPermit a pull that narrows declared rails.
--jsonMachine-readable output on all commands.

Exit codes

0: ok. Command completed (or produced a clean dry-run plan).1: operational error (bad config, gh failure, unknown flag or subcommand).2: blocked. A conflict the sync refuses to resolve automatically.

Example

$ adlc ticket pull
[dry-run] would plan:
  import	gh:voodootikigod/adlc#39
  reconcile	T4 (union)

Dry run re-run with --write to apply.
exit 0

Go deeper

packages/ticket-sync

On this page