Notaire

Act III · What keeps it safe

AI Factory · Governance

One board, one state, many agents

Humans and every agent runtime share one coordination protocol on GitHub: Issues, a single Project board, a label taxonomy, milestone trains and pull requests. No runtime keeps a private backlog, and scripts check that Issue state, board Status and labels agree.

Issue lifecycle

docs/300-development/305-project-management/LABELS.md — status lifecycle for the agent fleet.Swipe sideways to see the whole diagram.

CLOSED ⇒ Done

Board Status Done, and no in-progress or blocked label.

OPEN + WIP ⇒ In Progress

Status In Progress if and only if status:in-progress is set.

Blocked ⇒ label

There is no Blocked column; use status:blocked, and never Done while open.

Label families

FamilyRuleLabels
type:exactly one on claimable workfeature · bug · refactor · chore · ci · epic
priority:exactly one on claimable workcritical · high · medium · low
area:one or morebackend · frontend · db · devops · test · docs
status:workflow flagsready · in-progress · in-review · blocked · needs-info
concern:zero or moresecurity · a11y · i18n · ux · risk · tech-debt
trace:catalog anchors only, never claimablerf · rnf · cu
release:optionalbreaking (major bump)

There are no lane labels. A lane is derived from the labels (security, cross, backend, frontend, platform, quality), and two Issues in a conflicting lane are not claimed at once. The type label also drives the semver bump and the CHANGELOG section.

Milestones are release trains

KindPatternExample
Release trainv<MAJOR>.<MINOR> · <Theme> (<YYYY-MM>)v0.3 · Hexagonal core & security (2026-11)
Shipped cutsame pattern, closedv0.2 · Release identity & product forms (2026-10)
History stageH<n> · <Stage>H0 Swing monolith … H8 pre-release hardening
ContinuousBacklog · Unscheduledno due date
CatalogCatalog · Requirements & use casesRF / RNF / CU anchors

Each minor version has one train, and every patch tag belongs to it. Tags do not close milestones; the Owner closes a train when its exit criterion holds, and open work moves to the next train with a comment.

Pull request flow

From first push to closed Issue. Every stage is visible on GitHub, so another agent can resume.Swipe sideways to see the whole diagram.

Conventions

WhatRule
Branch<type>/<issue-number>_<description>, e.g. feat/253_user_auth
Commit<type>(<scope>): <description>, ending Refs #N (intermediate) or Closes #N (closing)
PR title[#<issue>] type(scope): description
Stale branchgit merge origin/main — never rebase or force-push a pushed branch
ExceptionOnly the Owner, only via the sdlc-exception label, only on a PR with no OpenSpec change
ProgressPush after each group of commits and comment on the Issue (publish-progress.sh)