@deftai/directive-runtime 0.129.5 → 0.129.7
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/Taskfile.yml +316 -0
- package/UPGRADING.md +1 -0
- package/commands.md +5 -3
- package/contracts/design-critique.md +1 -1
- package/contracts/path-write-fence.md +6 -0
- package/dist/applying-host-release.d.ts +16 -0
- package/dist/applying-host-release.js +98 -0
- package/dist/authz.d.ts +1 -1
- package/dist/authz.js +1 -1
- package/dist/check.d.ts +1 -0
- package/dist/check.js +27 -4
- package/dist/design-critique-ensure-arc-dest.d.ts +16 -0
- package/dist/design-critique-ensure-arc-dest.js +168 -0
- package/dist/dispatch.d.ts +1 -1
- package/dist/dispatch.js +8 -0
- package/dist/hook-dispatch.js +3 -2
- package/dist/human-presence-mint.d.ts +6 -1
- package/dist/human-presence-mint.js +20 -6
- package/dist/session-start.d.ts +8 -2
- package/dist/session-start.js +70 -15
- package/dist/setup-wiring.d.ts +36 -0
- package/dist/setup-wiring.js +169 -14
- package/dist/vbrief-preflight.d.ts +4 -0
- package/dist/vbrief-preflight.js +34 -0
- package/dist/verify-scope-provenance.d.ts +13 -1
- package/dist/verify-scope-provenance.js +44 -1
- package/dist/verify-source-cli/verify-deposit-closure.js +5 -5
- package/dist/windows-bin-ps1.d.ts +2 -2
- package/dist/windows-bin-ps1.js +5 -11
- package/docs/deft-directive-disable.md +3 -3
- package/docs/getting-started.md +2 -0
- package/docs/scope-provenance.md +15 -1
- package/package.json +2 -3
- package/packs/lessons/lessons-pack-0.1.json +15 -0
- package/packs/skills/skills-pack-0.1.json +3 -3
- package/skills/deft-directive-design-critique/SKILL.md +1 -1
- package/skills/deft-directive-release/SKILL.md +31 -1
- package/skills/deft-directive-review-cycle/SKILL.md +15 -6
- package/skills/deft-directive-swarm/references/host-grok-build.md +3 -2
- package/vendor/directive-content/Taskfile.yml +316 -0
- package/vendor/directive-content/UPGRADING.md +1 -0
- package/vendor/directive-content/commands.md +5 -3
- package/vendor/directive-content/contracts/design-critique.md +1 -1
- package/vendor/directive-content/contracts/path-write-fence.md +6 -0
- package/vendor/directive-content/docs/deft-directive-disable.md +3 -3
- package/vendor/directive-content/docs/getting-started.md +2 -0
- package/vendor/directive-content/docs/scope-provenance.md +15 -1
- package/vendor/directive-content/packs/lessons/lessons-pack-0.1.json +15 -0
- package/vendor/directive-content/packs/skills/skills-pack-0.1.json +3 -3
- package/vendor/directive-content/skills/deft-directive-design-critique/SKILL.md +1 -1
- package/vendor/directive-content/skills/deft-directive-release/SKILL.md +31 -1
- package/vendor/directive-content/skills/deft-directive-review-cycle/SKILL.md +15 -6
- package/vendor/directive-content/skills/deft-directive-swarm/references/host-grok-build.md +3 -2
- package/vendor/directive-core/dist/.tsbuildinfo +1 -1
- package/vendor/directive-core/dist/authz/classify.d.ts +12 -0
- package/vendor/directive-core/dist/authz/classify.d.ts.map +1 -1
- package/vendor/directive-core/dist/authz/classify.js +40 -12
- package/vendor/directive-core/dist/authz/classify.js.map +1 -1
- package/vendor/directive-core/dist/authz/templates.d.ts +2 -2
- package/vendor/directive-core/dist/authz/templates.d.ts.map +1 -1
- package/vendor/directive-core/dist/authz/templates.js +1 -0
- package/vendor/directive-core/dist/authz/templates.js.map +1 -1
- package/vendor/directive-core/dist/authz/types.d.ts +1 -1
- package/vendor/directive-core/dist/authz/types.d.ts.map +1 -1
- package/vendor/directive-core/dist/authz/types.js +2 -0
- package/vendor/directive-core/dist/authz/types.js.map +1 -1
- package/vendor/directive-core/dist/authz/verb-classification.d.ts.map +1 -1
- package/vendor/directive-core/dist/authz/verb-classification.js +30 -3
- package/vendor/directive-core/dist/authz/verb-classification.js.map +1 -1
- package/vendor/directive-core/dist/cache/fetch.d.ts.map +1 -1
- package/vendor/directive-core/dist/cache/fetch.js +50 -4
- package/vendor/directive-core/dist/cache/fetch.js.map +1 -1
- package/vendor/directive-core/dist/design-critique/arc-dest.d.ts +22 -5
- package/vendor/directive-core/dist/design-critique/arc-dest.d.ts.map +1 -1
- package/vendor/directive-core/dist/design-critique/arc-dest.js +61 -0
- package/vendor/directive-core/dist/design-critique/arc-dest.js.map +1 -1
- package/vendor/directive-core/dist/design-critique/run-posture.d.ts +7 -2
- package/vendor/directive-core/dist/design-critique/run-posture.d.ts.map +1 -1
- package/vendor/directive-core/dist/design-critique/run-posture.js +6 -1
- package/vendor/directive-core/dist/design-critique/run-posture.js.map +1 -1
- package/vendor/directive-core/dist/fs/contained-write.d.ts +8 -2
- package/vendor/directive-core/dist/fs/contained-write.d.ts.map +1 -1
- package/vendor/directive-core/dist/fs/contained-write.js +22 -6
- package/vendor/directive-core/dist/fs/contained-write.js.map +1 -1
- package/vendor/directive-core/dist/hooks/dispatcher.d.ts +1 -1
- package/vendor/directive-core/dist/hooks/dispatcher.d.ts.map +1 -1
- package/vendor/directive-core/dist/hooks/dispatcher.js +290 -16
- package/vendor/directive-core/dist/hooks/dispatcher.js.map +1 -1
- package/vendor/directive-core/dist/hooks/shell-write-targets.d.ts +5 -0
- package/vendor/directive-core/dist/hooks/shell-write-targets.d.ts.map +1 -1
- package/vendor/directive-core/dist/hooks/shell-write-targets.js +18 -1
- package/vendor/directive-core/dist/hooks/shell-write-targets.js.map +1 -1
- package/vendor/directive-core/dist/init-deposit/agent-hooks.d.ts +26 -1
- package/vendor/directive-core/dist/init-deposit/agent-hooks.d.ts.map +1 -1
- package/vendor/directive-core/dist/init-deposit/agent-hooks.js +52 -3
- package/vendor/directive-core/dist/init-deposit/agent-hooks.js.map +1 -1
- package/vendor/directive-core/dist/init-deposit/host-hook-outer.d.ts +48 -0
- package/vendor/directive-core/dist/init-deposit/host-hook-outer.d.ts.map +1 -1
- package/vendor/directive-core/dist/init-deposit/host-hook-outer.js +170 -9
- package/vendor/directive-core/dist/init-deposit/host-hook-outer.js.map +1 -1
- package/vendor/directive-core/dist/init-deposit/scaffold.d.ts +8 -1
- package/vendor/directive-core/dist/init-deposit/scaffold.d.ts.map +1 -1
- package/vendor/directive-core/dist/init-deposit/scaffold.js +38 -4
- package/vendor/directive-core/dist/init-deposit/scaffold.js.map +1 -1
- package/vendor/directive-core/dist/install-health/cheap.d.ts +2 -1
- package/vendor/directive-core/dist/install-health/cheap.d.ts.map +1 -1
- package/vendor/directive-core/dist/install-health/cheap.js +4 -3
- package/vendor/directive-core/dist/install-health/cheap.js.map +1 -1
- package/vendor/directive-core/dist/install-health/constants.d.ts +18 -2
- package/vendor/directive-core/dist/install-health/constants.d.ts.map +1 -1
- package/vendor/directive-core/dist/install-health/constants.js +18 -2
- package/vendor/directive-core/dist/install-health/constants.js.map +1 -1
- package/vendor/directive-core/dist/policy/deft-directive-disable.d.ts +42 -5
- package/vendor/directive-core/dist/policy/deft-directive-disable.d.ts.map +1 -1
- package/vendor/directive-core/dist/policy/deft-directive-disable.js +71 -41
- package/vendor/directive-core/dist/policy/deft-directive-disable.js.map +1 -1
- package/vendor/directive-core/dist/pr-closeout-attestable/evaluate.d.ts +6 -1
- package/vendor/directive-core/dist/pr-closeout-attestable/evaluate.d.ts.map +1 -1
- package/vendor/directive-core/dist/pr-closeout-attestable/evaluate.js +24 -12
- package/vendor/directive-core/dist/pr-closeout-attestable/evaluate.js.map +1 -1
- package/vendor/directive-core/dist/pr-closeout-attestable/pr-head-assert.d.ts +68 -14
- package/vendor/directive-core/dist/pr-closeout-attestable/pr-head-assert.d.ts.map +1 -1
- package/vendor/directive-core/dist/pr-closeout-attestable/pr-head-assert.js +278 -47
- package/vendor/directive-core/dist/pr-closeout-attestable/pr-head-assert.js.map +1 -1
- package/vendor/directive-core/dist/pr-merge-readiness/slizard-gate.d.ts +10 -5
- package/vendor/directive-core/dist/pr-merge-readiness/slizard-gate.d.ts.map +1 -1
- package/vendor/directive-core/dist/pr-merge-readiness/slizard-gate.js +41 -18
- package/vendor/directive-core/dist/pr-merge-readiness/slizard-gate.js.map +1 -1
- package/vendor/directive-core/dist/preflight-gh/pre-push.d.ts +3 -2
- package/vendor/directive-core/dist/preflight-gh/pre-push.d.ts.map +1 -1
- package/vendor/directive-core/dist/preflight-gh/pre-push.js +19 -18
- package/vendor/directive-core/dist/preflight-gh/pre-push.js.map +1 -1
- package/vendor/directive-core/dist/release/gh.d.ts.map +1 -1
- package/vendor/directive-core/dist/release/gh.js +2 -1
- package/vendor/directive-core/dist/release/gh.js.map +1 -1
- package/vendor/directive-core/dist/release/version.d.ts +4 -2
- package/vendor/directive-core/dist/release/version.d.ts.map +1 -1
- package/vendor/directive-core/dist/release/version.js +4 -2
- package/vendor/directive-core/dist/release/version.js.map +1 -1
- package/vendor/directive-core/dist/release-publish/gh-api.d.ts.map +1 -1
- package/vendor/directive-core/dist/release-publish/gh-api.js +4 -2
- package/vendor/directive-core/dist/release-publish/gh-api.js.map +1 -1
- package/vendor/directive-core/dist/release-publish/main.d.ts.map +1 -1
- package/vendor/directive-core/dist/release-publish/main.js +15 -4
- package/vendor/directive-core/dist/release-publish/main.js.map +1 -1
- package/vendor/directive-core/dist/release-publish/pipeline.d.ts +11 -0
- package/vendor/directive-core/dist/release-publish/pipeline.d.ts.map +1 -1
- package/vendor/directive-core/dist/release-publish/pipeline.js +143 -2
- package/vendor/directive-core/dist/release-publish/pipeline.js.map +1 -1
- package/vendor/directive-core/dist/release-rollback/gh.d.ts.map +1 -1
- package/vendor/directive-core/dist/release-rollback/gh.js +2 -1
- package/vendor/directive-core/dist/release-rollback/gh.js.map +1 -1
- package/vendor/directive-core/dist/scope/delivery-evidence.d.ts +202 -19
- package/vendor/directive-core/dist/scope/delivery-evidence.d.ts.map +1 -1
- package/vendor/directive-core/dist/scope/delivery-evidence.js +948 -107
- package/vendor/directive-core/dist/scope/delivery-evidence.js.map +1 -1
- package/vendor/directive-core/dist/scope/transition.d.ts +4 -1
- package/vendor/directive-core/dist/scope/transition.d.ts.map +1 -1
- package/vendor/directive-core/dist/scope/transition.js +2 -2
- package/vendor/directive-core/dist/scope/transition.js.map +1 -1
- package/vendor/directive-core/dist/scope-provenance/base-fence.d.ts +11 -2
- package/vendor/directive-core/dist/scope-provenance/base-fence.d.ts.map +1 -1
- package/vendor/directive-core/dist/scope-provenance/base-fence.js +16 -1
- package/vendor/directive-core/dist/scope-provenance/base-fence.js.map +1 -1
- package/vendor/directive-core/dist/scope-provenance/evaluate.d.ts +12 -0
- package/vendor/directive-core/dist/scope-provenance/evaluate.d.ts.map +1 -1
- package/vendor/directive-core/dist/scope-provenance/evaluate.js +41 -5
- package/vendor/directive-core/dist/scope-provenance/evaluate.js.map +1 -1
- package/vendor/directive-core/dist/scope-provenance/forge-approval.d.ts +106 -0
- package/vendor/directive-core/dist/scope-provenance/forge-approval.d.ts.map +1 -0
- package/vendor/directive-core/dist/scope-provenance/forge-approval.js +382 -0
- package/vendor/directive-core/dist/scope-provenance/forge-approval.js.map +1 -0
- package/vendor/directive-core/dist/session/git.d.ts +21 -2
- package/vendor/directive-core/dist/session/git.d.ts.map +1 -1
- package/vendor/directive-core/dist/session/git.js +21 -4
- package/vendor/directive-core/dist/session/git.js.map +1 -1
- package/vendor/directive-core/dist/session/occupancy.d.ts +93 -6
- package/vendor/directive-core/dist/session/occupancy.d.ts.map +1 -1
- package/vendor/directive-core/dist/session/occupancy.js +215 -52
- package/vendor/directive-core/dist/session/occupancy.js.map +1 -1
- package/vendor/directive-core/dist/session/orientation-compression.d.ts +18 -2
- package/vendor/directive-core/dist/session/orientation-compression.d.ts.map +1 -1
- package/vendor/directive-core/dist/session/orientation-compression.js +38 -5
- package/vendor/directive-core/dist/session/orientation-compression.js.map +1 -1
- package/vendor/directive-core/dist/session/session-start.d.ts +47 -2
- package/vendor/directive-core/dist/session/session-start.d.ts.map +1 -1
- package/vendor/directive-core/dist/session/session-start.js +154 -3
- package/vendor/directive-core/dist/session/session-start.js.map +1 -1
- package/vendor/directive-core/dist/swarm/approach1-babysitter.d.ts +18 -4
- package/vendor/directive-core/dist/swarm/approach1-babysitter.d.ts.map +1 -1
- package/vendor/directive-core/dist/swarm/approach1-babysitter.js +28 -4
- package/vendor/directive-core/dist/swarm/approach1-babysitter.js.map +1 -1
- package/vendor/directive-core/dist/swarm/dest-place.d.ts +1 -1
- package/vendor/directive-core/dist/swarm/dest-place.d.ts.map +1 -1
- package/vendor/directive-core/dist/swarm/dest-place.js +36 -41
- package/vendor/directive-core/dist/swarm/dest-place.js.map +1 -1
- package/vendor/directive-core/dist/swarm/finalize-cohort.d.ts +29 -0
- package/vendor/directive-core/dist/swarm/finalize-cohort.d.ts.map +1 -1
- package/vendor/directive-core/dist/swarm/finalize-cohort.js +122 -11
- package/vendor/directive-core/dist/swarm/finalize-cohort.js.map +1 -1
- package/vendor/directive-core/dist/swarm/finalize-owed.d.ts +14 -0
- package/vendor/directive-core/dist/swarm/finalize-owed.d.ts.map +1 -1
- package/vendor/directive-core/dist/swarm/finalize-owed.js +214 -48
- package/vendor/directive-core/dist/swarm/finalize-owed.js.map +1 -1
- package/vendor/directive-core/dist/swarm/launch.d.ts.map +1 -1
- package/vendor/directive-core/dist/swarm/launch.js +15 -4
- package/vendor/directive-core/dist/swarm/launch.js.map +1 -1
- package/vendor/directive-core/dist/swarm/worktree-pm-install.d.ts +49 -2
- package/vendor/directive-core/dist/swarm/worktree-pm-install.d.ts.map +1 -1
- package/vendor/directive-core/dist/swarm/worktree-pm-install.js +207 -12
- package/vendor/directive-core/dist/swarm/worktree-pm-install.js.map +1 -1
- package/vendor/directive-core/dist/swarm/worktrees-cli.d.ts +6 -0
- package/vendor/directive-core/dist/swarm/worktrees-cli.d.ts.map +1 -1
- package/vendor/directive-core/dist/swarm/worktrees-cli.js +79 -2
- package/vendor/directive-core/dist/swarm/worktrees-cli.js.map +1 -1
- package/vendor/directive-core/dist/swarm/worktrees.d.ts +12 -1
- package/vendor/directive-core/dist/swarm/worktrees.d.ts.map +1 -1
- package/vendor/directive-core/dist/swarm/worktrees.js +34 -26
- package/vendor/directive-core/dist/swarm/worktrees.js.map +1 -1
- package/vendor/directive-core/dist/triage/evaluate/worktrees.d.ts.map +1 -1
- package/vendor/directive-core/dist/triage/evaluate/worktrees.js +219 -60
- package/vendor/directive-core/dist/triage/evaluate/worktrees.js.map +1 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Working-tree vs PR-head assert for closeout (#3875).
|
|
2
|
+
* Working-tree vs PR-head assert for closeout (#3875 / #6128).
|
|
3
3
|
*
|
|
4
4
|
* Before closeout reads briefs from disk, the tree must be the PR head that
|
|
5
5
|
* merges. Local HEAD is compared to an already-fetched PR head SHA (or an
|
|
@@ -7,17 +7,41 @@
|
|
|
7
7
|
*
|
|
8
8
|
* When the caller's cwd is not the PR head (cascade from primary), a linked
|
|
9
9
|
* worktree whose HEAD matches the PR head is accepted and returned as
|
|
10
|
-
* `resolvedProjectRoot` so briefs are read from that tree.
|
|
11
|
-
*
|
|
12
|
-
*
|
|
10
|
+
* `resolvedProjectRoot` so briefs are read from that tree. Prefer a
|
|
11
|
+
* lifecycle-clean match when several SHA matches exist (#6128 Prefer-A). Dirty
|
|
12
|
+
* `xbrief/` / `vbrief/` on the chosen tree fails closed with a named reason and
|
|
13
|
+
* deletion-restorative remediation (local attestation must not green-light an
|
|
14
|
+
* unattested committed brief).
|
|
13
15
|
*/
|
|
14
16
|
import type { RunGhFn } from "../pr-protected-issues/types.js";
|
|
15
17
|
export type ResolveLocalHeadShaFn = (projectRoot: string) => string | null;
|
|
16
18
|
export type FetchPrHeadShaFn = (prNumber: number, repo: string, runGh: RunGhFn) => string | null;
|
|
19
|
+
/** One porcelain status entry with C-quoting undone. */
|
|
20
|
+
export interface LifecyclePorcelainEntry {
|
|
21
|
+
readonly x: string;
|
|
22
|
+
readonly y: string;
|
|
23
|
+
readonly path: string;
|
|
24
|
+
}
|
|
25
|
+
/** Three-state lifecycle classifier for xbrief/vbrief (#6128 Prefer-A). */
|
|
26
|
+
export type LifecycleClassifyResult = {
|
|
27
|
+
readonly status: "clean";
|
|
28
|
+
} | {
|
|
29
|
+
readonly status: "dirty";
|
|
30
|
+
readonly entries: readonly LifecyclePorcelainEntry[];
|
|
31
|
+
} | {
|
|
32
|
+
readonly status: "unverifiable";
|
|
33
|
+
readonly diagnostic: string;
|
|
34
|
+
};
|
|
35
|
+
export type ClassifyLifecycleDirtyFn = (projectRoot: string) => LifecycleClassifyResult;
|
|
17
36
|
/** Linked-worktree lookup: verified found/absent, or unverified list failure. */
|
|
18
37
|
export type FindWorktreeAtShaResult = {
|
|
19
38
|
readonly status: "found";
|
|
20
39
|
readonly path: string;
|
|
40
|
+
/**
|
|
41
|
+
* True when another SHA-matching worktree (besides `path`) has an xbrief
|
|
42
|
+
* layout. Documented false default for two-arg injectors.
|
|
43
|
+
*/
|
|
44
|
+
readonly anotherShaMatchHasXbrief?: boolean;
|
|
21
45
|
} | {
|
|
22
46
|
readonly status: "absent";
|
|
23
47
|
} | {
|
|
@@ -25,7 +49,9 @@ export type FindWorktreeAtShaResult = {
|
|
|
25
49
|
readonly message: string;
|
|
26
50
|
};
|
|
27
51
|
export type ResolveWorktreeAtShaFn = (projectRoot: string, sha: string) => FindWorktreeAtShaResult;
|
|
52
|
+
/** Legacy dirty probe: null clean, sample dirty, sentinel unverifiable. */
|
|
28
53
|
export type ResolveLifecycleDirtyFn = (projectRoot: string) => string | null;
|
|
54
|
+
export type CloseoutRefuseReason = "lifecycle-dirty" | "brief-root-layout-missing";
|
|
29
55
|
export interface PrHeadAssertOptions {
|
|
30
56
|
/** When false, skip the assert (tests only). Production default is enabled. */
|
|
31
57
|
readonly enabled?: boolean;
|
|
@@ -37,8 +63,11 @@ export interface PrHeadAssertOptions {
|
|
|
37
63
|
readonly fetchPrHeadSha?: FetchPrHeadShaFn;
|
|
38
64
|
/** Injected linked-worktree lookup (cascade from a non-PR-head cwd). */
|
|
39
65
|
readonly resolveWorktreeAtSha?: ResolveWorktreeAtShaFn;
|
|
40
|
-
/**
|
|
41
|
-
|
|
66
|
+
/**
|
|
67
|
+
* Injected three-state lifecycle classifier (#6128). Replaces the former
|
|
68
|
+
* `resolveLifecycleDirty` options seam at both in-scope call sites.
|
|
69
|
+
*/
|
|
70
|
+
readonly classifyLifecycleDirty?: ClassifyLifecycleDirtyFn;
|
|
42
71
|
/** When false, skip the dirty-lifecycle refuse (tests only). */
|
|
43
72
|
readonly checkLifecycleDirty?: boolean;
|
|
44
73
|
}
|
|
@@ -55,30 +84,55 @@ export interface PrHeadAssertOk {
|
|
|
55
84
|
export interface PrHeadAssertFail {
|
|
56
85
|
readonly ok: false;
|
|
57
86
|
readonly message: string;
|
|
87
|
+
/** One-poll terminal discriminant for wait-mergeable (#6128). */
|
|
88
|
+
readonly reason?: CloseoutRefuseReason;
|
|
58
89
|
}
|
|
59
90
|
export type PrHeadAssertResult = PrHeadAssertOk | PrHeadAssertFail;
|
|
91
|
+
/** Behaviour-identical unverifiable sentinel for `resolveLifecycleDirty`. */
|
|
92
|
+
export declare const LIFECYCLE_STATUS_UNREADABLE = "cannot read git status for xbrief/vbrief before closeout";
|
|
60
93
|
/** True when full or abbreviated SHAs name the same commit (min prefix length). */
|
|
61
94
|
export declare function shasMatch(a: string, b: string): boolean;
|
|
62
95
|
/** `git rev-parse HEAD` in `projectRoot`; null when git is missing or fails. */
|
|
63
96
|
export declare function resolveLocalHeadSha(projectRoot: string): string | null;
|
|
97
|
+
/** Parse `git status --porcelain` lines into {x,y,path} with C-quoting undone. */
|
|
98
|
+
export declare function parseLifecyclePorcelainEntries(stdout: string): LifecyclePorcelainEntry[];
|
|
64
99
|
/**
|
|
65
|
-
*
|
|
66
|
-
*
|
|
67
|
-
*
|
|
68
|
-
* read; status=absent only when the list is verified and no match exists.
|
|
100
|
+
* Three-state classifier for lifecycle dirt under `xbrief/` / `vbrief/`.
|
|
101
|
+
* Classification and pathspec derivation read `entries[]`; display samples are
|
|
102
|
+
* derived at the refuse site only.
|
|
69
103
|
*/
|
|
70
|
-
export declare function
|
|
104
|
+
export declare function classifyLifecycleDirty(projectRoot: string): LifecycleClassifyResult;
|
|
71
105
|
/**
|
|
72
|
-
*
|
|
73
|
-
*
|
|
106
|
+
* Behaviour-identical thin wrapper over {@link classifyLifecycleDirty}:
|
|
107
|
+
* null for clean, three-entry join for dirty, unverifiable sentinel for
|
|
108
|
+
* unverifiable — keeps semantic-green compiling without signature change.
|
|
74
109
|
*/
|
|
75
110
|
export declare function resolveLifecycleDirty(projectRoot: string): string | null;
|
|
111
|
+
/**
|
|
112
|
+
* Rank SHA-matching linked worktrees: one porcelain list read, path order,
|
|
113
|
+
* prefer lifecycle-clean via optional third-parameter classifier (default real
|
|
114
|
+
* three-state). `ResolveWorktreeAtShaFn` stays two-argument for injectors.
|
|
115
|
+
* Excludes prunable/gone. All-dirty returns found with ranked-first non-clean
|
|
116
|
+
* path (never absent). Carries `anotherShaMatchHasXbrief` on found.
|
|
117
|
+
*/
|
|
118
|
+
export declare function findWorktreeAtSha(projectRoot: string, sha: string, classify?: ClassifyLifecycleDirtyFn): FindWorktreeAtShaResult;
|
|
76
119
|
/** REST `pulls/<N>` head.sha via the closeout runner (plain gh when available). */
|
|
77
120
|
export declare function fetchPrHeadShaViaApi(prNumber: number, repo: string, runGh: RunGhFn): string | null;
|
|
121
|
+
/**
|
|
122
|
+
* Deletion-restorative remediation buckets (#6128 Prefer-A Recut-8 errata).
|
|
123
|
+
* Tracked codes only; never emit `git stash push -u`.
|
|
124
|
+
* Deletions-only template: git -C "<dirty-root>" checkout HEAD -- <deleted-paths>
|
|
125
|
+
* (Approach1 sole-pin un-pin). Modify/add/rename never get a bare checkout.
|
|
126
|
+
*/
|
|
127
|
+
export declare function formatLifecycleDirtyRemediation(dirtyRoot: string, entries: readonly LifecyclePorcelainEntry[]): string;
|
|
128
|
+
export declare function refuseDirtyLifecycle(projectRoot: string, classified: Extract<LifecycleClassifyResult, {
|
|
129
|
+
status: "dirty";
|
|
130
|
+
}>): PrHeadAssertFail;
|
|
78
131
|
/**
|
|
79
132
|
* Assert local HEAD equals the PR head that will merge.
|
|
80
133
|
* Fail closed (message for exit 2) when either side is unreadable or they differ
|
|
81
|
-
* and no linked worktree matches.
|
|
134
|
+
* and no linked worktree matches. Prefer a lifecycle-clean SHA match; refuse a
|
|
135
|
+
* dirty lifecycle tree on the chosen root with reason lifecycle-dirty.
|
|
82
136
|
*/
|
|
83
137
|
export declare function assertWorkingTreeIsPrHead(projectRoot: string, prNumber: number, repo: string, runGh: RunGhFn, options?: PrHeadAssertOptions): PrHeadAssertResult;
|
|
84
138
|
//# sourceMappingURL=pr-head-assert.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pr-head-assert.d.ts","sourceRoot":"","sources":["../../src/pr-closeout-attestable/pr-head-assert.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"pr-head-assert.d.ts","sourceRoot":"","sources":["../../src/pr-closeout-attestable/pr-head-assert.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Working-tree vs PR-head assert for closeout (#3875).
|
|
2
|
+
* Working-tree vs PR-head assert for closeout (#3875 / #6128).
|
|
3
3
|
*
|
|
4
4
|
* Before closeout reads briefs from disk, the tree must be the PR head that
|
|
5
5
|
* merges. Local HEAD is compared to an already-fetched PR head SHA (or an
|
|
@@ -7,11 +7,17 @@
|
|
|
7
7
|
*
|
|
8
8
|
* When the caller's cwd is not the PR head (cascade from primary), a linked
|
|
9
9
|
* worktree whose HEAD matches the PR head is accepted and returned as
|
|
10
|
-
* `resolvedProjectRoot` so briefs are read from that tree.
|
|
11
|
-
*
|
|
12
|
-
*
|
|
10
|
+
* `resolvedProjectRoot` so briefs are read from that tree. Prefer a
|
|
11
|
+
* lifecycle-clean match when several SHA matches exist (#6128 Prefer-A). Dirty
|
|
12
|
+
* `xbrief/` / `vbrief/` on the chosen tree fails closed with a named reason and
|
|
13
|
+
* deletion-restorative remediation (local attestation must not green-light an
|
|
14
|
+
* unattested committed brief).
|
|
13
15
|
*/
|
|
14
16
|
import { spawnSync } from "node:child_process";
|
|
17
|
+
import { existsSync, realpathSync } from "node:fs";
|
|
18
|
+
import { join } from "node:path";
|
|
19
|
+
/** Behaviour-identical unverifiable sentinel for `resolveLifecycleDirty`. */
|
|
20
|
+
export const LIFECYCLE_STATUS_UNREADABLE = "cannot read git status for xbrief/vbrief before closeout";
|
|
15
21
|
/** Git short-SHA floor (same 7 as /^[0-9a-f]{7,40}$/i); length-derived, not a numeric const. */
|
|
16
22
|
const MIN_SHA_PREFIX = "xxxxxxx".length;
|
|
17
23
|
/** True when full or abbreviated SHAs name the same commit (min prefix length). */
|
|
@@ -35,65 +41,188 @@ export function resolveLocalHeadSha(projectRoot) {
|
|
|
35
41
|
const sha = (typeof result.stdout === "string" ? result.stdout : "").trim();
|
|
36
42
|
return /^[0-9a-f]{7,40}$/i.test(sha) ? sha : null;
|
|
37
43
|
}
|
|
44
|
+
/** Strip git porcelain C-style quoting so classifiers see real paths. */
|
|
45
|
+
function unquotePorcelainPath(path) {
|
|
46
|
+
if (path.length < 2 || path[0] !== '"' || path[path.length - 1] !== '"') {
|
|
47
|
+
return path;
|
|
48
|
+
}
|
|
49
|
+
return path.slice(1, -1).replace(/\\([\\"ntr])/g, (_m, c) => {
|
|
50
|
+
if (c === "n")
|
|
51
|
+
return "\n";
|
|
52
|
+
if (c === "t")
|
|
53
|
+
return "\t";
|
|
54
|
+
if (c === "r")
|
|
55
|
+
return "\r";
|
|
56
|
+
return c;
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
/** Parse `git status --porcelain` lines into {x,y,path} with C-quoting undone. */
|
|
60
|
+
export function parseLifecyclePorcelainEntries(stdout) {
|
|
61
|
+
const entries = [];
|
|
62
|
+
for (const raw of stdout.replace(/\r\n/g, "\n").split("\n")) {
|
|
63
|
+
if (raw.length < 4)
|
|
64
|
+
continue;
|
|
65
|
+
const x = raw.slice(0, 1);
|
|
66
|
+
const y = raw.slice(1, 2);
|
|
67
|
+
const entry = raw.slice(3);
|
|
68
|
+
if (entry.includes(" -> ")) {
|
|
69
|
+
const renamed = entry.split(" -> ").pop();
|
|
70
|
+
if (renamed !== undefined && renamed.length > 0) {
|
|
71
|
+
entries.push({ x, y, path: unquotePorcelainPath(renamed) });
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
else if (entry.length > 0) {
|
|
75
|
+
entries.push({ x, y, path: unquotePorcelainPath(entry) });
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
return entries;
|
|
79
|
+
}
|
|
80
|
+
function sampleFromEntries(entries) {
|
|
81
|
+
return entries
|
|
82
|
+
.slice(0, 3)
|
|
83
|
+
.map((e) => `${e.x}${e.y} ${e.path}`.trim())
|
|
84
|
+
.join("; ");
|
|
85
|
+
}
|
|
38
86
|
/**
|
|
39
|
-
*
|
|
40
|
-
*
|
|
41
|
-
*
|
|
42
|
-
* read; status=absent only when the list is verified and no match exists.
|
|
87
|
+
* Three-state classifier for lifecycle dirt under `xbrief/` / `vbrief/`.
|
|
88
|
+
* Classification and pathspec derivation read `entries[]`; display samples are
|
|
89
|
+
* derived at the refuse site only.
|
|
43
90
|
*/
|
|
44
|
-
export function
|
|
45
|
-
const result = spawnSync("git", ["-C", projectRoot, "
|
|
91
|
+
export function classifyLifecycleDirty(projectRoot) {
|
|
92
|
+
const result = spawnSync("git", ["-C", projectRoot, "status", "--porcelain", "--", "xbrief", "vbrief"], {
|
|
46
93
|
encoding: "utf8",
|
|
47
94
|
windowsHide: true,
|
|
48
95
|
});
|
|
49
96
|
if (result.error !== undefined || (result.status ?? 1) !== 0) {
|
|
50
|
-
const detail = result.error !== undefined
|
|
51
|
-
? result.error.message
|
|
52
|
-
: `git worktree list exited ${String(result.status ?? 1)}`;
|
|
53
97
|
return {
|
|
54
|
-
status: "
|
|
55
|
-
|
|
98
|
+
status: "unverifiable",
|
|
99
|
+
diagnostic: LIFECYCLE_STATUS_UNREADABLE,
|
|
56
100
|
};
|
|
57
101
|
}
|
|
58
102
|
const text = typeof result.stdout === "string" ? result.stdout : "";
|
|
103
|
+
const entries = parseLifecyclePorcelainEntries(text);
|
|
104
|
+
if (entries.length === 0) {
|
|
105
|
+
return { status: "clean" };
|
|
106
|
+
}
|
|
107
|
+
return { status: "dirty", entries };
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Behaviour-identical thin wrapper over {@link classifyLifecycleDirty}:
|
|
111
|
+
* null for clean, three-entry join for dirty, unverifiable sentinel for
|
|
112
|
+
* unverifiable — keeps semantic-green compiling without signature change.
|
|
113
|
+
*/
|
|
114
|
+
export function resolveLifecycleDirty(projectRoot) {
|
|
115
|
+
const classified = classifyLifecycleDirty(projectRoot);
|
|
116
|
+
if (classified.status === "clean") {
|
|
117
|
+
return null;
|
|
118
|
+
}
|
|
119
|
+
if (classified.status === "unverifiable") {
|
|
120
|
+
return classified.diagnostic;
|
|
121
|
+
}
|
|
122
|
+
return sampleFromEntries(classified.entries);
|
|
123
|
+
}
|
|
124
|
+
function hasXbriefLayout(projectRoot) {
|
|
125
|
+
return existsSync(join(projectRoot, "xbrief"));
|
|
126
|
+
}
|
|
127
|
+
function parseWorktreePorcelainList(text) {
|
|
128
|
+
const entries = [];
|
|
59
129
|
let currentPath = null;
|
|
130
|
+
let currentHead = null;
|
|
131
|
+
let prunable = false;
|
|
132
|
+
const flush = () => {
|
|
133
|
+
if (currentPath !== null) {
|
|
134
|
+
entries.push({ path: currentPath, head: currentHead, prunable });
|
|
135
|
+
}
|
|
136
|
+
currentPath = null;
|
|
137
|
+
currentHead = null;
|
|
138
|
+
prunable = false;
|
|
139
|
+
};
|
|
60
140
|
for (const line of text.split(/\r?\n/)) {
|
|
61
141
|
if (line.startsWith("worktree ")) {
|
|
142
|
+
flush();
|
|
62
143
|
currentPath = line.slice("worktree ".length).trim();
|
|
63
144
|
continue;
|
|
64
145
|
}
|
|
65
146
|
if (line.startsWith("HEAD ") && currentPath !== null) {
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
return { status: "found", path: currentPath };
|
|
69
|
-
}
|
|
70
|
-
currentPath = null;
|
|
147
|
+
currentHead = line.slice("HEAD ".length).trim();
|
|
148
|
+
continue;
|
|
71
149
|
}
|
|
150
|
+
if (line.startsWith("prunable") || line === "gone") {
|
|
151
|
+
prunable = true;
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
flush();
|
|
155
|
+
return entries;
|
|
156
|
+
}
|
|
157
|
+
function resolvePathKey(p) {
|
|
158
|
+
try {
|
|
159
|
+
const native = realpathSync.native;
|
|
160
|
+
return native !== undefined ? native(p) : realpathSync(p);
|
|
161
|
+
}
|
|
162
|
+
catch {
|
|
163
|
+
return p.replace(/\\/g, "/").toLowerCase();
|
|
72
164
|
}
|
|
73
|
-
return { status: "absent" };
|
|
74
165
|
}
|
|
75
166
|
/**
|
|
76
|
-
*
|
|
77
|
-
*
|
|
167
|
+
* Rank SHA-matching linked worktrees: one porcelain list read, path order,
|
|
168
|
+
* prefer lifecycle-clean via optional third-parameter classifier (default real
|
|
169
|
+
* three-state). `ResolveWorktreeAtShaFn` stays two-argument for injectors.
|
|
170
|
+
* Excludes prunable/gone. All-dirty returns found with ranked-first non-clean
|
|
171
|
+
* path (never absent). Carries `anotherShaMatchHasXbrief` on found.
|
|
78
172
|
*/
|
|
79
|
-
export function
|
|
80
|
-
const result = spawnSync("git", ["-C", projectRoot, "
|
|
173
|
+
export function findWorktreeAtSha(projectRoot, sha, classify = classifyLifecycleDirty) {
|
|
174
|
+
const result = spawnSync("git", ["-C", projectRoot, "worktree", "list", "--porcelain"], {
|
|
81
175
|
encoding: "utf8",
|
|
82
176
|
windowsHide: true,
|
|
83
177
|
});
|
|
84
178
|
if (result.error !== undefined || (result.status ?? 1) !== 0) {
|
|
85
|
-
|
|
179
|
+
const detail = result.error !== undefined
|
|
180
|
+
? result.error.message
|
|
181
|
+
: `git worktree list exited ${String(result.status ?? 1)}`;
|
|
182
|
+
return {
|
|
183
|
+
status: "error",
|
|
184
|
+
message: `cannot list linked worktrees under ${projectRoot} (${detail})`,
|
|
185
|
+
};
|
|
86
186
|
}
|
|
87
|
-
const text =
|
|
88
|
-
|
|
89
|
-
|
|
187
|
+
const text = typeof result.stdout === "string" ? result.stdout : "";
|
|
188
|
+
const listed = parseWorktreePorcelainList(text);
|
|
189
|
+
const shaMatches = listed
|
|
190
|
+
.filter((e) => e.head !== null && shasMatch(e.head, sha) && !e.prunable && existsSync(e.path))
|
|
191
|
+
.sort((a, b) => a.path.localeCompare(b.path));
|
|
192
|
+
if (shaMatches.length === 0) {
|
|
193
|
+
return { status: "absent" };
|
|
90
194
|
}
|
|
91
|
-
const
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
.
|
|
96
|
-
|
|
195
|
+
const withBrief = shaMatches.filter((e) => hasXbriefLayout(e.path));
|
|
196
|
+
let firstClean = null;
|
|
197
|
+
let firstNonClean = null;
|
|
198
|
+
for (const match of shaMatches) {
|
|
199
|
+
const classified = classify(match.path);
|
|
200
|
+
if (classified.status === "clean") {
|
|
201
|
+
if (firstClean === null) {
|
|
202
|
+
firstClean = match.path;
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
else if (firstNonClean === null) {
|
|
206
|
+
firstNonClean = match.path;
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
const selected = firstClean ?? firstNonClean;
|
|
210
|
+
if (selected === null) {
|
|
211
|
+
return { status: "absent" };
|
|
212
|
+
}
|
|
213
|
+
const anotherShaMatchHasXbrief = withBrief.some((e) => {
|
|
214
|
+
try {
|
|
215
|
+
return resolvePathKey(e.path) !== resolvePathKey(selected);
|
|
216
|
+
}
|
|
217
|
+
catch {
|
|
218
|
+
return e.path !== selected;
|
|
219
|
+
}
|
|
220
|
+
});
|
|
221
|
+
return {
|
|
222
|
+
status: "found",
|
|
223
|
+
path: selected,
|
|
224
|
+
anotherShaMatchHasXbrief,
|
|
225
|
+
};
|
|
97
226
|
}
|
|
98
227
|
/** REST `pulls/<N>` head.sha via the closeout runner (plain gh when available). */
|
|
99
228
|
export function fetchPrHeadShaViaApi(prNumber, repo, runGh) {
|
|
@@ -121,18 +250,82 @@ export function fetchPrHeadShaViaApi(prNumber, repo, runGh) {
|
|
|
121
250
|
return null;
|
|
122
251
|
}
|
|
123
252
|
}
|
|
124
|
-
function
|
|
253
|
+
function isUntrackedEntry(entry) {
|
|
254
|
+
return entry.x === "?" || entry.y === "?";
|
|
255
|
+
}
|
|
256
|
+
function isTrackedModifyAddRename(entry) {
|
|
257
|
+
if (isUntrackedEntry(entry))
|
|
258
|
+
return false;
|
|
259
|
+
return /[MAR]/.test(entry.x) || /[MAR]/.test(entry.y);
|
|
260
|
+
}
|
|
261
|
+
/** Pure tracked deletion (D) with no M/A/R on either side — excludes MD/DM (#6137 Greptile P1). */
|
|
262
|
+
function isRestorableDeletion(entry) {
|
|
263
|
+
if (isUntrackedEntry(entry))
|
|
264
|
+
return false;
|
|
265
|
+
if (!(entry.x === "D" || entry.y === "D"))
|
|
266
|
+
return false;
|
|
267
|
+
return !isTrackedModifyAddRename(entry);
|
|
268
|
+
}
|
|
269
|
+
function shellSingleQuote(arg) {
|
|
270
|
+
return "'" + arg.replace(/'/g, "'\''") + "'";
|
|
271
|
+
}
|
|
272
|
+
/**
|
|
273
|
+
* Deletion-restorative remediation buckets (#6128 Prefer-A Recut-8 errata).
|
|
274
|
+
* Tracked codes only; never emit `git stash push -u`.
|
|
275
|
+
* Deletions-only template: git -C "<dirty-root>" checkout HEAD -- <deleted-paths>
|
|
276
|
+
* (Approach1 sole-pin un-pin). Modify/add/rename never get a bare checkout.
|
|
277
|
+
*/
|
|
278
|
+
export function formatLifecycleDirtyRemediation(dirtyRoot, entries) {
|
|
279
|
+
const tracked = entries.filter((e) => !isUntrackedEntry(e));
|
|
280
|
+
const deletions = tracked.filter(isRestorableDeletion);
|
|
281
|
+
const modifies = tracked.filter(isTrackedModifyAddRename);
|
|
282
|
+
if (tracked.length === 0) {
|
|
283
|
+
return (`No tracked xbrief/vbrief dirt under ${dirtyRoot} (untracked-only). ` +
|
|
284
|
+
"Commit and push, or discard local lifecycle edits, then retry. " +
|
|
285
|
+
"Do not use git stash push -u as copy-paste remediation.");
|
|
286
|
+
}
|
|
287
|
+
if (modifies.length === 0 && deletions.length > 0) {
|
|
288
|
+
const paths = deletions.map((e) => shellSingleQuote(e.path)).join(" ");
|
|
289
|
+
return (`Deletions-only lifecycle dirt (Approach1 sole-pin un-pin). Restore with:\n` +
|
|
290
|
+
` git -C ${shellSingleQuote(dirtyRoot)} checkout HEAD -- ${paths}\n` +
|
|
291
|
+
"Then retry closeout / wait-mergeable.");
|
|
292
|
+
}
|
|
293
|
+
if (deletions.length > 0 && modifies.length > 0) {
|
|
294
|
+
const deletedPaths = deletions.map((e) => shellSingleQuote(e.path)).join(" ");
|
|
295
|
+
const modifiedPaths = modifies.map((e) => e.path).join(", ");
|
|
296
|
+
return (`Tracked modify/add/rename present (${modifiedPaths}); do not bare-checkout over those. ` +
|
|
297
|
+
`Optional restore for deleted paths only:\n` +
|
|
298
|
+
` git -C ${shellSingleQuote(dirtyRoot)} checkout HEAD -- ${deletedPaths}\n` +
|
|
299
|
+
`(excludes modified entries). Otherwise commit and push, or discard local lifecycle edits. ` +
|
|
300
|
+
"Do not use unqualified stash.");
|
|
301
|
+
}
|
|
302
|
+
return (`Tracked modify/add/rename lifecycle dirt under ${dirtyRoot}. ` +
|
|
303
|
+
"Do not bare-checkout HEAD over those paths. Commit and push, or discard local " +
|
|
304
|
+
"lifecycle edits, then retry. Do not use unqualified stash.");
|
|
305
|
+
}
|
|
306
|
+
export function refuseDirtyLifecycle(projectRoot, classified) {
|
|
307
|
+
const sample = sampleFromEntries(classified.entries);
|
|
308
|
+
const remediation = formatLifecycleDirtyRemediation(projectRoot, classified.entries);
|
|
125
309
|
return {
|
|
126
310
|
ok: false,
|
|
311
|
+
reason: "lifecycle-dirty",
|
|
127
312
|
message: `lifecycle tree under ${projectRoot} has uncommitted xbrief/vbrief changes ` +
|
|
128
|
-
`(${
|
|
129
|
-
|
|
313
|
+
`(${sample}). Closeout reads the committed PR-head brief. ${remediation}`,
|
|
314
|
+
};
|
|
315
|
+
}
|
|
316
|
+
function refuseUnverifiableLifecycle(projectRoot, diagnostic) {
|
|
317
|
+
return {
|
|
318
|
+
ok: false,
|
|
319
|
+
message: `lifecycle tree under ${projectRoot} status is unverifiable (${diagnostic}). ` +
|
|
320
|
+
"Closeout cannot certify briefs without a readable git status — fix git and retry. " +
|
|
321
|
+
"No discard remediation is printed for unverifiable status reads.",
|
|
130
322
|
};
|
|
131
323
|
}
|
|
132
324
|
/**
|
|
133
325
|
* Assert local HEAD equals the PR head that will merge.
|
|
134
326
|
* Fail closed (message for exit 2) when either side is unreadable or they differ
|
|
135
|
-
* and no linked worktree matches.
|
|
327
|
+
* and no linked worktree matches. Prefer a lifecycle-clean SHA match; refuse a
|
|
328
|
+
* dirty lifecycle tree on the chosen root with reason lifecycle-dirty.
|
|
136
329
|
*/
|
|
137
330
|
export function assertWorkingTreeIsPrHead(projectRoot, prNumber, repo, runGh, options = {}) {
|
|
138
331
|
if (options.enabled === false) {
|
|
@@ -140,13 +333,14 @@ export function assertWorkingTreeIsPrHead(projectRoot, prNumber, repo, runGh, op
|
|
|
140
333
|
}
|
|
141
334
|
const resolveLocal = options.resolveLocalHeadSha ?? resolveLocalHeadSha;
|
|
142
335
|
const fetchPrHead = options.fetchPrHeadSha ?? fetchPrHeadShaViaApi;
|
|
143
|
-
const
|
|
144
|
-
const
|
|
336
|
+
const classify = options.classifyLifecycleDirty ?? classifyLifecycleDirty;
|
|
337
|
+
const resolveWorktree = options.resolveWorktreeAtSha ??
|
|
338
|
+
((root, sha) => findWorktreeAtSha(root, sha, classify));
|
|
145
339
|
// Hermetic tests inject SHAs and have no real git tree — skip dirty unless
|
|
146
|
-
// they opt in (`checkLifecycleDirty: true` or inject
|
|
340
|
+
// they opt in (`checkLifecycleDirty: true` or inject classifier).
|
|
147
341
|
const checkDirty = options.checkLifecycleDirty === true ||
|
|
148
342
|
(options.checkLifecycleDirty !== false &&
|
|
149
|
-
(options.
|
|
343
|
+
(options.classifyLifecycleDirty !== undefined ||
|
|
150
344
|
(options.localHeadSha === undefined && options.prHeadSha === undefined)));
|
|
151
345
|
const localHead = options.localHeadSha !== undefined ? options.localHeadSha : resolveLocal(projectRoot);
|
|
152
346
|
if (localHead === null || localHead.trim().length === 0) {
|
|
@@ -167,9 +361,32 @@ export function assertWorkingTreeIsPrHead(projectRoot, prNumber, repo, runGh, op
|
|
|
167
361
|
let effectiveRoot = projectRoot;
|
|
168
362
|
let effectiveLocal = localHead.trim();
|
|
169
363
|
let resolvedProjectRoot;
|
|
170
|
-
|
|
364
|
+
let candidateZeroNonClean = null;
|
|
365
|
+
const atTip = shasMatch(localHead, prHead);
|
|
366
|
+
if (atTip && checkDirty) {
|
|
367
|
+
const localClass = classify(projectRoot);
|
|
368
|
+
if (localClass.status === "clean") {
|
|
369
|
+
return {
|
|
370
|
+
ok: true,
|
|
371
|
+
localHeadSha: effectiveLocal,
|
|
372
|
+
prHeadSha: prHead.trim(),
|
|
373
|
+
};
|
|
374
|
+
}
|
|
375
|
+
// Caller-at-tip dirty/unverifiable: still enumerate siblings (candidate zero).
|
|
376
|
+
candidateZeroNonClean = localClass;
|
|
377
|
+
}
|
|
378
|
+
if (!atTip || candidateZeroNonClean !== null) {
|
|
171
379
|
const lookup = resolveWorktree(projectRoot, prHead.trim());
|
|
172
380
|
if (lookup.status === "error") {
|
|
381
|
+
if (candidateZeroNonClean !== null) {
|
|
382
|
+
// Candidate-zero dirty lookup degrades to dirty/unverifiable refuse.
|
|
383
|
+
if (candidateZeroNonClean.status === "dirty") {
|
|
384
|
+
return refuseDirtyLifecycle(projectRoot, candidateZeroNonClean);
|
|
385
|
+
}
|
|
386
|
+
return refuseUnverifiableLifecycle(projectRoot, candidateZeroNonClean.status === "unverifiable"
|
|
387
|
+
? candidateZeroNonClean.diagnostic
|
|
388
|
+
: LIFECYCLE_STATUS_UNREADABLE);
|
|
389
|
+
}
|
|
173
390
|
return {
|
|
174
391
|
ok: false,
|
|
175
392
|
message: `${lookup.message}. Refusing to certify briefs when the PR-head worktree lookup ` +
|
|
@@ -177,6 +394,14 @@ export function assertWorkingTreeIsPrHead(projectRoot, prNumber, repo, runGh, op
|
|
|
177
394
|
};
|
|
178
395
|
}
|
|
179
396
|
if (lookup.status === "absent" || lookup.path.trim().length === 0) {
|
|
397
|
+
if (candidateZeroNonClean !== null) {
|
|
398
|
+
if (candidateZeroNonClean.status === "dirty") {
|
|
399
|
+
return refuseDirtyLifecycle(projectRoot, candidateZeroNonClean);
|
|
400
|
+
}
|
|
401
|
+
return refuseUnverifiableLifecycle(projectRoot, candidateZeroNonClean.status === "unverifiable"
|
|
402
|
+
? candidateZeroNonClean.diagnostic
|
|
403
|
+
: LIFECYCLE_STATUS_UNREADABLE);
|
|
404
|
+
}
|
|
180
405
|
return {
|
|
181
406
|
ok: false,
|
|
182
407
|
message: `working tree HEAD ${localHead} is not PR #${prNumber} head ${prHead}. ` +
|
|
@@ -195,13 +420,19 @@ export function assertWorkingTreeIsPrHead(projectRoot, prNumber, repo, runGh, op
|
|
|
195
420
|
}
|
|
196
421
|
effectiveRoot = alt;
|
|
197
422
|
effectiveLocal = altHead.trim();
|
|
198
|
-
|
|
423
|
+
if (resolvePathKey(alt) !== resolvePathKey(projectRoot)) {
|
|
424
|
+
resolvedProjectRoot = alt;
|
|
425
|
+
}
|
|
199
426
|
}
|
|
200
427
|
if (checkDirty) {
|
|
201
|
-
|
|
202
|
-
|
|
428
|
+
// Selection probe advisory; refuse authoritative (post-selection three-state).
|
|
429
|
+
const dirty = classify(effectiveRoot);
|
|
430
|
+
if (dirty.status === "dirty") {
|
|
203
431
|
return refuseDirtyLifecycle(effectiveRoot, dirty);
|
|
204
432
|
}
|
|
433
|
+
if (dirty.status === "unverifiable") {
|
|
434
|
+
return refuseUnverifiableLifecycle(effectiveRoot, dirty.diagnostic);
|
|
435
|
+
}
|
|
205
436
|
}
|
|
206
437
|
return {
|
|
207
438
|
ok: true,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pr-head-assert.js","sourceRoot":"","sources":["../../src/pr-closeout-attestable/pr-head-assert.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"pr-head-assert.js","sourceRoot":"","sources":["../../src/pr-closeout-attestable/pr-head-assert.ts"],"names":[],"mappings":"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"}
|