dsh-completion-guard 0.6.1 → 0.6.3

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.
@@ -140,12 +140,25 @@ interface ScopeInterpretation {
140
140
  /** True only for an explicit, agent-owned, unconditional instruction. */
141
141
  immediatelyExecutable: boolean;
142
142
  authorityDisposition: AuthorityDisposition;
143
+ /** The 0.6.3 execution qualification this reading establishes. */
144
+ qualification: ExecutionQualification;
143
145
  /** Explicitly named tool/method, when the scope names one. */
144
146
  method?: string;
145
147
  /** Stable identity of this interpretation, reproducible from the same bytes. */
146
148
  fingerprint: string;
147
149
  }
148
150
  /**
151
+ * 0.6.3 K1 regression probe: the 0.6.2 question rule, kept SOLELY so the fixed
152
+ * defect has a test that fails against the old reading.
153
+ *
154
+ * 0.6.2 declared a clause information as soon as a question marker appeared
155
+ * anywhere inside it (`QUESTION_SCOPE.test(masked)`). This function is that
156
+ * rule, verbatim. It is not used by any production path — the current reading
157
+ * is {@link hasQuestionScope} — and its only caller is the regression test that
158
+ * pins the difference between the two readings on the recorded defect input.
159
+ */
160
+ declare function legacyQuestionReadingIsInformational(masked: string): boolean;
161
+ /**
149
162
  * The contract kind a scope maps to. A prohibition and an acceptance keep their
150
163
  * own lanes; everything else is a requirement. Acceptance is decided from the
151
164
  * clause's own head verb, so "确保构建通过" stays an acceptance while a
@@ -153,6 +166,182 @@ interface ScopeInterpretation {
153
166
  */
154
167
  declare function kindOfScope(directive: DirectiveClass, body?: string): GuardItemKind;
155
168
  declare function maskCodeSpans(text: string): string;
169
+ /**
170
+ * Whether a clause asks for information rather than ordering work (0.6.3 K1).
171
+ *
172
+ * 0.6.2 treated the mere presence of a question marker anywhere in a clause as
173
+ * "the whole clause is a question", so one 是否 inside a comma-run of
174
+ * instructions ("更新插件,检查是否存在更新,安装新主题,记录变更。") turned
175
+ * every execution obligation beside it into closable information. The reading
176
+ * is now grammatical — head verb, interrogative position, negation — so a
177
+ * relative or purpose clause inside an order ("Create a file where logs are
178
+ * stored", "更新皮肤中心,看看为什么失败") is never a question, while a real
179
+ * request for an answer ("How do I install this?", "检查是否有更新吗?",
180
+ * "check whether the remote has new commits") still is.
181
+ */
182
+ declare function hasQuestionScope(masked: string): boolean;
183
+ /**
184
+ * Whether an explanation head GOVERNS its sentence.
185
+ *
186
+ * Everything coordinated inside the sentence the explanation heads is the OBJECT
187
+ * of the explanation, however it is phrased and however long it is: a finite
188
+ * complement ("how I can install …"), a `whether` complement, an infinitive, a
189
+ * list with a long object — all of it is what the root asked to have explained.
190
+ * The scope is therefore structural: it is the SENTENCE, bounded by the sentence
191
+ * splitter, not a pattern with a window. A sentence break ends the governance, so
192
+ * a following sentence can be a real instruction ("Explain the deploy. Then
193
+ * restart service api." stays authorizable), and a question that merely stands
194
+ * beside an order ("What changed and archive the logs?") has no explanation head
195
+ * and keeps its order.
196
+ */
197
+ declare function reportingHeadGoverns(masked: string): boolean;
198
+ /**
199
+ * Whether a clause is the scope of a QUESTION — any question, not only a reported
200
+ * one: a question word ("How do I install …"), an interrogative auxiliary
201
+ * ("Can you …"), an investigation ("Check whether …") or an explanation
202
+ * ("Explain how …").
203
+ *
204
+ * A question head GOVERNS its clause: everything coordinated inside it is part of
205
+ * what the root asked, so the clause must not be split into an executable child.
206
+ * When such a clause ALSO carries an action of its own it is undecided — the
207
+ * action may be exactly what the question is about — so nothing in it is
208
+ * authority. Exported so the mutation gate and preparation consume the SAME
209
+ * qualification the reading produced instead of re-guessing scope from the split
210
+ * text, and so the rule is testable on its own.
211
+ */
212
+ declare function isQuestionScopeNeedingReview(text: string): boolean;
213
+ /**
214
+ * 0.6.3 (narrowed contract): the execution qualification of one reading.
215
+ *
216
+ * Recognising an ACTION and holding AUTHORITY to run it are separate facts. The
217
+ * reader decides, ONCE per clause and BEFORE any partition, whether the clause is
218
+ * a `granted` plain instruction or a `restricted` governed scope (a question, an
219
+ * explanation, an investigation, a reported question, or a quote). Every child the
220
+ * partition later produces INHERITS that decision; nothing downstream — not the
221
+ * projection, not recovery, not preparation — may upgrade a child to executable by
222
+ * re-reading its own words (the earlier rounds' fail-open direction).
223
+ *
224
+ * `restricted` is not "no work": a restricted clause that names an action keeps it
225
+ * as an undecided obligation ({@link AuthorityDisposition} `unresolved`) which no
226
+ * answer closes and no certificate covers.
227
+ */
228
+ type QualificationStatus = "granted" | "restricted";
229
+ type QualificationReason = "plain_instruction" | "governed_scope" | "unproven_scope" | "inherited_restriction" | "legacy_missing_qualification";
230
+ interface ExecutionQualification {
231
+ status: QualificationStatus;
232
+ reason: QualificationReason;
233
+ /** The governing head that restricted the clause, when one exists. */
234
+ governedBy?: string;
235
+ }
236
+ /** Blank out every quoted span of the text. */
237
+ declare function maskQuotedSpans(text: string): string;
238
+ /**
239
+ * Whether the clause's OWN span asks something, even when no governed head was
240
+ * recognised. This is the fail-closed half of the qualification: a clause whose
241
+ * question content the reader could not classify (`I wonder whether …`, a
242
+ * postposed 是否可行, a stray question mark) is still a scope that cannot host
243
+ * execution authority. Code spans, quotes and subordinate spans do not count:
244
+ * their content belongs to them, not to the clause.
245
+ */
246
+ declare function clauseAsksOwnQuestion(text: string): boolean;
247
+ /**
248
+ * Whether the clause is a DIRECTIVE: an imperative in the root's voice. The action
249
+ * must OPEN the clause once the request preface is consumed ("重启 api 服务。",
250
+ * "Then restart service api.", "请更新插件"), and the clause must not be a report
251
+ * or a third-party statement ("The technicians restart service api every night.",
252
+ * "日志显示运维人员重启 api 服务。").
253
+ */
254
+ declare function opensWithDirective(masked: string): boolean;
255
+ /**
256
+ * The content a restatement introduces: the Y of "把 X 明确为 Y" / "record X as Y".
257
+ * Everything the restatement AUTHORIZES comes from this span, and nothing else.
258
+ */
259
+ declare function restatedContentOf(text: string): string | undefined;
260
+ /** The span a restatement CLARIFIES: everything before its marker. */
261
+ declare function clarifiedSpanOf(text: string): string | undefined;
262
+ /** Whether the clause is an explicit re-statement of what an obligation means. */
263
+ declare function isRestatement(text: string): boolean;
264
+ /**
265
+ * Whether the clause is a PROTECTED scope: a question, an explanation, an
266
+ * investigation, a reported question, a quote, or any span whose own question
267
+ * content the head reader could not classify. A protected scope is indivisible —
268
+ * no separator opens a child of it — and nothing inside it is execution authority.
269
+ */
270
+ declare function clauseIsProtected(text: string): boolean;
271
+ /** A clause nobody has questioned: its own reading is the authorization. */
272
+ declare const GRANTED_QUALIFICATION: ExecutionQualification;
273
+ /** A record captured before the qualification existed: never granted by default. */
274
+ declare const LEGACY_QUALIFICATION: ExecutionQualification;
275
+ /**
276
+ * Whether a QUESTION/EXPLANATION/INVESTIGATION head governs the clause: the one
277
+ * governance predicate every layer consumes (the partitioner, the classifier, the
278
+ * reading, and — through the stored qualification — the gate and preparation).
279
+ */
280
+ declare function questionHeadsClause(masked: string): boolean;
281
+ /** Whether the clause's own reading is a governed scope. */
282
+ declare function clauseIsGoverned(masked: string): boolean;
283
+ /** The qualification the reader records for one clause. */
284
+ declare function qualificationOfClause(text: string): ExecutionQualification;
285
+ /**
286
+ * Whether a GOVERNED clause carries work that its own question does not bound, so
287
+ * that the clause must stay undecided rather than enter the answer lane.
288
+ *
289
+ * The test is structural and vocabulary-free in the direction that matters:
290
+ *
291
+ * - a coordination AFTER the clause's own question word puts the coordinated part
292
+ * inside the question's scope ("…是否安装 foo 并重启 api 服务"), so the whole
293
+ * clause is undecided whatever the verbs are;
294
+ * - material BEFORE the question word that carries an action is the questioned
295
+ * span itself ("检查一下[安装 foo 并重启 api 服务]是否安全"), so it is undecided;
296
+ * - a governed head with no question word of its own is undecided as soon as it
297
+ * names an action ("Check the safety of installing foo and restart service
298
+ * api.", "Explain the incident, rotate every credential").
299
+ *
300
+ * A pure question — the object list of "检查一下本地插件和皮肤是否有更新", a state
301
+ * question like "检查是否有新版本。" — carries none of these and stays answerable.
302
+ */
303
+ declare function governedClauseRestrictsExecution(text: string): boolean;
304
+ declare function hasOrderedCoordination(masked: string): boolean;
305
+ /** @deprecated Use {@link isQuestionScopeNeedingReview}: the rule is not limited to explanations. */
306
+ declare const isExplanationScope: (text: string) => boolean;
307
+ /**
308
+ * Whether a coordinated part of the explanation's sentence opens with an action
309
+ * of its own. Those are exactly the parts whose membership in the explanation
310
+ * cannot be decided from the surface, so they make the sentence undecided instead
311
+ * of answerable or executable. `masked` has code spans blanked, so an action that
312
+ * only appears inside backticks contributes nothing.
313
+ */
314
+ declare function explanationHasActionResidue(masked: string): boolean;
315
+ declare function isInformationalFragment(masked: string): boolean;
316
+ declare function splitTextFragments(text: string, from?: number): Array<{
317
+ text: string;
318
+ offset: number;
319
+ }>;
320
+ /**
321
+ * Whether the text after a coordinating conjunction opens a DISTINCT
322
+ * instruction: its own action head, optionally behind a connector and an
323
+ * actor. This is the rule the sentence splitter already used to decide that a
324
+ * conjunction joins two instructions rather than two objects, exposed so the
325
+ * fragment splitter cannot contradict it.
326
+ */
327
+ declare function introducesActionClause(text: string): boolean;
328
+ /**
329
+ * Every action word in `[offset, before)`, ordered by position, with the words
330
+ * that are only a prefix of a longer action removed (the 升 of 升级, the 然 of
331
+ * 然后). The remaining candidates are the verbs an instruction can be about.
332
+ */
333
+ declare function actionVerbMatches(text: string, offset?: number, before?: number): Array<{
334
+ index: number;
335
+ length: number;
336
+ }>;
337
+ /**
338
+ * True when a negator's scope covers the verb starting at `index`.
339
+ *
340
+ * The negator has to be phrase-initial, so the 不 of 手动 and the 无 of 无论 are
341
+ * not read as bans; a contrast or list separator between the negator and the
342
+ * verb ends its scope ("不仅…而且运行" keeps the run positive).
343
+ */
344
+ declare function verbIsNegated(text: string, index: number): boolean;
156
345
  /** Interpret one already-segmented clause. */
