##Debian packaging workflow
##debian
defstyle nobox [line.type=none];
defstyle red [fill.color=red];
defstyle yellow [fill.color=yellow];
defstyle green [fill.color=green-50];
col{
box up: uploaders {
 *oval sect: security team;
 *oval maint: maintainer;
}
box[nobox]{
 sid: unstable [red,center=maint];
 experimental [red];
}
box[nobox]{
 tpu: testing-proposed-updates [red,center=up];
 testing [yellow];
}
box[nobox]{
 security[green];
 pu: proposed-updates [yellow];
 su: stable-updates [green];
 stable [green];
 backports [green];
}
below stable oldstable [fill.color=gray];
leftof oldstable text: \-Note: oldstable has the same\nset of suites as stable\nnot detailed here to avoid clutter;
below oldstable archive;
}#col

# Manual uploads
use arrow.endtype=empty;
sect->security;
sect->sid;
maint->pu;
maint>>tpu;
maint->sid;
maint->experimental;
maint->backports; 100%: from\ntesting;
security->pu->su;
testing->stable->oldstable->archive;

# Automatic upload
sid->testing [arrow.endtype=solid];

# Approved uploads
use arrow.endtype=nsdot;
tpu->testing;
pu>>testing;
pu->stable;

use arrow.endtype=empty;
box legend [top=up] {
 col{
  development [red];
  t2: testing [yellow];
  production [green];
  lts: deprecated, LTS [fill.color=gray];
  development->t2->production->lts->unsupported;
 }
 space 20;
 col{
  *oval person;
 space 20;
  r1: repository;
  space 10;
  r2: repository;
  use label.pos=right;
  person->r1: upload to;
  r1@w->r2@w: automatic [label.pos=left,arrow.endtype=solid,label.orient=left];
  (r1@10%,r1)->(r2@10%,r2): manual;
  (r1@90%,r1)->(r2@90%,r2): approved [arrow.endtype=nsdot];
  r1>>r2: unusual [via=(r1@200%,r1@120%),arrow.endtype=solid];
 }
}
