The issue tracker links a research effort by its number (milestone 47/G, W15.2)
The trace from research to the running build is links all the way (design 47). Claude-Session: https://claude.ai/code/session_01JG73KEq4zoDfM9WtYpcQgZ (Joined from dd68c96d.) Builds: design 47 G §318 (ISS1) Claude-Session: https://claude.ai/code/session_01JG73KEq4zoDfM9WtYpcQgZ
This commit is contained in:
@@ -212,9 +212,12 @@ const (
|
||||
LinkDependsOn = "depends-on"
|
||||
LinkPullRequest = "pull-request"
|
||||
LinkDecision = "decision"
|
||||
LinkDesign = "design"
|
||||
LinkCondition = "condition"
|
||||
LinkDelivery = "delivery"
|
||||
// LinkResearch is a research effort of the knowledge base, by its number (design 47: the trace from research to the
|
||||
// running build is links all the way).
|
||||
LinkResearch = "research"
|
||||
LinkDesign = "design"
|
||||
LinkCondition = "condition"
|
||||
LinkDelivery = "delivery"
|
||||
// LinkMilestone is the one milestone an issue belongs to, design/id (ADR 0493 §1, §2).
|
||||
LinkMilestone = "milestone"
|
||||
// LinkCommit is a commit that fixes the issue, repository@full sha (ADR 0493 §4).
|
||||
@@ -222,7 +225,7 @@ const (
|
||||
)
|
||||
|
||||
// LinkKinds is every kind, in the order they are told.
|
||||
var LinkKinds = []string{LinkDuplicates, LinkRelatesTo, LinkDependsOn, LinkPullRequest, LinkDecision, LinkDesign, LinkCondition, LinkDelivery,
|
||||
var LinkKinds = []string{LinkDuplicates, LinkRelatesTo, LinkDependsOn, LinkPullRequest, LinkDecision, LinkResearch, LinkDesign, LinkCondition, LinkDelivery,
|
||||
LinkMilestone, LinkCommit}
|
||||
|
||||
// madeByPeople are the kinds only a person or a session links, never the triage (ADR 0493 §4).
|
||||
@@ -231,6 +234,7 @@ var madeByPeople = []string{LinkPullRequest, LinkMilestone, LinkCommit}
|
||||
var (
|
||||
pullRequest = regexp.MustCompile(`^[a-z0-9][a-z0-9._-]{0,99}#[1-9][0-9]{0,6}$`)
|
||||
decision = regexp.MustCompile(`^[0-9]{4}$`)
|
||||
research = regexp.MustCompile(`^[0-9]{3,4}$`)
|
||||
// deliveryID mirrors the delivery gate's `IDOf` (modules/mesh-delivery-gate/cmd/mesh-delivery-gate/model.go): the forge's
|
||||
// repository as owner/name, lower-cased, `@` and at most twelve characters of its commit. The pattern this
|
||||
// replaced took neither the slash nor the `@`, so no delivery could be linked (novox/hq issue 475).
|
||||
@@ -280,6 +284,8 @@ func checkTarget(kind, target string) (string, error) {
|
||||
ok, shape = pullRequest.MatchString(t), "a repository and a pull request's number, such as mesh-host#246"
|
||||
case LinkDecision:
|
||||
ok, shape = decision.MatchString(t), "a decision record's four-digit number, such as 0275"
|
||||
case LinkResearch:
|
||||
ok, shape = research.MatchString(t), "a research effort's number, such as 085"
|
||||
case LinkDesign:
|
||||
ok, shape = designPath.MatchString(t), "a design document, such as 03-DESIGN/01-to-be/53-the-issue-tracker.md"
|
||||
case LinkCondition:
|
||||
|
||||
@@ -616,7 +616,7 @@ func Tools(t *Tracker) []stdio.Tool {
|
||||
{Name: Seat + ".link",
|
||||
Description: "Link an issue to something, or with remove, take a link away. Kinds: duplicates or relates-to " +
|
||||
"another issue (its number), pull-request (such as mesh-host#246), decision (a decision record's " +
|
||||
"number, such as 0275), design (a design document's path), condition (a condition's key) and delivery " +
|
||||
"number, such as 0275), research (a research effort's number, such as 085), design (a design document's path), condition (a condition's key) and delivery " +
|
||||
"(a delivery's id, such as novox/mesh-host@d2e9dc61590f), milestone (the one milestone it belongs to, design/id such as " +
|
||||
"47/R6) and commit (a commit that fixes it, repository@full sha). Refused: a target not of its kind's shape, an issue that does not exist, a link it " +
|
||||
"already has, a second milestone (remove the first to move it), a milestone that does not exist or is closed.",
|
||||
|
||||
@@ -485,6 +485,7 @@ func TestLinksAreTypedAddedOnceAndRemoved(t *testing.T) {
|
||||
{Kind: LinkRelatesTo, Target: keyOf(b)},
|
||||
{Kind: LinkPullRequest, Target: "mesh-controller#246"},
|
||||
{Kind: LinkDecision, Target: "0275"},
|
||||
{Kind: LinkResearch, Target: "085"},
|
||||
{Kind: LinkDesign, Target: "03-DESIGN/01-to-be/53-the-issue-tracker.md"},
|
||||
{Kind: LinkCondition, Target: "mesh.hand-acts.backup.healer-wanted"},
|
||||
{Kind: LinkDelivery, Target: "novox/mesh-controller@0f853e93fa11"},
|
||||
@@ -505,6 +506,7 @@ func TestLinksAreTypedAddedOnceAndRemoved(t *testing.T) {
|
||||
{LinkAsk{Kind: LinkPullRequest, Target: "mesh-controller#246"}, "already has"},
|
||||
{LinkAsk{Kind: LinkPullRequest, Target: "../x#1"}, "target is"},
|
||||
{LinkAsk{Kind: LinkDecision, Target: "275"}, "four-digit"},
|
||||
{LinkAsk{Kind: LinkResearch, Target: "85"}, "research effort's number"},
|
||||
{LinkAsk{Kind: LinkDesign, Target: "03-DESIGN/../../etc/passwd"}, "design document"},
|
||||
{LinkAsk{Kind: LinkCondition, Target: "a key\nwith a line"}, "condition"},
|
||||
{LinkAsk{Kind: LinkCondition, Target: "machine.ace.token=abcdefgh123.leaked"}, "secret"},
|
||||
|
||||
Reference in New Issue
Block a user