Docs

The Vinaya process

Retrospecting

What happens after a merge. The task, the tranche and the Milestone are closed and their record is completed on the forge, mostly without anyone starting it.

After merge
Archiving
Ring 2
Archivist

About retrospecting

Retrospecting is the third of Vinaya's four stages. It answers one question: what shipped, and why. Its output is a closed task, a closed tranche, a closed Goal, and the record they leave on the forge. See the Overview for how the four stages fit together.

It is archiving only. It closes records; it does not judge or change the work. Merging is not part of it: landing a change is the Principal's act and happens before retrospecting starts.

What closesWho closes itWhat is recorded
A taskThe Archivist, on the merged pull requestA provenance block, the Issue closed, missing facts flagged as dangling
A trancheThe Tranche Archivist, or the vinaya archive tranche commandA retrospective; the Milestone closed when nothing holds it open
A MilestoneCloses when its declared tranches are completeThe Goal's disposition
DriftRing 2 auditsPushes to finished branches, direct pushes to main

How it works

Most of retrospecting runs by itself, from a generated workflow, on events and on a schedule. The judgement work is a dispatched role turn that re-confirms what the automation did rather than repeating it.

  1. 1

    A pull request merges to main

    The post-merge job runs vinaya archive --merge-sha=<sha>. It posts the provenance comment, then closes the task Issue and confirms it is closed. It then runs vinaya archive tranche <slug> --yes, which archives the tranche if this was its last open task.

  2. 2

    A task Issue closes without a merge

    The issue-closed job runs vinaya archive tranche <slug> --yes, so a dropped or replaced task can still finish its tranche.

  3. 3

    Every day at 02:00 UTC

    The daily drift job runs vinaya audit --only=dead-branches, then vinaya archive tranches --yes to catch any finished tranche the events missed.

  4. 4

    Any push to main

    The direct-push job runs vinaya audit --only=direct-push --sha=<sha> and fails when the push skipped the pull-request path.

  5. 5

    The Principal asks for the Tranche Archivist

    "Run the Tranche Archivist for tranche <name>." The turn verifies the forge, writes the retrospective on the pinned lessons Issue, closes the Milestone and posts tranche provenance.

The judgement half of a task close (docs coherence, the docs index, the token ledger, lessons notes) is a dispatched Archivist turn.

Who does what

RoleDoesNever doesHuman or agent
ArchivistCloses out one merged task: Issue closed, provenance posted, docs coherence and token rows confirmed, cleanups flaggedWrite status, author a provenance field, reopen or re-argue the work, merge, perform cleanupsEither
Tranche ArchivistCloses out a finished tranche on the Principal's explicit declaration: forge verified, retrospective, Milestone closed, pending ratifications surfaced, tranche provenanceWrite code, decide what is next, ratify, invent observations, edit the plan, delete anything, run undispatchedEither
PrincipalDeclares a tranche done; ratifies pending Type 1 decisions; acts on flagged cleanups—Person

Work passes between roles in this order:

  • The Reviewer and Security hand their verdicts to the Archivist.
  • The Archivist hands the Tranche Archivist the merged pull requests with their provenance comments, the lessons-Issue notes and the follow-up Issues.
  • The Tranche Archivist hands the Planner the closed Milestone and the retrospective.

See Roles for every role and hand-off.

Ring 2 gates

Retrospecting is Ring 2: checks that run after merge, on the forge, whatever wrote the change. Ring 2 cannot undo a merge. It turns drift into findings in the record.

MechanismWhenWhat it does
Post-merge task archiveOn every mergePosts provenance, checks for dangling records, closes the task Issue
Tranche self-archiveWhen a task Issue closes, merged or notCloses the tranche when its last task is done
Daily drift checkDailyReports pushes to branches whose work is already finished; never fails red
Daily tranche catch-upDailyArchives completed tranches the events missed
Direct-main-push detectionOn every push to the default branchFails when a push skipped the pull-request path

Configuration

KeyEffect
rings.ring2_asyncAuditsfalse makes vinaya archive (task close) and the dead-branch audit skip. It does not skip archive tranche, archive tranches or direct-main-push detection. Default true.
principalsA Tokens: line counts only from a comment an allowlisted principal wrote.
managedThe workflow .github/workflows/vinaya-archivist.yml is generated by vinaya init and regenerated by vinaya upgrade.

What gets logged

ActLog events
Archivist and Tranche Archivist turnsdispatch, role_attempt, usage
Each vinaya archive and audit runOne operation · completed

See Events for every field.

Troubleshooting

What's next