157
346
  declare function interpretClause(text: string, options?: InterpretOptions): ScopeInterpretation;
158
347
  /** Interpret a whole message into independent scopes, in source order. */
@@ -172,6 +361,23 @@ declare function isExecutableItem(item: {
172
361
  authorityDisposition?: AuthorityDisposition;
173
362
  waitAuthorization?: unknown;
174
363
  }): boolean;
364
+ /**
365
+ * The ONE authority predicate the mutation gate and preparation both consume.
366
+ *
367
+ * A record holds execution authority only when the reader GRANTED it a
368
+ * qualification: a record with no qualification at all (captured before the
369
+ * qualification existed) is refused rather than read from its stored
370
+ * disposition, and a restricted record — anything a question, explanation,
371
+ * investigation, reported question or quote governs — keeps its work as an
372
+ * undecided obligation that authorizes nothing. Within a granted reading, the
373
+ * disposition still decides: a prohibition, a wait, a human actor, a condition or
374
+ * an information range is never a mutation. An `unresolved` GRANTED reading keeps
375
+ * the historical path documented for unrecognised instruction forms.
376
+ */
377
+ declare function itemHoldsExecutionAuthority(item: {
378
+ executionQualification?: ExecutionQualification;
379
+ authorityDisposition?: AuthorityDisposition;
380
+ }): boolean;
175
381
  /** Whether an item is an open obligation for certification purposes. */
176
382
  declare function isOpenObligation(item: GuardItem): boolean;
177
383
  /**
@@ -190,6 +396,147 @@ declare function statefulActionsOfScope(body: string): StatefulAction[];
190
396
  /** Actions this interpretation names, in source order (diagnostics only). */
191
397
  declare function namedActions(text: string): string[];
192
398
  //#endregion
