Documentation
¶
Overview ¶
Package backlog decides what becomes of a role's acts on a project's issues (docs/spec/backlog-acts.md): each is checked against the code and the forge, then done, proposed to a person, or dropped. Closing is the first act built.
Index ¶
- Constants
- Variables
- func Accepted(is forge.Issue) bool
- func Agreement(notes []forge.Note, is forge.Issue, role string) string
- func AnnounceMarker(role string) string
- func AnnouncementComment(author string, c Proposal, role string, a Announcement, days int) string
- func Ask(author, questions string, round int) string
- func AskMarker(role string, round int) string
- func Before(is forge.Issue) string
- func BodyDigest(body string) string
- func CappedByRole(f forge.Backlog, role string, open []forge.Issue) []int
- func ChildBody(parent int, ch Child, role string) string
- func ClosedByRole(f forge.Backlog, role string, open []forge.Issue) []int
- func ClosingComment(c Proposal, role string) string
- func CodeKey(path, line string) string
- func Comment(c Proposal, role string) string
- func CompareMilestones(a, b string) int
- func DraftLine(role string) string
- func EngineMarker(comment string) (string, bool)
- func ExemptLabel(is forge.Issue, s Setting) string
- func FormatRecord(r Record) string
- func FormatState(s State) string
- func ImportKey(q Quote) string
- func JudgeMaterial(repo string, is forge.Issue, a Announcement, code string) string
- func KeptComment(why string) string
- func KeptMarker(role string) string
- func Less(a, b forge.Issue) bool
- func ListChildren(body string, ids []int) string
- func Locate(repo, path, text string) (from, to int, original string, ok bool)
- func ModesLine(modes []KindMode) string
- func MovedPercent(settings map[string]any) int
- func NextMilestone(repo string, open []string) string
- func NotReady(body string, accepted bool) []string
- func ObsoleteKey(q Quote) string
- func OpenedBy(body string) string
- func Order(issues []forge.Issue)
- func PeopleComments(comments []string) int
- func Priority(is forge.Issue) int
- func PriorityLabel(n int) string
- func PriorityLabels(is forge.Issue) []int
- func ProposalComment(author string, c Proposal, role string) string
- func ProposalMarker(role string, round int) string
- func RecordMarker(role string) string
- func Refine(body string, c Proposal, role string) (string, []string, []string)
- func Released(repo, milestone string) bool
- func ReportTitle(role string) string
- func Round(comment, role string) bool
- func RoundsMax(settings map[string]Setting) int
- func Settings(settings map[string]any) map[string]Setting
- func SplitKey(parent int, title string) string
- func StateMarker(role string) string
- func StripDrafts(body string) string
- func TickMarker(key string) string
- func TitleKey(title string) string
- type Announcement
- type Child
- type Closing
- type Config
- type Decision
- type Done
- type Exchange
- type Hand
- type Judged
- type KindMode
- type Measure
- type Obsolete
- type Opening
- type Openings
- type Pending
- type Plan
- type Proposal
- type Quote
- type Record
- type Setting
- type State
- type TickBy
- type Undo
Constants ¶
const ( Cautious = "cautious" Normal = "normal" Enterprising = "enterprising" )
The autonomy levels, from the least to the most the role does alone.
const ( FromLevel = "level" // the autonomy level's preset FromSetting = "setting" // the project set this kind itself FromDemoted = "demoted" // a person undid one of its acts: proposed until a tick sets it back )
Where a kind's mode comes from, as the task and the report say it.
const ( SuggestAfter = 10 SuggestTicked = 80 )
SuggestAfter is the proposals a person settled at a level before the report suggests another; SuggestTicked, the share ticked, in percent, past which a cautious role is told it could do more alone.
const ( Act = "act" Propose = "propose" Off = "off" )
Modes of an act.
const ( LabelToRefine = "workline:to-refine" LabelDraft = "workline:draft" // the role drafted its Need or Validation LabelAccepted = "workline:accepted" // a person accepted the drafts: only who may triage sets a label LabelReady = "workline:ready" )
The labels of an issue on its way to ready (docs/spec/routing.md).
const ( KeyResume = "resume" KeyAct = "act/" )
KeyResume is the box that resumes a paused role; KeyAct, followed by a kind of act, the box that sets that kind back to act.
const ( Opened = "opened" // a new issue StillOpen = "open" // an open issue holds the subject: nothing written Settled = "settled" // closed as not planned or as a duplicate: a person's no, nothing written FoundAgain = "found-again" // closed otherwise, the subject found again: said once on it, not reopened Capped = "capped" // new, past the run's cap: not opened, found again at a later run )
Outcomes of an opening.
const AgreeWord = "agreed"
AgreeWord is the reply that agrees to a text proposed to a reporter: its first line, case, spaces and a final "." or "!" aside (ADR-0021).
const IgnoredRunsMax = 20
IgnoredRunsMax bounds `ignored-runs-max`; 0 never pauses.
const JudgeKeyPrefix = "obsolete-"
JudgeKeyPrefix names the folder of a judge's question on an announced issue, its number after it: in/judge/obsolete-12/.
const JudgeQuestion = "" /* 244-byte string literal not displayed */
JudgeQuestion is what the second judge is asked of an announced issue.
const Keeper = "product-owner"
Keeper is the role whose state comment an opened issue is given: the product owner reads it from its next run, as any other issue.
const LabelObsolete = "workline:obsolete"
LabelObsolete marks an issue announced as obsolete: taking it off keeps the issue open.
const LabelTriage = "needs-triage"
LabelTriage marks an issue a role opened on a finding of its own, until a person or the product owner takes it (ADR-0018, "Opening issues, for every role").
const Levels = 4
Levels are the priorities an issue takes: 1, the most pressing, to 4 (docs/spec/backlog-acts.md, "Ordering").
const ObsoleteDays = 7
ObsoleteDays is how long an announcement waits, in days, when the role's settings do not say.
const PriorityPrefix = "workline:priority/"
PriorityPrefix starts each priority label: workline:priority/1 to /4.
const SubIssuesHeading = "## Sub-issues"
SubIssuesHeading heads the task list of a parent's children, on a forge without sub-issues.
Variables ¶
var ActKinds = []string{"sources", "close-duplicate", "close-obsolete", "milestone", "order", "refine", "ready", "ask", "split", "rename", "open"}
ActKinds are the kinds of act as the settings name them, in the order the task and the report list them.
var AutonomyLevels = []string{Cautious, Normal, Enterprising}
AutonomyLevels are the autonomy levels a project may pick.
var DefaultExempt = []string{"pinned", "security"}
DefaultExempt are the labels that keep an issue from being announced obsolete, when the role's settings do not say.
var DraftMarker = forge.Marker("draft")
DraftMarker marks a section the role drafted and no person made theirs.
var Kinds = []string{"open", "close", "keep", "sources", "milestone", "order", "refine", "ready", "ask", "split", "rename"}
Kinds are the intentions that are acts on the backlog.
var Sections = []string{"Need", "Verification", "Validation", "Scope"}
Sections are an issue's, in the order they are written.
Functions ¶
func Accepted ¶ added in v0.7.0
Accepted says whether a person accepted an issue's drafts, by its label — read on the issue, never taken from a proposal.
func Agreement ¶ added in v0.11.0
Agreement is who agreed, in a reply, to the text last proposed to an issue's reporter (ADR-0021): after the last round, that round a proposal, the last comment of the reporter or of a person of the project — never a bot's, nor someone's the forge does not name — has AgreeWord as its first line. "" when there is none.
func AnnounceMarker ¶ added in v0.12.0
AnnounceMarker marks the comment announcing an issue obsolete.
func AnnouncementComment ¶ added in v0.12.0
AnnouncementComment is the comment announcing an issue obsolete: to its reporter and its watchers, why, the code quoted, from when it may be closed and how to keep it open; then the block the engine reads back.
func Ask ¶ added in v0.6.0
Ask is the comment asking the reporter what is missing; a later round says it follows their answer.
func AskMarker ¶ added in v0.6.0
AskMarker marks the comment asking an issue's reporter: the first round's as it always was, a later one's with its round.
func Before ¶ added in v0.8.0
Before says an issue's place in the order, to put it back: its priority and its milestone.
func BodyDigest ¶ added in v0.6.0
BodyDigest is what the state keeps of a body, to tell when a person changed it.
func CappedByRole ¶ added in v0.7.1
CappedByRole lists the issues an act was proposed on only because a run's cap was reached: they are read again, though nothing changed on them.
func ChildBody ¶ added in v0.11.0
ChildBody is a split's child's body: a line naming its parent, then its four sections, Need and Validation as drafts.
func ClosedByRole ¶
ClosedByRole lists the issues the role's record says it closed, read from its report issue's comments; nil when there is none or it does not read.
func ClosingComment ¶ added in v0.12.0
ClosingComment is what an obsolete issue is told as it is closed after its announcement.
func CodeKey ¶ added in v0.10.0
CodeKey is the subject of a finding on a line of code: its file and the line as it reads, spaces aside. Two roles finding the same line get the same key; the line changed, it is another subject.
func CompareMilestones ¶ added in v0.8.0
CompareMilestones orders two milestone titles as versions: their numbers compared as numbers (v1.9 before v1.10), the rest as text.
func DraftLine ¶ added in v0.6.0
DraftLine opens a drafted section; deleting it makes the section a person's.
func EngineMarker ¶ added in v0.11.0
EngineMarker says whether the engine wrote a comment, and its marker: the engine ends each of its comments with one; a person quoting one holds it inside, and is a person's all the same.
func ExemptLabel ¶ added in v0.12.0
ExemptLabel is the first of an issue's labels that keeps it from being announced or closed as obsolete, or "".
func FormatRecord ¶
FormatRecord is the body of the report's record comment.
func FormatState ¶
FormatState is the body of an issue's state comment, its marker left to the forge's Sticky.
func ImportKey ¶
ImportKey is the marker key of an issue opened from a file's text: the file and a digest of the text, so the same text is never opened twice.
func JudgeMaterial ¶ added in v0.12.0
JudgeMaterial is what the second judge reads: the issue, the announcement's evidence, and the code quoted as it is now.
func KeptComment ¶ added in v0.12.0
KeptComment tells an announced issue why it stays open, when no person kept it.
func KeptMarker ¶ added in v0.12.0
KeptMarker marks the comment saying why an announced issue stays open.
func Less ¶ added in v0.8.0
Less is the backlog's order (docs/spec/backlog-acts.md, "Ordering"): the nearest milestone first, an issue in none after every one in one; then the priority, an issue with none after priority 4; then the lowest number.
func ListChildren ¶ added in v0.11.0
ListChildren is a parent's body with its children as a task list under SubIssuesHeading: added after its text, or the list already there rewritten.
func Locate ¶
Locate finds a quote in a file, as written but for spaces: the lines it spans, from 1, and those lines as the file has them.
func MovedPercent ¶ added in v0.8.0
MovedPercent reads the role's `moved-percent-max` setting: the share of the open issues a run may move, in percent; a fifth when it is not set.
func NextMilestone ¶ added in v0.8.0
NextMilestone is the nearest open milestone not released, in version order; "" when there is none.
func NotReady ¶ added in v0.6.0
NotReady says what keeps an issue's body from ready: a section missing or empty, Need or Validation still a draft no person accepted.
func ObsoleteKey ¶ added in v0.12.0
ObsoleteKey names a quote's evidence: its file or issue, and a digest of its text, spaces aside.
func OpenedBy ¶ added in v0.10.0
OpenedBy is the role that opened an issue on a finding of its own through Openings, or "".
func PeopleComments ¶
PeopleComments counts an issue's comments that are not the engine's.
func Priority ¶ added in v0.8.0
Priority is an issue's level, the most pressing of its labels; 0 when it has none.
func PriorityLabel ¶ added in v0.8.0
PriorityLabel is the label of a priority level.
func PriorityLabels ¶ added in v0.8.0
PriorityLabels lists the levels an issue's priority labels give, in the order of its labels; more than one is a person's doing.
func ProposalComment ¶ added in v0.11.0
ProposalComment is the comment proposing an outsider's issue refined: what the role understood, its sections as it would write them, what it needs, and how to agree. Nothing is written in the body before (ADR-0021). The sections are kept in a YAML block, read back when it is agreed to.
func ProposalMarker ¶ added in v0.11.0
ProposalMarker marks the comment proposing an outsider's issue refined.
func RecordMarker ¶
RecordMarker marks the report's comment holding what the role did.
func Refine ¶ added in v0.6.0
Refine is an issue's body with the sections it lacks written: one there but empty (an issue form's "_No response_") filled in place, one missing added after the text, which stays as it is; added and kept name the sections written and those already there, left alone.
func Released ¶ added in v0.8.0
Released says whether a tag named after the milestone exists: the release it was for is out.
func ReportTitle ¶
ReportTitle is the title of the role's report issue.
func Round ¶ added in v0.11.0
Round says whether a comment is one of the engine's rounds with an issue's reporter: an ask or a proposal.
func RoundsMax ¶ added in v0.11.0
RoundsMax is how many times an issue's reporter is written to — asked, or proposed a refined text — before a person takes it: acts.ask.rounds, three when it is not set (ADR-0021).
func SplitKey ¶ added in v0.11.0
SplitKey is the marker key of a split's child: its parent and its title, so a split run again finds the children it opened.
func StateMarker ¶
StateMarker marks the comment holding an issue's state.
func StripDrafts ¶ added in v0.7.0
StripDrafts takes the draft lines out of a body: the drafts are a person's once accepted.
func TickMarker ¶ added in v0.12.0
TickMarker is the hidden key that ends a line of the report a person may tick.
Types ¶
type Announcement ¶ added in v0.12.0
type Announcement struct {
Quote Quote `yaml:"quote"`
Why string `yaml:"why"`
Commit string `yaml:"commit"`
Announced string `yaml:"announced"` // the day it was announced, YYYY-MM-DD
By string `yaml:"by,omitempty"` // the model that proposed it
}
Announcement is what the engine wrote when it announced an issue obsolete, read back from its comment's block.
func LastAnnouncement ¶ added in v0.12.0
LastAnnouncement reads the last announcement on an issue, and the notes written after it; nil when there is none, or it does not read.
func (Announcement) Key ¶ added in v0.12.0
func (a Announcement) Key() string
Key is the evidence an announcement rests on: kept open once, not announced again for it.
type Child ¶ added in v0.11.0
type Child struct {
Title string `yaml:"title"`
Need string `yaml:"need"`
Verification string `yaml:"verification"`
Validation string `yaml:"validation"`
Scope string `yaml:"scope"`
Sources []string `yaml:"sources,omitempty"`
}
Child is one part of a split need: an issue of its own, with its four sections (ADR-0022).
type Closing ¶
type Closing struct {
Issue int `yaml:"issue"`
Act string `yaml:"act"`
Level string `yaml:"level,omitempty"` // the autonomy level it was done at
}
Closing is one issue the role closed.
type Config ¶ added in v0.13.0
type Config struct {
Level string // cautious, normal or enterprising
Acts map[string]Setting // each kind's mode and cap, the project's laid over the level's
Origins map[string]string // each kind's: level or setting
MovedPercent int // the share of the open issues a run moves
IgnoredMax int // runs nobody answered before the role pauses; 0 never
}
Config is how far the role goes in a run, read from its settings.
func ReadConfig ¶ added in v0.13.0
ReadConfig reads the role's settings: the level, the acts, the moved share and the runs before a pause. A level or a number out of range is an error, never read as a default (principle 12).
type Decision ¶
type Decision struct {
Index int `yaml:"index"` // the intention's place in the run
Mode string `yaml:"mode"` // act, propose, or off (dropped)
Act Proposal `yaml:"act"`
Capped bool `yaml:"capped,omitempty"` // proposed only for the cap
}
Decision is what becomes of one act.
type Done ¶ added in v0.13.0
type Done struct {
Issue int `yaml:"issue"`
Act string `yaml:"act"`
Was string `yaml:"was,omitempty"`
Set string `yaml:"set,omitempty"`
Level string `yaml:"level,omitempty"` // the autonomy level it was done at
}
Done is one act of the role's a person may undo: its issue, its kind, the value it had and the value the role set.
type Exchange ¶ added in v0.11.0
type Exchange struct {
Rounds int // the engine's comments to the reporter
Answered bool // a person's comment after the last of them
Asked []string // each one's text, its marker left out
}
Exchange is the conversation with an issue's reporter, read from its comments: the engine's asks and proposals, in order, and whether a person wrote after the last one.
func ReadExchange ¶ added in v0.11.0
ReadExchange reads the conversation with an issue's reporter.
type Hand ¶ added in v0.12.0
type Hand struct {
Report int
Record Record
Broken error // the record does not read
Ticks []TickBy // the boxes ticked in the report's body now
Comments int // comments of people of the project on the report
Signs []string // what a person did since the last run: a tick, a comment, a closing or an act undone, a proposal settled
// Undone are the role's acts a person undid since the last run, other
// than closings; Standing, those still watched (ADR-0026).
Undone []Undo
Standing []Done
}
Hand is what people did on the report since the last run.
func ReadHand ¶ added in v0.12.0
ReadHand reads the report: its record, the boxes ticked in its body with who ticked them, the people's comments on it, and the signs of a person since the last run. No report: an empty hand.
func (*Hand) Demoted ¶ added in v0.13.0
Demoted are the kinds of act back to propose: those the record holds, and those a person undid since the last run, a closing reopened or another act.
func (*Hand) Paused ¶ added in v0.12.0
Paused says whether the role pauses: max runs in a row nobody answered (ignored-runs-max; 0 never pauses), and no person's hand since.
type Judged ¶ added in v0.12.0
type Judged struct {
Yes *bool `yaml:"yes"`
Why string `yaml:"why"`
Model string `yaml:"model"`
Level string `yaml:"level"`
Author string `yaml:"author"`
Error string `yaml:"error"`
}
Judged is a second judge's answer on an announced issue (ADR-0005), written by the engine beside the question pre asked.
type KindMode ¶ added in v0.13.0
type KindMode struct {
Kind string
Mode string
Max int
Drafts string // refine: Need and Validation proposed when "propose"
Origin string
}
KindMode is one kind of act's mode in a run, and where it comes from.
type Measure ¶ added in v0.13.0
type Measure struct {
Level string `yaml:"level"`
Ticked int `yaml:"ticked,omitempty"` // proposals a person of the project ticked: done as proposed
Other int `yaml:"other,omitempty"` // proposals settled otherwise: their issue closed, or opened by hand
}
Measure is what a person did with the proposals at the level in force: the report suggests another level from it, never changes the setting.
type Obsolete ¶ added in v0.12.0
type Obsolete struct {
Announcement *Announcement // nil: none waiting
Due bool // its delay passed, nothing cancels it: a judge decides
From string // the day it may be closed from
Keep string // why it is kept open, when it is
Say bool // the issue is told why it is kept: no person did it
}
Obsolete is where an issue's announcement stands.
func ReadObsolete ¶ added in v0.12.0
func ReadObsolete(repo string, is forge.Issue, notes []forge.Note, st *State, role string, s Setting, now time.Time) Obsolete
ReadObsolete says where an issue's announcement stands: none waiting (none, or settled already — its evidence in the state's kept), kept open (someone wrote, the label taken off, an exempt label, the code quoted gone), waiting for its day, or due for the judge.
type Opening ¶ added in v0.10.0
type Opening struct {
Role string // the role that found it, named in the issue
Key string // the marker's key: issue=<subject>, or import=<a file's text>
Also []string // older keys the same subject was opened under
Title string
Body string
From string // where it was opened from, said after "Opened": " from `ROADMAP.md`"
Sources []string // the code it is about, for the keeper's state
Commit string // the commit it was seen at
Triage bool // a role's finding: labelled needs-triage, capped, said once when found after it was closed
}
Opening is a subject a role opens an issue for.
type Openings ¶ added in v0.10.0
type Openings struct {
Max int // a run's findings opened as issues, at most; the rest Capped
// contains filtered or unexported fields
}
Openings is the one way every role opens an issue (ADR-0018): a stable key per subject, hidden in the issue's body; the issues open and closed looked in, once a run; no AI. A subject an issue holds is never opened again: open, it is left as it is; closed as not planned or as a duplicate, it is a person's no, left as it is; closed otherwise, it is said once on it that it was found again, and it stays closed.
func NewOpenings ¶ added in v0.10.0
NewOpenings prepares a run's openings on f, at most max findings opened.
type Pending ¶
type Pending struct {
Issue int `yaml:"issue"`
Act string `yaml:"act"`
Line string `yaml:"line"`
Key string `yaml:"key,omitempty"` // an issue to open: the text it would be opened from (ImportKey)
// Capped: proposed only because the run's cap was reached, not left to
// a person by its mode: its issue is read again at the next run.
Capped bool `yaml:"capped,omitempty"`
// Proposal is what the engine would do, as decided: done as it says
// when a person of the project ticks its box (ADR-0025).
Proposal *Proposal `yaml:"proposal,omitempty"`
}
Pending is an act proposed to a person, as the report says it.
type Plan ¶
type Plan struct {
Decisions []Decision `yaml:"decisions"`
Findings []verdict.Finding `yaml:"findings"`
Record Record `yaml:"record"`
Report int `yaml:"report"` // the report issue, 0 when none is open yet
Changed bool `yaml:"changed"` // the record changed: wrong closings found, proposals settled
// contains filtered or unexported fields
}
Plan is what a run does with its acts, decided once, so a resumed run does the same.
func Decide ¶
func Decide(f forge.Backlog, repo, role string, cfg Config, closes map[int]Proposal, read []int, judged map[int]Judged) (*Plan, error)
Decide plans the acts proposed, given at their place in the run, as far as the config lets the role go (ADR-0026). read lists the issues the run read: a proposal made only for a cap is dropped once its issue was read again, decided again or not. A run moves at most cfg.MovedPercent of the open issues (milestone and order). judged holds the second judge's answers on the issues announced obsolete (ADR-0024).
func (*Plan) ReportBody ¶
ReportBody is the report issue's body: what the run did and proposes.
type Proposal ¶
type Proposal struct {
Do string `yaml:"do"` // close or sources: the intention's kind
Issue int `yaml:"issue"`
Reason string `yaml:"reason,omitempty"`
DuplicateOf int `yaml:"duplicate-of,omitempty"`
Sources []string `yaml:"sources,omitempty"`
Milestone string `yaml:"milestone,omitempty"`
Title string `yaml:"title,omitempty"` // an issue to open, or an issue's new title (rename)
Into []Child `yaml:"into,omitempty"` // the children of a split
Quote *Quote `yaml:"quote"`
Why string `yaml:"why"`
// Refining: the sections written, Need and Validation as drafts; Added,
// the engine's, says which the body did not have yet.
Scope string `yaml:"scope,omitempty"`
Verification string `yaml:"verification,omitempty"`
Need string `yaml:"need,omitempty"`
Validation string `yaml:"validation,omitempty"`
Added []string `yaml:"added,omitempty"`
Questions string `yaml:"questions,omitempty"` // asking the reporter; for an outsider's refine, what it still needs
// The engine's, for the conversation with the reporter: the round this
// comment would be, and whether a refine is proposed to the reporter in
// a comment rather than written in the body (an outsider's issue).
Round int `yaml:"round,omitempty"`
ToReporter bool `yaml:"to-reporter,omitempty"`
// Agreed, the engine's: who agreed in a reply to the text last proposed
// to the reporter, which this refine writes; checked again on the forge
// (Agreement), never taken from the agent.
Agreed string `yaml:"agreed,omitempty"`
Spent bool `yaml:"spent,omitempty"` // the rounds spent: proposed to a person
// Ordering: the priority set (1 to 4); a milestone left because it is
// released (From, the engine's); and, the engine's, the issue's
// priority and milestone before the run, written in the report.
Priority int `yaml:"priority,omitempty"`
From string `yaml:"from,omitempty"`
Before string `yaml:"before,omitempty"`
// Obsolete (ADR-0024): Announced, on the engine's closing, the day of
// the announcement it follows; Announce and Until, the engine's, that
// this act announces rather than closes, and the day from which it may
// close; Judge, the engine's, the second judge's yes and its level;
// Say, on a keep, that the issue is told why.
Announced string `yaml:"announced,omitempty"`
Announce bool `yaml:"announce,omitempty"`
Until string `yaml:"until,omitempty"`
Judge string `yaml:"judge,omitempty"`
Say bool `yaml:"say,omitempty"`
// Ticked, the engine's: who ticked this proposal's box in the report, a
// person of the project — checked again on the forge, the act done as
// the record says, never as the intention does (ADR-0025).
Ticked string `yaml:"ticked,omitempty"`
}
Proposal is an act on an issue the agent proposed: a closing, or the code it is about named as its sources.
func LastProposal ¶ added in v0.11.0
LastProposal reads the sections of the last refined text proposed to an issue's reporter; nil when none was, or it does not read.
type Quote ¶
type Quote struct {
Path string `yaml:"path,omitempty"`
Issue int `yaml:"issue,omitempty"`
Text string `yaml:"text"`
}
Quote is the evidence an act cites: a text in a file, or in an issue.
type Record ¶
type Record struct {
Closed []Closing `yaml:"closed,omitempty"`
Wrong []Closing `yaml:"wrong,omitempty"` // closings found wrong: their issue open again
Propose []string `yaml:"propose,flow,omitempty"` // kinds of act back to propose, until the person says
// Done are the role's own acts a person may undo, other than closings:
// a rename, a priority, a milestone, ready, a split (ADR-0026); Undone,
// those a person undid, with what shows it.
Done []Done `yaml:"done,omitempty"`
Undone []Undo `yaml:"undone,omitempty"`
Proposed []Pending `yaml:"proposed,omitempty"` // acts proposed, kept until their issue is closed or proposed again
// The person's hand (ADR-0025): the runs in a row whose report proposed
// something and that nobody answered, and the comments of people of the
// project on the report when last read.
Ignored int `yaml:"ignored,omitempty"`
Comments int `yaml:"comments,omitempty"`
// Measure is what people did with the proposals at the level in force,
// for the report to suggest another (ADR-0026).
Measure *Measure `yaml:"measure,omitempty"`
}
Record is what the role did, kept on its report issue.
type Setting ¶
type Setting struct {
Mode string
Max int
Rounds int // asking: the times an issue's reporter is written to, then a person (ask only)
Days *int // close-obsolete: the days an announcement waits; ObsoleteDays when nil
Exempt []string // close-obsolete: labels that keep an issue from it; DefaultExempt when nil
Drafts string // refine: propose has Need and Validation drafts proposed, Scope and Verification written (ADR-0026)
}
Setting is a kind of act's mode and cap.
type State ¶
type State struct {
Sources []string `yaml:"sources"`
Confirmed string `yaml:"confirmed"`
Judged string `yaml:"judged,omitempty"` // the commit the role last read it at
Comments int `yaml:"comments,omitempty"` // people's comments when it was last read
Body string `yaml:"body,omitempty"` // a digest of its body, when the role last read or wrote it
Priority int `yaml:"priority,omitempty"` // the priority the role last set: another on the issue is a person's
Title string `yaml:"title,omitempty"` // the title the role last set: another on the issue is a person's
Split []int `yaml:"split,omitempty"` // the children the role split it into: it is not split again
Kept []string `yaml:"kept,omitempty"` // the evidence an announcement as obsolete rested on, kept open: not announced again for it
}
State is what the engine knows of an issue, kept in one comment on it.
type TickBy ¶ added in v0.12.0
type TickBy struct {
Key string
forge.Note
Known bool // the forge says who ticked it: by name, or as a person of the project
}
TickBy is a box ticked in the report now, with who ticked it.