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 ClosedByRole(f forge.Backlog, role string, open []forge.Issue) []int
- func Comment(c Proposal, role string) string
- func FormatRecord(r Record) string
- func FormatState(s State) string
- func ImportKey(q Quote) string
- func Locate(repo, path, text string) (from, to int, original string, ok bool)
- func PeopleComments(comments []string) int
- func RecordMarker(role string) string
- func ReportTitle(role string) string
- func Settings(settings map[string]any) map[string]Setting
- func StateMarker(role string) string
- type Closing
- type Decision
- type Pending
- type Plan
- type Proposal
- type Quote
- type Record
- type Setting
- type State
Constants ¶
const ( Act = "act" Propose = "propose" Off = "off" )
Modes of an act.
Variables ¶
var Kinds = []string{"open", "close", "sources", "milestone"}
Kinds are the intentions that are acts on the backlog.
Functions ¶
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 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 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 PeopleComments ¶
PeopleComments counts an issue's comments that are not the engine's.
func RecordMarker ¶
RecordMarker marks the report's comment holding what the role did.
func ReportTitle ¶
ReportTitle is the title of the role's report issue.
func StateMarker ¶
StateMarker marks the comment holding an issue's state.
Types ¶
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"`
}
Decision is what becomes of one act.
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, settings map[string]Setting, closes map[int]Proposal) (*Plan, error)
Decide plans the acts proposed, given at their place in the run.
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
Quote *Quote `yaml:"quote"`
Why string `yaml:"why"`
}
Proposal is an act on an issue the agent proposed: a closing, or the code it is about named as its sources.
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
Proposed []Pending `yaml:"proposed,omitempty"` // acts proposed, kept until their issue is closed or proposed again
}
Record is what the role did, kept on its report issue.
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
}
State is what the engine knows of an issue, kept in one comment on it.