@telora/daemon 0.23.18 → 0.23.22
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build-info.json +2 -2
- package/dist/ci/ci-sensor-loop.d.ts +24 -12
- package/dist/ci/ci-sensor-loop.d.ts.map +1 -1
- package/dist/ci/ci-sensor-loop.js +20 -16
- package/dist/ci/ci-sensor-loop.js.map +1 -1
- package/dist/ci/ci-status.d.ts.map +1 -1
- package/dist/ci/ci-status.js +1 -0
- package/dist/ci/ci-status.js.map +1 -1
- package/dist/ci/product-ci-repo.d.ts +44 -0
- package/dist/ci/product-ci-repo.d.ts.map +1 -0
- package/dist/ci/product-ci-repo.js +104 -0
- package/dist/ci/product-ci-repo.js.map +1 -0
- package/dist/composition/execution-ci-context.d.ts.map +1 -1
- package/dist/composition/execution-ci-context.js +4 -1
- package/dist/composition/execution-ci-context.js.map +1 -1
- package/dist/composition/execution-merge-context.d.ts.map +1 -1
- package/dist/composition/execution-merge-context.js +4 -1
- package/dist/composition/execution-merge-context.js.map +1 -1
- package/dist/composition/focus-activity-live-sources.d.ts.map +1 -1
- package/dist/composition/focus-activity-live-sources.js +13 -1
- package/dist/composition/focus-activity-live-sources.js.map +1 -1
- package/dist/composition/team-liveness-phase-sources.d.ts.map +1 -1
- package/dist/composition/team-liveness-phase-sources.js +1 -0
- package/dist/composition/team-liveness-phase-sources.js.map +1 -1
- package/dist/composition/verify-probe-context.js +1 -1
- package/dist/composition/verify-probe-context.js.map +1 -1
- package/dist/daemon-state/focus-progress-clock.d.ts.map +1 -1
- package/dist/daemon-state/focus-progress-clock.js +1 -0
- package/dist/daemon-state/focus-progress-clock.js.map +1 -1
- package/dist/focus/focus-activity-completion-merge.d.ts +25 -0
- package/dist/focus/focus-activity-completion-merge.d.ts.map +1 -0
- package/dist/focus/focus-activity-completion-merge.js +43 -0
- package/dist/focus/focus-activity-completion-merge.js.map +1 -0
- package/dist/focus/focus-activity-poll-facts.d.ts.map +1 -1
- package/dist/focus/focus-activity-poll-facts.js +1 -0
- package/dist/focus/focus-activity-poll-facts.js.map +1 -1
- package/dist/focus/focus-activity-record.d.ts +5 -4
- package/dist/focus/focus-activity-record.d.ts.map +1 -1
- package/dist/focus/focus-activity-record.js +10 -6
- package/dist/focus/focus-activity-record.js.map +1 -1
- package/dist/focus/focus-activity-sources.d.ts +12 -0
- package/dist/focus/focus-activity-sources.d.ts.map +1 -1
- package/dist/focus/focus-activity-sources.js +2 -1
- package/dist/focus/focus-activity-sources.js.map +1 -1
- package/dist/focus/heartbeat.d.ts.map +1 -1
- package/dist/focus/heartbeat.js +1 -0
- package/dist/focus/heartbeat.js.map +1 -1
- package/dist/merge/candidate-rework.d.ts +9 -2
- package/dist/merge/candidate-rework.d.ts.map +1 -1
- package/dist/merge/candidate-rework.js +15 -7
- package/dist/merge/candidate-rework.js.map +1 -1
- package/dist/merge/completion-hold-record.d.ts +6 -0
- package/dist/merge/completion-hold-record.d.ts.map +1 -1
- package/dist/merge/completion-hold-record.js +15 -2
- package/dist/merge/completion-hold-record.js.map +1 -1
- package/dist/merge/completion-judge.d.ts.map +1 -1
- package/dist/merge/completion-judge.js +2 -1
- package/dist/merge/completion-judge.js.map +1 -1
- package/dist/merge/completion-merge-activity.d.ts +88 -0
- package/dist/merge/completion-merge-activity.d.ts.map +1 -0
- package/dist/merge/completion-merge-activity.js +85 -0
- package/dist/merge/completion-merge-activity.js.map +1 -0
- package/dist/merge/completion-merge-driver.d.ts.map +1 -1
- package/dist/merge/completion-merge-driver.js +4 -1
- package/dist/merge/completion-merge-driver.js.map +1 -1
- package/dist/merge/completion-merge-gate.d.ts +2 -0
- package/dist/merge/completion-merge-gate.d.ts.map +1 -1
- package/dist/merge/completion-merge-gate.js +18 -10
- package/dist/merge/completion-merge-gate.js.map +1 -1
- package/dist/merge/merge-back-loop.d.ts +5 -0
- package/dist/merge/merge-back-loop.d.ts.map +1 -1
- package/dist/merge/merge-back-loop.js +27 -11
- package/dist/merge/merge-back-loop.js.map +1 -1
- package/dist/queries/sessions/daemon-connection.d.ts.map +1 -1
- package/dist/queries/sessions/daemon-connection.js +2 -1
- package/dist/queries/sessions/daemon-connection.js.map +1 -1
- package/dist/testing/fixtures/completion-judge-stubs.d.ts.map +1 -1
- package/dist/testing/fixtures/completion-judge-stubs.js +2 -0
- package/dist/testing/fixtures/completion-judge-stubs.js.map +1 -1
- package/dist/testing/fixtures/index.js +1 -1
- package/dist/testing/fixtures/recording-api-client.js +1 -1
- package/dist/types/index.js +1 -1
- package/dist/verify/install-probe/install-probe.d.ts +37 -8
- package/dist/verify/install-probe/install-probe.d.ts.map +1 -1
- package/dist/verify/install-probe/install-probe.js +190 -11
- package/dist/verify/install-probe/install-probe.js.map +1 -1
- package/package.json +3 -3
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
// PINNED-BY-BEGIN (generated by gen:pinned-by -- do not hand-edit; checked by lint:pinned-by)
|
|
2
|
-
// Pinned by: packages/daemon/src/
|
|
2
|
+
// Pinned by: packages/daemon/src/ci/ci-log-instruction-bindings.test.ts,
|
|
3
|
+
// packages/daemon/src/merge/candidate-rework.test.ts,
|
|
3
4
|
// packages/daemon/src/merge/completion-conflict-rework.test.ts,
|
|
4
5
|
// packages/daemon/src/merge/completion-rework-armed.test.ts
|
|
5
6
|
// PINNED-BY-END
|
|
@@ -30,6 +31,7 @@ import { DELIVERY_STATUS } from '@telora/daemon-core';
|
|
|
30
31
|
import { resolveReconciledWrite } from '../delivery/delivery-reconciler-apply.js';
|
|
31
32
|
import { deliveryHoldsCompletion } from './completion-merge-gate.js';
|
|
32
33
|
import { candidateBranchForFocus } from '../ci/candidate-ref.js';
|
|
34
|
+
import { ciLogInstruction, ciLogInstructionText } from '../ci/product-ci-repo.js';
|
|
33
35
|
import { createLogger } from '../log/daemon-log.js';
|
|
34
36
|
const log = createLogger({ module: 'completion-merge' });
|
|
35
37
|
/** The Bug's title; carries the commit so one failure files one Bug. Pure. */
|
|
@@ -80,8 +82,12 @@ function localFailureDescription(subject, sha, failure) {
|
|
|
80
82
|
'HEAD), fix it, and commit; the next review and completion run judge the fix.',
|
|
81
83
|
];
|
|
82
84
|
}
|
|
83
|
-
/**
|
|
84
|
-
|
|
85
|
+
/**
|
|
86
|
+
* The Bug's description. Pure. A red candidate's names the CI-log read for THIS
|
|
87
|
+
* product's repo (`ciRepo`, from its origin remote) at the candidate commit --
|
|
88
|
+
* never the reader's syntelyos/telora default.
|
|
89
|
+
*/
|
|
90
|
+
export function candidateReworkDescription(subject, sha, cause, detail, ciRepo) {
|
|
85
91
|
if (cause === 'conflict')
|
|
86
92
|
return conflictDescription(subject, sha, isConflict(detail) ? detail : null).join('\n');
|
|
87
93
|
if (cause === 'local_red')
|
|
@@ -98,9 +104,10 @@ export function candidateReworkDescription(subject, sha, cause, detail) {
|
|
|
98
104
|
return [
|
|
99
105
|
`CI's full suite FAILED on the focus's integration candidate ${sha} (the focus branch merged with the integration tip).`,
|
|
100
106
|
'',
|
|
101
|
-
`Integration does not move until a candidate is green. Read the failing run
|
|
102
|
-
`refs/heads/${candidateBranchForFocus(subject.focusId)})
|
|
103
|
-
|
|
107
|
+
`Integration does not move until a candidate is green. Read the failing run first (its ref is ` +
|
|
108
|
+
`refs/heads/${candidateBranchForFocus(subject.focusId)}). ${ciLogInstructionText(ciLogInstruction(ciRepo, sha), sha)}`,
|
|
109
|
+
'',
|
|
110
|
+
`Then fix it on ${subject.branchName} and commit; the next review and candidate run judge the fix.`,
|
|
104
111
|
].join('\n');
|
|
105
112
|
}
|
|
106
113
|
/** Which done delivery owns the re-work. Pure. */
|
|
@@ -159,7 +166,8 @@ export async function routeCandidateRework(subject, sha, cause, detail, deps) {
|
|
|
159
166
|
let issues = await deps.getDeliveryIssues(owner.id);
|
|
160
167
|
const title = nextReworkTitle(issues, candidateReworkTitle(sha, cause));
|
|
161
168
|
if (title !== null) {
|
|
162
|
-
|
|
169
|
+
const description = candidateReworkDescription(subject, sha, cause, detail, deps.resolveCiRepo(subject.repoPath));
|
|
170
|
+
await deps.createIssue(owner.id, title, description, 'Bug', 'P0');
|
|
163
171
|
issues = await deps.getDeliveryIssues(owner.id);
|
|
164
172
|
}
|
|
165
173
|
if (!(await reopenOwner(owner, issues, deps))) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"candidate-rework.js","sourceRoot":"","sources":["../../src/merge/candidate-rework.ts"],"names":[],"mappings":"AAAA,8FAA8F;AAC9F,
|
|
1
|
+
{"version":3,"file":"candidate-rework.js","sourceRoot":"","sources":["../../src/merge/candidate-rework.ts"],"names":[],"mappings":"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"}
|
|
@@ -15,6 +15,12 @@ export declare function candidateWaitPath(productId: string, focusId: string, di
|
|
|
15
15
|
* first sighting.
|
|
16
16
|
*/
|
|
17
17
|
export declare function stampCandidateWait(productId: string, focusId: string, sha: string, now: number, dir?: string): number | null;
|
|
18
|
+
/**
|
|
19
|
+
* When the focus's candidate `sha` was first stamped (pushed, or seen waiting on
|
|
20
|
+
* CI), READ ONLY: null when no readable record names `sha`. The focus activity
|
|
21
|
+
* record dates a judge's wait with it, so a restart does not reset the clock.
|
|
22
|
+
*/
|
|
23
|
+
export declare function readCandidateWaitSince(productId: string, focusId: string, sha: string, dir?: string): number | null;
|
|
18
24
|
/** Whether the focus's candidate `sha` was already re-pushed for a missing CI verdict (merge/completion-merge-driver.ts). */
|
|
19
25
|
export declare function readCandidateRepushed(productId: string, focusId: string, sha: string, dir?: string): boolean;
|
|
20
26
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"completion-hold-record.d.ts","sourceRoot":"","sources":["../../src/merge/completion-hold-record.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"completion-hold-record.d.ts","sourceRoot":"","sources":["../../src/merge/completion-hold-record.ts"],"names":[],"mappings":"AA8CA,+FAA+F;AAC/F,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,GAAE,MAAkB,GAAG,MAAM,CAEtG;AAgBD;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,GAAE,MAAkB,GAAG,MAAM,GAAG,IAAI,CAW3H;AAED,+DAA+D;AAC/D,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,GAAE,MAAkB,GAAG,MAAM,CAErG;AAmBD;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,GAAE,MAAkB,GAAG,MAAM,GAAG,IAAI,CAavI;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,GAAE,MAAkB,GAAG,MAAM,GAAG,IAAI,CAI9H;AAED,6HAA6H;AAC7H,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,GAAE,MAAkB,GAAG,OAAO,CAGvH;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,GAAE,MAAkB,GAAG,IAAI,CAMjI;AAED,8GAA8G;AAC9G,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,GAAE,MAAkB,GAAG,OAAO,CAOtG;AAED;;;;GAIG;AACH,wBAAgB,0BAA0B,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,GAAE,MAAkB,GAAG,MAAM,EAAE,CAoB/F;AAED,8GAA8G;AAC9G,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,GAAE,MAAkB,GAAG,IAAI,CAOrG"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
// PINNED-BY-BEGIN (generated by gen:pinned-by -- do not hand-edit; checked by lint:pinned-by)
|
|
2
|
-
// Pinned by: packages/daemon/src/
|
|
2
|
+
// Pinned by: packages/daemon/src/focus/heartbeat-completion-merge.test.ts,
|
|
3
|
+
// packages/daemon/src/merge/completion-hold-record.test.ts,
|
|
3
4
|
// packages/daemon/src/merge/completion-merge-driver.test.ts
|
|
4
5
|
// PINNED-BY-END
|
|
5
6
|
/**
|
|
@@ -19,7 +20,8 @@
|
|
|
19
20
|
* The same directory holds the CANDIDATE WAIT: when the focus's integration
|
|
20
21
|
* candidate (a sha) was first pushed or seen waiting on CI, so the completion
|
|
21
22
|
* merge driver's no-verdict window (merge/completion-merge-driver.ts) survives a
|
|
22
|
-
* restart. A new candidate sha restarts it; clearing the hold clears it too.
|
|
23
|
+
* restart. A new candidate sha restarts it; clearing the hold clears it too. The
|
|
24
|
+
* focus activity record reads both clocks (composition/focus-activity-live-sources.ts).
|
|
23
25
|
*
|
|
24
26
|
* Host-local like the auto-approval record (merge/review-auto-approval-record.ts):
|
|
25
27
|
* the daemon that claims the product writes and reads it. A hold record that
|
|
@@ -117,6 +119,17 @@ export function stampCandidateWait(productId, focusId, sha, now, dir = holdDir()
|
|
|
117
119
|
return null;
|
|
118
120
|
}
|
|
119
121
|
}
|
|
122
|
+
/**
|
|
123
|
+
* When the focus's candidate `sha` was first stamped (pushed, or seen waiting on
|
|
124
|
+
* CI), READ ONLY: null when no readable record names `sha`. The focus activity
|
|
125
|
+
* record dates a judge's wait with it, so a restart does not reset the clock.
|
|
126
|
+
*/
|
|
127
|
+
export function readCandidateWaitSince(productId, focusId, sha, dir = holdDir()) {
|
|
128
|
+
const existing = readCandidateWait(candidateWaitPath(productId, focusId, dir));
|
|
129
|
+
if (existing === null || existing.sha !== sha)
|
|
130
|
+
return null;
|
|
131
|
+
return typeof existing.since === 'number' && Number.isFinite(existing.since) ? existing.since : null;
|
|
132
|
+
}
|
|
120
133
|
/** Whether the focus's candidate `sha` was already re-pushed for a missing CI verdict (merge/completion-merge-driver.ts). */
|
|
121
134
|
export function readCandidateRepushed(productId, focusId, sha, dir = holdDir()) {
|
|
122
135
|
const existing = readCandidateWait(candidateWaitPath(productId, focusId, dir));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"completion-hold-record.js","sourceRoot":"","sources":["../../src/merge/completion-hold-record.ts"],"names":[],"mappings":"AAAA,8FAA8F;AAC9F,
|
|
1
|
+
{"version":3,"file":"completion-hold-record.js","sourceRoot":"","sources":["../../src/merge/completion-hold-record.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"completion-judge.d.ts","sourceRoot":"","sources":["../../src/merge/completion-judge.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"completion-judge.d.ts","sourceRoot":"","sources":["../../src/merge/completion-judge.ts"],"names":[],"mappings":"AAKA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oDAAoD,CAAC;AAE3F,kFAAkF;AAClF,eAAO,MAAM,6BAA6B,QAAiB,CAAC;AAE5D,6CAA6C;AAC7C,MAAM,MAAM,eAAe,GACvB;IAAE,IAAI,EAAE,IAAI,CAAA;CAAE,GACd;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GACrD;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAChB;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAE3C,0EAA0E;AAC1E,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,gBAAgB,GAAG,eAAe,CAW3E;AAED,kEAAkE;AAClE,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,eAAe,GAAG,MAAM,CAWtE"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
// PINNED-BY-BEGIN (generated by gen:pinned-by -- do not hand-edit; checked by lint:pinned-by)
|
|
2
|
-
// Pinned by: packages/daemon/src/
|
|
2
|
+
// Pinned by: packages/daemon/src/focus/heartbeat-completion-merge.test.ts,
|
|
3
|
+
// packages/daemon/src/merge/completion-judge.test.ts
|
|
3
4
|
// PINNED-BY-END
|
|
4
5
|
/** Default bound on a local completion run: a full suite, not a targeted gate. */
|
|
5
6
|
export const DEFAULT_COMPLETION_TIMEOUT_MS = 60 * 60 * 1000;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"completion-judge.js","sourceRoot":"","sources":["../../src/merge/completion-judge.ts"],"names":[],"mappings":"AAAA,8FAA8F;AAC9F,
|
|
1
|
+
{"version":3,"file":"completion-judge.js","sourceRoot":"","sources":["../../src/merge/completion-judge.ts"],"names":[],"mappings":"AAAA,8FAA8F;AAC9F,2EAA2E;AAC3E,uDAAuD;AACvD,gBAAgB;AA4BhB,kFAAkF;AAClF,MAAM,CAAC,MAAM,6BAA6B,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAS5D,0EAA0E;AAC1E,MAAM,UAAU,mBAAmB,CAAC,IAAsB;IACxD,IAAI,YAAY,IAAI,IAAI;QAAE,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC;IACjF,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS;QAAE,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC;IACxF,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;IAC/B,IAAI,QAAQ,KAAK,SAAS;QAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;IACpD,IAAI,QAAQ,CAAC,eAAe,KAAK,IAAI;QAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IAC7D,OAAO;QACL,IAAI,EAAE,OAAO;QACb,OAAO,EAAE,QAAQ,CAAC,iBAAiB,IAAI,QAAQ,CAAC,OAAO;QACvD,SAAS,EAAE,QAAQ,CAAC,mBAAmB,IAAI,QAAQ,CAAC,SAAS,IAAI,6BAA6B;KAC/F,CAAC;AACJ,CAAC;AAED,kEAAkE;AAClE,MAAM,UAAU,uBAAuB,CAAC,KAAsB;IAC5D,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;QACnB,KAAK,IAAI;YACP,OAAO,qBAAqB,CAAC;QAC/B,KAAK,OAAO;YACV,OAAO,wBAAwB,KAAK,CAAC,OAAO,IAAI,CAAC;QACnD,KAAK,MAAM;YACT,OAAO,4DAA4D,CAAC;QACtE,KAAK,YAAY;YACf,OAAO,8BAA8B,KAAK,CAAC,MAAM,GAAG,CAAC;IACzD,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The completion merge as a focus activity: the merge-back loop's latest
|
|
3
|
+
* completion-merge gate decision for each COMPLETE focus, kept in process for
|
|
4
|
+
* the focus activity record (focus/focus-activity-completion-merge.ts) to
|
|
5
|
+
* publish on the heartbeat.
|
|
6
|
+
*
|
|
7
|
+
* The gate (merge/completion-merge-gate.ts) decides a complete focus's next step
|
|
8
|
+
* on every merge-back tick. Before this module that decision lived only inside
|
|
9
|
+
* the tick and in the host-local hold records (merge/completion-hold-record.ts),
|
|
10
|
+
* so a complete focus whose candidate CI was judging read "Idle". The loop
|
|
11
|
+
* records here every decision it reaches for a complete focus, and forgets it
|
|
12
|
+
* when the merge is no longer under way:
|
|
13
|
+
*
|
|
14
|
+
* - the merge landed;
|
|
15
|
+
* - the focus is no longer complete (the gate's own delivery read, or the
|
|
16
|
+
* tick's, says so; or a re-work step re-opened it);
|
|
17
|
+
* - the focus's branch left the merge-back scan (merged by another entry point,
|
|
18
|
+
* or no longer in view).
|
|
19
|
+
*
|
|
20
|
+
* A focus the tick skips before the gate (its worktree busy, a conflict record
|
|
21
|
+
* open, a throttle) keeps the step it was last seen at: that is still the step
|
|
22
|
+
* its merge stands at.
|
|
23
|
+
*
|
|
24
|
+
* In process only: a restart starts empty, and the first tick that reaches the
|
|
25
|
+
* gate restores the entry. The clocks are not in process: `heldSinceMs` is the
|
|
26
|
+
* durable first-hold instant, and the beat reads the durable candidate-wait
|
|
27
|
+
* start (composition/focus-activity-live-sources.ts).
|
|
28
|
+
*
|
|
29
|
+
* @module merge/completion-merge-activity
|
|
30
|
+
*/
|
|
31
|
+
import type { CompletionMergeActivityStep, CompletionMergeJudge } from '@telora/daemon-core';
|
|
32
|
+
import type { MergeGateDecision } from './completion-merge-gate.js';
|
|
33
|
+
/** A complete focus's merge as the latest tick that reached the gate saw it. */
|
|
34
|
+
export interface CompletionMergeHold {
|
|
35
|
+
focusId: string;
|
|
36
|
+
productId: string;
|
|
37
|
+
step: CompletionMergeActivityStep;
|
|
38
|
+
/** The judge the step depends on; null when it precedes the judge (or is the admission). */
|
|
39
|
+
judge: CompletionMergeJudge | null;
|
|
40
|
+
/**
|
|
41
|
+
* The commit the step concerns; null when the gate held before reading the
|
|
42
|
+
* head. From the candidate stage on it IS the candidate (pushed, judged,
|
|
43
|
+
* red, admitted -- or the one whose judge could not be read). Before it, it
|
|
44
|
+
* is the branch head the step acts on: the head a merge-out merges the
|
|
45
|
+
* integration tip into (the merge makes a NEW candidate), or the head that
|
|
46
|
+
* carries a conflict-deciding merge.
|
|
47
|
+
*/
|
|
48
|
+
candidateSha: string | null;
|
|
49
|
+
/** The gate's words: why it holds, or what admitted the candidate. */
|
|
50
|
+
reason: string;
|
|
51
|
+
/** When the completed focus's merge was first held (merge/completion-hold-record.ts); null when that record is unusable. */
|
|
52
|
+
heldSinceMs: number | null;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* The step and judge a gate decision publishes. A hold names the step that
|
|
56
|
+
* advances it, or what it awaits; a hold that names neither could not read an
|
|
57
|
+
* input (the gate's fail-closed holds), and is published as such. Pure.
|
|
58
|
+
*/
|
|
59
|
+
export declare function completionMergeStepOf(decision: MergeGateDecision): Pick<CompletionMergeHold, 'step' | 'judge'>;
|
|
60
|
+
/**
|
|
61
|
+
* Record the decision the gate reached this tick for a complete focus. A
|
|
62
|
+
* decision whose own delivery read found the focus incomplete forgets it: there
|
|
63
|
+
* is no completion merge under way.
|
|
64
|
+
*/
|
|
65
|
+
export declare function recordCompletionMergeDecision(subject: {
|
|
66
|
+
focusId: string;
|
|
67
|
+
productId: string;
|
|
68
|
+
}, decision: MergeGateDecision, heldSinceMs: number | null): void;
|
|
69
|
+
/** The durable first-hold record (merge/completion-hold-record.ts), as far as ending a hold needs it. */
|
|
70
|
+
export interface CompletionHoldClear {
|
|
71
|
+
clear: (productId: string, focusId: string) => void;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* The completed focus's merge is no longer under way -- it landed, or the focus
|
|
75
|
+
* is no longer complete: clear its durable first hold and forget its published
|
|
76
|
+
* step together, so neither outlives the other.
|
|
77
|
+
*/
|
|
78
|
+
export declare function endCompletionMerge(subject: {
|
|
79
|
+
focusId: string;
|
|
80
|
+
productId: string;
|
|
81
|
+
}, hold: CompletionHoldClear): void;
|
|
82
|
+
/** Forget every focus whose branch is not in this tick's merge-back scan. */
|
|
83
|
+
export declare function retainCompletionMerges(focusIds: ReadonlySet<string>): void;
|
|
84
|
+
/** Every recorded completion merge, as of now. */
|
|
85
|
+
export declare function completionMergeSnapshot(): CompletionMergeHold[];
|
|
86
|
+
/** Reset the record -- tests start from a clean slate. */
|
|
87
|
+
export declare function __resetCompletionMergeActivityForTests(): void;
|
|
88
|
+
//# sourceMappingURL=completion-merge-activity.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"completion-merge-activity.d.ts","sourceRoot":"","sources":["../../src/merge/completion-merge-activity.ts"],"names":[],"mappings":"AAMA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAEH,OAAO,KAAK,EAAE,2BAA2B,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC7F,OAAO,KAAK,EAAuB,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAEzF,gFAAgF;AAChF,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,2BAA2B,CAAC;IAClC,4FAA4F;IAC5F,KAAK,EAAE,oBAAoB,GAAG,IAAI,CAAC;IACnC;;;;;;;OAOG;IACH,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,sEAAsE;IACtE,MAAM,EAAE,MAAM,CAAC;IACf,4HAA4H;IAC5H,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AAwBD;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,iBAAiB,GAAG,IAAI,CAAC,mBAAmB,EAAE,MAAM,GAAG,OAAO,CAAC,CAM9G;AAID;;;;GAIG;AACH,wBAAgB,6BAA6B,CAC3C,OAAO,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,EAC/C,QAAQ,EAAE,iBAAiB,EAC3B,WAAW,EAAE,MAAM,GAAG,IAAI,GACzB,IAAI,CAaN;AAED,yGAAyG;AACzG,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CACrD;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,EAAE,IAAI,EAAE,mBAAmB,GAAG,IAAI,CAGnH;AAED,6EAA6E;AAC7E,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,WAAW,CAAC,MAAM,CAAC,GAAG,IAAI,CAE1E;AAED,kDAAkD;AAClD,wBAAgB,uBAAuB,IAAI,mBAAmB,EAAE,CAE/D;AAED,0DAA0D;AAC1D,wBAAgB,sCAAsC,IAAI,IAAI,CAE7D"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
// PINNED-BY-BEGIN (generated by gen:pinned-by -- do not hand-edit; checked by lint:pinned-by)
|
|
2
|
+
// Pinned by: packages/daemon/src/focus/focus-activity-completion-merge.test.ts,
|
|
3
|
+
// packages/daemon/src/focus/heartbeat-completion-merge.test.ts,
|
|
4
|
+
// packages/daemon/src/merge/completion-merge-activity.test.ts
|
|
5
|
+
// PINNED-BY-END
|
|
6
|
+
/** The activity step each driven step publishes as. */
|
|
7
|
+
const STEP_OF_NEXT = {
|
|
8
|
+
merge_out: 'merge_out',
|
|
9
|
+
review_merge: 'review_merge',
|
|
10
|
+
push_candidate: 'push_candidate',
|
|
11
|
+
wait_ci: 'judge_running',
|
|
12
|
+
rework: 'rework',
|
|
13
|
+
run_local: 'judge_awaited',
|
|
14
|
+
rework_local: 'rework',
|
|
15
|
+
};
|
|
16
|
+
/** The judge each driven step depends on (null: the step precedes the judge). */
|
|
17
|
+
const JUDGE_OF_NEXT = {
|
|
18
|
+
merge_out: null,
|
|
19
|
+
review_merge: null,
|
|
20
|
+
push_candidate: 'ci',
|
|
21
|
+
wait_ci: 'ci',
|
|
22
|
+
rework: 'ci',
|
|
23
|
+
run_local: 'local',
|
|
24
|
+
rework_local: 'local',
|
|
25
|
+
};
|
|
26
|
+
/**
|
|
27
|
+
* The step and judge a gate decision publishes. A hold names the step that
|
|
28
|
+
* advances it, or what it awaits; a hold that names neither could not read an
|
|
29
|
+
* input (the gate's fail-closed holds), and is published as such. Pure.
|
|
30
|
+
*/
|
|
31
|
+
export function completionMergeStepOf(decision) {
|
|
32
|
+
if (decision.hold === null)
|
|
33
|
+
return { step: 'fast_forward', judge: null };
|
|
34
|
+
if (decision.next)
|
|
35
|
+
return { step: STEP_OF_NEXT[decision.next], judge: JUDGE_OF_NEXT[decision.next] };
|
|
36
|
+
if (decision.awaiting === 'approval')
|
|
37
|
+
return { step: 'approval', judge: null };
|
|
38
|
+
if (decision.awaiting === 'local_run')
|
|
39
|
+
return { step: 'judge_running', judge: 'local' };
|
|
40
|
+
return { step: 'unreadable', judge: null };
|
|
41
|
+
}
|
|
42
|
+
const holds = new Map();
|
|
43
|
+
/**
|
|
44
|
+
* Record the decision the gate reached this tick for a complete focus. A
|
|
45
|
+
* decision whose own delivery read found the focus incomplete forgets it: there
|
|
46
|
+
* is no completion merge under way.
|
|
47
|
+
*/
|
|
48
|
+
export function recordCompletionMergeDecision(subject, decision, heldSinceMs) {
|
|
49
|
+
if (decision.hold !== null && decision.incomplete) {
|
|
50
|
+
holds.delete(subject.focusId);
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
53
|
+
holds.set(subject.focusId, {
|
|
54
|
+
focusId: subject.focusId,
|
|
55
|
+
productId: subject.productId,
|
|
56
|
+
...completionMergeStepOf(decision),
|
|
57
|
+
candidateSha: decision.hold === null ? decision.candidateSha : decision.headSha ?? null,
|
|
58
|
+
reason: decision.hold === null ? decision.admittedBy : decision.hold,
|
|
59
|
+
heldSinceMs,
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* The completed focus's merge is no longer under way -- it landed, or the focus
|
|
64
|
+
* is no longer complete: clear its durable first hold and forget its published
|
|
65
|
+
* step together, so neither outlives the other.
|
|
66
|
+
*/
|
|
67
|
+
export function endCompletionMerge(subject, hold) {
|
|
68
|
+
hold.clear(subject.productId, subject.focusId);
|
|
69
|
+
holds.delete(subject.focusId);
|
|
70
|
+
}
|
|
71
|
+
/** Forget every focus whose branch is not in this tick's merge-back scan. */
|
|
72
|
+
export function retainCompletionMerges(focusIds) {
|
|
73
|
+
for (const focusId of holds.keys())
|
|
74
|
+
if (!focusIds.has(focusId))
|
|
75
|
+
holds.delete(focusId);
|
|
76
|
+
}
|
|
77
|
+
/** Every recorded completion merge, as of now. */
|
|
78
|
+
export function completionMergeSnapshot() {
|
|
79
|
+
return [...holds.values()];
|
|
80
|
+
}
|
|
81
|
+
/** Reset the record -- tests start from a clean slate. */
|
|
82
|
+
export function __resetCompletionMergeActivityForTests() {
|
|
83
|
+
holds.clear();
|
|
84
|
+
}
|
|
85
|
+
//# sourceMappingURL=completion-merge-activity.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"completion-merge-activity.js","sourceRoot":"","sources":["../../src/merge/completion-merge-activity.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"completion-merge-driver.d.ts","sourceRoot":"","sources":["../../src/merge/completion-merge-driver.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"completion-merge-driver.d.ts","sourceRoot":"","sources":["../../src/merge/completion-merge-driver.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
// PINNED-BY-BEGIN (generated by gen:pinned-by -- do not hand-edit; checked by lint:pinned-by)
|
|
2
|
-
// Pinned by: packages/daemon/src/
|
|
2
|
+
// Pinned by: packages/daemon/src/ci/ci-log-instruction-bindings.test.ts,
|
|
3
|
+
// packages/daemon/src/completion/team-exit/teardown-merge-gate.test.ts,
|
|
4
|
+
// packages/daemon/src/focus/focus-activity-completion-merge.test.ts,
|
|
5
|
+
// packages/daemon/src/focus/heartbeat-completion-merge.test.ts,
|
|
3
6
|
// packages/daemon/src/merge/candidate-rework.test.ts,
|
|
4
7
|
// packages/daemon/src/merge/completion-conflict-rework.test.ts,
|
|
5
8
|
// packages/daemon/src/merge/completion-merge-driver.test.ts,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"completion-merge-driver.js","sourceRoot":"","sources":["../../src/merge/completion-merge-driver.ts"],"names":[],"mappings":"AAAA,8FAA8F;AAC9F,
|
|
1
|
+
{"version":3,"file":"completion-merge-driver.js","sourceRoot":"","sources":["../../src/merge/completion-merge-driver.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,6 +9,8 @@ export type CompletionMergeStep = 'merge_out' | 'review_merge' | 'push_candidate
|
|
|
9
9
|
export type MergeGateDecision = {
|
|
10
10
|
hold: string;
|
|
11
11
|
next?: CompletionMergeStep;
|
|
12
|
+
/** What a hold no step advances awaits: an approval covering the head, or the local judge's run in flight. */
|
|
13
|
+
awaiting?: 'approval' | 'local_run';
|
|
12
14
|
headSha?: string;
|
|
13
15
|
/** The gate's OWN delivery read found the focus incomplete: there is no completion hold to age. */
|
|
14
16
|
incomplete?: true;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"completion-merge-gate.d.ts","sourceRoot":"","sources":["../../src/merge/completion-merge-gate.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"completion-merge-gate.d.ts","sourceRoot":"","sources":["../../src/merge/completion-merge-gate.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
// PINNED-BY-BEGIN (generated by gen:pinned-by -- do not hand-edit; checked by lint:pinned-by)
|
|
2
2
|
// Pinned by: packages/daemon/src/completion/team-exit/teardown-merge-gate.test.ts,
|
|
3
3
|
// packages/daemon/src/completion/team-teardown/mid-flight-merge-gate.test.ts,
|
|
4
|
+
// packages/daemon/src/focus/focus-activity-completion-merge.test.ts,
|
|
5
|
+
// packages/daemon/src/focus/heartbeat-completion-merge.test.ts,
|
|
4
6
|
// packages/daemon/src/merge/attributed-capture-merge-gate.test.ts,
|
|
7
|
+
// packages/daemon/src/merge/completion-merge-activity.test.ts,
|
|
5
8
|
// packages/daemon/src/merge/completion-merge-gate.test.ts,
|
|
6
9
|
// packages/daemon/src/merge/merge-back-loop.test.ts, packages/daemon/src/merge/merge-gate-coverage.test.ts,
|
|
7
10
|
// packages/daemon/src/merge/resolved-conflict-merge-gate.test.ts,
|
|
@@ -51,7 +54,12 @@
|
|
|
51
54
|
* - none (no manifest): admitted on the approval alone, and the admission says so.
|
|
52
55
|
* - unreadable: hold (fail closed), naming why.
|
|
53
56
|
* A hold carries the step that would advance it (`next`) for the merge-back loop,
|
|
54
|
-
* which is the one driver of those steps; the other entry points just hold.
|
|
57
|
+
* which is the one driver of those steps; the other entry points just hold. A
|
|
58
|
+
* hold no step advances says what it awaits instead (`awaiting`): a review
|
|
59
|
+
* approval that covers the head, or the local judge's run in flight. A hold that
|
|
60
|
+
* names neither could not read an input. Every hold reached after the head was
|
|
61
|
+
* read names it (`headSha`), a fail-closed one included, so the focus activity
|
|
62
|
+
* record (merge/completion-merge-activity.ts) never drops a commit it knew.
|
|
55
63
|
* An admission names the exact commit that passed (`candidateSha`), and
|
|
56
64
|
* integration advances only by fast-forward to that commit (git/merge.ts
|
|
57
65
|
* mergeToIntegration). Any unreadable input holds (fail closed).
|
|
@@ -111,15 +119,15 @@ export function approvedHeadHold(commits, approval) {
|
|
|
111
119
|
async function readApproval(target, deps) {
|
|
112
120
|
const approved = await deps.readApprovedReviewSha(target);
|
|
113
121
|
if (approved === null)
|
|
114
|
-
return { hold: 'no current review approves the focus head' };
|
|
122
|
+
return { hold: 'no current review approves the focus head', awaiting: 'approval' };
|
|
115
123
|
const resolved = deps.resolveAnchor(target.repoPath, target.integrationBranch, approved);
|
|
116
124
|
if (resolved === null)
|
|
117
|
-
return { hold: `the approved commit ${approved.slice(0, 9)} is not on ${target.branchName}
|
|
125
|
+
return { hold: `the approved commit ${approved.slice(0, 9)} is not on ${target.branchName}`, awaiting: 'approval' };
|
|
118
126
|
const state = await deps.judgeApprovalGate(target, resolved.sha);
|
|
119
127
|
if (state === 'failed')
|
|
120
|
-
return { hold: `the approving review at ${resolved.sha.slice(0, 9)} anchors nothing: the gate verdict there FAILED
|
|
128
|
+
return { hold: `the approving review at ${resolved.sha.slice(0, 9)} anchors nothing: the gate verdict there FAILED`, awaiting: 'approval' };
|
|
121
129
|
if (state === 'pending') {
|
|
122
|
-
return { hold: `the approving review at ${resolved.sha.slice(0, 9)} anchors nothing: no gate verdict is recorded there yet and a gate is configured for the focus
|
|
130
|
+
return { hold: `the approving review at ${resolved.sha.slice(0, 9)} anchors nothing: no gate verdict is recorded there yet and a gate is configured for the focus`, awaiting: 'approval' };
|
|
123
131
|
}
|
|
124
132
|
return { ...resolved, source: state === 'auto_approval' ? 'auto_approval' : 'approved_review' };
|
|
125
133
|
}
|
|
@@ -143,7 +151,7 @@ function localStage(target, head, judge, deps) {
|
|
|
143
151
|
if (status === 'red')
|
|
144
152
|
return { hold: `the integration candidate ${head.slice(0, 9)} FAILED \`${judge.command}\` locally`, next: 'rework_local', headSha: head };
|
|
145
153
|
if (status === 'running')
|
|
146
|
-
return { hold: `the daemon is running \`${judge.command}\` on the integration candidate ${head.slice(0, 9)}
|
|
154
|
+
return { hold: `the daemon is running \`${judge.command}\` on the integration candidate ${head.slice(0, 9)}`, awaiting: 'local_run', headSha: head };
|
|
147
155
|
return { hold: `the integration candidate ${head.slice(0, 9)} has not been run through \`${judge.command}\` yet`, next: 'run_local', headSha: head };
|
|
148
156
|
}
|
|
149
157
|
/** Steps 3-4: the candidate. Returns the admission when the head is judged good. */
|
|
@@ -153,7 +161,7 @@ function candidateStage(target, deps) {
|
|
|
153
161
|
return { hold: `the head of ${target.branchName} could not be read` };
|
|
154
162
|
const tip = deps.resolveIntegrationTip(target);
|
|
155
163
|
if (tip === null)
|
|
156
|
-
return { hold: `the ${target.integrationBranch} tip could not be read
|
|
164
|
+
return { hold: `the ${target.integrationBranch} tip could not be read`, headSha: head };
|
|
157
165
|
if (!deps.isAncestor(target.repoPath, tip, head)) {
|
|
158
166
|
return { hold: `${target.branchName} does not contain the ${target.integrationBranch} tip ${tip.slice(0, 9)} yet`, next: 'merge_out', headSha: head };
|
|
159
167
|
}
|
|
@@ -166,7 +174,7 @@ function candidateStage(target, deps) {
|
|
|
166
174
|
case 'none':
|
|
167
175
|
return { candidateSha: head, judgedBy: `candidate ${head.slice(0, 9)} judged by no suite -- ${describeCompletionJudge(judge)}; merged on the review approval alone` };
|
|
168
176
|
case 'unreadable':
|
|
169
|
-
return { hold: `the completion judge of the integration candidate ${head.slice(0, 9)} cannot be read: ${judge.reason}
|
|
177
|
+
return { hold: `the completion judge of the integration candidate ${head.slice(0, 9)} cannot be read: ${judge.reason}`, headSha: head };
|
|
170
178
|
}
|
|
171
179
|
}
|
|
172
180
|
async function decide(target, deps) {
|
|
@@ -181,7 +189,7 @@ async function decide(target, deps) {
|
|
|
181
189
|
return { hold: `its gate coverage could not be read (the commits ${target.branchName} would add could not be listed)` };
|
|
182
190
|
const unapproved = approvedHeadHold(commits, approval);
|
|
183
191
|
if (unapproved !== null)
|
|
184
|
-
return { hold: unapproved };
|
|
192
|
+
return { hold: unapproved, awaiting: 'approval' };
|
|
185
193
|
const decided = unreviewedMergesAfter(commits, approval);
|
|
186
194
|
if (decided.length > 0 && commits[0]) {
|
|
187
195
|
return {
|
|
@@ -216,7 +224,7 @@ export async function readMergeGateDecision(target, deps) {
|
|
|
216
224
|
}
|
|
217
225
|
if (!stopFires('merge_gate_coverage', { gateReadable: readable, admitted: decision.hold === null }))
|
|
218
226
|
return decision;
|
|
219
|
-
return decision.hold === null ? { hold: 'held by the merge_gate_coverage stop row' } : decision;
|
|
227
|
+
return decision.hold === null ? { hold: 'held by the merge_gate_coverage stop row', headSha: decision.candidateSha } : decision;
|
|
220
228
|
}
|
|
221
229
|
/**
|
|
222
230
|
* The decision for a branch whose focus may be unknown. With no focus there is
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"completion-merge-gate.js","sourceRoot":"","sources":["../../src/merge/completion-merge-gate.ts"],"names":[],"mappings":"AAAA,8FAA8F;AAC9F,mFAAmF;AACnF,gFAAgF;AAChF,qEAAqE;AACrE,6DAA6D;AAC7D,8GAA8G;AAC9G,oEAAoE;AACpE,6DAA6D;AAC7D,gBAAgB;AAEhB
|
|
1
|
+
{"version":3,"file":"completion-merge-gate.js","sourceRoot":"","sources":["../../src/merge/completion-merge-gate.ts"],"names":[],"mappings":"AAAA,8FAA8F;AAC9F,mFAAmF;AACnF,gFAAgF;AAChF,uEAAuE;AACvE,kEAAkE;AAClE,qEAAqE;AACrE,iEAAiE;AACjE,6DAA6D;AAC7D,8GAA8G;AAC9G,oEAAoE;AACpE,6DAA6D;AAC7D,gBAAgB;AAEhB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuDG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAEtD,OAAO,EAAE,uBAAuB,EAAwB,MAAM,uBAAuB,CAAC;AAEtF,OAAO,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAE5D,OAAO,EACL,sBAAsB,GAKvB,MAAM,0BAA0B,CAAC;AAkElC,mFAAmF;AACnF,MAAM,QAAQ,GAAwB,IAAI,GAAG,CAAC;IAC5C,eAAe,CAAC,IAAI;IACpB,eAAe,CAAC,SAAS;IACzB,eAAe,CAAC,QAAQ;IACxB,eAAe,CAAC,KAAK;CACtB,CAAC,CAAC;AAEH,0GAA0G;AAC1G,MAAM,UAAU,uBAAuB,CAAC,eAA8B;IACpE,OAAO,eAAe,KAAK,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;AACpE,CAAC;AAED,wFAAwF;AACxF,MAAM,UAAU,mBAAmB,CAAC,UAA6C;IAC/E,MAAM,IAAI,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,uBAAuB,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC;IAClF,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,eAAe,IAAI,SAAS,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACxG,OAAO,8BAA8B,IAAI,CAAC,MAAM,8BAA8B,KAAK,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;IACzH,CAAC;IACD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,eAAe,KAAK,eAAe,CAAC,IAAI,CAAC;QAAE,OAAO,gDAAgD,CAAC;IACjI,OAAO,IAAI,CAAC;AACd,CAAC;AAED,mHAAmH;AACnH,MAAM,UAAU,qBAAqB,CAAC,OAAkC,EAAE,QAAqB;IAC7F,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,UAAU,KAAK,IAAI,CAAC,CAAC;AACpG,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,OAAkC,EAAE,QAAqB;IACxF,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACnE,MAAM,aAAa,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;IACtD,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC7B,OAAO,GAAG,aAAa,CAAC,MAAM,sCAAsC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,yCAAyC,CAAC;IACxI,CAAC;IACD,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAClE,MAAM,QAAQ,GAAG,sBAAsB,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC3D,IAAI,QAAQ,CAAC,QAAQ;QAAE,OAAO,IAAI,CAAC;IACnC,MAAM,QAAQ,GAAG,QAAQ,CAAC,kBAAkB,CAAC,MAAM,KAAK,CAAC;QACvD,CAAC,CAAC,EAAE;QACJ,CAAC,CAAC,eAAe,QAAQ,CAAC,kBAAkB,CAAC,MAAM,2BAA2B,QAAQ,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;IACxJ,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,MAAM,8CAA8C,QAAQ,EAAE,CAAC;AAC5F,CAAC;AAED,KAAK,UAAU,YAAY,CAAC,MAAuB,EAAE,IAA6B;IAChF,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC;IAC1D,IAAI,QAAQ,KAAK,IAAI;QAAE,OAAO,EAAE,IAAI,EAAE,2CAA2C,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC;IAC1G,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,iBAAiB,EAAE,QAAQ,CAAC,CAAC;IACzF,IAAI,QAAQ,KAAK,IAAI;QAAE,OAAO,EAAE,IAAI,EAAE,uBAAuB,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,cAAc,MAAM,CAAC,UAAU,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC;IAC3I,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC;IACjE,IAAI,KAAK,KAAK,QAAQ;QAAE,OAAO,EAAE,IAAI,EAAE,2BAA2B,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,iDAAiD,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC;IACpK,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,OAAO,EAAE,IAAI,EAAE,2BAA2B,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,gGAAgG,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC;IAC7L,CAAC;IACD,OAAO,EAAE,GAAG,QAAQ,EAAE,MAAM,EAAE,KAAK,KAAK,eAAe,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,iBAAiB,EAAE,CAAC;AAClG,CAAC;AAQD,kDAAkD;AAClD,SAAS,OAAO,CAAC,MAAuB,EAAE,IAAY,EAAE,IAA6B;IACnF,MAAM,MAAM,GAAG,IAAI,CAAC,mBAAmB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACtD,IAAI,MAAM,KAAK,OAAO;QAAE,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,aAAa,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC;IACvG,IAAI,MAAM,KAAK,KAAK;QAAE,OAAO,EAAE,IAAI,EAAE,0CAA0C,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IACnI,IAAI,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC;QACjD,OAAO,EAAE,IAAI,EAAE,6BAA6B,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,6BAA6B,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IACrI,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,+CAA+C,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AACzH,CAAC;AAED,4FAA4F;AAC5F,SAAS,UAAU,CAAC,MAAuB,EAAE,IAAY,EAAE,KAAkD,EAAE,IAA6B;IAC1I,MAAM,MAAM,GAAG,IAAI,CAAC,wBAAwB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAC3D,IAAI,MAAM,KAAK,OAAO;QAAE,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,aAAa,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,aAAa,KAAK,CAAC,OAAO,YAAY,EAAE,CAAC;IACrI,IAAI,MAAM,KAAK,KAAK;QAAE,OAAO,EAAE,IAAI,EAAE,6BAA6B,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,aAAa,KAAK,CAAC,OAAO,YAAY,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAChK,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO,EAAE,IAAI,EAAE,2BAA2B,KAAK,CAAC,OAAO,mCAAmC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,QAAQ,EAAE,WAAW,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAC/K,OAAO,EAAE,IAAI,EAAE,6BAA6B,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,+BAA+B,KAAK,CAAC,OAAO,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AACvJ,CAAC;AAED,oFAAoF;AACpF,SAAS,cAAc,CAAC,MAAuB,EAAE,IAA6B;IAC5E,MAAM,IAAI,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;IACxE,IAAI,IAAI,KAAK,IAAI;QAAE,OAAO,EAAE,IAAI,EAAE,eAAe,MAAM,CAAC,UAAU,oBAAoB,EAAE,CAAC;IACzF,MAAM,GAAG,GAAG,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC;IAC/C,IAAI,GAAG,KAAK,IAAI;QAAE,OAAO,EAAE,IAAI,EAAE,OAAO,MAAM,CAAC,iBAAiB,wBAAwB,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAC1G,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,QAAQ,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,CAAC;QACjD,OAAO,EAAE,IAAI,EAAE,GAAG,MAAM,CAAC,UAAU,yBAAyB,MAAM,CAAC,iBAAiB,QAAQ,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IACxJ,CAAC;IACD,MAAM,KAAK,GAAG,IAAI,CAAC,sBAAsB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACxD,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;QACnB,KAAK,IAAI;YACP,OAAO,OAAO,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QACrC,KAAK,OAAO;YACV,OAAO,UAAU,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;QAC/C,KAAK,MAAM;YACT,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,aAAa,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,0BAA0B,uBAAuB,CAAC,KAAK,CAAC,uCAAuC,EAAE,CAAC;QACxK,KAAK,YAAY;YACf,OAAO,EAAE,IAAI,EAAE,qDAAqD,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,oBAAoB,KAAK,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAC5I,CAAC;AACH,CAAC;AAED,KAAK,UAAU,MAAM,CAAC,MAAuB,EAAE,IAA6B;IAC1E,MAAM,UAAU,GAAG,mBAAmB,CAAC,MAAM,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;IACtF,IAAI,UAAU,KAAK,IAAI;QAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;IACvE,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAClD,IAAI,MAAM,IAAI,QAAQ;QAAE,OAAO,QAAQ,CAAC;IACxC,MAAM,OAAO,GAAG,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,iBAAiB,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;IACvG,IAAI,OAAO,KAAK,IAAI;QAAE,OAAO,EAAE,IAAI,EAAE,oDAAoD,MAAM,CAAC,UAAU,iCAAiC,EAAE,CAAC;IAC9I,MAAM,UAAU,GAAG,gBAAgB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IACvD,IAAI,UAAU,KAAK,IAAI;QAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC;IAC3E,MAAM,OAAO,GAAG,qBAAqB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IACzD,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;QACrC,OAAO;YACL,IAAI,EAAE,GAAG,OAAO,CAAC,MAAM,qCAAqC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,wBAAwB,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,iCAAiC;YAC7L,IAAI,EAAE,cAAc;YACpB,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG;SACxB,CAAC;IACJ,CAAC;IACD,MAAM,SAAS,GAAG,cAAc,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAC/C,IAAI,MAAM,IAAI,SAAS;QAAE,OAAO,SAAS,CAAC;IAC1C,OAAO;QACL,IAAI,EAAE,IAAI;QACV,YAAY,EAAE,SAAS,CAAC,YAAY;QACpC,UAAU,EAAE,eAAe,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,SAAS,CAAC,QAAQ,EAAE;KAChG,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,MAAuB,EACvB,IAA6B;IAE7B,IAAI,QAA2B,CAAC;IAChC,IAAI,QAAQ,GAAG,IAAI,CAAC;IACpB,IAAI,CAAC;QACH,QAAQ,GAAG,MAAM,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACxC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,QAAQ,GAAG,KAAK,CAAC;QACjB,QAAQ,GAAG,EAAE,IAAI,EAAE,wCAAyC,GAAa,CAAC,OAAO,GAAG,EAAE,CAAC;IACzF,CAAC;IACD,IAAI,CAAC,SAAS,CAAC,qBAAqB,EAAE,EAAE,YAAY,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;QAAE,OAAO,QAAQ,CAAC;IACrH,OAAO,QAAQ,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,0CAA0C,EAAE,OAAO,EAAE,QAAQ,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC;AAClI,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,8BAA8B,CAC5C,MAA6B,EAC7B,IAA6B;IAE7B,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,EAAE,GAAG,MAAM,CAAC;IACpC,IAAI,OAAO,KAAK,IAAI;QAAE,OAAO,qBAAqB,CAAC,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,EAAE,IAAI,CAAC,CAAC;IAC/E,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,kBAAkB,MAAM,CAAC,UAAU,uCAAuC,EAAE,CAAC,CAAC;AAC/G,CAAC"}
|