399
+ //#region src/domain/capability-semantics.d.ts
400
+ /**
401
+ * 0.6.2 D062-01/D062-02: the shared, versioned semantics for WHAT the guard
402
+ * knows, WHY it cannot certify, and WHICH remedy is actually reachable.
403
+ *
404
+ * The verdict is deliberately one closed projection instead of a pile of
405
+ * ad-hoc strings, because every consumer (prepare, checkpoint detail, recovery
406
+ * packet, rebind query, status) must render the same answer. Two failure modes
407
+ * are excluded by construction:
408
+ *
409
+ * 1. The guard never turns its own missing adapter into a user-authority gap.
410
+ * An unsupported capability says "complete the work honestly and do not
411
+ * claim a certificate"; it never asks the user to restate the request as
412
+ * install/modify, and it never asks for input the user already gave.
413
+ * 2. The guard never claims a fact it did not read. `declaredExitCode:
414
+ * 'unknown'` stays unknown however successful the host tool call looked,
415
+ * and an opaque compound runner stays `operationAttribution: 'unknown'`
416
+ * rather than inheriting the last command's exit status.
417
+ *
418
+ * The taxonomy is written once here and consumed by every lane, so a future
419
+ * capability must declare its own gap kind and remedy instead of drifting into
420
+ * a sentence list. Nothing in this module mutates contract, evidence, digest,
421
+ * certificate, or historical record state.
422
+ */
423
+ /** Fine-grained, mutually exclusive reasons a contract item is not certified. */
424
+ type CapabilityGap = "none" | "closed" | "constraint" | "interpretation_unknown" | "missing_adapter" | "target_missing" | "input_ambiguous" | "legacy_migration_required" | "host_unavailable" | "historical_preevidence_missing" | "operation_unattributable" | "condition_pending" | "delivery_pending";
425
+ /** The reachable remedy for one gap. `remedy` is the machine-readable form of
426
+ * `next_action`; the two are produced together so they cannot disagree. */
427
+ type CapabilityRemedy = "none" | "collect_evidence" | "supply_target" | "await_root_input" | "deliver_answer" | "record_interpretation" | "report_uncertified" | "report_uncertified_capability_gap" | "restore_host" | "readback_only" | "fresh_root_instruction";
428
+ interface CapabilityFact {
429
+ /**
430
+ * Whether this obligation's OWN action belongs to the certification action
431
+ * set in the installed cohort. It is deliberately independent of
432
+ * authorization: `false` says the build has no such capability, NEVER that
433
+ * the user did not authorize the work, and NEVER that the work may not be
434
+ * done. A `generic_run` obligation has no concrete action to support.
435
+ */
436
+ actionSupported: boolean;
437
+ /** A durable certification path exists for this item's own contract. */
438
+ certifiable: boolean;
439
+ gap: CapabilityGap;
440
+ remedy: CapabilityRemedy;
441
+ /** Reason codes that describe the evidence chain, never new authority. */
442
+ blockingReasonCodes: string[];
443
+ }
444
+ /**
445
+ * Whether the item's obligation has a certification path in this cohort at
446
+ * all. A generic_run item names no concrete action: the manifest still has a
447
+ * generic entry (the guard may run and observe ordinary commands) but no
448
+ * user-level completion contract can be certified from it, so the item is
449
+ * uncertifiable while ordinary execution remains entirely permitted.
450
+ */
451
+ declare function actionHasCertificationPath(action: SemanticAction, legacyMigration: boolean): boolean;
452
+ /** The capability classification of an item's own obligation contract. */
453
+ declare function capabilityFactOf(item: GuardItem): CapabilityFact;
454
+ /**
455
+ * What the console itself declared about the process. `declaredExitCode` is
456
+ * `'unknown'` unless a real marker or a structured host fact said otherwise:
457
+ * a host tool call that was not marked as an error is NOT a read exit code.
458
+ */
459
+ type ProcessExitStatus = number | "unknown";
460
+ /**
461
+ * Why `outcome` says what it says, so a display or a consumer never reads more
462
+ * than the source supports.
463
+ */
464
+ type ProcessOutcomeReason = "declared_exit_code" | "declared_negative_marker" | "host_error_flag" | "unmarked_renderer_success" | "marker_unclassified" | "backgrounded" | "text_scan_inconclusive";
465
+ /**
466
+ * How far the console let the guard attribute effects to the obligation's own
467
+ * operation. `unknown` is the honest answer for every opaque compound runner:
468
+ * the last command's success never covers an earlier failure.
469
+ */
470
+ type OperationAttribution = "single_operation" | "declared_per_operation" | "unknown";
471
+ /** A credible per-operation subset the host itself declared. */
472
+ interface DeclaredOperationResult {
473
+ action: string;
474
+ outcome: "success" | "failure" | "unknown";
475
+ }
476
+ /** Which source declared the terminal facts this reading is based on. */
477
+ type ProcessFactSource = "run_declaration" | "structured_meta" | "rendered_markers";
478
+ interface DerivedProcessFacts {
479
+ /** What the host tool call returned, before any interpretation. */
480
+ hostToolReturned: "result" | "error";
481
+ /** The console's own exit status, or `unknown` when never read. */
482
+ declaredExitCode: ProcessExitStatus;
483
+ /** Whether an explicit terminal marker (positive or negative) was read. */
484
+ terminalMarkerRead: boolean;
485
+ /** The outcome THIS LAYER derives from its own sources. It is deliberately a
486
+ * separate value from the frozen evidence `outcome`: the frozen field keeps
487
+ * the historical rule (0.6.1 and earlier read only `meta.exitCode` and the
488
+ * rendered markers, never the run declaration), while this layer reads the
489
+ * run declaration first. The two may therefore differ, and when they do the
490
+ * difference is stated in `frozenOutcomeConflict` rather than hidden by
491
+ * rewriting the historical field. */
492
+ outcome: "success" | "failure" | "unknown";
493
+ /** Why this layer's outcome is what it is. */
494
+ outcomeReason: ProcessOutcomeReason;
495
+ /** The highest-priority source that declared the facts used here. */
496
+ source: ProcessFactSource;
497
+ /** True when this layer's outcome differs from the frozen evidence
498
+ * `outcome`. A consumer that needs the historical reading uses the frozen
499
+ * field; a consumer that needs the run's own declaration uses this layer and
500
+ * can see that the two disagree. */
501
+ frozenOutcomeConflict: boolean;
502
+ /** How far the guard could attribute effects to the operation. */
503
+ operationAttribution: OperationAttribution;
504
+ /** Exactly the sub-results a trusted producer declared, if any. */
505
+ declaredOperationResults?: DeclaredOperationResult[];
506
+ }
507
+ /**
508
+ * `partial_failure` may be reported only from a credible structured
509
+ * per-operation result, and only for the exact declared subset. `unknown`
510
+ * stays unknown: the guard never reconstructs a per-operation verdict from
511
+ * stderr text, and never widens a declared subset into a claim about the rest.
512
+ */
513
+ declare function partialFailureOf(facts: DerivedProcessFacts): {
514
+ failed: DeclaredOperationResult[];
515
+ } | undefined;
516
+ /** The one-line consequence of a gap kind, shared so no lane re-invents it. */
517
+ declare function capabilityConsequence(gap: CapabilityGap): string;
518
+ /**
519
+ * D062-03: the applicable condition every removal-like outcome must carry.
520
+ * "Clean" or "no longer listed" never proves "no dependants", so a completed
521
+ * subset stays reported as the subset it is. These are the execution-side
522
+ * facts the guard can name but cannot observe; it states them instead of
523
+ * inventing a generic remover or promising an automatic block.
524
+ */
525
+ declare const DEPENDENCY_FREE_ONLY_CONDITION: readonly string[];
526
+ /** The per-object dependency status a report must keep separate. */
527
+ type DependencyStatus = "dependency_free" | "in_use" | "unknown";
528
+ /** Whether one candidate object may enter the automatic removal set. */
529
+ declare function admissibleForRemoval(status: DependencyStatus): boolean;
530
+ interface RemovalOutcomeReport {
531
+ metadataRemoved: "yes" | "no" | "unknown";
532
+ contentRemoved: "yes" | "no" | "partial" | "unknown";
533
+ directoryRemoved: "yes" | "no" | "unknown";
534
+ }
535
+ /** Only an object proven dependency-free AND fully removed may read as done. */
536
+ declare function removalIsComplete(report: RemovalOutcomeReport, status: DependencyStatus): boolean;
537
+ /** A partially removed object or an unknown dependant is never "no impact". */
538
+ declare function removalIsPartiallyKnown(report: RemovalOutcomeReport, status: DependencyStatus): boolean;
539
+ //#endregion
193
540
  //#region src/domain/rebind.d.ts
