dsh-completion-guard 0.5.2 → 0.6.0

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.
@@ -18,6 +18,13 @@ declare function sanitizeUrl(value: string): string;
18
18
  //#region src/domain/protocol-manifest.d.ts
19
19
  declare const STOP_PROTOCOL_VERSION = "2.0.0";
20
20
  declare const CERTIFICATE_VERSION = "1";
21
+ /**
22
+ * 0.6.0 v5-session identity (P0 §1): v2 certificates bind a work unit's
23
+ * closure instead of the whole session. Version-1 identity keeps its
24
+ * historical meaning for legacy sessions and is never silently re-read.
25
+ */
26
+ declare const STOP_PROTOCOL_VERSION_V2 = "3.0.0";
27
+ declare const CERTIFICATE_VERSION_V2 = "2";
21
28
  declare const ACTION_MANIFEST_VERSION = 1;
22
29
  declare const SUPPORTED_EVIDENCE_ADAPTERS: Readonly<Record<string, string>>;
23
30
  declare const SEMANTIC_ACTIONS: readonly ["inspect_remote_updates", "install", "apply", "create", "modify", "test", "verify", "pull", "fetch", "commit", "push", "restart", "publish", "generic_run"];
@@ -43,10 +50,29 @@ declare function semanticActionFromCommand(command: string): SemanticAction;
43
50
  declare function isStatefulAction(action: SemanticAction): action is StatefulAction;
44
51
  declare function actionCompatible(required: SemanticAction, observed: SemanticAction): boolean;
45
52
  declare function validateActionTarget(action: SemanticAction, resolved: TargetTuple | undefined, observed: TargetTuple | undefined): boolean;
53
+ /** The single identity field a root instruction must name for this action. */
54
+ declare function requestedIdentityKey(action: SemanticAction): string | undefined;
55
+ /**
56
+ * The 0.6.0 bounded file-choice vocabulary (C07/S03): artifact-type nouns a
57
+ * root instruction may use instead of an exact path. The assistant may pick
58
+ * the exact file INSIDE the captured scope and inside the type, and the
59
+ * choice is frozen by the resolution producer before any effect. An absent
60
+ * extension set (`file`) admits any file the producer accepts.
61
+ */
62
+ declare const BOUNDED_ARTIFACT_TYPES: Readonly<Record<string, ReadonlySet<string> | null>>;
63
+ /**
64
+ * Whether a bounded-choice requested target authorizes this resolved target:
65
+ * the resolved artifact must live inside the captured scope and match the
66
+ * captured type. The exact file name is the assistant's bounded decision,
67
+ * frozen by resolution — never a root-named identity substitution.
68
+ */
69
+ declare function boundedArtifactChoiceMatches(action: SemanticAction, requested: TargetTuple | undefined, resolved: TargetTuple | undefined): boolean;
46
70
  /**
47
71
  * Compare identities captured from the root instruction with a complete
48
72
  * adapter-resolved target. Requested targets are partial by design: only
49
73
  * explicitly named identities (plus the active repository scope) are frozen.
74
+ * A bounded artifact choice (scope + type, C07) matches when the resolved
75
+ * exact file is inside the scope and of the captured type.
50
76
  */
51
77
  declare function requestedTargetMatchesResolved(action: StatefulAction, requested: TargetTuple | undefined, resolved: TargetTuple | undefined): boolean;
52
78
  /** A mutation requires every user-selectable identity field, not a partial match. */
