一键导入
sublate
Vet working context by dialectical antithesis before action. Type: (ContextSuspect, User, VET, WorkingContext) → VettedContext. Alias: Elenchus(ἔλεγχος).
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Vet working context by dialectical antithesis before action. Type: (ContextSuspect, User, VET, WorkingContext) → VettedContext. Alias: Elenchus(ἔλεγχος).
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
| name | sublate |
| description | Vet working context by dialectical antithesis before action. Type: (ContextSuspect, User, VET, WorkingContext) → VettedContext. Alias: Elenchus(ἔλεγχος). |
Vet working context by dialectical antithesis before action through structured per-source disposition judgment, resolving suspect context into vetted context. Type: (ContextSuspect, User, VET, WorkingContext) → VettedContext.
Elenchus (ἔλεγχος): A dialogical act of cross-examination — from the Socratic refutation tradition meaning "testing by argument" — resolving suspect working context into vetted context through provenance challenge, counterfactual gap forecasting, cross-source consistency check, and inference-fallacy archetype scan before pre-execution sync. The protocol's lexical verb is /sublate. Each suspect source undergoes the motion of stating its current claim, surfacing what would shake it, and then deciding how to handle the source in light of that challenge (the Hegelian Aufhebung — preserve + negate + lift up — supplies the source vocabulary).
── FLOW ──
W → identify(W) → S_high →
S_high = ∅: emit empty VettedContext (extension) → deactivate -- trivial convergence (no audit-candidate source)
S_high ≠ ∅: tag(provenance, freshness, leverage) → S' → posit(antithesis) → A[] →
Q(per-source disposition slots) → J → integrate(J, S') → V →
(loop if ∃ s : disposition(s) = Deferred ∧ trigger(s) met)
── MORPHISM ──
WorkingContext
→ identify(high_leverage_sources, S_high) -- silent scan for sources warranting audit
→ tag(provenance, freshness, leverage) -- attach metadata triple per source
→ posit(antithesis per source) -- Pattern A ∪ Pattern B ∪ Pattern C ∪ Pattern D ∪ Emergent(Pattern)
→ present(antitheses, disposition slots) -- per-source Constitution interaction
→ judge(disposition per source) -- closed coproduct response
→ emit(VettedContext with disposition table)
→ VettedContext
requires: working_context_pre_execution_committed -- runtime checkpoint (Phase 0)
deficit: ContextSuspect -- activation precondition (Layer 1)
preserves: source_chain -- W.sources is read-only; antithesis and disposition annotate, never mutate
invariant: Dialectical Vetting over Silent Trust
── TYPES ──
W = WorkingContext { sources: List(Source), action: Prospect }
Source = { content: String, origin: Origin, observed_at: Timestamp, downstream: List(Reference) }
Origin ∈ {UserStatement, DocumentRead, ToolOutput, AIInference, ExternalAPI, PastSession} ∪ Emergent(Origin)
identify = WorkingContext → Set(Source) -- silent selection per Source Identification Criteria
S_high = Set(Source) -- audit-candidate set; cardinality 0 yields trivial convergence
ClaimRef = { referent: String, claim_kind: String, scope: String, text: String }
-- claim_kind = the SEMANTIC CATEGORY of claim the source is tested as authority for (a distinct axis from an evidence-channel kind); values are protocol-local (self-contained, no shared cross-protocol enum). text = claim verbatim, used by Pattern A's cite-claim-verbatim test
ProvenanceTag = { source: Source, claim: ClaimRef, evidence: VerificationPath, confidence: Float }
-- claim-relative tag: the source's authority is recorded for the claim it authorizes, not for the source in general
VerificationPath ∈ {DirectObserved, InferredFromN, ExternalCited, ProvisionalAssumption}
FreshnessTag = { source: Source, age: Duration, horizon: Duration, stale: Bool }
-- currency only: a source can be fresh yet still not track the behavior its claim asserts (it documents intent with nothing enforcing the match). Freshness is necessary but not sufficient for trusting a source; the support-integrity challenge is posited per source in Pattern A (Source Provenance Audit).
LeverageTag = { source: Source, downstream_count: Nat, branches: Set(Reference) }
S' = Map(Source, ProvenanceTag × FreshnessTag × LeverageTag)
Pattern ∈ {ProvenanceAudit, CounterfactualGap, CrossSourceConsistency, InferenceFallacyAudit} ∪ Emergent(Pattern)
Antithesis = { source: Source, pattern: Pattern, thesis: String, antithesis: String, basis: String }
A[] = List(Antithesis)
Disposition = Confirmed -- assumption survived antithesis
| Revised(refinement: String) -- assumption updated per antithesis
| Discarded(reason: String) -- assumption withdrawn
| Deferred(re_trigger_condition: String) -- next iteration on trigger
| Conditional(measurement: String) -- pending external measurement
| Bounded(external_reference: String) -- routed to other source-of-truth
| Routed(downstream_protocol: ProtocolId) -- handed off to a different protocol
Qs = Per-source disposition gate
J = Map(Source, Disposition)
V = VettedContext { dispositions: J, trace: Map(Source, Antithesis) }
trigger_met(c) = Bool -- evaluator: true when a Deferred re_trigger_condition c is now satisfied at the LOOP scan
unresolved(Λ) = {s ∈ S_high | s ∉ dom(Λ.dispositions) ∨ (∃c. Λ.dispositions(s) = Deferred(c) ∧ trigger_met(c))} -- sources still requiring judgment: unjudged, or Deferred whose trigger has fired (re-vetting due); an untriggered Deferred is resolved (vetted-compatible), not pending
vetted(V) = dom(J) = S_high ∧ ∀ s ∈ S_high : ¬(∃c. J(s) = Deferred(c) ∧ trigger_met(c))
VettedContext = V where vetted(V)
EarlyExit = V where user_esc ∨ user_cancel -- non-convergent early exit: V as of exit (dispositions/trace = judgments recorded so far, empty when exit precedes the first judged batch); working context remains un-vetted (or partially vetted under user_cancel); unresolved sources (unresolved(Λ): unjudged, or Deferred whose trigger has fired) declared as unresolved residual
── PHASE TRANSITIONS ──
Phase 0: W → identify(W) → S_high -- silent scan (no user interaction)
Phase 0 → converge (trivial): S_high = ∅ → emit empty VettedContext (dispositions = ∅, trace = ∅) as relay, deactivate -- trivial convergence (TYPES: cardinality 0; no audit-candidate source)
Phase 0 → Phase 1: S_high ≠ ∅
Phase 1: S_high → Step₁ tag(provenance, freshness, leverage) → S' [Tool: Read, Grep]
Step₂ posit(antithesis per s ∈ S') → A[] -- per-source Pattern A ∪ B ∪ C ∪ D ∪ Emergent(Pattern) generation
Phase 2: (A[], disposition slots) → Qs(per-source) → Stop → J [Tool: Constitution interaction]
Phase 3: J → integrate(J, S') → V -- per-source disposition recorded
── LOOP ──
After Phase 3: scan for Deferred dispositions whose re_trigger_condition is met.
If ∃ s : J(s) = Deferred(c) ∧ trigger_met(c): return to Phase 1 with s as fresh ContextSuspect; new antithesis under updated evidence.
If all dispositions resolved (no Deferred or all triggers unmet): terminate with VettedContext.
User can exit at Phase 2 (user_esc).
Continue until: vetted(V) OR user_esc/user_cancel (EarlyExit, not VettedContext).
Convergence evidence: At vetted(V), present transformation trace — for each s ∈ S_high, show (s → antithesis(s) → disposition(s)). Convergence is demonstrated, not asserted.
On user_esc/user_cancel: present partial trace over judged sources (s → antithesis(s) → disposition(s) for each judged s), then declare unresolved(Λ) sources in S_high (unjudged, or Deferred whose trigger has fired — re-vetting due at exit) as unresolved residual.
── CONVERGENCE ──
vetted(V): see TYPES
progress(Λ) = 1 if |S_high| = 0 else 1 - |unresolved(Λ)| / |S_high| -- S_high = ∅ (Phase 0 trivial convergence, no audit-candidate source) is fully converged, not undefined; progress = 1 coincides with vetted(V)
early_exit = user_esc ∨ user_cancel
── TOOL GROUNDING ──
-- Realization: Constitution → TextPresent+Stop; Extension → TextPresent+Proceed
Phase 0 identify (sense) → Internal analysis (high-leverage / age / chain / contradiction / inference-character scan)
Phase 0 trivial_converge (extension) → TextPresent+Proceed (conditional: S_high = ∅ — relay the empty VettedContext, no audit-candidate source; deactivate)
Phase 1 ProvenanceTag (observe) → Read, Grep (verification of source origin, authorized claim, and downstream references)
Phase 1 AntithesisPosit (sense) → Internal analysis (Pattern A/B/C/D/Emergent antithesis generation per source)
Phase 2 Qs (constitution) → present (mandatory; per-source disposition slots; Esc → loop termination at LOOP level, not a Disposition)
Phase 3 integrate (track) → Internal state update (Λ.dispositions, Λ.history)
converge (extension) → TextPresent+Proceed (per-source disposition trace; proceed with VettedContext)
esc/cancel (extension) → TextPresent+Proceed (partial per-source disposition trace + unresolved-source residual declaration (unresolved(Λ)); terminate as EarlyExit, not VettedContext)
── MODE STATE ──
Λ = {
phase: Phase,
W: WorkingContext,
S_high: Set(Source),
tagged: Map(Source, ProvenanceTag × FreshnessTag × LeverageTag),
antitheses: Map(Source, Antithesis),
dispositions: Map(Source, Disposition),
history: List<(Source, Antithesis, Disposition)>,
active: Bool,
cause_tag: String
}
── COMPOSITION ──
*: product — (D₁ × D₂) → (R₁ × R₂). registered dependency edges preserved. Pattern resolution emergent via session context.
Dialectical Vetting over Silent Trust: Working context accumulated across a session carries silent decay — sources age, provenance chains lengthen, downstream concentration warps incidental claims into load-bearing premises, and cross-source contradictions hide behind topical proximity. Elenchus surfaces each suspect source against a deliberately posited antithesis before action; the user judges each disposition per source. The loop dissolves compounding context cost before it forces whole-system refactoring downstream.
Command invocation activates mode until per-source disposition is judged for all audit-candidate sources.
Activation layers:
/sublate slash command or description-matching input. Always available.The User-initiated stance is calibrated: AI auto-detection of "this context smells stale" carries a false-positive cost (interrupting flow with low-confidence vetting prompts) that outweighs its savings (the user already knows when they are about to externalize and is best positioned to invoke).
Supersedes: Direct execution patterns that proceed without per-source disposition judgment (Working context must be vetted source-by-source via Cognitive Partnership Move (Constitution), not assumed silently)
Retained: Safety boundaries, tool restrictions, user explicit instructions
Action: At Phase 2, present per-source disposition slots with antithesis evidence via Cognitive Partnership Move (Constitution).
| Signal | Detection |
|---|---|
| Pre-sync commit | User signals upcoming externalization of working context (meeting share, PR push, deploy, deposit) |
| Long-collected context | User signals duration concern about accumulated context |
| Provenance concern | User questions verification status of a specific source |
| Counterfactual concern | User varies a current condition and asks whether downstream still holds |
| Cross-source friction | User notices two collected sources pointing at the same referent diverging |
| Inference-soundness concern | User questions whether a conclusion's reasoning holds rather than the source it cites |
Qualifying condition: Activate only when working context exists and the user signals an upcoming pre-execution sync or externalization. The protocol does not activate on freshly-arrived context with no audit-candidate sources — the silent scan at Phase 0 yields S_high = ∅, which converges trivially.
Skip:
/inquire or /elicit on the same working context within the same session and no new sources have accumulated| Trigger | Effect |
|---|---|
| All dispositions resolved (no Deferred or all triggers unmet) | Emit VettedContext, proceed |
| Phase 0 scan yields S_high = ∅ | Emit empty VettedContext trivially (relay), deactivate |
| User Esc | Return to normal operation; working context remains un-vetted |
| User explicitly cancels mid-loop | Accept partial vetting; remaining sources annotated as un-vetted in trace |
User-initiated activation triggers Phase 0's silent scan. The scan does not gate activation — its purpose is to select which sources within the committed working context warrant audit. The five criteria below guide source selection; sources matching one or more enter S_high.
| Criterion | Condition | Pattern Hint |
|---|---|---|
| High-leverage accumulation | A single source carries downstream weight beyond a working threshold (downstream_count ≥ 3 is the current working hypothesis) — multiple decisions, sub-plans, or commit paths depend on it | Pattern A (provenance) |
| Source age beyond horizon | Source's observed_at + horizon(origin) < now; horizon varies by origin (UserStatement and ToolOutput have shorter horizons than DocumentRead and PastSession) | Pattern A or B |
| Provenance-chain length | The belief depends on an N-step inference chain rather than direct observation, citation, or measurement | Pattern A (provenance) |
| Cross-source contradiction | Two collected sources nominally pointing at the same referent diverge in their content or implication | Pattern C (cross-source consistency) |
| Inference-character conclusion | The source is itself a conclusion reached by inference (origin AIInference, or a conclusion beginning to function as a standing premise) | Pattern D (inference fallacy) |
N (high-leverage threshold) and horizon defaults per origin are residual variables refined through accumulated use evidence. The five criteria are working hypotheses, not closed; an Emergent criterion may surface on use.
Four patterns are inscribed. Each pattern pairs a current claim with a challenge that would shake it; the AI surfaces both at Phase 1 Step 2 per source, and the user decides how to handle the source at Phase 2. A further Emergent pattern is permitted but not pre-named — it must satisfy ContextSuspect → VettedContext (the challenge must directly confront the source's claim, not stand as a side verification check).
Patterns A, B, and C vet a source along the source-vetting axis (provenance authority, counterfactual robustness, cross-source agreement). Pattern D vets along the reasoning axis — whether the inference that produced a conclusion is itself sound — complementing the source-vetting patterns so that the inference, not only its source, is examined.
When a source claims authority, the challenge asks whether that authority is actually verified for the claim it is grounding.
When a source supports a conclusion under current conditions, the challenge changes the condition and asks whether the conclusion still stands.
When two sources point at the same referent but diverge, the challenge forces an explicit reconciliation of referent and claim-kind. Candidate pairs are enumerated over sources SHARING THE SAME referent (not all pairwise combinations); for each such pair, claim-kind compatibility is tested before a divergence is flagged.
When a source is itself a conclusion reached by inference — an AIInference origin, or any conclusion that is starting to be used as a standing premise — the challenge tests whether the conclusion's validity depends on a reasoning flaw rather than on the source it cites.
Boundary with Pattern B: Pattern B is a counterfactual the user frames — the user supplies condition Z and asks whether Y still holds. Pattern D is the AI reverse-deriving the flaw condition from a fallacy archetype, moving the discovery burden from the AI happening to pick the right counterfactual to an archetype-driven scan of the inference itself. A conclusion can pass Pattern B (no user-supplied condition shakes it) yet fail Pattern D (its soundness silently depends on treating the present as invariant).
Analyze the working context and select audit-candidate sources. This phase is silent — no user interaction.
Scope restriction: Phase 0 is silent. Does NOT modify files, call external services, or alter session state.
Generate metadata triple plus dialectical antithesis per source.
Step 1 — Tagging: For each s ∈ S_high, attach ProvenanceTag (authorized claim + verification path + confidence), FreshnessTag (age, horizon, stale flag), and LeverageTag (downstream_count, branches). Use Read and Grep to verify provenance against the source's claimed origin where the source's content cites verifiable artifacts. The ProvenanceTag binds authority to the claim's referent, claim_kind, and scope; reuse of the same source as authority for a different claim must surface through Pattern A or Pattern C rather than silently carrying over. For an audit-candidate source, provenance verification also asks whether the source actually tracks the behavior its claim asserts or merely documents it — a source that is fresh yet not tied to that behavior is posited against in Pattern A on that basis, not cleared by its freshness verdict alone. When enforcement coupling cannot be determined from the available tools, posit the gap as a Pattern A antithesis candidate with basis "enforcement coupling not observable from available tools" — neither skip it silently nor assert coupling with false confidence.
Step 2 — Antithesis positing: For each tagged source, select the most applicable pattern (A, B, C, D, or Emergent) and construct an antithesis. A source that is itself an inferred conclusion (origin AIInference, or a conclusion functioning as a standing premise) is a candidate for Pattern D (see Pattern D's Boundary with Pattern B for the reverse-derivation mechanism). The antithesis must:
Cross-session enrichment: Prior session indices from the hypomnesis store (prior-session recall indices), when present, may seed Phase 1 pattern selection; the constitutive judgment remains with the user.
Present antitheses and disposition slots via Cognitive Partnership Move (Constitution). Constitution presentation yields turn for user response.
Pre-gate text output (Context-Question Separation): For each source in S_high, present as text output:
Then present a per-source disposition interaction. Each source receives its own slot; batching across sources is permitted when slot count ≤ 4, otherwise process sources in batches of up to 4.
For each batch of up to 4 sources, present:
question: "Disposition for source [N]: [brief source identifier]"
options:
- label: "Confirmed"
description: "Antithesis examined; the original claim survives. Downstream usage proceeds as-is."
- label: "Revised([refinement])"
description: "Antithesis surfaces a concrete update; the claim is rewritten in the working context. Downstream usage proceeds against the refined form."
- label: "Discarded([reason])"
description: "Antithesis defeats the claim; the source is withdrawn from the working context. Downstream usage must re-derive without it."
- label: "Deferred([re_trigger_condition])"
description: "Disposition pending; the loop returns to this source when the named condition is met. Downstream usage proceeds without commitment until re-evaluation."
- label: "Conditional([measurement])"
description: "Disposition pending external measurement; downstream usage tags the source as provisional until the measurement resolves."
- label: "Bounded([external_reference])"
description: "The authoritative answer lives outside this session; downstream usage cites the external reference rather than the in-session source."
- label: "Routed([downstream_protocol])"
description: "The challenge belongs to a different protocol family — handed off to the appropriate downstream protocol for resolution."
Other: user composes a free-response disposition; AI maps the response to the closest coproduct variant or surfaces an Emergent disposition candidate.
Option budget: 4 sources per Constitution interaction is the working ceiling. When |S_high| > 4, sources are batched in groups of 4; each batch is its own Constitution interaction with its own Stop.
After each Constitution interaction returns J, integrate into Λ.dispositions and Λ.history. No user-facing action — internal state update only.
If all sources in S_high are now in J: proceed to LOOP evaluation. If sources remain unjudged across batches: return to Phase 2 with the next batch.
At vetted(V), present the transformation trace before declaring convergence. For each s ∈ S_high:
[Source identifier]
Pattern: A | B | C | D | Emergent(name)
Antithesis: [concrete antithesis text]
Disposition: [chosen variant with parameters]
Present transformation trace as text output, then proceed with the vetted context. The relay presentation does not gate; it demonstrates the completed morphism.
/inquire or /attend, not here.AIInference, or a conclusion functioning as a standing premise); because sublate's unit is already Source, this is a pattern, not a new protocol.Work-unit triage for GitHub issues. Groups raw issues, fuses each group with the AGENTS.md northstar in session, and composes /distill to hand off each routed work unit.
Review markdown or HTML artifacts before fixation (publish/commit/deposit/merge) via /inquire × /sublate × /gap × /contextualize through a channel-first browser preview loop. Markdown renders via marked; HTML serves directly through a Shadow DOM. Each round mode is `apply + scan` (apply queued comments now + scan to surface findings into the next round's sidepanel) or `apply` (apply only). User-invoked via /comment-review.
Scoped empirical validation utility. Decomposes a target↔surrogate equivalence claim into verifiable facets, bounds a user-synchronized test space, captures evidence inside it, and carries the uncovered complement forward. Use when an inference-uncertain proposition (does it behave / perform / transfer / hold value) needs evidence in a smaller stand-in space, and you want the claim scoped to the conditions actually tested rather than asserted absolutely.
Convergence-paced code/PR review-resolve loop via /review-loop. Drives a pluggable review source (codex | code-review), passing it the design intent already captured for the changed surface (relevant project rules + adjacent design comments + decisions constituted at the loop's own gates, with a mission-anchored severity steer) so intentional documented choices are pre-filtered upstream, verifies each finding against the codebase (/inquire) and work-flow (/contextualize), auto-applies Mechanical fixes (Extension) and gates Judgment fixes by shared disposition (Constitution), risk-screens applies (substrate risk → harness permission; epistemic risk → direct Constitution), then re-reviews until the source verdict converges to approve — recurring signals escalate to constituted design decisions rather than suppression, keeping the reviewer independent. At exit, converged or free, a decision constituted at its gates is offered for durable record on the home its reach implies (for a PR scope, the issues the PR clo
Deficit Recognition Probe — surface multiple deficit hypotheses for the user's current situation and route by user-constituted recognition (fit review, not protocol scoring).
Distill a session-tethered working context into a self-contained portable handoff a fresh zero-memory agent can execute from. Closes deictic, grounding, relevance, provenance, and compression gaps, then emits a prose channel plus a schema-versioned TaskStateBlock. Type: (ContextTethered, AI, DISTILL, WorkingContext) → PortableHandoff. Alias: Diylisis(διύλισις).