194
541
  interface RebindArgs {
195
542
  operation: "propose" | "query" | "withdraw";
@@ -480,6 +827,21 @@ type GuardItemStatus = "pending" | "answered" | "passed" | "superseded";
480
827
  type GuardIntegrity = "valid" | "unknown" | "corrupt";
481
828
  type EvidenceOutcome = "success" | "failure" | "unknown" | "durability-unknown";
482
829
  type GuardOperation = "create" | "write" | "modify" | "read" | "run" | "verify";
830
+ /**
831
+ * 0.6.3 K2: where an obligation's requested target came from. A target is a
832
+ * user SELECTION only when the root named it or a trusted host selection made
833
+ * it; an environment default (the session working directory, a recent tool
834
+ * path, a model-supplied selector) resolves and corroborates a target the root
835
+ * already allowed, and never manufactures root authority. An inherited target
836
+ * comes from another obligation of the same work unit whose own source is
837
+ * auditable.
838
+ */
839
+ type TargetSourceKind = "explicit_label" | "explicit_path" | "explicit_current_repository" | "host_selection" | "unit_inherited" | "environment_default";
840
+ interface TargetSource {
841
+ kind: TargetSourceKind;
842
+ /** Source message id of the obligation a `unit_inherited` target came from. */
843
+ inheritedFrom?: string;
844
+ }
483
845
  type TargetValue = boolean | number | string | {
484
846
  k: "b" | "i" | "s" | "e" | "x";
485
847
  v: unknown;
@@ -489,7 +851,25 @@ type EvidenceRole = "resolution" | "effect" | "state";
489
851
  type EvidenceParseStatus = "supported" | "unsupported_statement_operator" | "unsupported_command" | "malformed_quote" | "adapter_unavailable";
490
852
  type HostStatus = "supported" | "unsupported" | "unavailable";
491
853
  type TargetCaptureStatus = "resolved" | "clarification_required";
492
- type TargetCaptureReasonCode = "requested_target_package_id_missing" | "requested_target_artifact_id_missing" | "requested_target_repository_missing" | "requested_target_service_id_missing" | "requested_target_registry_missing_or_invalid";
854
+ /**
855
+ * 0.6.3 K4: why a record captured under the rules of an EARLIER release can no
856
+ * longer be reused as a current pass. The record itself is never rewritten —
857
+ * its historical status (including `answered`) stays the historical fact it
858
+ * was — but the current eligibility layer refuses to inherit it and the
859
+ * obstruction blocks new certificates and Goal completion until the root
860
+ * resolves it. It is deliberately a hard block, not a warning: 0.6.2 published
861
+ * a mixed request as answered, and a warning would have left exactly that
862
+ * misreading in force.
863
+ */
864
+ type NeedsReviewReason = "legacy_mixed_information_scope" | "legacy_environment_default_target" | "unknown_state_version" | "legacy_missing_execution_qualification";
865
+ interface NeedsReviewFact {
866
+ reason: NeedsReviewReason;
867
+ /** Stable identity of the eligibility check that raised it. */
868
+ checkId: string;
869
+ /** When the check was applied: this is an upgrade fact, not a birth fact. */
870
+ recordedAtRevision: number;
871
+ }
872
+ type TargetCaptureReasonCode = "requested_target_package_id_missing" | "requested_target_artifact_id_missing" | "requested_target_repository_missing" | "requested_target_repository_ambiguous" | "requested_target_field_ambiguous" | "requested_target_service_id_missing" | "requested_target_registry_missing_or_invalid";
493
873
  interface GoalRef {
494
874
  id: string;
495
875
  revision: number;
@@ -592,6 +972,17 @@ interface GuardItem {
592
972
  requestedTarget?: TargetTuple;
593
973
  targetCaptureStatus?: TargetCaptureStatus;
594
974
  targetCaptureReasonCode?: TargetCaptureReasonCode;
975
+ /**
976
+ * 0.6.3 K2 provenance of {@link requestedTarget}. Absent on items captured by
977
+ * 0.6.2 and earlier, whose target reading is historical and evaluated by the
978
+ * upgrade eligibility check rather than re-interpreted.
979
+ */
980
+ targetSource?: TargetSource;
981
+ /**
982
+ * 0.6.3 K4: set by the upgrade eligibility check when this record cannot be
983
+ * inherited as a current pass. It never overwrites the historical status.
984
+ */
985
+ needsReview?: NeedsReviewFact;
595
986
  authority?: "root_instruction" | "root_adoption" | "legacy_authority_unclassified";
596
987
  legacyFlags?: Array<"legacy_generic_run" | "legacy_authority_unclassified">;
597
988
  /** v0.5 intent layer: inquiries keep the obligation but are not machine certifiable. */
@@ -606,6 +997,14 @@ interface GuardItem {
606
997
  directive?: DirectiveClass;
607
998
  executee?: Executee;
608
999
  authorityDisposition?: AuthorityDisposition;
1000
+ /**
1001
+ * 0.6.3 (narrowed contract): whether this reading may host execution authority.
1002
+ * Established ONCE by the reader, before any partition, and inherited by every
1003
+ * child the partition produces. Absent on records captured before the
1004
+ * qualification existed: the gate and preparation refuse those rather than
1005
+ * reading their stored disposition as permission.
1006
+ */
1007
+ executionQualification?: ExecutionQualification;
609
1008
  /** The unresolved condition guarding a `conditional_wait` item. */
610
1009
  condition?: string;
611
1010
  /** The event that ends a human wait, when the source names one. */
@@ -711,6 +1110,18 @@ interface GuardEvidence {
711
1110
  adapterVersion?: string;
712
1111
  externalOperationRef?: ExternalOperation;
713
1112
  /**
1113
+ * 0.6.2 D062-02: the LAYERED reading of a shell result, kept beside — never
1114
+ * instead of — the frozen `outcome`/`parseStatus` pair. It separates four
1115
+ * different claims the historical single `outcome` conflated: what the host
1116
+ * tool call returned, what the console actually declared about the process
1117
+ * (an exit code and its signal, or `unknown` when none was read), how far the
1118
+ * effect could be attributed to this obligation's own operation, and the
1119
+ * resulting business outcome. It is derived at replay from the same bytes, is
1120
+ * excluded from every historical digest and certificate domain, and never
1121
+ * rewrites an old `outcome`. Only shell-tool facts carry it.
1122
+ */
1123
+ processFacts?: DerivedProcessFacts;
1124
+ /**
714
1125
  * 0.6.0 C04: this fact came from a delegated subagent/task round-trip. A
715
1126
  * delegated result is BOUNDED evidence for the parent unit — it is recorded
716
1127
  * and visible, and it can never close a parent obligation or a parent unit
@@ -1096,6 +1507,13 @@ interface CaptureScope {
1096
1507
  /** Session working directory; used as the scope subject when no artifact path is named. */
1097
1508
  cwd?: string;
1098
1509
  }
1510
+ /**
1511
+ * The repository an obligation resolves to when the root wrote no repository
1512
+ * at all (0.6.3 K2). The environment default is preserved so a later
1513
+ * work-unit inheritance decision can evaluate it, but it is never reported as
1514
+ * a resolved user selection.
1515
+ */
1516
+ declare function environmentDefaultRepositoryTarget(action: SemanticAction, subject: string): TargetTuple | undefined;
1099
1517
  declare function extractArtifactPaths(text: string): string[];
1100
1518
  /**
1101
1519
  * Split a single human message into independently tracked clauses. Sentence
@@ -1188,18 +1606,6 @@ declare function isFrozenV042RebindResponse(recorded: unknown): boolean;
1188
1606
  //#endregion
1189
1607
  //#region src/domain/conversation.d.ts
1190
1608
  type UserInteractionKind = "instruction" | "conversational";
1191
- /**
1192
- * Classify a direct user message (or one clause of it) as an actionable
1193
- * `instruction` or a session-layer `conversational` utterance. Only
1194
- * conversational results drop capture, so the classifier fails closed:
1195
- * everything it cannot confidently recognize as session-layer talk stays an
1196
- * instruction and is captured exactly as before.
1197
- *
1198
- * Order matters: progression and prohibition leads first, then strong task
1199
- * features (artifact path, explicit method, or a non-negated operation verb
1200
- * outside progression/meta spans), then the meta-question and meta-comment
1201
- * forms, and finally a progression lead over a featureless remainder.
1202
- */
1203
1609
  declare function classifyUserInteraction(text: string): UserInteractionKind;
1204
1610
  type TaskIntent = "inquiry" | "action";
1205
1611
  /**
@@ -1529,6 +1935,26 @@ declare const PROTOCOL_V4_NOTICE = "Context Guard protocol boundary: v4.0.0";
1529
1935
  */
1530
1936
  declare const PROTOCOL_V5_NOTICE = "Context Guard protocol boundary: v5.0.0";
1531
1937
  /**
1938
+ * The pure upgrade-eligibility predicate: the records in the current closure
1939
+ * scope that may NOT be inherited as a current pass, with the reason that
1940
+ * disqualifies each. Exported so the rule can be tested and read back directly,
1941
+ * never to let a caller skip it.
1942
+ */
1943
+ declare function legacyRecordsNeedingReview(projection: GuardProjection): Array<{
1944
+ itemId: string;
1945
+ reason: NeedsReviewReason;
1946
+ }>;
1947
+ /**
1948
+ * Apply the 0.6.3 eligibility pass to an already-derived projection.
1949
+ *
1950
+ * This is the upgrade entry: it re-checks the records a session already holds
1951
+ * after an EVENT-SOURCED reading has been applied to them. It is idempotent —
1952
+ * a project already marked keeps its original reason and revision — and it is
1953
+ * the same function the derivation runs, so a replay and an in-place upgrade
1954
+ * cannot disagree.
1955
+ */
1956
+ declare function applyUpgradeEligibility(projection: GuardProjection): void;
1957
+ /**
1532
1958
  * Pure, deterministic re-derivation of the guard projection from the DSH
1533
1959
  * native event log. Context Guard never writes custom session events, so every
1534
1960
  * piece of state is derived from `command/run`, `user/message`, `tool/call`,
@@ -1552,6 +1978,12 @@ type ReasonClass = "parameter_missing" | "source_insufficient" | "condition_unme
1552
1978
  //#region src/domain/diagnostics.d.ts
1553
1979
  type TaskKind = "inquiry" | "action" | "deliverable" | "constraint" | "unresolved";
1554
1980
  type CertificationSupport = "supported" | "unsupported" | "needs_target" | "needs_evidence" | "unavailable";
1981
+ /**
1982
+ * Whether anything can still be repaired, and by whom (0.5, corrected by 0.6.2
1983
+ * D062-01). `user_input_required` means a real root choice was never made
1984
+ * (a genuinely absent identity or target selection) — never a capability this
1985
+ * build simply does not have, and never a request to re-word an instruction.
1986
+ */
1555
1987
  type Repairability = "agent_repairable" | "user_input_required" | "unsupported" | "historical_gap" | "none";
1556
1988
  interface DiagnosisNextAction {
1557
1989
  kind: "report_only" | "collect_evidence" | "checkpoint" | "clarify_target" | "restore_host" | "none";
@@ -1572,6 +2004,13 @@ interface UnifiedItemDiagnosis {
1572
2004
  /** The seven-class label this fine-grained reason code belongs to (C12). */
1573
2005
  reason_class: ReasonClass;
1574
2006
  repairability: Repairability;
2007
+ /**
2008
+ * 0.6.2 D062-01: WHAT the guard knows and WHICH remedy is reachable, shared
2009
+ * by every consumer. `reason_code` stays the fine display code; the
2010
+ * capability fact explains the remedy, so no lane infers a root cause — or
2011
+ * invents a reachable path — from one enum.
2012
+ */
2013
+ capability: CapabilityFact;
1575
2014
  missing_fields: string[];
1576
2015
  missing_facets: Array<"resolution" | "effect" | "state">;
1577
2016
  next_action: DiagnosisNextAction;
@@ -1600,6 +2039,13 @@ declare function itemDiagnosis(p: GuardProjection, item: GuardItem): {
1600
2039
  declare function evidenceAvailabilityReason(evidence: GuardEvidence): string | undefined;
1601
2040
  /** Shared display filter; certification remains the full domain check. */
1602
2041
  declare function relevantEvidence(p: GuardProjection, item: GuardItem, evidence: GuardEvidence): boolean;
2042
+ /**
2043
+ * The bounded, one-phrase form of a reachable remedy (0.6.2 D062-01). The
2044
+ * capability consequence above is the full explanation; a bounded page lists
2045
+ * many items, so it uses this phrase and leaves the prose to the detail and
2046
+ * preparation surfaces. Both come from the SAME capability fact.
2047
+ */
2048
+ declare function capabilityRemedyPhrase(remedy: CapabilityRemedy): string;
1603
2049
  //#endregion
1604
2050
  //#region src/domain/evidence.d.ts
1605
2051
  interface ToolCallInput {
@@ -1638,6 +2084,8 @@ interface ToolSubject {
1638
2084
  reasonCode?: string;
1639
2085
  adapterId?: string;
1640
2086
  adapterVersion?: string;
2087
+ /** 0.6.2 D062-02: the layered shell reading, present only for shell tools. */
2088
+ processFacts?: DerivedProcessFacts;
1641
2089
  externalOperationRef?: ExternalOperation;
1642
2090
  }
1643
2091
  declare function extractToolSubject(call: ToolCallInput, result: ToolResultInput, defaultCwd?: string, hostLock?: HostLockEvaluation): ToolSubject;
@@ -2229,6 +2677,40 @@ interface RecoveryOptions {
2229
2677
  declare const DEFAULT_RECOVERY_CHAR_BUDGET = 4e3;
2230
2678
  declare const MIN_RECOVERY_CHAR_BUDGET = 512;
2231
2679
  /**
2680
+ * 0.6.2 D062-03: the standing condition a removal or cleanup outcome must keep.
2681
+ * The guard cannot observe another process's cwd or handles, so it states the
2682
+ * condition instead of inferring "no dependants" from a clean tree, an empty
2683
+ * `git worktree list`, or a directory that merely looks empty. This is one
2684
+ * shared wording, not an incident phrase list, and it never claims the plugin
2685
+ * can block a dangerous removal on its own.
2686
+ */
2687
+ declare const CLEANUP_CONDITION_RULE: string;
2688
+ /**
2689
+ * The same condition at a medium budget (0.6.2 review): shorter than the full
2690
+ * rule, and still explicit that an unknown dependant forbids the claim.
2691
+ */
2692
+ declare const CLEANUP_CONDITION_RULE_SHORT: string;
2693
+ /**
2694
+ * The same condition at emergency budget (0.6.2 review). A packet with fewer
2695
+ * than 1000 characters cannot carry the longer sentences AND its own rules, so
2696
+ * the condition is compressed — but it is NEVER omitted: the one thing a compact
2697
+ * packet must not lose is that an unknown dependant forbids a removal claim.
2698
+ */
2699
+ declare const CLEANUP_CONDITION_RULE_COMPACT: string;
2700
+ /**
2701
+ * Pick the longest form of the condition the packet's budget can actually
2702
+ * afford. The caller reserves this line's length before any optional row, so
2703
+ * the condition is never the text that gets clipped.
2704
+ */
2705
+ declare function cleanupConditionFor(budget: number): string;
2706
+ /**
2707
+ * Whether this gap needs the cleanup condition spelled out. The condition
2708
+ * belongs to every uncertifiable lane that could describe removal-like work —
2709
+ * which the guard cannot identify from text — so it rides the CAPABILITY
2710
+ * limitation itself, never a vocabulary of destructive verbs.
2711
+ */
2712
+ declare function carriesCleanupCondition(gap: CapabilityGap): boolean;
2713
+ /**
2232
2714
  * An actionable one-line hint for how an open item's verification contract can
2233
2715
  * be closed. It never weakens the contract; it only names the missing facet so
2234
2716
  * the agent can produce the right evidence shape instead of reverse-engineering
@@ -2419,4 +2901,4 @@ declare function latestAssistantText(events: readonly {
2419
2901
  //#region src/domain/supersession.d.ts
2420
2902
  declare function supersedeItem(items: Map<string, GuardItem>, oldId: string, replacement: GuardItem): boolean;
2421
2903
  //#endregion
2422
- export { canonicalProjection as $, boundedArtifactChoiceMatches as $a, SourceSpan as $i, AuditedExecutable as $n, isFrozenV042RebindResponse as $r, GitCommandParseResult as $t, openItems as A, interpretMessage as Aa, DeriveConfig as Ai, extractToolSubject as An, HostVersionDecision as Ar, claimedBatchHasRealRootInput as At, ProofHostSurface as B, ActionManifest as Ba, GoalRef as Bi, itemDiagnosis as Bn, satisfiesSupportedHostRange as Br, injectActiveProfileHostLock as Bt, RC015_RC2_HOST_PACKAGES as C, replayRebindResult as Ca, AssetInterpretationFact as Ci, goalCompletionDenial as Cn, bindLiveGoalCapability as Cr, OperationVerbEntry as Ct, MIN_RECOVERY_CHAR_BUDGET as D, InterpretOptions as Da, BoundaryQualificationKind as Di, ToolSubject as Dn, evaluateToolSurfaceCapability as Dr, FirstStepInjection as Dt, DEFAULT_RECOVERY_CHAR_BUDGET as E, Executee as Ea, BoundaryDisposition as Ei, ToolResultInput as En, evaluateHostLock as Er, FIRST_STEP_GUIDANCE as Et, PROOF_KINDS as F, namedActions as Fa, EvidenceOutcome as Fi, Repairability as Fn, SUPPORTED_HOST_RANGE as Fr, HostProfileError as Ft, ProofManifestV2 as G, SEMANTIC_ACTIONS as Ga, GuardItem as Gi, PROTOCOL_V4_NOTICE as Gn, authorityCaptureCounts as Gr, resolveActiveProfileHostLock as Gt, ProofKindCapability as H, BOUNDED_ARTIFACT_TYPES as Ha, GuardCheckpoint as Hi, CAPTURE_V042_NOTICE as Hn, AuthorityBlock as Hr, packageRowsFromActiveGraph as Ht, PROOF_KINDS_V2 as I, semanticActionOfScope as Ia, EvidenceParseStatus as Ii, TaskKind as In, SUPPORTED_HOST_VERSIONS as Ir, TargetHostGraph as It, ProofSurface as J, STOP_PROTOCOL_VERSION_V2 as Ja, GuardOperation as Ji, ACTIVE_HOST_COHORT_ID as Jn, UserInteractionKind as Jr, GIT_COMMAND_MANIFEST_IDS as Jt, ProofObligation as K, STATEFUL_ACTIONS as Ka, GuardItemKind as Ki, PROTOCOL_V5_NOTICE as Kn, segmentAuthorityBlocks as Kr, resolveInstalledHostLock as Kt, PROOF_MANIFEST_DOMAIN_V2 as L, statefulActionsOfScope as La, EvidenceRole as Li, UnifiedItemDiagnosis as Ln, compareHostVersions as Lr, combineHostPolicy as Lt, renderRecoveryPacket as M, isOpenObligation as Ma, DeriveScope as Mi, withDurability as Mn, LATEST_SUPPORTED_HOST_VERSION as Mr, lifecyclePhase as Mt, ALPHA3_HOST_PACKAGES as N, kindOfScope as Na, DerivedEnvelope as Ni, CertificationSupport as Nn, MIN_SUPPORTED_HOST_VERSION as Nr, previewFirstStepInjection as Nt, RecoveryOptions as O, ScopeInterpretation as Oa, DeferAuthorization as Oi, evidenceFromPersistedToolResult as On, hostVersionFromPackages as Or, FirstStepPreviewInput as Ot, PROOF_CAPABILITY_MATRIX as P, maskCodeSpans as Pa, EvidenceBinding as Pi, DiagnosisNextAction as Pn, ParsedHostVersion as Pr, ActiveProfileHostLock as Pt, bindProofV2ToProjection as Q, actionCompatible as Qa, PersistenceAuthorization as Qi, ALPHA2_HOST_PACKAGES as Qn, ParsedConfirmation as Qr, GitCommandManifest as Qt, PROOF_PROTOCOL_VERSION as R, ACTION_MANIFEST as Ra, ExpectedTransition as Ri, deriveItemDiagnosis as Rn, evaluateMinimumHostVersion as Rr, hostLockContextFromComposedDump as Rt, snapshotSessionEvents as S, rebindResponse as Sa, qualifyBoundary as Si, parseShellCommand as Sn, bindExecutableIdentity as Sr, ManifestIssue as St, RC1_HOST_PACKAGES as T, DirectiveClass as Ta, BindingActionClosure as Ti, ToolCallInput as Tn, evaluateHostCapability as Tr, ClaimedMessage as Tt, ProofKindV2 as U, CERTIFICATE_VERSION as Ua, GuardEvidence as Ui, DEFAULT_DELEGATION_TOOL_NAMES as Un, AuthorityBlockKind as Ur, packageRowsFromPnpmLock as Ut, ProofKind as V, ActionSpec as Va, GuardBoundary as Vi, relevantEvidence as Vn, currentContractDigest as Vr, inspectTargetHostGraph as Vt, ProofManifest as W, CERTIFICATE_VERSION_V2 as Wa, GuardIntegrity as Wi, PROTOCOL_V3_NOTICE as Wn, AuthorityKind as Wr, readActiveHostGraph as Wt, SessionQueryV2 as X, SemanticAction as Xa, HostStatus as Xi, ACTIVE_HOST_LAUNCHER_VERSION as Xn, classifyUserInteraction as Xr, GitAdapterAction as Xt, SessionQuery as Y, SUPPORTED_EVIDENCE_ADAPTERS as Ya, GuardProjection as Yi, ACTIVE_HOST_COHORT_IDS as Yn, classifyTaskIntent as Yr, GIT_COMMAND_TEMPLATES as Yt, bindProofToProjection as Z, StatefulAction as Za, MessageCoverage as Zi, ALPHA2_DSHMARKET_139_HOST_PACKAGES as Zn, CONFIRM_LINE_PATTERN as Zr, GitCommandAccepted as Zt, progressFingerprint as _, confirmRebind as _a, GoalActivationState as _i, ParsedShell as _n, HostLockStatus as _r, evidenceCoverage as _t, NO_PROGRESS_RECORD_PREFIX as a, WaitAuthorization as aa, ClauseSegment as ai, GitTargetIdentity as an, semanticActionFromText as ao, GOAL_HOST_PACKAGES as ar, proofEvidenceConstraints as at, SessionApiError as b, proposeRebindV042 as ba, effectuateBoundary as bi, isRunExecutable as bn, HostToolSurface as br, COMMAND_SURFACE_MANIFEST as bt, classifyCompletionClaim as c, PackageRow as ca, classifyClause as ci, commitTreeSnapshotDigest as cn, canonicalizePath as co, HostAuditProvenance as cr, proofV2Rejection as ct, decisionBoundaryKey as d, ReleaseOperation as da, extractOperation as di, gitCommandMatchesTarget as dn, sanitizeClauseText as do, HostCapabilityRequest as dr, sessionQuery as dt, TargetCaptureReasonCode as ea, parseConfirmationMessage as ei, GitCommandRejected as en, isStatefulAction as eo, BASE_HOST_PACKAGES as er, createProofManifest as et, isRootPauseRequest as f, ReleaseSettlement as fa, isInformationalMessage as fi, parseGitCommandManifest as fn, sanitizeUrl as fo, HostCohort as fr, sessionQueryV2 as ft, observeAssistantOutcome as g, RebindProposal as ga, BoundaryRequest as gi, CanonicalCommandSurface as gn, HostLockEvaluation as gr, bindingSatisfies as gt, latestRootInstruction as h, RebindArgs as ha, BoundaryQualification as hi, CanonicalArgv as hn, HostLockContext as hr, EvidenceFacetCoverage as ht, CompletionDisposition as i, VerificationContract as ia, CaptureScope as ii, GitPrestateEnvelope as in, semanticActionFromCommand as io, ExecutableIdentityBinding as ir, proofDigestV2 as it, recoveryDigest as j, isExecutableItem as ja, DeriveResult as ji, isDeterministicCheck as jn, HostVersionStatus as jr, firstStepGuidance as jt, closingHint as k, interpretClause as ka, DelegationRef as ki, extractTextContent as kn, selectHostCohort as kr, LifecyclePhase as kt, decideTurnBoundary as l, ReleaseGateDecision as la, extractArtifactPaths as li, createGitPrestateEnvelope as ln, digestStrings as lo, HostCapabilityEvaluation as lr, requiredSubjectsOf as lt, latestAssistantText as m, ProposeOutcome as ma, BoundaryEffectuation as mi, verifiedLinearCommitReadback as mn, HostCohortSelectionReason as mr, validateProofManifestV2 as mt, AssistantOutcomeObservation as n, TargetTuple as na, RejectedBinding as ni, GitEffectRunner as nn, requestedTargetAuthorizesMutation as no, EXPECTED_HOST_PACKAGES as nr, proofCapabilityReport as nt, NO_PROGRESS_TURNS_BEFORE_STOP as o, WorkUnit as oa, captureClause as oi, LinearCommitReadback as on, validateActionManifest as oo, HOST_CAPABILITY_PACKAGE_GROUPS as or, proofHostSurfacesOf as ot, isWholeTaskCompletionClaim as p, BoundedSource as pa, segmentClauses as pi, revalidateGitPrestate as pn, sha256 as po, HostCohortSelection as pr, validateProofManifest as pt, ProofObligationV2 as q, STOP_PROTOCOL_VERSION as qa, GuardItemStatus as qi, deriveProjection as qn, TaskIntent as qr, verifyComposedHostLockDump as qt, CONTROL_RECORD_PREFIX as r, TargetValue as ra, certifyCheckpoint as ri, GitPrestateCheck as rn, requestedTargetMatchesResolved as ro, ExecutableIdentity as rr, proofDigest as rt, TurnStoppingDecision as s, createProjection as sa, captureItem as si, commitIndexSnapshotDigest as sn, validateActionTarget as so, HOST_COHORTS as sr, proofOperationMatches as st, supersedeItem as t, TargetCaptureStatus as ta, CheckpointResult as ti, GitEffectExecution as tn, requestedIdentityKey as to, DEFAULT_HOST_LOCK as tr, createProofManifestV2 as tt, decideTurnStopping as u, ReleaseObservedIdentity as ua, extractMethod as ui, executeRevalidatedGitEffect as un, normalizeClause as uo, HostCapabilityId as ur, scopeCoverageDigest as ut, SESSION_API_UNSUPPORTED as v, proposeRebind as va, GoalBoundaryAccess as vi, ShellParseStatus as vn, HostPlatform as vr, evidenceMatchesItem as vt, RC015_HOST_PACKAGES as w, AuthorityDisposition as wa, AssetObligation as wi, hasCurrentCertificate as wn, evaluateExternalWaitCapability as wr, validateManifest as wt, V3SessionLike as x, rebindAttemptKey as xa, isCurrentAcceptedBoundary as xi, parsePwshCommand as xn, LEGACY_HOST_COHORTS as xr, CommandSurfaceManifest as xt, SESSION_EVENT_ENVELOPE_INVALID as y, proposeRebindOutcome as ya, availableBoundaryQualifications as yi, canonicalArgvFromCommand as yn, HostProfileKind as yr, isVerifyingCapability as yt, PROOF_PROTOCOL_VERSION_V2 as z, ACTION_MANIFEST_VERSION as za, ExternalOperation as zi, evidenceAvailabilityReason as zn, parseHostVersion as zr, hostLockRowsFromComposedDump as zt };
2904
+ export { ProofSurface as $, partialFailureOf as $a, GuardIntegrity as $i, applyUpgradeEligibility as $n, STATEFUL_ACTIONS as $o, authorityCaptureCounts as $r, GIT_COMMAND_MANIFEST_IDS as $t, MIN_RECOVERY_CHAR_BUDGET as A, confirmRebind as Aa, isCurrentAcceptedBoundary as Ai, ToolCallInput as An, itemHoldsExecutionAuthority as Ao, bindExecutableIdentity as Ar, ClaimedMessage as At, PROOF_KINDS as B, DEPENDENCY_FREE_ONLY_CONDITION as Ba, DeriveResult as Bi, Repairability as Bn, restatedContentOf as Bo, LATEST_SUPPORTED_HOST_VERSION as Br, HostProfileError as Bt, RC015_RC2_HOST_PACKAGES as C, ReleaseObservedIdentity as Ca, BoundaryEffectuation as Ci, ShellParseStatus as Cn, introducesActionClause as Co, HostLockContext as Cr, evidenceMatchesItem as Ct, CLEANUP_CONDITION_RULE_COMPACT as D, ProposeOutcome as Da, GoalBoundaryAccess as Di, parseShellCommand as Dn, isOpenObligation as Do, HostProfileKind as Dr, ManifestIssue as Dt, CLEANUP_CONDITION_RULE as E, BoundedSource as Ea, GoalActivationState as Ei, parsePwshCommand as En, isInformationalFragment as Eo, HostPlatform as Er, CommandSurfaceManifest as Et, openItems as F, rebindResponse as Fa, BoundaryDisposition as Fi, extractToolSubject as Fn, namedActions as Fo, evaluateToolSurfaceCapability as Fr, claimedBatchHasRealRootInput as Ft, ProofHostSurface as G, ProcessExitStatus as Ga, EvidenceParseStatus as Gi, evidenceAvailabilityReason as Gn, ACTION_MANIFEST as Go, compareHostVersions as Gr, injectActiveProfileHostLock as Gt, PROOF_MANIFEST_DOMAIN_V2 as H, DependencyStatus as Ha, DerivedEnvelope as Hi, UnifiedItemDiagnosis as Hn, splitTextFragments as Ho, ParsedHostVersion as Hr, combineHostPolicy as Ht, recoveryDigest as I, replayRebindResult as Ia, BoundaryQualificationKind as Ii, isDeterministicCheck as In, opensWithDirective as Io, hostVersionFromPackages as Ir, firstStepGuidance as It, ProofKindV2 as J, RemovalOutcomeReport as Ja, ExternalOperation as Ji, CAPTURE_V042_NOTICE as Jn, ActionSpec as Jo, satisfiesSupportedHostRange as Jr, packageRowsFromPnpmLock as Jt, ProofKind as K, ProcessFactSource as Ka, EvidenceRole as Ki, itemDiagnosis as Kn, ACTION_MANIFEST_VERSION as Ko, evaluateMinimumHostVersion as Kr, inspectTargetHostGraph as Kt, renderRecoveryPacket as L, CapabilityFact as La, DeferAuthorization as Li, withDurability as Ln, qualificationOfClause as Lo, selectHostCohort as Lr, lifecyclePhase as Lt, carriesCleanupCondition as M, proposeRebindOutcome as Ma, AssetInterpretationFact as Mi, ToolSubject as Mn, legacyQuestionReadingIsInformational as Mo, evaluateExternalWaitCapability as Mr, FirstStepInjection as Mt, cleanupConditionFor as N, proposeRebindV042 as Na, AssetObligation as Ni, evidenceFromPersistedToolResult as Nn, maskCodeSpans as No, evaluateHostCapability as Nr, FirstStepPreviewInput as Nt, CLEANUP_CONDITION_RULE_SHORT as O, RebindArgs as Oa, availableBoundaryQualifications as Oi, goalCompletionDenial as On, isQuestionScopeNeedingReview as Oo, HostToolSurface as Or, OperationVerbEntry as Ot, closingHint as P, rebindAttemptKey as Pa, BindingActionClosure as Pi, extractTextContent as Pn, maskQuotedSpans as Po, evaluateHostLock as Pr, LifecyclePhase as Pt, ProofObligationV2 as Q, capabilityFactOf as Qa, GuardEvidence as Qi, PROTOCOL_V5_NOTICE as Qn, SEMANTIC_ACTIONS as Qo, AuthorityKind as Qr, verifyComposedHostLockDump as Qt, ALPHA3_HOST_PACKAGES as R, CapabilityGap as Ra, DelegationRef as Ri, CertificationSupport as Rn, questionHeadsClause as Ro, HostVersionDecision as Rr, previewFirstStepInjection as Rt, snapshotSessionEvents as S, ReleaseGateDecision as Sa, segmentClauses as Si, ParsedShell as Sn, interpretMessage as So, HostCohortSelectionReason as Sr, evidenceCoverage as St, RC1_HOST_PACKAGES as T, ReleaseSettlement as Ta, BoundaryRequest as Ti, isRunExecutable as Tn, isExplanationScope as To, HostLockStatus as Tr, COMMAND_SURFACE_MANIFEST as Tt, PROOF_PROTOCOL_VERSION as U, DerivedProcessFacts as Ua, EvidenceBinding as Ui, capabilityRemedyPhrase as Un, statefulActionsOfScope as Uo, SUPPORTED_HOST_RANGE as Ur, hostLockContextFromComposedDump as Ut, PROOF_KINDS_V2 as V, DeclaredOperationResult as Va, DeriveScope as Vi, TaskKind as Vn, semanticActionOfScope as Vo, MIN_SUPPORTED_HOST_VERSION as Vr, TargetHostGraph as Vt, PROOF_PROTOCOL_VERSION_V2 as W, OperationAttribution as Wa, EvidenceOutcome as Wi, deriveItemDiagnosis as Wn, verbIsNegated as Wo, SUPPORTED_HOST_VERSIONS as Wr, hostLockRowsFromComposedDump as Wt, ProofManifestV2 as X, admissibleForRemoval as Xa, GuardBoundary as Xi, PROTOCOL_V3_NOTICE as Xn, CERTIFICATE_VERSION as Xo, AuthorityBlock as Xr, resolveActiveProfileHostLock as Xt, ProofManifest as Y, actionHasCertificationPath as Ya, GoalRef as Yi, DEFAULT_DELEGATION_TOOL_NAMES as Yn, BOUNDED_ARTIFACT_TYPES as Yo, currentContractDigest as Yr, readActiveHostGraph as Yt, ProofObligation as Z, capabilityConsequence as Za, GuardCheckpoint as Zi, PROTOCOL_V4_NOTICE as Zn, CERTIFICATE_VERSION_V2 as Zo, AuthorityBlockKind as Zr, resolveInstalledHostLock as Zt, progressFingerprint as _, VerificationContract as _a, environmentDefaultRepositoryTarget as _i, parseGitCommandManifest as _n, explanationHasActionResidue as _o, HostCapabilityEvaluation as _r, normalizeClause as _s, sessionQueryV2 as _t, NO_PROGRESS_RECORD_PREFIX as a, HostStatus as aa, CONFIRM_LINE_PATTERN as ai, GitCommandRejected as an, ExecutionQualification as ao, ALPHA2_DSHMARKET_139_HOST_PACKAGES as ar, actionCompatible as as, createProofManifest as at, SessionApiError as b, createProjection as ba, extractOperation as bi, CanonicalArgv as bn, hasQuestionScope as bo, HostCohort as br, sha256 as bs, EvidenceFacetCoverage as bt, classifyCompletionClaim as c, NeedsReviewReason as ca, parseConfirmationMessage as ci, GitPrestateCheck as cn, LEGACY_QUALIFICATION as co, BASE_HOST_PACKAGES as cr, requestedIdentityKey as cs, proofDigest as ct, decisionBoundaryKey as d, TargetCaptureReasonCode as da, certifyCheckpoint as di, LinearCommitReadback as dn, ScopeInterpretation as do, ExecutableIdentity as dr, semanticActionFromCommand as ds, proofHostSurfacesOf as dt, GuardItem as ea, segmentAuthorityBlocks as ei, GIT_COMMAND_TEMPLATES as en, removalIsComplete as eo, deriveProjection as er, STOP_PROTOCOL_VERSION as es, SessionQuery as et, isRootPauseRequest as f, TargetCaptureStatus as fa, CaptureScope as fi, commitIndexSnapshotDigest as fn, actionVerbMatches as fo, ExecutableIdentityBinding as fr, semanticActionFromText as fs, proofOperationMatches as ft, observeAssistantOutcome as g, TargetValue as ga, classifyClause as gi, gitCommandMatchesTarget as gn, clauseIsProtected as go, HostAuditProvenance as gr, digestStrings as gs, sessionQuery as gt, latestRootInstruction as h, TargetTuple as ha, captureItem as hi, executeRevalidatedGitEffect as hn, clauseIsGoverned as ho, HOST_COHORTS as hr, canonicalizePath as hs, scopeCoverageDigest as ht, CompletionDisposition as i, GuardProjection as ia, classifyUserInteraction as ii, GitCommandParseResult as in, Executee as io, ACTIVE_HOST_LAUNCHER_VERSION as ir, StatefulAction as is, canonicalProjection as it, RecoveryOptions as j, proposeRebind as ja, qualifyBoundary as ji, ToolResultInput as jn, kindOfScope as jo, bindLiveGoalCapability as jr, FIRST_STEP_GUIDANCE as jt, DEFAULT_RECOVERY_CHAR_BUDGET as k, RebindProposal as ka, effectuateBoundary as ki, hasCurrentCertificate as kn, isRestatement as ko, LEGACY_HOST_COHORTS as kr, validateManifest as kt, decideTurnBoundary as l, PersistenceAuthorization as la, CheckpointResult as li, GitPrestateEnvelope as ln, QualificationReason as lo, DEFAULT_HOST_LOCK as lr, requestedTargetAuthorizesMutation as ls, proofDigestV2 as lt, latestAssistantText as m, TargetSourceKind as ma, captureClause as mi, createGitPrestateEnvelope as mn, clauseAsksOwnQuestion as mo, HOST_CAPABILITY_PACKAGE_GROUPS as mr, validateActionTarget as ms, requiredSubjectsOf as mt, AssistantOutcomeObservation as n, GuardItemStatus as na, UserInteractionKind as ni, GitCommandAccepted as nn, AuthorityDisposition as no, ACTIVE_HOST_COHORT_ID as nr, SUPPORTED_EVIDENCE_ADAPTERS as ns, bindProofToProjection as nt, NO_PROGRESS_TURNS_BEFORE_STOP as o, MessageCoverage as oa, ParsedConfirmation as oi, GitEffectExecution as on, GRANTED_QUALIFICATION as oo, ALPHA2_HOST_PACKAGES as or, boundedArtifactChoiceMatches as os, createProofManifestV2 as ot, isWholeTaskCompletionClaim as p, TargetSource as pa, ClauseSegment as pi, commitTreeSnapshotDigest as pn, clarifiedSpanOf as po, GOAL_HOST_PACKAGES as pr, validateActionManifest as ps, proofV2Rejection as pt, ProofKindCapability as q, ProcessOutcomeReason as qa, ExpectedTransition as qi, relevantEvidence as qn, ActionManifest as qo, parseHostVersion as qr, packageRowsFromActiveGraph as qt, CONTROL_RECORD_PREFIX as r, GuardOperation as ra, classifyTaskIntent as ri, GitCommandManifest as rn, DirectiveClass as ro, ACTIVE_HOST_COHORT_IDS as rr, SemanticAction as rs, bindProofV2ToProjection as rt, TurnStoppingDecision as s, NeedsReviewFact as sa, isFrozenV042RebindResponse as si, GitEffectRunner as sn, InterpretOptions as so, AuditedExecutable as sr, isStatefulAction as ss, proofCapabilityReport as st, supersedeItem as t, GuardItemKind as ta, TaskIntent as ti, GitAdapterAction as tn, removalIsPartiallyKnown as to, legacyRecordsNeedingReview as tr, STOP_PROTOCOL_VERSION_V2 as ts, SessionQueryV2 as tt, decideTurnStopping as u, SourceSpan as ua, RejectedBinding as ui, GitTargetIdentity as un, QualificationStatus as uo, EXPECTED_HOST_PACKAGES as ur, requestedTargetMatchesResolved as us, proofEvidenceConstraints as ut, SESSION_API_UNSUPPORTED as v, WaitAuthorization as va, extractArtifactPaths as vi, revalidateGitPrestate as vn, governedClauseRestrictsExecution as vo, HostCapabilityId as vr, sanitizeClauseText as vs, validateProofManifest as vt, RC015_HOST_PACKAGES as w, ReleaseOperation as wa, BoundaryQualification as wi, canonicalArgvFromCommand as wn, isExecutableItem as wo, HostLockEvaluation as wr, isVerifyingCapability as wt, V3SessionLike as x, PackageRow as xa, isInformationalMessage as xi, CanonicalCommandSurface as xn, interpretClause as xo, HostCohortSelection as xr, bindingSatisfies as xt, SESSION_EVENT_ENVELOPE_INVALID as y, WorkUnit as ya, extractMethod as yi, verifiedLinearCommitReadback as yn, hasOrderedCoordination as yo, HostCapabilityRequest as yr, sanitizeUrl as ys, validateProofManifestV2 as yt, PROOF_CAPABILITY_MATRIX as z, CapabilityRemedy as za, DeriveConfig as zi, DiagnosisNextAction as zn, reportingHeadGoverns as zo, HostVersionStatus as zr, ActiveProfileHostLock as zt };