persona-harness 0.8.7 → 0.8.8

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.
@@ -3,12 +3,14 @@ import type { ProjectReadBoundary } from "../io/bootstrap-write-boundary.js";
3
3
  import { type VerificationAuthorityAssessment } from "./workflow-verification-receipt.js";
4
4
  import { type SemanticTddAssessment } from "./workflow-semantic-tdd.js";
5
5
  import { type VerificationDecision } from "./workflow-verification-decision.js";
6
+ import type { CompletionDecision } from "../core/completion-decision.js";
6
7
  import { type FinishAttestationAssessment } from "./workflow-finish-attestation.js";
7
8
  import { type ProjectFinishAttestationVerifierAssessment } from "./project-finish-attestation-verifier.js";
8
9
  export declare const TRUSTED_AUTHORITY_REQUIRED_BLOCKER_ID = "trusted-authority-required";
9
10
  export type WorkflowFinishAuthority = {
10
11
  readonly assessment: VerificationAuthorityAssessment;
11
12
  readonly blocker: ClosureBlocker;
13
+ readonly completion: CompletionDecision;
12
14
  readonly decision: VerificationDecision;
13
15
  readonly externalAttestation: FinishAttestationAssessment;
14
16
  readonly projectAttestation?: ProjectFinishAttestationVerifierAssessment;
@@ -1,7 +1,7 @@
1
1
  import { resolveSafeEvidenceRootResult } from "../config/harness-config.js";
2
2
  import { assessVerificationAuthority, } from "./workflow-verification-receipt.js";
3
3
  import { assessSemanticTddChain, } from "./workflow-semantic-tdd.js";
4
- import { blockedVerificationDecision, completionEligibleForAssurance, diagnosticVerificationDecision, externalAttestedVerificationDecision, } from "./workflow-verification-decision.js";
4
+ import { blockedVerificationDecision, completionDecisionForVerification, diagnosticVerificationDecision, externalAttestedVerificationDecision, } from "./workflow-verification-decision.js";
5
5
  import { verifyExternalFinishAttestation, verifyExternalFinishAttestationForClosure, } from "./workflow-finish-attestation.js";
6
6
  import { consumeProjectFinishAttestationArtifact, } from "./project-finish-attestation-verifier.js";
7
7
  import { readEnrolledProjectFinishAttestations } from "./authority-project-attestation.js";
@@ -31,8 +31,9 @@ export function readWorkflowFinishAuthority(projectDir, options = {}) {
31
31
  sourceSnapshotDigest: externalAttestation.receipt.source.identity.contentDigest,
32
32
  verifiedAt: now.toISOString(),
33
33
  });
