run.
What you get
writerReviewerPair. One model writes the files your brief names, your test command runs, and a model from a different family reviews the result. A rejection sends the work back to the writer.thresholdPanel. One model implements, your test command runs, and several reviewers read the change at the same time. The change passes when at least the threshold number of them accept.featureDelivery. Analyse, implement, test, review, approve. The analyse step writes a delivery note, the reviewers can send the work back to the implementer, and the approve step writes an approval note.
desc and a gate sentence on
each. Every seat is checked before a run: the implementer and each reviewer
must be different model families. A step that promises a file fails by
name when the file is missing or empty. The test step passes on the
command’s exit code.
Run one
What every team takes
A seat is
{ engine, identity }: an engine plugin instance and the identity
it runs under, { adapter, provider, modelFamily, model }. The identity is
what the run record and the family check use, so it must name what runs.
Gotchas
- It ships no command. You import a team and run it from your own file.
- Engines are yours to construct. The package chooses no model. Each seat is a plugin instance you build, with the permission mode the role needs: a writer must be allowed to write files.
- The distinct-family check reads your declaration. Declaring one family for two different models defeats it, and declaring two families for one model lies to the record.
Source
packages/teams in the repository. The package depends on
@obversa/runtime and nothing else.