@@ -247,6 +273,153 @@ declare function replayRebindResult(p: GuardProjection, args: RebindArgs, record
247
273
  * caller processes the remaining text afterwards with its own semantics. */
248
274
  declare function confirmRebind(p: GuardProjection, proposalId: string, eventId: string, durable: boolean): boolean;
249
275
  //#endregion
276
+ //#region src/domain/release.d.ts
277
+ declare const RELEASE_OPERATIONS: readonly ["npm_publish", "git_tag", "github_release_create", "github_release_update", "github_release_delete", "composite_runner"];
278
+ type ReleaseOperation = (typeof RELEASE_OPERATIONS)[number];
279
+ /**
280
+ * The candidate identity a release contract freezes. Each field names exactly
281
+ * one measurable identity; all are optional except the full commit, because a
282
+ * contract that names nothing cannot be checked against anything.
283
+ */
284
+ interface ReleaseCandidate {
285
+ /** The commit the artifact was built from (the artifact's embedded gitHead). */
286
+ fullSha40: string;
287
+ /** The ref that commit must be on, when the surface can observe a ref. */
288
+ ref?: string;
289
+ /** Repository identity (owner/name or clone URL). */
290
+ repository?: string;
291
+ /** Package or artifact name. */
292
+ packageId?: string;
293
+ /** Exact released version. */
294
+ version?: string;
295
+ /** SHA-256 of the exact artifact bytes (64 lowercase hex). */
296
+ artifactSha256?: string;
297
+ /** npm integrity of the exact artifact bytes (`sha512-<base64>`). */
298
+ artifactSri?: string;
299
+ /** The registry the artifact is published to (canonical base URL). */
300
+ registry?: string;
301
+ }
302
+ interface ReleaseContract {
303
+ contractId: string;
304
+ adoptedBy: {
305
+ seq: number;
306
+ digest: string;
307
+ };
308
+ /**
309
+ * The contract revision the candidate scope was FROZEN at. The closure
310
+ * certificate must be the one that certified exactly this revision: a later
311
+ * obligation (including the release instruction itself) does not invalidate
312
+ * the accepted candidate, while a certificate minted after the adoption — or
313
+ * a candidate whose content moved on — is refused.
314
+ */
315
+ adoptedAtRevision: number;
316
+ operations: ReleaseOperation[];
317
+ candidate: ReleaseCandidate;
318
+ readinessRefs: string[];
319
+ closureCertRef?: string;
320
+ /**
321
+ * The closure certificate as it existed AT ADOPTION, frozen by identity.
322
+ *
323
+ * Comparing only the revision let a log entry ADD the certificate after the
324
+ * adoption and still ratify it: the adoption would be validated by evidence
325
+ * that did not exist when it was made. Freezing the certification digest (and
326
+ * its epoch/revision) pins the exact certificate the adopter relied on, so a
327
+ * certificate that appears later — even one that reuses the same id — is
328
+ * refused. Absent means the adopter named a closure that did not exist yet,
329
+ * which is equally refused: a later log entry can never supply it.
330
+ */
331
+ frozenClosure?: {
332
+ id: string;
333
+ certificationDigest: string;
334
+ epoch: number;
335
+ contractRevision: number;
336
+ };
337
+ expiresAtEpochMs?: number;
338
+ /** Durable root revocation; the record is kept for audit, never deleted. */
339
+ revokedAtSeq?: number;
340
+ }
341
+ interface ReleaseReservation {
342
+ contractId: string;
343
+ operation: ReleaseOperation;
344
+ callId: string;
345
+ startedAtSeq: number;
346
+ status: "in_flight";
347
+ /**
348
+ * The npm SRI the trusted producer read when the reservation was written.
349
+ * Recorded so a contract that froze only the byte SHA-256 can still be
350
+ * reconciled by a registry readback: without it, a SHA-256-only contract
351
+ * would be permanently unsettleable.
352
+ */
353
+ observedArtifactSri?: string;
354
+ }
355
+ type ReleaseOutcome = "settled" | "unconfirmed" | "unknown" | "failed" | "not_effected";
356
+ interface ReleaseSettlement {
357
+ contractId: string;
358
+ operation: ReleaseOperation;
359
+ callId: string;
360
+ settledAtSeq: number;
361
+ /** A trusted readback identity, or the reason no producer exists. */
362
+ readback: {
363
+ kind: "npm_integrity" | "git_ref" | "github_release";
364
+ identity: string;
365
+ } | "unavailable";
366
+ outcome: ReleaseOutcome;
367
+ }
368
+ /**
369
+ * The identity a trusted producer observed for the candidate. Every field is
370
+ * optional because a given surface can observe only some of them; a field the
371
+ * contract declares but the producer does not observe is a refusal, never a
372
+ * silent pass.
373
+ */
374
+ interface ReleaseObservedIdentity {
375
+ fullSha40?: string;
376
+ /** The ref NAME the candidate is expected to be on. */
377
+ ref?: string;
378
+ /** The commit that ref resolves to, read by the audited git producer. */
379
+ refSha?: string;
380
+ repository?: string;
381
+ packageId?: string;
382
+ version?: string;
383
+ artifactSha256?: string;
384
+ artifactSri?: string;
385
+ registry?: string;
386
+ }
387
+ interface ReleaseGateDecision {
388
+ status: "granted" | "denied";
389
+ reasonCode: string;
390
+ contractId?: string;
391
+ }
392
+ //#endregion
393
+ //#region src/domain/host-selection.d.ts
394
+ /**
395
+ * Trusted host-native selection adapter (0.6.0 DS06-D, C07/S06).
396
+ *
397
+ * Only a PAIRED durable tool round-trip can form a trusted user selection:
398
+ * a `tool/call` whose arguments pose a question with explicit options, and
399
+ * its successful `tool/result` carrying the answer, bound by the same
400
+ * callId in the same session. Pasted answer text, a model restatement, or
401
+ * the answer of another call can never form a selection. Path selections
402
+ * and sandbox approvals are separate facts and are recorded separately.
403
+ *
404
+ * The question tool's name is a host tool-bundle surface: the adapter
405
+ * matches a bounded allowlist supplied by the caller (production wires the
406
+ * names audited for the running cohort; native acceptance pins them).
407
+ */
408
+ interface TrustedSelection {
409
+ callId: string;
410
+ /** Sequence of the tool/result event that settled the selection. */
411
+ resultSeq: number;
412
+ turn: number | undefined;
413
+ toolName: string;
414
+ questionId: string | undefined;
415
+ question: string | undefined;
416
+ options: string[];
417
+ /** The answer the user actually chose, verbatim from the paired result. */
418
+ selected: string;
419
+ /** A directory selection narrows where bounded file choices may land. */
420
+ kind: "directory" | "value";
421
+ }
422
+ //#endregion
250
423
  //#region src/domain/digest.d.ts
251
424
  type TypedObject = {
252
425
  k: "b" | "i" | "s" | "e" | "x";
@@ -297,7 +470,13 @@ interface PackageRow {
297
470
  //#endregion
298
471
  //#region src/domain/types.d.ts
299
472
  type GuardItemKind = "requirement" | "acceptance" | "prohibition";
300
- type GuardItemStatus = "pending" | "passed" | "superseded";
473
+ /**
474
+ * `answered` (0.6.0, C03) marks an information-slot obligation closed by a
475
+ * trusted delivery fact: the host-confirmed final answer of a completed turn.
476
+ * It certifies only that delivery happened — never accuracy, sufficiency, or
477
+ * that any execution happened. Legacy sessions (no v5 boundary) never mint it.
478
+ */
479
+ type GuardItemStatus = "pending" | "answered" | "passed" | "superseded";
301
480
  type GuardIntegrity = "valid" | "unknown" | "corrupt";
302
481
  type EvidenceOutcome = "success" | "failure" | "unknown" | "durability-unknown";
303
482
  type GuardOperation = "create" | "write" | "modify" | "read" | "run" | "verify";
@@ -315,6 +494,28 @@ interface GoalRef {
315
494
  id: string;
316
495
  revision: number;
317
496
  }
497
+ /**
498
+ * 0.6.0 source span (C01): a UTF-8 byte half-open interval `[start, end)`
499
+ * inside the ORIGINAL root message text (before any normalization), bound to
500
+ * that message's content digest. Offsets are byte offsets computed with
501
+ * TextEncoder — never string indices — so Python and TypeScript agree on the
502
+ * same positions.
503
+ */
504
+ interface SourceSpan {
505
+ /** Index of the message part the span anchors to (0 = text). */
506
+ partIndex: number;
507
+ start: number;
508
+ end: number;
509
+ class: "instruction" | "adoption" | "question" | "constraint";
510
+ }
511
+ /** 0.6.0 per-message coverage summary (C01), bounded to the last 16 messages. */
512
+ interface MessageCoverage {
513
+ seq: number;
514
+ rawTextSha256: string;
515
+ byteLength: number;
516
+ /** Number of obligation spans the message contributed to items. */
517
+ coveredSpans: number;
518
+ }
318
519
  interface WaitAuthorization {
319
520
  kind: "root_explicit_wait" | "user_decision_item";
320
521
  id: string;
@@ -395,6 +596,35 @@ interface GuardItem {
395
596
  waitAuthorization?: WaitAuthorization;
396
597
  deferAuthorization?: DeferAuthorization;
397
598
  persistenceAuthorization?: PersistenceAuthorization;
599
+ /**
600
+ * 0.6.0 C01 provenance: the content digest of the original root message
601
+ * text and the UTF-8 byte spans inside it that this item's clause came
602
+ * from. Absent on legacy items, which keep their historical reading.
603
+ */
604
+ rawTextSha256?: string;
605
+ spans?: SourceSpan[];
606
+ /**
607
+ * 0.6.0 work-unit assignment (C04), present only for obligations captured
608
+ * after a v5 protocol boundary in a non-delegated session. Legacy items keep
609
+ * the whole-session contract and carry no unit.
610
+ */
611
+ unitId?: string;
612
+ /**
613
+ * The trusted delivery fact that closed an information-slot item: the host's
614
+ * completed turn and its final assistant message. Derived from durable
615
+ * events, never from assistant prose alone.
616
+ */
617
+ answeredBy?: {
618
+ turn: number;
619
+ responseSeq: number;
620
+ responseSha256: string;
621
+ };
622
+ /**
623
+ * 0.6.0 C08: the pending obligation this item atomically superseded through
624
+ * a verbatim general clarification. Audit trail only — the superseded item
625
+ * keeps its own history.
626
+ */
627
+ clarifiesItemId?: string;
398
628
  }
399
629
  interface GuardEvidence {
400
630
  id: string;
@@ -432,6 +662,13 @@ interface GuardEvidence {
432
662
  adapterId?: string;
433
663
  adapterVersion?: string;
434
664
  externalOperationRef?: ExternalOperation;
665
+ /**
666
+ * 0.6.0 C04: this fact came from a delegated subagent/task round-trip. A
667
+ * delegated result is BOUNDED evidence for the parent unit — it is recorded
668
+ * and visible, and it can never close a parent obligation or a parent unit
669
+ * by itself. Set only by the derivation, never by a caller.
670
+ */
671
+ delegatedSubtask?: true;
435
672
  }
436
673
  interface ExpectedTransition {
437
674
  predicateId: string;
@@ -482,6 +719,58 @@ interface GuardCheckpoint {
482
719
  goalRef?: GoalRef;
483
720
  certificationDigest: string;
484
721
  result: "certified" | "incomplete" | "unknown";
722
+ /**
723
+ * 0.6.0 v2 certificate (v5 sessions only): the unit whose closure was
724
+ * certified. Version-1 certificates keep the whole-session contract and
725
+ * never carry a unit.
726
+ */
727
+ unitId?: string;
728
+ /** v2 certificates: the digest of the certified unit's open closure. */
729
+ unitClosureDigest?: string;
730
+ }
731
+ /**
732
+ * One 0.6.0 work unit (C04): the obligations captured from one root task and
733
+ * their closure state. Units are derived from the durable message stream, so
734
+ * they replay deterministically; no unit state is ever written to the log.
735
+ */
736
+ interface WorkUnit {
737
+ unitId: string;
738
+ /** Sequence of the root message that opened the unit. */
739
+ openedAtSeq: number;
740
+ /** Root messages folded into this unit, in source order. */
741
+ rootInputRefs: Array<{
742
+ seq: number;
743
+ }>;
744
+ /** The normalized text of the unit's opening instruction (bounded audit). */
745
+ headline: string;
746
+ /** Sequence at which a newer unit became current, when superseded as current. */
747
+ switchedAwayAtSeq?: number;
748
+ /**
749
+ * The unit this one descends from. A delegation-marked root message opens a
750
+ * CHILD unit of the current unit (C04): the child's open obligations are part
751
+ * of the parent's required closure, so the parent can never be certified
752
+ * while a delegated sub-unit still has open work. An ordinary task switch
753
+ * opens a sibling instead, which is why its residual work never blocks the
754
+ * newer unit's certificate.
755
+ */
756
+ parentUnitId?: string;
757
+ /**
758
+ * Delegated round-trips that entered this unit as bounded evidence (C04).
759
+ * Recorded for audit only: a subagent's completion is never a parent
760
+ * completion.
761
+ */
762
+ delegationRefs?: DelegationRef[];
763
+ }
764
+ /** One durable delegated round-trip observed inside a session. */
765
+ interface DelegationRef {
766
+ /** The tool call that requested the delegation. */
767
+ callId: string;
768
+ /** Sequence of the paired result event. */
769
+ resultSeq: number;
770
+ /** Audited delegation tool that produced the result. */
771
+ toolName: string;
772
+ /** Whether the delegated round-trip reported success. */
773
+ status: "completed" | "failed" | "unknown";
485
774
  }
486
775
  type BoundaryDisposition = "user_wait" | "external_wait" | "deferred" | "guard_bounded_stop";
487
776
  type BoundaryQualificationKind = "user_decision_item" | "root_explicit_wait" | "external_operation_pending" | "root_explicit_defer" | "guard_no_progress";
@@ -516,6 +805,61 @@ interface GuardProjection {
516
805
  checkpoints: GuardCheckpoint[];
517
806
  boundaries: GuardBoundary[];
518
807
  externalOperations: Map<string, ExternalOperation>;
808
+ /**
809
+ * 0.6.0 work units keyed by unit id, and the id of the unit currently
810
+ * receiving captured work. Derived; present only after a v5 boundary.
811
+ */
812
+ units: Map<string, WorkUnit>;
813
+ currentUnitId?: string;
814
+ /**
815
+ * The session's rule mode: `5` once a v5 protocol boundary exists in the log,
816
+ * `undefined` (legacy) before it. Determines certificate version, closure
817
+ * scope, and whether delivery/unit semantics are active.
818
+ */
819
+ boundaryProtocol?: 5;
820
+ /** 0.6.0 responsibility tier (C06), from the effective configuration. */
821
+ policy: "standard" | "strict" | "release";
822
+ /** 0.6.0 C01 coverage summaries, one per captured root message (last 16). */
823
+ coverage: MessageCoverage[];
824
+ /**
825
+ * 0.6.0 C10 explicit release records, derived from the durable plugin-notice
826
+ * channel. A release is never implicit: without an adopted contract the
827
+ * release gate denies every operation. A malformed record is reported through
828
+ * {@link releaseDiagnostics} and never makes the whole projection corrupt, so
829
+ * damaged release state cannot block unrelated ordinary work.
830
+ */
831
+ releaseContracts: ReleaseContract[];
832
+ releaseReservations: ReleaseReservation[];
833
+ releaseSettlements: ReleaseSettlement[];
834
+ /** Bounded audit of rejected release records (never raw payloads). */
835
+ releaseDiagnostics: Array<{
836
+ seq: number;
837
+ reasonCode: string;
838
+ }>;
839
+ /**
840
+ * True when a release record could not be read back. Damaged release state
841
+ * blocks RELEASE operations with `release_state_damaged` while leaving the
842
+ * projection's own integrity and all ordinary work untouched: the plugin
843
+ * reports what it cannot read instead of quietly forgetting it.
844
+ */
845
+ releaseStateDamaged: boolean;
846
+ /**
847
+ * 0.6.0 C07 trusted host selections, derived only from paired durable
848
+ * question-tool round-trips (last 16). A directory selection narrows where
849
+ * a bounded file choice may land for obligations of the same unit.
850
+ */
851
+ trustedSelections: TrustedSelection[];
852
+ /**
853
+ * 0.6.0 C07 sandbox approvals, derived from the host's own
854
+ * `approval/asked` + `approval/decided` audit pair (last 16). Recorded for
855
+ * provenance only: an approval is never a target authority.
856
+ */
857
+ approvals: Array<{
858
+ id: string;
859
+ seq: number;
860
+ toolName?: string;
861
+ outcome: "allowed-once" | "rejected" | "cancelled" | "unavailable";
862
+ }>;
519
863
  sessionRefDigest: string;
520
864
  hostLockDigest: string;
521
865
  hostStatus: HostStatus;
@@ -572,6 +916,16 @@ interface GuardProjection {
572
916
  * of the same turn re-reads the same number.
573
917
  */
574
918
  hostTurn?: number;
919
+ /**
920
+ * Runtime-owned durability watermark (0.6.0 fresh-projection contract): the
921
+ * result of the most recent flush performed by a public read/control entry.
922
+ * `confirmed` means the last entry observed a durable log, `failed` means a
923
+ * flush was refused or threw, and `unknown` means no flush has been observed
924
+ * yet. A `failed` watermark must make read entries report unavailability —
925
+ * never a stale-cache projection and never an empty ledger. Preserved
926
+ * across rebuilds like the other runtime-owned liveness state.
927
+ */
928
+ durabilityWatermark: "confirmed" | "failed" | "unknown";
575
929
  /** Log-derived count of rejected rebind attempts by stable attempt key; survives reload. */
576
930
  rebindRejections: Map<string, number>;
577
931
  integrity: GuardIntegrity;
@@ -584,6 +938,8 @@ interface DeriveScope {
584
938
  }
585
939
  interface DeriveConfig {
586
940
  activation: "opt-in" | "always";
941
+ /** 0.6.0 responsibility tier (C06); standard by default. */
942
+ policy?: "standard" | "strict" | "release";
587
943
  }
588
944
  interface DeriveResult {
589
945
  projection: GuardProjection;
@@ -597,6 +953,8 @@ interface DeriveResult {
597
953
  realRootInputSeen: boolean;
598
954
  /** True when the durable log carries the 0.5 first-step protocol boundary. */
599
955
  protocolV4Present: boolean;
956
+ /** True when the durable log carries the 0.6 first-step protocol boundary. */
957
+ boundaryV5: boolean;
600
958
  }
601
959
  interface DerivedEnvelope {
602
960
  seq: number;
@@ -1088,6 +1446,15 @@ declare function bindExecutableIdentity(resolution: ExecutableIdentity | undefin
1088
1446
  declare const DEFAULT_HOST_LOCK: HostLockEvaluation;
1089
1447
  //#endregion
1090
1448
  //#region src/domain/derive.d.ts
1449
+ /**
1450
+ * Audited delegation tool names (C04/DS06-B). A tool result from one of these
1451
+ * is a subagent's answer: bounded evidence for the unit that asked for it, and
1452
+ * never a parent completion. The real names are a host tool-bundle surface —
1453
+ * native acceptance pins the audited cohort, exactly like the question-tool
1454
+ * allowlist — so this list is the production default and can be overridden by
1455
+ * an audited cohort.
1456
+ */
1457
+ declare const DEFAULT_DELEGATION_TOOL_NAMES: readonly string[];
1091
1458
  declare const CAPTURE_V042_NOTICE = "Context Guard capture boundary: v0.4.2";
1092
1459
  declare const PROTOCOL_V3_NOTICE = "Context Guard protocol boundary: v3.0.0";
1093
1460
  /**
@@ -1099,6 +1466,15 @@ declare const PROTOCOL_V3_NOTICE = "Context Guard protocol boundary: v3.0.0";
1099
1466
  */
1100
1467
  declare const PROTOCOL_V4_NOTICE = "Context Guard protocol boundary: v4.0.0";
1101
1468
  /**
1469
+ * 0.6.0 first-step boundary: same placement discipline as v4. It cuts the
1470
+ * work-unit, delivery, and certificate-v2 semantics (P0 §1): messages before
1471
+ * it keep their historical rules, messages after it are captured into work
1472
+ * units and close through unit-closure certificates and trusted deliveries.
1473
+ * An old binary ignores this notice (plugin source, unmatched pattern), so the
1474
+ * fail direction on rollback is closed, never a misread.
1475
+ */
1476
+ declare const PROTOCOL_V5_NOTICE = "Context Guard protocol boundary: v5.0.0";
1477
+ /**
1102
1478
  * Pure, deterministic re-derivation of the guard projection from the DSH
1103
1479
  * native event log. Context Guard never writes custom session events, so every
1104
1480
  * piece of state is derived from `command/run`, `user/message`, `tool/call`,
@@ -1107,6 +1483,18 @@ declare const PROTOCOL_V4_NOTICE = "Context Guard protocol boundary: v4.0.0";
1107
1483
  */
1108
1484
  declare function deriveProjection(sourceEvents: readonly DerivedEnvelope[], config: DeriveConfig, scope: DeriveScope, durableConfirmed: boolean, hostLock?: HostLockEvaluation): DeriveResult;
1109
1485
  //#endregion
1486
+ //#region src/domain/reason-class.d.ts
1487
+ /**
1488
+ * The seven unified reason-class labels (0.6.0 C12).
1489
+ *
1490
+ * Every fine-grained `reason_code` maps onto exactly one class, so a caller can
1491
+ * branch on the class while the existing codes keep their exact meaning and
1492
+ * their existing tests. The mapping table below is the frozen table; the
1493
+ * fallback for an unmapped code is `source_insufficient`, never a new class —
1494
+ * an unknown code must not silently become a different kind of failure.
1495
+ */
1496
+ type ReasonClass = "parameter_missing" | "source_insufficient" | "condition_unmet" | "producer_capability_unavailable" | "historical_gap" | "integrity_failure" | "policy_boundary";
1497
+ //#endregion
1110
1498
  //#region src/domain/diagnostics.d.ts
1111
1499
  type TaskKind = "inquiry" | "action" | "deliverable" | "constraint" | "unresolved";
1112
1500
  type CertificationSupport = "supported" | "unsupported" | "needs_target" | "needs_evidence" | "unavailable";
@@ -1127,6 +1515,8 @@ interface UnifiedItemDiagnosis {
1127
1515
  task_kind: TaskKind;
1128
1516
  certification: CertificationSupport;
1129
1517
  reason_code: string;
1518
+ /** The seven-class label this fine-grained reason code belongs to (C12). */
1519
+ reason_class: ReasonClass;
1130
1520
  repairability: Repairability;
1131
1521
  missing_fields: string[];
1132
1522
  missing_facets: Array<"resolution" | "effect" | "state">;
@@ -1140,6 +1530,12 @@ interface UnifiedItemDiagnosis {
1140
1530
  * adapter, an executed-without-evidence historical gap, or nothing to do —
1141
1531
  * and it NEVER recommends a rebind that cannot change certification.
1142
1532
  */
1533
+ /**
1534
+ * The unified diagnosis, with the frozen seven-class label attached (C12).
1535
+ *
1536
+ * The class is derived from whatever `reason_code` the judge decides, so a new
1537
+ * branch cannot drift from the classification table.
1538
+ */
1143
1539
  declare function deriveItemDiagnosis(p: GuardProjection, item: GuardItem): UnifiedItemDiagnosis;
1144
1540
  /** Legacy compact view, now derived from the single unified diagnosis. */
1145
1541
  declare function itemDiagnosis(p: GuardProjection, item: GuardItem): {
@@ -1488,6 +1884,8 @@ interface FirstStepPreviewInput {
1488
1884
  activation: "opt-in" | "always";
1489
1885
  /** Log-derived enablement: an explicit `off` suppresses `always` until `on`. */
1490
1886
  enabled: boolean;
1887
+ /** The durable log already contains a v5 (0.6) Guard boundary. */
1888
+ boundaryV5Present?: boolean;
1491
1889
  /** The durable log already contains a v4 (or newer) Guard boundary. */
1492
1890
  boundaryPresent: boolean;
1493
1891
  /** The session is a delegated/subagent session, never a root conversation. */
@@ -1499,6 +1897,10 @@ interface FirstStepPreviewInput {
1499
1897
  * persisted step batch; guidance is compact and never claims a recovery that
1500
1898
  * did not happen. `opt-in` reaches this path only after its explicit `on` command. Delegated sessions receive neither: their
1501
1899
  * scope arrives through the parent's delegation prompt (A04).
1900
+ *
1901
+ * A session without a v5 boundary receives the 0.6 boundary: it cuts the
1902
+ * work-unit/delivery/certificate-v2 semantics at exactly this message. A
1903
+ * session that already has v5 injects nothing.
1502
1904
  */
1503
1905
  declare function previewFirstStepInjection(input: FirstStepPreviewInput, claimedRealInput: boolean): FirstStepInjection | undefined;
1504
1906
  /**
@@ -1648,6 +2050,105 @@ declare function bindProofToProjection(projection: GuardProjection, proof: Proof
1648
2050
  declare function canonicalProjection(projection: GuardProjection): Record<string, unknown>;
1649
2051
  declare function sessionQuery(projection: GuardProjection, proof?: ProofManifest): SessionQuery;
1650
2052
  declare function proofEvidenceConstraints(evidence: GuardEvidence, obligation: ProofObligation): boolean;
2053
+ declare const PROOF_PROTOCOL_VERSION_V2 = "0.6.0";
2054
+ /** The v2 digest domain; the v1 domain string is untouched. */
2055
+ declare const PROOF_MANIFEST_DOMAIN_V2 = "ccg.proofManifest.v2";
2056
+ declare const PROOF_KINDS_V2: readonly ["subject_readback", "scope_coverage", "state_verification", "input_asset_check", "output_visual_readback", "object_url_readback", "execution_fact", "external_fact"];
2057
+ type ProofKindV2 = (typeof PROOF_KINDS_V2)[number];
2058
+ /** Host surfaces that can carry a proof producer in the audited cohort. */
2059
+ type ProofHostSurface = "native_read" | "native_write_edit" | "shell" | "web" | "jobs" | "subagent" | "visual_capture";
2060
+ interface ProofObligationV2 {
2061
+ obligationId: string;
2062
+ kind: ProofKindV2;
2063
+ surface: ProofSurface;
2064
+ /** The current subject identities this obligation binds. */
2065
+ subjectIds: string[];
2066
+ /** Producer/source identities a satisfying fact must originate from. */
2067
+ sourceIds: string[];
2068
+ /** The operation the fact must have actually performed. */
2069
+ operation: GuardOperation;
2070
+ evidenceIds: string[];
2071
+ expectedScopeDigest?: string;
2072
+ observedScopeDigest?: string;
2073
+ }
2074
+ interface ProofManifestV2 {
2075
+ proofProtocolVersion: typeof PROOF_PROTOCOL_VERSION_V2;
2076
+ obligations: ProofObligationV2[];
2077
+ proofSha256: string;
2078
+ }
2079
+ /**
2080
+ * The frozen capability requirement per proof kind. `capabilities` is the set
2081
+ * a satisfying fact must intersect; `readbackRequired` demands an actual read
2082
+ * or verify operation (never a bare successful call); `requiredRole` pins the
2083
+ * fact to the resolution/effect/state role the semantics need; and
2084
+ * `supportedSurfaces` lists the audited host surfaces that can produce it.
2085
+ */
2086
+ interface ProofKindCapability {
2087
+ kind: ProofKindV2;
2088
+ capabilities: string[];
2089
+ readbackRequired: boolean;
2090
+ requiredRole?: EvidenceRole;
2091
+ operationOnSubject: boolean;
2092
+ supportedSurfaces: ProofHostSurface[];
2093
+ /** Host surfaces in the audited cohort that CANNOT produce this fact. */
2094
+ unavailableSurfaces: ProofHostSurface[];
2095
+ }
2096
+ declare const PROOF_CAPABILITY_MATRIX: Readonly<Record<ProofKindV2, ProofKindCapability>>;
2097
+ /** The host surface names a fact's tool/adapter identity maps to. */
2098
+ declare function proofHostSurfacesOf(evidence: GuardEvidence): ProofHostSurface[];
2099
+ declare function proofDigestV2(obligations: readonly ProofObligationV2[]): string;
2100
+ declare function createProofManifestV2(obligations: readonly ProofObligationV2[]): ProofManifestV2;
2101
+ declare function validateProofManifestV2(manifest: unknown): string[];
2102
+ /**
2103
+ * Why one fact cannot discharge one v2 obligation, or `undefined` when it can.
2104
+ * The checks are ordered so the reported reason names the first unmet
2105
+ * requirement: missing producer capability, wrong role, absent readback, wrong
2106
+ * source, wrong subject, wrong operation.
2107
+ */
2108
+ declare function proofV2Rejection(evidence: GuardEvidence, obligation: ProofObligationV2): string | undefined;
2109
+ /**
2110
+ * The subjects an item's own obligation requires. They come from the item's
2111
+ * frozen verification contract and captured target — never from the proof
2112
+ * manifest, which is exactly what a proof must be checked against.
2113
+ */
2114
+ declare function requiredSubjectsOf(item: GuardItem): string[];
2115
+ /** The frozen coverage digest of a subject set: sorted, then hashed. */
2116
+ declare function scopeCoverageDigest(subjects: readonly string[]): string;
2117
+ /** Whether the fact performed an operation the kind accepts. */
2118
+ declare function proofOperationMatches(evidence: GuardEvidence, obligation: ProofObligationV2): boolean;
2119
+ /**
2120
+ * Bind a v2 manifest to the live projection; [] means every obligation binds.
2121
+ *
2122
+ * The binding is the whole chain the review demanded, in one place:
2123
+ * the user's obligation (frozen subject and scope on the ITEM) → the trusted
2124
+ * producer fact (qualified by the same availability rules ordinary evidence
2125
+ * uses) → the declared source → the declared operation and its order relative
2126
+ * to the effect → the real coverage set. Only then is the obligation
2127
+ * discharged. A manifest that describes a different subject than the item
2128
+ * asked about fails even when the manifest and the facts agree with each
2129
+ * other.
2130
+ */
2131
+ declare function bindProofV2ToProjection(projection: GuardProjection, manifest: ProofManifestV2): string[];
2132
+ /** The v2 session query; the v1 `sessionQuery` keeps its own frozen behaviour. */
2133
+ interface SessionQueryV2 {
2134
+ sessionRefDigest: string;
2135
+ epoch: number;
2136
+ contractRevision: number;
2137
+ state: "valid" | "unknown" | "corrupt";
2138
+ proof?: ProofManifestV2;
2139
+ cohortId?: string;
2140
+ reasonCode?: "proof_invalid" | "proof_unbound";
2141
+ }
2142
+ declare function sessionQueryV2(projection: GuardProjection, proof?: ProofManifestV2): SessionQueryV2;
2143
+ /**
2144
+ * The capability report for one proof kind against the facts a cohort actually
2145
+ * produced: `unavailable` with a stable reason when no producer is observable,
2146
+ * never a silent pass.
2147
+ */
2148
+ declare function proofCapabilityReport(kind: ProofKindV2, facts: Iterable<GuardEvidence>): {
2149
+ status: "supported" | "unavailable";
2150
+ reasonCode?: string;
2151
+ };
1651
2152
  //#endregion
1652
2153
  //#region src/domain/alpha3-host.d.ts
1653
2154
  /** Exact 34-row alpha.3 runtime/web graph from the 2026-09-01 annex audit. */
@@ -1856,4 +2357,4 @@ declare function latestAssistantText(events: readonly {
1856
2357
  //#region src/domain/supersession.d.ts
1857
2358
  declare function supersedeItem(items: Map<string, GuardItem>, oldId: string, replacement: GuardItem): boolean;
1858
2359
  //#endregion
1859
- export { COMMAND_SURFACE_MANIFEST as $, kindOfScope as $i, bindLiveGoalCapability as $n, BindingActionClosure as $r, parsePwshCommand as $t, openItems as A, WaitAuthorization as Ai, BASE_HOST_PACKAGES as An, parseConfirmationMessage as Ar, GitCommandManifest as At, SessionQuery as B, proposeRebindV042 as Bi, HostCapabilityId as Bn, extractMethod as Br, commitTreeSnapshotDigest as Bt, RC015_RC2_HOST_PACKAGES as C, canonicalizePath as Ca, HostStatus as Ci, deriveProjection as Cn, TaskIntent as Cr, resolveActiveProfileHostLock as Ct, MIN_RECOVERY_CHAR_BUDGET as D, sanitizeUrl as Da, TargetTuple as Di, ALPHA2_DSHMARKET_139_HOST_PACKAGES as Dn, CONFIRM_LINE_PATTERN as Dr, GIT_COMMAND_TEMPLATES as Dt, DEFAULT_RECOVERY_CHAR_BUDGET as E, sanitizeClauseText as Ea, TargetCaptureStatus as Ei, ACTIVE_HOST_LAUNCHER_VERSION as En, classifyUserInteraction as Er, GIT_COMMAND_MANIFEST_IDS as Et, PROOF_PROTOCOL_VERSION as F, RebindArgs as Fi, GOAL_HOST_PACKAGES as Fn, ClauseSegment as Fr, GitPrestateCheck as Ft, proofEvidenceConstraints as G, DirectiveClass as Gi, HostLockContext as Gn, BoundaryQualification as Gr, revalidateGitPrestate as Gt, canonicalProjection as H, rebindResponse as Hi, HostCohort as Hn, isInformationalMessage as Hr, executeRevalidatedGitEffect as Ht, ProofKind as I, RebindProposal as Ii, HOST_CAPABILITY_PACKAGE_GROUPS as In, captureClause as Ir, GitPrestateEnvelope as It, EvidenceFacetCoverage as J, ScopeInterpretation as Ji, HostPlatform as Jn, GoalBoundaryAccess as Jr, CanonicalCommandSurface as Jt, sessionQuery as K, Executee as Ki, HostLockEvaluation as Kn, BoundaryRequest as Kr, verifiedLinearCommitReadback as Kt, ProofManifest as L, confirmRebind as Li, HOST_COHORTS as Ln, captureItem as Lr, GitTargetIdentity as Lt, renderRecoveryPacket as M, PackageRow as Mi, EXPECTED_HOST_PACKAGES as Mn, RejectedBinding as Mr, GitCommandRejected as Mt, ALPHA3_HOST_PACKAGES as N, BoundedSource as Ni, ExecutableIdentity as Nn, certifyCheckpoint as Nr, GitEffectExecution as Nt, RecoveryOptions as O, sha256 as Oa, TargetValue as Oi, ALPHA2_HOST_PACKAGES as On, ParsedConfirmation as Or, GitAdapterAction as Ot, PROOF_KINDS as P, ProposeOutcome as Pi, ExecutableIdentityBinding as Pn, CaptureScope as Pr, GitEffectRunner as Pt, isVerifyingCapability as Q, isOpenObligation as Qi, bindExecutableIdentity as Qn, qualifyBoundary as Qr, isRunExecutable as Qt, ProofObligation as R, proposeRebind as Ri, HostAuditProvenance as Rn, classifyClause as Rr, LinearCommitReadback as Rt, snapshotSessionEvents as S, validateActionTarget as Sa, GuardProjection as Si, PROTOCOL_V4_NOTICE as Sn, segmentAuthorityBlocks as Sr, readActiveHostGraph as St, RC1_HOST_PACKAGES as T, normalizeClause as Ta, TargetCaptureReasonCode as Ti, ACTIVE_HOST_COHORT_IDS as Tn, classifyTaskIntent as Tr, verifyComposedHostLockDump as Tt, createProofManifest as U, replayRebindResult as Ui, HostCohortSelection as Un, segmentClauses as Ur, gitCommandMatchesTarget as Ut, bindProofToProjection as V, rebindAttemptKey as Vi, HostCapabilityRequest as Vn, extractOperation as Vr, createGitPrestateEnvelope as Vt, proofDigest as W, AuthorityDisposition as Wi, HostCohortSelectionReason as Wn, BoundaryEffectuation as Wr, parseGitCommandManifest as Wt, evidenceCoverage as X, interpretMessage as Xi, HostToolSurface as Xn, effectuateBoundary as Xr, ShellParseStatus as Xt, bindingSatisfies as Y, interpretClause as Yi, HostProfileKind as Yn, availableBoundaryQualifications as Yr, ParsedShell as Yt, evidenceMatchesItem as Z, isExecutableItem as Zi, LEGACY_HOST_COHORTS as Zn, isCurrentAcceptedBoundary as Zr, canonicalArgvFromCommand as Zt, progressFingerprint as _, requestedTargetAuthorizesMutation as _a, GuardIntegrity as _i, evidenceAvailabilityReason as _n, currentContractDigest as _r, hostLockRowsFromComposedDump as _t, NO_PROGRESS_RECORD_PREFIX as a, ACTION_MANIFEST_VERSION as aa, DeriveScope as ai, ToolSubject as an, selectHostCohort as ar, FIRST_STEP_GUIDANCE as at, SessionApiError as b, semanticActionFromText as ba, GuardItemStatus as bi, CAPTURE_V042_NOTICE as bn, AuthorityKind as br, packageRowsFromActiveGraph as bt, classifyCompletionClaim as c, CERTIFICATE_VERSION as ca, EvidenceOutcome as ci, extractToolSubject as cn, LATEST_SUPPORTED_HOST_VERSION as cr, LifecyclePhase as ct, decisionBoundaryKey as d, STOP_PROTOCOL_VERSION as da, ExpectedTransition as di, CertificationSupport as dn, SUPPORTED_HOST_RANGE as dr, previewFirstStepInjection as dt, maskCodeSpans as ea, BoundaryDisposition as ei, parseShellCommand as en, evaluateExternalWaitCapability as er, CommandSurfaceManifest as et, isRootPauseRequest as f, SUPPORTED_EVIDENCE_ADAPTERS as fa, ExternalOperation as fi, DiagnosisNextAction as fn, SUPPORTED_HOST_VERSIONS as fr, ActiveProfileHostLock as ft, observeAssistantOutcome as g, isStatefulAction as ga, GuardEvidence as gi, deriveItemDiagnosis as gn, satisfiesSupportedHostRange as gr, hostLockContextFromComposedDump as gt, latestRootInstruction as h, actionCompatible as ha, GuardCheckpoint as hi, UnifiedItemDiagnosis as hn, parseHostVersion as hr, combineHostPolicy as ht, CompletionDisposition as i, ACTION_MANIFEST as ia, DeriveResult as ii, ToolResultInput as in, hostVersionFromPackages as ir, ClaimedMessage as it, recoveryDigest as j, createProjection as ji, DEFAULT_HOST_LOCK as jn, CheckpointResult as jr, GitCommandParseResult as jt, closingHint as k, VerificationContract as ki, AuditedExecutable as kn, isFrozenV042RebindResponse as kr, GitCommandAccepted as kt, decideTurnBoundary as l, SEMANTIC_ACTIONS as la, EvidenceParseStatus as li, isDeterministicCheck as ln, MIN_SUPPORTED_HOST_VERSION as lr, claimedBatchHasRealRootInput as lt, latestAssistantText as m, StatefulAction as ma, GuardBoundary as mi, TaskKind as mn, evaluateMinimumHostVersion as mr, TargetHostGraph as mt, AssistantOutcomeObservation as n, semanticActionOfScope as na, DeferAuthorization as ni, hasCurrentCertificate as nn, evaluateHostLock as nr, OperationVerbEntry as nt, NO_PROGRESS_TURNS_BEFORE_STOP as o, ActionManifest as oa, DerivedEnvelope as oi, evidenceFromPersistedToolResult as on, HostVersionDecision as or, FirstStepInjection as ot, isWholeTaskCompletionClaim as p, SemanticAction as pa, GoalRef as pi, Repairability as pn, compareHostVersions as pr, HostProfileError as pt, validateProofManifest as q, InterpretOptions as qi, HostLockStatus as qn, GoalActivationState as qr, CanonicalArgv as qt, CONTROL_RECORD_PREFIX as r, statefulActionsOfScope as ra, DeriveConfig as ri, ToolCallInput as rn, evaluateToolSurfaceCapability as rr, validateManifest as rt, TurnStoppingDecision as s, ActionSpec as sa, EvidenceBinding as si, extractTextContent as sn, HostVersionStatus as sr, FirstStepPreviewInput as st, supersedeItem as t, namedActions as ta, BoundaryQualificationKind as ti, goalCompletionDenial as tn, evaluateHostCapability as tr, ManifestIssue as tt, decideTurnStopping as u, STATEFUL_ACTIONS as ua, EvidenceRole as ui, withDurability as un, ParsedHostVersion as ur, lifecyclePhase as ut, SESSION_API_UNSUPPORTED as v, requestedTargetMatchesResolved as va, GuardItem as vi, itemDiagnosis as vn, AuthorityBlock as vr, injectActiveProfileHostLock as vt, RC015_HOST_PACKAGES as w, digestStrings as wa, PersistenceAuthorization as wi, ACTIVE_HOST_COHORT_ID as wn, UserInteractionKind as wr, resolveInstalledHostLock as wt, V3SessionLike as x, validateActionManifest as xa, GuardOperation as xi, PROTOCOL_V3_NOTICE as xn, authorityCaptureCounts as xr, packageRowsFromPnpmLock as xt, SESSION_EVENT_ENVELOPE_INVALID as y, semanticActionFromCommand as ya, GuardItemKind as yi, relevantEvidence as yn, AuthorityBlockKind as yr, inspectTargetHostGraph as yt, ProofSurface as z, proposeRebindOutcome as zi, HostCapabilityEvaluation as zn, extractArtifactPaths as zr, commitIndexSnapshotDigest as zt };
2360
+ export { canonicalProjection as $, requestedTargetAuthorizesMutation as $a, TargetTuple as $i, BASE_HOST_PACKAGES as $n, parseConfirmationMessage as $r, GitCommandRejected as $t, openItems as A, kindOfScope as Aa, DerivedEnvelope as Ai, isDeterministicCheck as An, HostVersionStatus as Ar, claimedBatchHasRealRootInput as At, ProofHostSurface as B, CERTIFICATE_VERSION as Ba, GuardEvidence as Bi, relevantEvidence as Bn, currentContractDigest as Br, inspectTargetHostGraph as Bt, RC015_RC2_HOST_PACKAGES as C, Executee as Ca, BoundaryDisposition as Ci, hasCurrentCertificate as Cn, evaluateExternalWaitCapability as Cr, OperationVerbEntry as Ct, MIN_RECOVERY_CHAR_BUDGET as D, interpretMessage as Da, DeriveConfig as Di, evidenceFromPersistedToolResult as Dn, hostVersionFromPackages as Dr, FirstStepInjection as Dt, DEFAULT_RECOVERY_CHAR_BUDGET as E, interpretClause as Ea, DelegationRef as Ei, ToolSubject as En, evaluateToolSurfaceCapability as Er, FIRST_STEP_GUIDANCE as Et, PROOF_KINDS as F, ACTION_MANIFEST as Fa, ExpectedTransition as Fi, TaskKind as Fn, SUPPORTED_HOST_VERSIONS as Fr, TargetHostGraph as Ft, ProofManifestV2 as G, STOP_PROTOCOL_VERSION_V2 as Ga, GuardOperation as Gi, PROTOCOL_V5_NOTICE as Gn, segmentAuthorityBlocks as Gr, resolveInstalledHostLock as Gt, ProofKindCapability as H, SEMANTIC_ACTIONS as Ha, GuardItem as Hi, DEFAULT_DELEGATION_TOOL_NAMES as Hn, AuthorityBlockKind as Hr, packageRowsFromPnpmLock as Ht, PROOF_KINDS_V2 as I, ACTION_MANIFEST_VERSION as Ia, ExternalOperation as Ii, UnifiedItemDiagnosis as In, compareHostVersions as Ir, combineHostPolicy as It, ProofSurface as J, StatefulAction as Ja, MessageCoverage as Ji, ACTIVE_HOST_COHORT_IDS as Jn, classifyTaskIntent as Jr, GIT_COMMAND_TEMPLATES as Jt, ProofObligation as K, SUPPORTED_EVIDENCE_ADAPTERS as Ka, GuardProjection as Ki, deriveProjection as Kn, TaskIntent as Kr, verifyComposedHostLockDump as Kt, PROOF_MANIFEST_DOMAIN_V2 as L, ActionManifest as La, GoalRef as Li, deriveItemDiagnosis as Ln, evaluateMinimumHostVersion as Lr, hostLockContextFromComposedDump as Lt, renderRecoveryPacket as M, namedActions as Ma, EvidenceOutcome as Mi, CertificationSupport as Mn, MIN_SUPPORTED_HOST_VERSION as Mr, previewFirstStepInjection as Mt, ALPHA3_HOST_PACKAGES as N, semanticActionOfScope as Na, EvidenceParseStatus as Ni, DiagnosisNextAction as Nn, ParsedHostVersion as Nr, ActiveProfileHostLock as Nt, RecoveryOptions as O, isExecutableItem as Oa, DeriveResult as Oi, extractTextContent as On, selectHostCohort as Or, FirstStepPreviewInput as Ot, PROOF_CAPABILITY_MATRIX as P, statefulActionsOfScope as Pa, EvidenceRole as Pi, Repairability as Pn, SUPPORTED_HOST_RANGE as Pr, HostProfileError as Pt, bindProofV2ToProjection as Q, requestedIdentityKey as Qa, TargetCaptureStatus as Qi, AuditedExecutable as Qn, isFrozenV042RebindResponse as Qr, GitCommandParseResult as Qt, PROOF_PROTOCOL_VERSION as R, ActionSpec as Ra, GuardBoundary as Ri, evidenceAvailabilityReason as Rn, parseHostVersion as Rr, hostLockRowsFromComposedDump as Rt, snapshotSessionEvents as S, DirectiveClass as Sa, BindingActionClosure as Si, goalCompletionDenial as Sn, bindLiveGoalCapability as Sr, ManifestIssue as St, RC1_HOST_PACKAGES as T, ScopeInterpretation as Ta, DeferAuthorization as Ti, ToolResultInput as Tn, evaluateHostLock as Tr, ClaimedMessage as Tt, ProofKindV2 as U, STATEFUL_ACTIONS as Ua, GuardItemKind as Ui, PROTOCOL_V3_NOTICE as Un, AuthorityKind as Ur, readActiveHostGraph as Ut, ProofKind as V, CERTIFICATE_VERSION_V2 as Va, GuardIntegrity as Vi, CAPTURE_V042_NOTICE as Vn, AuthorityBlock as Vr, packageRowsFromActiveGraph as Vt, ProofManifest as W, STOP_PROTOCOL_VERSION as Wa, GuardItemStatus as Wi, PROTOCOL_V4_NOTICE as Wn, authorityCaptureCounts as Wr, resolveActiveProfileHostLock as Wt, SessionQueryV2 as X, boundedArtifactChoiceMatches as Xa, SourceSpan as Xi, ALPHA2_DSHMARKET_139_HOST_PACKAGES as Xn, CONFIRM_LINE_PATTERN as Xr, GitCommandAccepted as Xt, SessionQuery as Y, actionCompatible as Ya, PersistenceAuthorization as Yi, ACTIVE_HOST_LAUNCHER_VERSION as Yn, classifyUserInteraction as Yr, GitAdapterAction as Yt, bindProofToProjection as Z, isStatefulAction as Za, TargetCaptureReasonCode as Zi, ALPHA2_HOST_PACKAGES as Zn, ParsedConfirmation as Zr, GitCommandManifest as Zt, progressFingerprint as _, proposeRebindV042 as _a, GoalBoundaryAccess as _i, ShellParseStatus as _n, HostPlatform as _r, evidenceCoverage as _t, NO_PROGRESS_RECORD_PREFIX as a, PackageRow as aa, captureClause as ai, LinearCommitReadback as an, canonicalizePath as ao, HOST_CAPABILITY_PACKAGE_GROUPS as ar, proofEvidenceConstraints as at, SessionApiError as b, replayRebindResult as ba, isCurrentAcceptedBoundary as bi, parsePwshCommand as bn, LEGACY_HOST_COHORTS as br, COMMAND_SURFACE_MANIFEST as bt, classifyCompletionClaim as c, ReleaseOperation as ca, extractArtifactPaths as ci, createGitPrestateEnvelope as cn, sanitizeClauseText as co, HostCapabilityEvaluation as cr, proofV2Rejection as ct, decisionBoundaryKey as d, ProposeOutcome as da, isInformationalMessage as di, parseGitCommandManifest as dn, HostCohort as dr, sessionQuery as dt, TargetValue as ea, CheckpointResult as ei, GitEffectExecution as en, requestedTargetMatchesResolved as eo, DEFAULT_HOST_LOCK as er, createProofManifest as et, isRootPauseRequest as f, RebindArgs as fa, segmentClauses as fi, revalidateGitPrestate as fn, HostCohortSelection as fr, sessionQueryV2 as ft, observeAssistantOutcome as g, proposeRebindOutcome as ga, GoalActivationState as gi, ParsedShell as gn, HostLockStatus as gr, bindingSatisfies as gt, latestRootInstruction as h, proposeRebind as ha, BoundaryRequest as hi, CanonicalCommandSurface as hn, HostLockEvaluation as hr, EvidenceFacetCoverage as ht, CompletionDisposition as i, createProjection as ia, ClauseSegment as ii, GitTargetIdentity as in, validateActionTarget as io, GOAL_HOST_PACKAGES as ir, proofDigestV2 as it, recoveryDigest as j, maskCodeSpans as ja, EvidenceBinding as ji, withDurability as jn, LATEST_SUPPORTED_HOST_VERSION as jr, lifecyclePhase as jt, closingHint as k, isOpenObligation as ka, DeriveScope as ki, extractToolSubject as kn, HostVersionDecision as kr, LifecyclePhase as kt, decideTurnBoundary as l, ReleaseSettlement as la, extractMethod as li, executeRevalidatedGitEffect as ln, sanitizeUrl as lo, HostCapabilityId as lr, requiredSubjectsOf as lt, latestAssistantText as m, confirmRebind as ma, BoundaryQualification as mi, CanonicalArgv as mn, HostLockContext as mr, validateProofManifestV2 as mt, AssistantOutcomeObservation as n, WaitAuthorization as na, certifyCheckpoint as ni, GitPrestateCheck as nn, semanticActionFromText as no, ExecutableIdentity as nr, proofCapabilityReport as nt, NO_PROGRESS_TURNS_BEFORE_STOP as o, ReleaseGateDecision as oa, captureItem as oi, commitIndexSnapshotDigest as on, digestStrings as oo, HOST_COHORTS as or, proofHostSurfacesOf as ot, isWholeTaskCompletionClaim as p, RebindProposal as pa, BoundaryEffectuation as pi, verifiedLinearCommitReadback as pn, HostCohortSelectionReason as pr, validateProofManifest as pt, ProofObligationV2 as q, SemanticAction as qa, HostStatus as qi, ACTIVE_HOST_COHORT_ID as qn, UserInteractionKind as qr, GIT_COMMAND_MANIFEST_IDS as qt, CONTROL_RECORD_PREFIX as r, WorkUnit as ra, CaptureScope as ri, GitPrestateEnvelope as rn, validateActionManifest as ro, ExecutableIdentityBinding as rr, proofDigest as rt, TurnStoppingDecision as s, ReleaseObservedIdentity as sa, classifyClause as si, commitTreeSnapshotDigest as sn, normalizeClause as so, HostAuditProvenance as sr, proofOperationMatches as st, supersedeItem as t, VerificationContract as ta, RejectedBinding as ti, GitEffectRunner as tn, semanticActionFromCommand as to, EXPECTED_HOST_PACKAGES as tr, createProofManifestV2 as tt, decideTurnStopping as u, BoundedSource as ua, extractOperation as ui, gitCommandMatchesTarget as un, sha256 as uo, HostCapabilityRequest as ur, scopeCoverageDigest as ut, SESSION_API_UNSUPPORTED as v, rebindAttemptKey as va, availableBoundaryQualifications as vi, canonicalArgvFromCommand as vn, HostProfileKind as vr, evidenceMatchesItem as vt, RC015_HOST_PACKAGES as w, InterpretOptions as wa, BoundaryQualificationKind as wi, ToolCallInput as wn, evaluateHostCapability as wr, validateManifest as wt, V3SessionLike as x, AuthorityDisposition as xa, qualifyBoundary as xi, parseShellCommand as xn, bindExecutableIdentity as xr, CommandSurfaceManifest as xt, SESSION_EVENT_ENVELOPE_INVALID as y, rebindResponse as ya, effectuateBoundary as yi, isRunExecutable as yn, HostToolSurface as yr, isVerifyingCapability as yt, PROOF_PROTOCOL_VERSION_V2 as z, BOUNDED_ARTIFACT_TYPES as za, GuardCheckpoint as zi, itemDiagnosis as zn, satisfiesSupportedHostRange as zr, injectActiveProfileHostLock as zt };