34
- if (completionEligibleForAssurance(decision)) {
35
- return {
34
+ const completion = completionDecisionForVerification(decision);
35
+ if (completion.passed) {
36
+ return workflowFinishAuthorityResult({
36
37
  assessment,
37
38
  blocker: {
38
39
  id: TRUSTED_AUTHORITY_REQUIRED_BLOCKER_ID,
@@ -42,8 +43,7 @@ export function readWorkflowFinishAuthority(projectDir, options = {}) {
42
43
  decision,
43
44
  externalAttestation,
44
45
  semanticTdd,
45
- status: "trusted",
46
- };
46
+ }, completion);
47
47
  }
48
48
  }
49
49
  const decision = blockedVerificationDecision(TRUSTED_AUTHORITY_REQUIRED_BLOCKER_ID, [
@@ -55,7 +55,7 @@ export function readWorkflowFinishAuthority(projectDir, options = {}) {
55
55
  "An existing external attestation cannot fall through to user-scoped project authority after failed consumption.",
56
56
  "Only a product-verified original external attestation matching its enrolled policy can provide trusted authority before finish can pass.",
57
57
  ].join(" "));
58
- return {
58
+ return workflowFinishAuthorityResult({
59
59
  assessment,
60
60
  decision,
61
61
  blocker: {
@@ -65,8 +65,7 @@ export function readWorkflowFinishAuthority(projectDir, options = {}) {
65
65
  },
66
66
  externalAttestation,
67
67
  semanticTdd,
68
- status: "blocked",
69
- };
68
+ });
70
69
  }
71
70
  const projectRead = readEnrolledProjectFinishAttestations(projectDir, { storeRoot: options.authorityStoreRoot }, now);
72
71
  const trustedProjects = projectRead.values.filter((candidate) => candidate.assessment.authorityEligible);
@@ -84,8 +83,9 @@ export function readWorkflowFinishAuthority(projectDir, options = {}) {
84
83
  sourceSnapshotDigest: projectAttestation.receipt.source.identity.contentDigest,
85
84
  verifiedAt: now.toISOString(),
86
85
  });
87
- if (completionEligibleForAssurance(decision)) {
88
- return {
86
+ const completion = completionDecisionForVerification(decision);
87
+ if (completion.passed) {
88
+ return workflowFinishAuthorityResult({
89
89
  assessment,
90
90
  blocker: {
91
91
  id: TRUSTED_AUTHORITY_REQUIRED_BLOCKER_ID,
@@ -96,8 +96,7 @@ export function readWorkflowFinishAuthority(projectDir, options = {}) {
96
96
  externalAttestation: externalInspection,
97
97
  projectAttestation,
98
98
  semanticTdd,
99
- status: "trusted",
100
- };
99
+ }, completion);
101
100
  }
102
101
  }
103
102
  }
@@ -115,7 +114,7 @@ export function readWorkflowFinishAuthority(projectDir, options = {}) {
115
114
  `Enrolled project attestation assessment: ${projectSummary}.`,
116
115
  "Only a product-verified original external attestation matching its enrolled policy can provide trusted authority before finish can pass.",
117
116
  ].join(" "));
118
- return {
117
+ return workflowFinishAuthorityResult({
119
118
  assessment,
120
119
  decision,
121
120
  blocker: {
@@ -126,8 +125,7 @@ export function readWorkflowFinishAuthority(projectDir, options = {}) {
126
125
  projectAttestation: projectRead.values[0]?.assessment,
127
126
  semanticTdd,
128
127
  externalAttestation,
129
- status: "blocked",
130
- };
128
+ });
131
129
  }
132
130
  function readCapabilityBoundWorkflowFinishAuthority(projectDir, projectReadBoundary, options) {
133
131
  const now = options.now ?? new Date();
@@ -172,8 +170,9 @@ function readCapabilityBoundWorkflowFinishAuthority(projectDir, projectReadBound
172
170
  sourceSnapshotDigest: projectAttestation.receipt.source.identity.contentDigest,
173
171
  verifiedAt: now.toISOString(),
174
172
  });
175
- if (completionEligibleForAssurance(decision)) {
176
- return {
173
+ const completion = completionDecisionForVerification(decision);
174
+ if (completion.passed) {
175
+ return workflowFinishAuthorityResult({
177
176
  assessment,
178
177
  blocker: {
179
178
  id: TRUSTED_AUTHORITY_REQUIRED_BLOCKER_ID,
@@ -184,8 +183,7 @@ function readCapabilityBoundWorkflowFinishAuthority(projectDir, projectReadBound
184
183
  externalAttestation,
185
184
  projectAttestation,
186
185
  semanticTdd,
187
- status: "trusted",
188
- };
186
+ }, completion);
189
187
  }
190
188
  }
191
189
  }
@@ -198,7 +196,7 @@ function readCapabilityBoundWorkflowFinishAuthority(projectDir, projectReadBound
198
196
  `Enrolled project attestation assessment: ${projectSummary}.`,
199
197
  "Only a product-verified original external attestation matching its enrolled policy can provide trusted authority before finish can pass.",
200
198
  ].join(" "));
201
- return {
199
+ return workflowFinishAuthorityResult({
202
200
  assessment,
203
201
  blocker: {
204
202
  id: TRUSTED_AUTHORITY_REQUIRED_BLOCKER_ID,
@@ -209,7 +207,13 @@ function readCapabilityBoundWorkflowFinishAuthority(projectDir, projectReadBound
209
207
  externalAttestation,
210
208
  projectAttestation: projectRead.values[0]?.assessment,
211
209
  semanticTdd,
212
- status: "blocked",
210
+ });
211
+ }
212
+ function workflowFinishAuthorityResult(input, completion = completionDecisionForVerification(input.decision)) {
213
+ return {
214
+ ...input,
215
+ completion,
216
+ status: completion.passed ? "trusted" : "blocked",
213
217
  };
214
218
  }
215
219
  //# sourceMappingURL=workflow-finish-authority.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"workflow-finish-authority.js","sourceRoot":"","sources":["../../src/cli/workflow-finish-authority.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"workflow-finish-authority.js","sourceRoot":"","sources":["../../src/cli/workflow-finish-authority.ts"],"names":[],"mappings":"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"}
@@ -19,7 +19,7 @@ export function runWorkflowFinishResult(runnerKind, projectDir, assurance = DEFA
19
19
  const authority = readWorkflowFinishAuthority(projectDir, {
20
20
  projectReadBoundary: projectRead?.boundary,
21
21
  });
22
- if (authority.status === "blocked") {
22
+ if (!authority.completion.passed) {
23
23
  const blocker = authority.blocker;
24
24
  const followUp = workflowFinishFollowUpForStep({
25
25
  blockerId: blocker.id,
@@ -1 +1 @@
1
- {"version":3,"file":"workflow-finish-runner.js","sourceRoot":"","sources":["../../src/cli/workflow-finish-runner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"workflow-finish-runner.js","sourceRoot":"","sources":["../../src/cli/workflow-finish-runner.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,4BAA4B,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAA;AACnG,OAAO,EAAE,6BAA6B,EAAE,MAAM,gCAAgC,CAAA;AAC9E,OAAO,EAAE,0BAA0B,EAAE,MAAM,uBAAuB,CAAA;AAClE,OAAO,EAAE,+BAA+B,EAAE,MAAM,iCAAiC,CAAA;AACjF,OAAO,EAAE,kCAAkC,EAAE,MAAM,mCAAmC,CAAA;AACtF,OAAO,EAAE,oCAAoC,EAAmC,MAAM,qCAAqC,CAAA;AAC3H,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAA2B,MAAM,sBAAsB,CAAA;AACtG,OAAO,EAAE,2BAA2B,EAAE,MAAM,gCAAgC,CAAA;AAE5E,MAAM,UAAU,uBAAuB,CACrC,UAA8B,EAC9B,UAAkB,EAClB,YAAwC,oCAAoC,EAC5E,WAGC;IAED,IAAI,SAAS,KAAK,aAAa;QAAE,OAAO,0BAA0B,CAAC,UAAU,EAAE,UAAU,EAAE,WAAW,CAAC,CAAA;IACvG,MAAM,OAAO,GAAG,0BAA0B,CAAC,MAAM,EAAE,UAAU,EAAE;QAC7D,mBAAmB,EAAE,WAAW,EAAE,QAAQ;QAC1C,mBAAmB,EAAE,WAAW,EAAE,QAAQ;QAC1C,sBAAsB,EAAE,IAAI;KAC7B,CAAC,CAAA;IACF,MAAM,OAAO,GAAG,4BAA4B,CAAC,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAA;IACxF,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,MAAM,SAAS,GAAG,2BAA2B,CAAC,UAAU,EAAE;YACxD,mBAAmB,EAAE,WAAW,EAAE,QAAQ;SAC3C,CAAC,CAAA;QACF,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;YACjC,MAAM,OAAO,GAAG,SAAS,CAAC,OAAO,CAAA;YACjC,MAAM,QAAQ,GAAG,6BAA6B,CAAC;gBAC7C,SAAS,EAAE,OAAO,CAAC,EAAE;gBACrB,EAAE,EAAE,OAAO,CAAC,EAAE;gBACd,IAAI,EAAE,wBAAwB;gBAC9B,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,MAAM,EAAE,SAAS;aAClB,CAAC,CAAA;YACF,OAAO,kBAAkB,CAAC,QAAQ,EAAE,UAAU,EAAE,EAAE,EAAE;gBAClD,UAAU,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;gBACxB,QAAQ;aACT,CAAC,CAAA;QACJ,CAAC;QACD,OAAO,kBAAkB,CAAC,UAAU,CAAC,CAAA;IACvC,CAAC;IACD,MAAM,QAAQ,GAAG,sBAAsB,CAAC,OAAO,CAAC,CAAA;IAChD,OAAO,QAAQ,KAAK,IAAI;QACtB,CAAC,CAAC,kBAAkB,CAAC,QAAQ,EAAE,UAAU,EAAE,OAAO,CAAC;QACnD,CAAC,CAAC,kBAAkB,CAAC,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE;YAChD,UAAU,EAAE,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;YAC/D,QAAQ;SACT,CAAC,CAAA;AACR,CAAC;AAED,SAAS,0BAA0B,CACjC,UAA8B,EAC9B,UAAkB,EAClB,WAGC;IAED,MAAM,OAAO,GAAG,+BAA+B,CAAC,UAAU,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAA;IAClF,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC/B,OAAO,kBAAkB,CAAC,QAAQ,EAAE,UAAU,EAAE,CAAC,qCAAqC,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC,CAAA;IACzG,CAAC;IACD,MAAM,OAAO,GAAG,0BAA0B,CAAC,MAAM,EAAE,UAAU,EAAE;QAC7D,mBAAmB,EAAE,WAAW,EAAE,QAAQ;QAC1C,mBAAmB,EAAE,WAAW,EAAE,QAAQ;QAC1C,sBAAsB,EAAE,KAAK;KAC9B,CAAC,CAAA;IACF,MAAM,OAAO,GAAG,4BAA4B,CAAC,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,QAAQ,CAAC;SACrF,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,SAAS,KAAK,4BAA4B,CAAC,CAAA;IACxE,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,kBAAkB,CAAC,QAAQ,EAAE,UAAU,EAAE,OAAO,CAAC,CAAA;IAEhF,MAAM,MAAM,GAAG,kCAAkC,CAAC,UAAU,EAAE,WAAW,EAAE,QAAQ,EAAE,OAAO,CAAC,KAAK,CAAC,CAAA;IACnG,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ;QAC7B,CAAC,CAAC,kBAAkB,CAAC,UAAU,EAAE,aAAa,CAAC;QAC/C,CAAC,CAAC,kBAAkB,CAAC,QAAQ,EAAE,UAAU,EAAE,CAAC,qCAAqC,MAAM,CAAC,IAAI,GAAG,CAAC,CAAC,CAAA;AACrG,CAAC"}
@@ -1,8 +1,10 @@
1
1
  import type { CooperativeCurrentProcessVerificationDecision } from "./cooperative-finish-authority.js";
2
+ import { type CompletionDecision } from "../core/completion-decision.js";
3
+ import type { CompletionAssuranceRequirement } from "../core/completion-decision.js";
2
4
  export type VerificationAssurance = "diagnostic-only" | "none" | "cooperative" | "external";
3
5
  export type VerificationAuthorityProvider = "none" | "cooperative-current-process" | "external-attested";
4
6
  export type VerificationConsumptionState = "not-applicable" | "unconsumed" | "consumed";
5
- export type FinishAssuranceRequirement = "cooperative" | "external";
7
+ export type FinishAssuranceRequirement = CompletionAssuranceRequirement;
6
8
  export declare const DEFAULT_FINISH_ASSURANCE_REQUIREMENT: "external";
7
9
  export type DiagnosticVerificationDecision = {
8
10
  readonly assurance: "diagnostic-only";
@@ -52,5 +54,6 @@ export declare function isCompletionEligibleVerificationDecision(value: unknown)
52
54
  export declare function isExternalAttestedVerificationDecision(value: unknown): value is ExternalAttestedVerificationDecision;
53
55
  export declare function isTrustedVerificationDecision(value: unknown): value is ExternalAttestedVerificationDecision;
54
56
  export declare function completionEligibleForAssurance(value: unknown, requirement?: FinishAssuranceRequirement): boolean;
57
+ export declare function completionDecisionForVerification(value: unknown, requirement?: FinishAssuranceRequirement): CompletionDecision;
55
58
  export declare function verificationDecisionSummary(decision: VerificationDecision): string;
56
59
  export {};
@@ -1,4 +1,5 @@
1
1
  import { isLiveCooperativeDecision } from "./cooperative-finish-authority.js";
2
+ import { resolveCompletionDecision, } from "../core/completion-decision.js";
2
3
  export const DEFAULT_FINISH_ASSURANCE_REQUIREMENT = "external";
3
4
  const externalAttestedDecisionObjects = new WeakSet();
4
5
  export function diagnosticVerificationDecision(code, summary) {
@@ -48,14 +49,14 @@ export function isTrustedVerificationDecision(value) {
48
49
  return isExternalAttestedVerificationDecision(value);
49
50
  }
50
51
  export function completionEligibleForAssurance(value, requirement = DEFAULT_FINISH_ASSURANCE_REQUIREMENT) {
51
- switch (requirement) {
52
- case "cooperative":
53
- return isLiveCooperativeDecision(value);
54
- case "external":
55
- return isExternalAttestedVerificationDecision(value);
56
- default:
57
- return assertNever(requirement);
58
- }
52
+ return completionDecisionForVerification(value, requirement).passed;
53
+ }
54
+ export function completionDecisionForVerification(value, requirement = DEFAULT_FINISH_ASSURANCE_REQUIREMENT) {
55
+ return resolveCompletionDecision({
56
+ authority: authorityEvidenceForVerification(value),
57
+ policyBlocker: policyBlockerForRequirement(requirement),
58
+ requirement,
59
+ });
59
60
  }
60
61
  export function verificationDecisionSummary(decision) {
61
62
  switch (decision.kind) {
@@ -73,4 +74,47 @@ export function verificationDecisionSummary(decision) {
73
74
  function assertNever(value) {
74
75
  throw new TypeError(`Unknown verification decision status: ${String(value)}`);
75
76
  }
77
+ function authorityEvidenceForVerification(value) {
78
+ if (isExternalAttestedVerificationDecision(value)) {
79
+ return { assurance: "external", kind: "trusted" };
80
+ }
81
+ if (isLiveCooperativeDecision(value)) {
82
+ return { assurance: "cooperative", kind: "trusted" };
83
+ }
84
+ if (isDescriptiveNonEligibleVerificationDecision(value)) {
85
+ return { code: value.code, kind: "blocked", summary: value.summary };
86
+ }
87
+ return {
88
+ code: "verification-authority-unavailable",
89
+ kind: "blocked",
90
+ summary: "No live verification authority is available for completion.",
91
+ };
92
+ }
93
+ function isDescriptiveNonEligibleVerificationDecision(value) {
94
+ if (!isRecord(value)) {
95
+ return false;
96
+ }
97
+ return (value["kind"] === "blocked" || value["kind"] === "diagnostic-only")
98
+ && typeof value["code"] === "string"
99
+ && typeof value["summary"] === "string";
100
+ }
101
+ function isRecord(value) {
102
+ return typeof value === "object" && value !== null && !Array.isArray(value);
103
+ }
104
+ function policyBlockerForRequirement(requirement) {
105
+ switch (requirement) {
106
+ case "cooperative":
107
+ return {
108
+ code: "cooperative-authority-required",
109
+ summary: "A live cooperative verification result is required before completion can pass.",
110
+ };
111
+ case "external":
112
+ return {
113
+ code: "trusted-authority-required",
114
+ summary: "A trusted external authority is required before completion can pass.",
115
+ };
116
+ default:
117
+ return assertNever(requirement);
118
+ }
119
+ }
76
120
  //# sourceMappingURL=workflow-verification-decision.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"workflow-verification-decision.js","sourceRoot":"","sources":["../../src/cli/workflow-verification-decision.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,mCAAmC,CAAA;AAqB7E,MAAM,CAAC,MAAM,oCAAoC,GAAG,UAAmB,CAAA;AAsDvE,MAAM,+BAA+B,GAAG,IAAI,OAAO,EAAU,CAAA;AAE7D,MAAM,UAAU,8BAA8B,CAC5C,IAAY,EACZ,OAAe;IAEf,OAAO;QACL,SAAS,EAAE,iBAAiB;QAC5B,iBAAiB,EAAE,MAAM;QACzB,IAAI;QACJ,kBAAkB,EAAE,KAAK;QACzB,gBAAgB,EAAE,gBAAgB;QAClC,IAAI,EAAE,iBAAiB;QACvB,MAAM,EAAE,iBAAiB;QACzB,OAAO;KACR,CAAA;AACH,CAAC;AAED,MAAM,UAAU,2BAA2B,CACzC,IAAY,EACZ,OAAe;IAEf,OAAO;QACL,SAAS,EAAE,MAAM;QACjB,iBAAiB,EAAE,MAAM;QACzB,IAAI;QACJ,kBAAkB,EAAE,KAAK;QACzB,gBAAgB,EAAE,gBAAgB;QAClC,IAAI,EAAE,SAAS;QACf,MAAM,EAAE,SAAS;QACjB,OAAO;KACR,CAAA;AACH,CAAC;AAED,MAAM,UAAU,oCAAoC,CAClD,KAAoC;IAEpC,MAAM,QAAQ,GAAyC,MAAM,CAAC,MAAM,CAAC;QACnE,GAAG,KAAK;QACR,SAAS,EAAE,UAAU;QACrB,iBAAiB,EAAE,mBAAmB;QACtC,kBAAkB,EAAE,IAAI;QACxB,gBAAgB,EAAE,KAAK,CAAC,gBAAgB,IAAI,YAAY;QACxD,IAAI,EAAE,mBAAmB;QACzB,MAAM,EAAE,SAAS;KAClB,CAAC,CAAA;IACF,+BAA+B,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;IAC7C,OAAO,QAAQ,CAAA;AACjB,CAAC;AAED,MAAM,UAAU,wCAAwC,CACtD,KAAc;IAEd,OAAO,yBAAyB,CAAC,KAAK,CAAC,IAAI,sCAAsC,CAAC,KAAK,CAAC,CAAA;AAC1F,CAAC;AAED,MAAM,UAAU,sCAAsC,CACpD,KAAc;IAEd,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,+BAA+B,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;AAClG,CAAC;AAED,MAAM,UAAU,6BAA6B,CAC3C,KAAc;IAEd,OAAO,sCAAsC,CAAC,KAAK,CAAC,CAAA;AACtD,CAAC;AAED,MAAM,UAAU,8BAA8B,CAC5C,KAAc,EACd,cAA0C,oCAAoC;IAE9E,QAAQ,WAAW,EAAE,CAAC;QACpB,KAAK,aAAa;YAChB,OAAO,yBAAyB,CAAC,KAAK,CAAC,CAAA;QACzC,KAAK,UAAU;YACb,OAAO,sCAAsC,CAAC,KAAK,CAAC,CAAA;QACtD;YACE,OAAO,WAAW,CAAC,WAAW,CAAC,CAAA;IACnC,CAAC;AACH,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAC,QAA8B;IACxE,QAAQ,QAAQ,CAAC,IAAI,EAAE,CAAC;QACtB,KAAK,SAAS,CAAC;QACf,KAAK,iBAAiB;YACpB,OAAO,QAAQ,CAAC,OAAO,CAAA;QACzB,KAAK,6BAA6B;YAChC,OAAO,wCAAwC,QAAQ,CAAC,UAAU,uDAAuD,CAAA;QAC3H,KAAK,mBAAmB;YACtB,OAAO,8BAA8B,QAAQ,CAAC,UAAU,gBAAgB,QAAQ,CAAC,UAAU,GAAG,CAAA;QAChG;YACE,OAAO,WAAW,CAAC,QAAQ,CAAC,CAAA;IAChC,CAAC;AACH,CAAC;AAED,SAAS,WAAW,CAAC,KAAY;IAC/B,MAAM,IAAI,SAAS,CAAC,yCAAyC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;AAC/E,CAAC"}
1
+ {"version":3,"file":"workflow-verification-decision.js","sourceRoot":"","sources":["../../src/cli/workflow-verification-decision.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ export declare const COMPLETION_ASSURANCE_REQUIREMENTS: {
2
+ readonly COOPERATIVE: "cooperative";
3
+ readonly EXTERNAL: "external";
4
+ };
5
+ export type CompletionAssuranceRequirement = (typeof COMPLETION_ASSURANCE_REQUIREMENTS)[keyof typeof COMPLETION_ASSURANCE_REQUIREMENTS];
6
+ export type CompletionState = "blocked" | "externally-attested" | "locally-verified";
7
+ export type CompletionBlocker = {
8
+ readonly code: string;
9
+ readonly summary: string;
10
+ };
11
+ export type CompletionAuthorityEvidence = {
12
+ readonly code: string;
13
+ readonly kind: "blocked";
14
+ readonly summary: string;
15
+ } | {
16
+ readonly assurance: CompletionAssuranceRequirement;
17
+ readonly kind: "trusted";
18
+ };
19
+ export type CompletionDecisionInput = {
20
+ readonly authority: CompletionAuthorityEvidence;
21
+ readonly policyBlocker: CompletionBlocker;
22
+ readonly requirement: CompletionAssuranceRequirement;
23
+ };
24
+ export type CompletionDecision = {
25
+ readonly blockers: readonly CompletionBlocker[];
26
+ readonly passed: boolean;
27
+ readonly state: CompletionState;
28
+ };
29
+ export declare function resolveCompletionDecision(input: CompletionDecisionInput): CompletionDecision;
@@ -0,0 +1,40 @@
1
+ export const COMPLETION_ASSURANCE_REQUIREMENTS = {
2
+ COOPERATIVE: "cooperative",
3
+ EXTERNAL: "external",
4
+ };
5
+ export function resolveCompletionDecision(input) {
6
+ switch (input.authority.kind) {
7
+ case "blocked":
8
+ return {
9
+ blockers: [{ code: input.authority.code, summary: input.authority.summary }],
10
+ passed: false,
11
+ state: "blocked",
12
+ };
13
+ case "trusted":
14
+ switch (input.requirement) {
15
+ case "cooperative":
16
+ return input.authority.assurance === "cooperative"
17
+ ? { blockers: [], passed: true, state: "locally-verified" }
18
+ : blockedByPolicy(input.policyBlocker);
19
+ case "external":
20
+ return input.authority.assurance === "external"
21
+ ? { blockers: [], passed: true, state: "externally-attested" }
22
+ : blockedByPolicy(input.policyBlocker);
23
+ default:
24
+ return assertNever(input.requirement);
25
+ }
26
+ default:
27
+ return assertNever(input.authority);
28
+ }
29
+ }
30
+ function blockedByPolicy(blocker) {
31
+ return {
32
+ blockers: [blocker],
33
+ passed: false,
34
+ state: "blocked",
35
+ };
36
+ }
37
+ function assertNever(value) {
38
+ throw new TypeError(`Unknown completion decision value: ${String(value)}`);
39
+ }
40
+ //# sourceMappingURL=completion-decision.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"completion-decision.js","sourceRoot":"","sources":["../../src/core/completion-decision.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,iCAAiC,GAAG;IAC/C,WAAW,EAAE,aAAa;IAC1B,QAAQ,EAAE,UAAU;CACZ,CAAA;AAmCV,MAAM,UAAU,yBAAyB,CAAC,KAA8B;IACtE,QAAQ,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;QAC7B,KAAK,SAAS;YACZ,OAAO;gBACL,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;gBAC5E,MAAM,EAAE,KAAK;gBACb,KAAK,EAAE,SAAS;aACjB,CAAA;QACH,KAAK,SAAS;YACZ,QAAQ,KAAK,CAAC,WAAW,EAAE,CAAC;gBAC1B,KAAK,aAAa;oBAChB,OAAO,KAAK,CAAC,SAAS,CAAC,SAAS,KAAK,aAAa;wBAChD,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,kBAAkB,EAAE;wBAC3D,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,aAAa,CAAC,CAAA;gBAC1C,KAAK,UAAU;oBACb,OAAO,KAAK,CAAC,SAAS,CAAC,SAAS,KAAK,UAAU;wBAC7C,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,qBAAqB,EAAE;wBAC9D,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,aAAa,CAAC,CAAA;gBAC1C;oBACE,OAAO,WAAW,CAAC,KAAK,CAAC,WAAW,CAAC,CAAA;YACzC,CAAC;QACH;YACE,OAAO,WAAW,CAAC,KAAK,CAAC,SAAS,CAAC,CAAA;IACvC,CAAC;AACH,CAAC;AAED,SAAS,eAAe,CAAC,OAA0B;IACjD,OAAO;QACL,QAAQ,EAAE,CAAC,OAAO,CAAC;QACnB,MAAM,EAAE,KAAK;QACb,KAAK,EAAE,SAAS;KACjB,CAAA;AACH,CAAC;AAED,SAAS,WAAW,CAAC,KAAY;IAC/B,MAAM,IAAI,SAAS,CAAC,sCAAsC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;AAC5E,CAAC"}
@@ -113,7 +113,7 @@ Total indexed files: 337
113
113
  | `docs/current/p0-go-acceptance-record.md` | current active pointer/status | - | P0-1 exact-main acceptance, provenance, package evidence, and claim boundary record. |
114
114
  | `docs/current/p0-public-discovery-acceptance-record.md` | current active pointer/status | - | P0-3 exact-main public discovery, writer safety, package evidence, and claim boundary record. |
115
115
  | `docs/current/ph-bearshell-mvp.md` | current compatibility doc | - | Compatibility/current-era doc retained in place; migrate by summary and pointer before moving. |
116
- | `docs/current/ph-core-adapter-boundary-design.md` | current active pointer/status | - | Item 25 design-only PH-core/language-pack/adapter ownership and dependency boundary. |
116
+ | `docs/current/ph-core-adapter-boundary-design.md` | current active pointer/status | - | PH-core/language-pack/adapter ownership boundary, including the implemented internal completion-decision seam and deferred extraction work. |
117
117
  | `docs/current/p3-integrity-roadmap.md` | current active pointer/status | - | Accepted P3-first integrity roadmap, release hold, assurance model, and P2 hold; docs-only pending implementation. |
118
118
  | `docs/current/p3-2-closure-authority-acceptance-record.md` | current active pointer/status | - | Candidate finish boundary: unsigned project-local evidence is diagnostic-only and no trusted authority path exists yet. |
119
119
  | `docs/current/p3-3-verification-receipt-acceptance-record.md` | current active pointer/status | - | Strict receipt/attempt parser and read-only lifecycle diagnostics; no receipt issuance or finish-authority acceptance. |
@@ -1,12 +1,13 @@
1
1
  # PH-Core And Adapter Boundary Design
2
2
 
3
- Status: Item 25 design only. This page defines ownership and dependency
4
- direction; it does not move code, create a new API or schema, add a package,
5
- change defaults, or implement an adapter.
3
+ Status: Phase 1 partially implemented. This page defines ownership and
4
+ dependency direction. The host-neutral completion-decision core is now an
5
+ internal boundary; package/workspace extraction, public APIs, schemas,
6
+ defaults, and adapters remain deferred.
6
7
 
7
- **Source snapshot:** `16c741026c3b0c6abc6e3022c976c4f6909e9a2d`
8
- (`docs: record quick demo gate flow acceptance`). All source references below
9
- are snapshots at that commit.
8
+ **Source snapshot:** `175c08b15c450bae9477c8698f016846ea8443e9`
9
+ (`fix: canonicalize packer output parent (#280)`). Source references below
10
+ describe the baseline before the completion-decision core extraction.
10
11
 
11
12
  ## Decision
12
13
 
@@ -41,6 +42,26 @@ Adapters may call public PH entry and diagnostic surfaces. They may not
41
42
  reinterpret a successful methodology step, host event, or CI wrapper action as
42
43
  a passed PH finish result.
43
44
 
45
+ ## Implemented Completion-Decision Core
46
+
47
+ `src/core/completion-decision.ts` owns the final decision shape used by the
48
+ workflow finish authority:
49
+
50
+ - a trusted cooperative authority can satisfy only cooperative assurance;
51
+ - a trusted external authority can satisfy only external assurance;
52
+ - a blocked or unavailable authority preserves a blocker and cannot pass;
53
+ - a policy mismatch remains blocked rather than falling back to another
54
+ assurance level.
55
+
56
+ The core has no imports. It does not read project files, run commands, call a
57
+ host, inspect a provider artifact, or know about Java/Spring. Existing CLI
58
+ code maps its live authority capabilities into the core and retains ownership
59
+ of verification and artifact consumption. `workflow-finish-authority` derives
60
+ its `trusted` or `blocked` status from the core decision's `passed` field.
61
+
62
+ This is intentionally an internal seam, not a new user-facing command or a
63
+ claim that every planned PH-core interface already exists.
64
+
44
65
  ## PH-Core Boundary
45
66
 
46
67
  PH-core owns these stable responsibilities:
@@ -128,7 +149,8 @@ cannot auto-finish work, verify reports, alter gates, or create a host default.
128
149
  | PH-core ticket contract | `src/cli/workflow-ticket-model.ts:BacklogTicket, formatTaskCard, parseBacklog @ 16c741026c3b0c6abc6e3022c976c4f6909e9a2d` | Defines current backlog/task-card state material and schema-versioned text contracts. |
129
150
  | PH-core workflow mutation | `src/cli/workflow-tickets.ts:writeWorkflowStateSnapshot, archiveBlockingBlockers @ 16c741026c3b0c6abc6e3022c976c4f6909e9a2d` | Applies conflict-aware state writes and consults closure before archive. |
130
151
  | PH-core closure state | `src/cli/workflow-closure.ts:readWorkflowClosurePayload, closureBlockers @ 16c741026c3b0c6abc6e3022c976c4f6909e9a2d` | Derives the structured closure state and deterministic blockers. |
131
- | PH-core finish | `src/cli/workflow-finish-runner.ts:runWorkflowFinishResult @ 16c741026c3b0c6abc6e3022c976c4f6909e9a2d` | Uses closure reasons to render the existing plaintext pass/block result. |
152
+ | PH-core completion decision | `src/core/completion-decision.ts:resolveCompletionDecision` | Maps trusted or blocked authority evidence and the requested assurance into final state, blockers, and `passed`; it has no adapter/provider/runtime imports. |
153
+ | PH-core finish | `src/cli/workflow-finish-runner.ts:runWorkflowFinishResult @ 16c741026c3b0c6abc6e3022c976c4f6909e9a2d`; `src/cli/workflow-finish-authority.ts:workflowFinishAuthorityResult` | Uses closure reasons and the core decision to render the existing plaintext pass/block result. |
132
154
  | PH-core verification authority | `src/cli/workflow-closure-verification.ts:readClosureVerification @ 16c741026c3b0c6abc6e3022c976c4f6909e9a2d`; `src/cli/closure-verification-runner.ts:runDirectClosureVerification @ 16c741026c3b0c6abc6e3022c976c4f6909e9a2d` | Selects direct PH verification when configured and otherwise classifies report/execution evidence without silently treating prose as proof. |
133
155
  | Language-pack profile | `src/config/project-profile.ts:readBackendProjectProfileState @ 16c741026c3b0c6abc6e3022c976c4f6909e9a2d` | Reads the current supported Java/Spring backend profile state. |
134
156
  | Language-pack conventions | `src/cli/convention-pack.ts:collectConventionFiles @ 16c741026c3b0c6abc6e3022c976c4f6909e9a2d`; `src/cli/ast-grep-convention-runner.ts:loadAstGrepConventionDefinitions @ 16c741026c3b0c6abc6e3022c976c4f6909e9a2d` | Loads convention declarations and maps their pack metadata into current convention definitions. |
@@ -138,15 +160,15 @@ cannot auto-finish work, verify reports, alter gates, or create a host default.
138
160
  | Host adapter | `src/runtime/hooks.ts:createPhase0Hooks @ 16c741026c3b0c6abc6e3022c976c4f6909e9a2d` | Current host hook/injection translation point, guarded by the existing runtime-injection configuration. |
139
161
  | Methodology driver | `packages/shared-skills/skills/advanced/superpowers-driver/SKILL.md:Superpowers Driver @ 16c741026c3b0c6abc6e3022c976c4f6909e9a2d` | Manual source-only driver that explicitly defers authority to PH CLI exit and closure/finish surfaces. |
140
162
 
141
- These references describe current placement only. They are not a mandate to
142
- rename, extract, or relocate any listed file in this design tranche.
163
+ All references other than the implemented completion-decision core describe
164
+ current placement only. They are not a mandate to rename, extract, or relocate
165
+ the listed files in this tranche.
143
166
 
144
167
  ## Future Implementation Tickets
145
168
 
146
- 1. **I25-1 Core-contract extraction assessment:** identify which current
147
- closure, ticket, evidence, and profile-verification operations can share an
148
- internal boundary without changing existing CLI, workflow, or evidence
149
- schemas.
169
+ 1. **I25-1 Completion-decision core:** implemented as an internal authority
170
+ seam. It does not yet extract ticket, evidence, profile-verification, or
171
+ command-execution responsibilities.
150
172
  2. **I25-2 Java/Spring pack inventory:** define the accepted Java/Spring
151
173
  profile/catalog, convention, fixture, delivery-reference, and precision
152
174
  inventory before any new language-pack mechanism or enforcement promotion.
@@ -172,8 +194,8 @@ rename, extract, or relocate any listed file in this design tranche.
172
194
  - Item 19's proposed fresh CI verification artifact remains its own design and
173
195
  implementation decision.
174
196
 
175
- None of these forks permits a current module move, a new public API, a schema
176
- change, a default change, or a runtime hook.
197
+ None of these deferred forks permits a new public API, a schema change, a
198
+ default change, or a runtime hook.
177
199
 
178
200
  ## Non-Goals And Preserved State
179
201
 
@@ -183,6 +205,5 @@ quality, efficacy, or broad reliability, provide a hostile-workspace security
183
205
  guarantee, or implement multiple languages.
184
206
 
185
207
  `runtimeInjection=false`, existing commands and public help, workflow/evidence
186
- schemas, package version, release state, and current package contents remain
187
- unchanged except for packaging this current design record under the established
188
- docs policy.
208
+ schemas, package version, and release state remain unchanged. The only code
209
+ extraction in this tranche is the internal completion-decision core.