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.
- package/CHANGELOG.md +329 -0
- package/CHANGELOG.zh-CN.md +113 -0
- package/README.md +97 -6
- package/README.zh-CN.md +56 -6
- package/dist/domain/index.d.ts +2 -2
- package/dist/domain/index.js +2 -2
- package/dist/{domain-RuX9l07o.js → domain-COehX7MB.js} +2914 -410
- package/dist/{index-BTaiOcE-.d.ts → index-BJPVGdg9.d.ts} +503 -2
- package/dist/index.d.ts +127 -3
- package/dist/index.js +925 -30
- package/docs/ARCHITECTURE.md +88 -0
- package/docs/LOCAL_ACCEPTANCE.md +112 -0
- package/docs/NEXT_VERSION_REPAIR_NOTES.md +81 -0
- package/docs/PORTING_NOTES.md +36 -2
- package/docs/SEMANTIC_COMPATIBILITY.md +123 -0
- package/docs/distribution.md +5 -3
- package/docs/upstream-deltas.json +90 -9
- package/package.json +2 -2
|
@@ -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
|
-
|
|
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 {
|
|
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 };
|