Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
62 commits
Select commit Hold shift + click to select a range
c94ee83
feat(core): freeze context admission protocol v1
Trecek Jul 23, 2026
674a8a6
fix(core): tighten types and mypy annotations in context admission re…
Trecek Jul 23, 2026
fbc9a28
style(core): apply ruff format to state machine test
Trecek Jul 23, 2026
f5fcca5
fix(core): derive rollover source epoch from current state snapshot
Trecek Jul 23, 2026
9aaddb6
fix(core): complete context admission audit remediation
Trecek Jul 24, 2026
bcba2fb
fix(core): close context admission audit gaps
Trecek Jul 24, 2026
797230b
fix(core): satisfy context admission implementation audit
Trecek Jul 24, 2026
01ddacd
fix(tests): use canonical dispatch identities in resume fixtures
Trecek Jul 24, 2026
dfe66fa
fix(review): preserve rollover epoch release policy
Trecek Jul 24, 2026
788486f
fix(review): reject generation reservation ID reuse
Trecek Jul 24, 2026
d78054b
fix(review): make repeated idempotency expiry typed
Trecek Jul 24, 2026
15f886d
fix(review): bound protocol integers to 64 bits
Trecek Jul 24, 2026
d5e2b44
fix(review): reject noncanonical tagged mappings
Trecek Jul 24, 2026
7fbd74a
fix(review): suppress invalid enum value causes
Trecek Jul 24, 2026
76e18fd
fix(review): require typed model identity fields
Trecek Jul 24, 2026
b904356
fix(review): enforce opaque identifier contract
Trecek Jul 24, 2026
439d6b8
fix(review): validate witness occurrence authority
Trecek Jul 24, 2026
686eb2e
fix(review): constrain protected release witnesses
Trecek Jul 24, 2026
447b71b
fix(review): enforce kebab-case reason codes
Trecek Jul 24, 2026
faf8ccb
fix(review): enforce batch lifecycle count invariants
Trecek Jul 24, 2026
0fca35c
fix(review): validate coverage evidence provenance
Trecek Jul 24, 2026
589756a
fix(review): validate journal identity duplication
Trecek Jul 24, 2026
2f92884
fix(review): reject global context overallocation
Trecek Jul 24, 2026
665d131
test(review): assert publication effect families
Trecek Jul 24, 2026
d4d0f63
test(review): cover every coverage selector mismatch
Trecek Jul 24, 2026
d9242d0
test(review): compare complete ADR coverage rows
Trecek Jul 24, 2026
c69e328
fix(review): preserve outstanding allocation invariants
Trecek Jul 24, 2026
2379ed7
test(review): bind rollover reservation to current epoch
Trecek Jul 24, 2026
e6afb89
test(review): scope state-machine identities by epoch
Trecek Jul 24, 2026
18ab64c
refactor(review): honor core type module boundary
Trecek Jul 24, 2026
a19970c
test(review): derive dispatch witnesses from active epoch
Trecek Jul 24, 2026
1a031de
fix(review): require rollover snapshot capacity deduction
Trecek Jul 24, 2026
b6d94b5
fix(review): scope generation invalidation to batch
Trecek Jul 24, 2026
f222e3e
fix(review): validate new generation reservation lifecycle
Trecek Jul 24, 2026
6a4a099
fix(review): reject closed batch identifier reuse
Trecek Jul 24, 2026
7394edb
fix(review): require reservation owner for active batch
Trecek Jul 24, 2026
d31748e
test(review): cover authority unavailable effects
Trecek Jul 24, 2026
1214661
test(review): drive multi-member batch lifecycle
Trecek Jul 24, 2026
3dc5477
test(review): preserve multi-member reservation revisions
Trecek Jul 24, 2026
8e9418f
test(review): align rollover fixtures with deduction evidence
Trecek Jul 24, 2026
a27ead2
test(review): avoid closed batch retry event collision
Trecek Jul 24, 2026
740c99d
fix(review): retain rollover generations by batch
Trecek Jul 24, 2026
c37bf47
fix(review): reject closed generation identifier reuse
Trecek Jul 24, 2026
7f71528
fix(review): constrain coverage evidence schema
Trecek Jul 24, 2026
d0f50f6
fix(review): validate idempotency tombstone bindings
Trecek Jul 24, 2026
9ea462e
fix(review): validate state journal coordinates
Trecek Jul 24, 2026
9b40f17
fix(review): require indeterminate reservation owner
Trecek Jul 24, 2026
7549263
test(review): scope rollover oracle by batch
Trecek Jul 24, 2026
5848771
fix(review): publish journal metadata atomically
Trecek Jul 24, 2026
abf0a2f
refactor(review): keep context contract within size guard
Trecek Jul 24, 2026
f8b42ee
fix(review): allow shared rejection coordinates
Trecek Jul 24, 2026
36efde3
test(review): drive retained shared request lifecycle
Trecek Jul 24, 2026
3f97e86
fix(review): suppress serialized constructor causes
Trecek Jul 25, 2026
893988f
fix(review): bound closed audit occurrences
Trecek Jul 25, 2026
3f0c2b8
fix(review): quarantine closed authority mismatches
Trecek Jul 25, 2026
2d9223d
fix(review): restore resolved closed capacity
Trecek Jul 25, 2026
773a85c
test(review): cover closed quarantine branches
Trecek Jul 25, 2026
6c36741
test(review): restrict generation start success state
Trecek Jul 25, 2026
1095e29
fix(review): suppress contract construction causes
Trecek Jul 25, 2026
583e5ac
refactor(review): isolate closed epoch accounting
Trecek Jul 25, 2026
54b7dd8
refactor(review): keep closed accounting within core contracts
Trecek Jul 25, 2026
3173e17
fix(merge): restore core stub import order
Trecek Jul 25, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
418 changes: 418 additions & 0 deletions docs/decisions/0007-context-admission.md

Large diffs are not rendered by default.

1 change: 1 addition & 0 deletions docs/decisions/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,3 +6,4 @@
- [0004-recipe-redelivery.md](0004-recipe-redelivery.md) — Sanctioned `load_recipe` channel for recipe knowledge re-delivery after Codex context compaction
- [0005-output-budget-protocol.md](0005-output-budget-protocol.md) — Bound per-response model-context output with lossless artifacts, pre-spend guards, and derived transport ceilings
- [0006-output-containment.md](0006-output-containment.md) — Retire pre-execution command-shape classification in favor of per-backend output-boundary bounding on measured bytes
- [0007-context-admission.md](0007-context-admission.md) — Freeze the versioned cumulative context-admission boundary, authority contract, producer coverage, and privacy rules
1 change: 1 addition & 0 deletions src/autoskillit/core/AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ Sub-packages: types/ (see types/AGENTS.md) and runtime/ (see runtime/AGENTS.md).
| `closure_hashing.py` | Canonical hash utilities for closure-mode verdict verification (stdlib-only, IL-0) |
| `path_containment.py` | Path containment guards — symlink/hardlink check, TOCTOU guard (stdlib-only, IL-0) |
| `closure_verifier.py` | Independent verifier for closure-mode reports (stdlib-only, IL-0) |
| `context_admission.py` | Pure protocol-v1 cumulative context-admission reducer, replay, and coverage resolution |

## Architecture Notes

Expand Down
133 changes: 133 additions & 0 deletions src/autoskillit/core/__init__.pyi
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,21 @@ from .claude_conventions import validate_add_dir as validate_add_dir
from .claude_conventions import validate_worktree_path as validate_worktree_path
from .closure_verifier import VerificationResult as VerificationResult
from .closure_verifier import verify_closure_report as verify_closure_report
from .context_admission import (
ContextAdmissionValidationError as ContextAdmissionValidationError,
)
from .context_admission import (
UnsupportedContextAdmissionProtocolError as UnsupportedContextAdmissionProtocolError,
)
from .context_admission import (
reduce_context_admission as reduce_context_admission,
)
from .context_admission import (
replay_context_admission as replay_context_admission,
)
from .context_admission import (
resolve_context_admission_coverage as resolve_context_admission_coverage,
)
from .feature_flags import _collect_disabled_feature_tags as _collect_disabled_feature_tags
from .feature_flags import is_feature_enabled as is_feature_enabled
from .git_remote import REMOTE_PRECEDENCE as REMOTE_PRECEDENCE
Expand Down Expand Up @@ -165,6 +180,10 @@ from .types import CODEX_SCHEMA_VERSION as CODEX_SCHEMA_VERSION
from .types import CODEX_SESSIONS_SUBDIR as CODEX_SESSIONS_SUBDIR
from .types import CODEX_VALID_MODEL_IDS as CODEX_VALID_MODEL_IDS
from .types import CONFIG_AUTHORITY_KEYS as CONFIG_AUTHORITY_KEYS
from .types import CONTEXT_ADMISSION_COVERAGE as CONTEXT_ADMISSION_COVERAGE
from .types import (
CONTEXT_ADMISSION_PROTOCOL_VERSION as CONTEXT_ADMISSION_PROTOCOL_VERSION,
)
from .types import CONTEXT_EXHAUSTION_MARKER as CONTEXT_EXHAUSTION_MARKER
from .types import CORE_PACKS as CORE_PACKS
from .types import DATA_MANIFEST_SOURCE_TYPES as DATA_MANIFEST_SOURCE_TYPES
Expand Down Expand Up @@ -271,16 +290,47 @@ from .types import UNGATED_TOOLS as UNGATED_TOOLS
from .types import VALID_INPUT_SPEC_TYPES as VALID_INPUT_SPEC_TYPES
from .types import VARIADIC_CLAUDE_FLAGS as VARIADIC_CLAUDE_FLAGS
from .types import WORKTREE_SKILLS as WORKTREE_SKILLS
from .types import AcceptInputEvent as AcceptInputEvent
from .types import ActiveContextAdmissionState as ActiveContextAdmissionState
from .types import AdmissionAttemptId as AdmissionAttemptId
from .types import AdmissionBatch as AdmissionBatch
from .types import AdmissionBatchId as AdmissionBatchId
from .types import AdmissionBatchRecord as AdmissionBatchRecord
from .types import AdmissionDecision as AdmissionDecision
from .types import AdmissionDecisionKind as AdmissionDecisionKind
from .types import AdmissionEffect as AdmissionEffect
from .types import AdmissionEventId as AdmissionEventId
from .types import AdmissionOccurrence as AdmissionOccurrence
from .types import AdmissionOccurrenceId as AdmissionOccurrenceId
from .types import AdmissionOccurrenceRecord as AdmissionOccurrenceRecord
from .types import AdmissionReplay as AdmissionReplay
from .types import AdmissionRequestId as AdmissionRequestId
from .types import AdmissionReservation as AdmissionReservation
from .types import AdmissionReservationId as AdmissionReservationId
from .types import AdmissionReservationKey as AdmissionReservationKey
from .types import AdmissionSequence as AdmissionSequence
from .types import AdmissionState as AdmissionState
from .types import AdmissionTransition as AdmissionTransition
from .types import AdmissionWitness as AdmissionWitness
from .types import AdmissionWitnessId as AdmissionWitnessId
from .types import AgentInstanceId as AgentInstanceId
from .types import AgentPackDef as AgentPackDef
from .types import AgentSessionResult as AgentSessionResult
from .types import AggregateRevision as AggregateRevision
from .types import ApiRetryOutcome as ApiRetryOutcome
from .types import AuditLog as AuditLog
from .types import AuthoritySourceId as AuthoritySourceId
from .types import AuthorityUnavailableEffect as AuthorityUnavailableEffect
from .types import AuthorityUnavailableEvent as AuthorityUnavailableEvent
from .types import BackendCapabilities as BackendCapabilities
from .types import BackendConventions as BackendConventions
from .types import BackendEventKind as BackendEventKind
from .types import BackgroundSupervisor as BackgroundSupervisor
from .types import BareResume as BareResume
from .types import CampaignProtector as CampaignProtector
from .types import CanonicalRepresentationManifest as CanonicalRepresentationManifest
from .types import CanonicalSpanId as CanonicalSpanId
from .types import CanonicalSpanOwner as CanonicalSpanOwner
from .types import CanonicalTokenUsage as CanonicalTokenUsage
from .types import CapabilityNotSupportedError as CapabilityNotSupportedError
from .types import CapabilityResolutionDetail as CapabilityResolutionDetail
Expand All @@ -290,6 +340,8 @@ from .types import CaptureValueType as CaptureValueType
from .types import CaptureValueTypeError as CaptureValueTypeError
from .types import ChannelBStatus as ChannelBStatus
from .types import ChannelConfirmation as ChannelConfirmation
from .types import ChargeCommittedEffect as ChargeCommittedEffect
from .types import ChargeDomain as ChargeDomain
from .types import CIRunScope as CIRunScope
from .types import CIWatcher as CIWatcher
from .types import ClaudeContentBlockType as ClaudeContentBlockType
Expand All @@ -302,6 +354,7 @@ from .types import CloneGateUnpublished as CloneGateUnpublished
from .types import CloneManager as CloneManager
from .types import CloneResult as CloneResult
from .types import CloneSuccessResult as CloneSuccessResult
from .types import ClosedEpochAudit as ClosedEpochAudit
from .types import ClosureAuthoritySpec as ClosureAuthoritySpec
from .types import ClosureReport as ClosureReport
from .types import ClosureRow as ClosureRow
Expand All @@ -312,30 +365,57 @@ from .types import CodexEventType as CodexEventType
from .types import CodexItemType as CodexItemType
from .types import CodingAgentBackend as CodingAgentBackend
from .types import CompletionRequiredResolver as CompletionRequiredResolver
from .types import ConflictRejectedEffect as ConflictRejectedEffect
from .types import ContaminationOutcome as ContaminationOutcome
from .types import ContextAdmissionEvent as ContextAdmissionEvent
from .types import ContextAdmissionState as ContextAdmissionState
from .types import ContextLineage as ContextLineage
from .types import ContextSessionId as ContextSessionId
from .types import ContextThreadId as ContextThreadId
from .types import ContextWindowSnapshot as ContextWindowSnapshot
from .types import CoverageEvidence as CoverageEvidence
from .types import CoverageEvidenceKind as CoverageEvidenceKind
from .types import CoverageState as CoverageState
from .types import CrossDomainAssessment as CrossDomainAssessment
from .types import CrossDomainPrescription as CrossDomainPrescription
from .types import DatabaseReader as DatabaseReader
from .types import DeliveryOccurrenceId as DeliveryOccurrenceId
from .types import DialingConfig as DialingConfig
from .types import DirectInstall as DirectInstall
from .types import DispatchGateType as DispatchGateType
from .types import DispatchIdentity as DispatchIdentity
from .types import DispatchRequestEvent as DispatchRequestEvent
from .types import EffectiveSkillCatalogAuthority as EffectiveSkillCatalogAuthority
from .types import EffectiveSkillInvocationAuthority as EffectiveSkillInvocationAuthority
from .types import EnvPolicy as EnvPolicy
from .types import EpochClosedEffect as EpochClosedEffect
from .types import EpochFenceProof as EpochFenceProof
from .types import ExpiredIdempotencyTombstone as ExpiredIdempotencyTombstone
from .types import ExpireIdempotencyKeyEvent as ExpireIdempotencyKeyEvent
from .types import FailureRecord as FailureRecord
from .types import FeatureDef as FeatureDef
from .types import FeatureLifecycle as FeatureLifecycle
from .types import FigureSpec as FigureSpec
from .types import FleetErrorCode as FleetErrorCode
from .types import FleetLock as FleetLock
from .types import FleetSessionEnv as FleetSessionEnv
from .types import ForkOccurrenceId as ForkOccurrenceId
from .types import GateState as GateState
from .types import GenerationReconciledEffect as GenerationReconciledEffect
from .types import GenerationReservationId as GenerationReservationId
from .types import GenerationReservationRecord as GenerationReservationRecord
from .types import (
GenerationReservationRecordedEffect as GenerationReservationRecordedEffect,
)
from .types import GenerationState as GenerationState
from .types import GitHubApiLog as GitHubApiLog
from .types import GitHubFetcher as GitHubFetcher
from .types import HardCapabilityMismatch as HardCapabilityMismatch
from .types import HeadlessExecutor as HeadlessExecutor
from .types import HeadlessSkillDispatchContract as HeadlessSkillDispatchContract
from .types import IdempotencyExpiredEffect as IdempotencyExpiredEffect
from .types import IdempotencyNamespace as IdempotencyNamespace
from .types import IdempotencyRecord as IdempotencyRecord
from .types import InfraExitCategory as InfraExitCategory
from .types import InfraOutcome as InfraOutcome
from .types import InputContractResolver as InputContractResolver
Expand All @@ -352,27 +432,42 @@ from .types import LensEntry as LensEntry
from .types import LoadReport as LoadReport
from .types import LoadResult as LoadResult
from .types import MarketplaceInstall as MarketplaceInstall
from .types import MarkGenerationIndeterminateEvent as MarkGenerationIndeterminateEvent
from .types import MarkIndeterminateEvent as MarkIndeterminateEvent
from .types import McpResponseLog as McpResponseLog
from .types import MeasurementKind as MeasurementKind
from .types import MergeFailedStep as MergeFailedStep
from .types import MergeQueueWatcher as MergeQueueWatcher
from .types import MergeState as MergeState
from .types import MigrationService as MigrationService
from .types import ModelIdentity as ModelIdentity
from .types import ModelItemId as ModelItemId
from .types import ModelTotalEntry as ModelTotalEntry
from .types import ModelTranslation as ModelTranslation
from .types import NamedResume as NamedResume
from .types import NdjsonDriftOutcome as NdjsonDriftOutcome
from .types import NoResume as NoResume
from .types import OccurrenceStateChangedEffect as OccurrenceStateChangedEffect
from .types import OpenEpochEvent as OpenEpochEvent
from .types import OutputFormat as OutputFormat
from .types import OutputPatternResolver as OutputPatternResolver
from .types import PackDef as PackDef
from .types import PhoropterPhaseSkip as PhoropterPhaseSkip
from .types import PhoropterPrescription as PhoropterPrescription
from .types import PluginSource as PluginSource
from .types import PrepareBatchEvent as PrepareBatchEvent
from .types import ProcessedEventRecord as ProcessedEventRecord
from .types import ProcessStaleError as ProcessStaleError
from .types import ProducerCoverageDef as ProducerCoverageDef
from .types import ProducerInstanceId as ProducerInstanceId
from .types import ProducerSurface as ProducerSurface
from .types import PromptContractError as PromptContractError
from .types import ProposeOccurrenceEvent as ProposeOccurrenceEvent
from .types import ProtectedPoolOwnerId as ProtectedPoolOwnerId
from .types import ProtectedPoolSpec as ProtectedPoolSpec
from .types import ProviderOutcome as ProviderOutcome
from .types import PRState as PRState
from .types import QuarantineRecordedEffect as QuarantineRecordedEffect
from .types import QuotaPolicy as QuotaPolicy
from .types import QuotaRefreshTask as QuotaRefreshTask
from .types import ReadingToken as ReadingToken
Expand All @@ -393,12 +488,40 @@ from .types import RecipeSectionContentFormatDef as RecipeSectionContentFormatDe
from .types import RecipeSectionDef as RecipeSectionDef
from .types import RecipeSectionValidationFinding as RecipeSectionValidationFinding
from .types import RecipeSource as RecipeSource
from .types import ReconcileGenerationEvent as ReconcileGenerationEvent
from .types import (
ReconciliationEscalationEffect as ReconciliationEscalationEffect,
)
from .types import (
ReconciliationQueryRequestedEffect as ReconciliationQueryRequestedEffect,
)
from .types import ReleaseNonAdmissionEvent as ReleaseNonAdmissionEvent
from .types import RepresentationBindingId as RepresentationBindingId
from .types import RepresentationBindingWitness as RepresentationBindingWitness
from .types import RepresentationRevision as RepresentationRevision
from .types import RequestReconciliationEvent as RequestReconciliationEvent
from .types import ReservationInvalidatedEffect as ReservationInvalidatedEffect
from .types import ReservationRecordedEffect as ReservationRecordedEffect
from .types import ReservationReleasedEffect as ReservationReleasedEffect
from .types import ReserveClass as ReserveClass
from .types import ReserveRequestEvent as ReserveRequestEvent
from .types import ResolvedSkillAuthority as ResolvedSkillAuthority
from .types import (
ResolveIndeterminateAcceptedEvent as ResolveIndeterminateAcceptedEvent,
)
from .types import (
ResolveIndeterminateNonAdmissionEvent as ResolveIndeterminateNonAdmissionEvent,
)
from .types import (
ResolveIndeterminateRollbackEvent as ResolveIndeterminateRollbackEvent,
)
from .types import ResponseBackstopExemptionDef as ResponseBackstopExemptionDef
from .types import RestartScope as RestartScope
from .types import ResultParser as ResultParser
from .types import ResumeSpec as ResumeSpec
from .types import RetryReason as RetryReason
from .types import RollbackAdmissionEvent as RollbackAdmissionEvent
from .types import RolloverEpochEvent as RolloverEpochEvent
from .types import ServeOverridesSnapshot as ServeOverridesSnapshot
from .types import SessionCheckpoint as SessionCheckpoint
from .types import SessionEvent as SessionEvent
Expand Down Expand Up @@ -428,6 +551,8 @@ from .types import SkillSourceRef as SkillSourceRef
from .types import SkillVisibilitySpec as SkillVisibilitySpec
from .types import SpilledOutput as SpilledOutput
from .types import SpillSpec as SpillSpec
from .types import StageHistoryEvent as StageHistoryEvent
from .types import StartGenerationEvent as StartGenerationEvent
from .types import StoredSkillSessionContract as StoredSkillSessionContract
from .types import StreamParser as StreamParser
from .types import SubprocessResult as SubprocessResult
Expand All @@ -441,10 +566,18 @@ from .types import TestResult as TestResult
from .types import TestRunner as TestRunner
from .types import TimingLog as TimingLog
from .types import TokenFactory as TokenFactory
from .types import TokenizerIdentity as TokenizerIdentity
from .types import TokenLog as TokenLog
from .types import ToolCallId as ToolCallId
from .types import TraditionManifest as TraditionManifest
from .types import TurnId as TurnId
from .types import (
UninitializedContextAdmissionState as UninitializedContextAdmissionState,
)
from .types import ValidatedAddDir as ValidatedAddDir
from .types import ValidatedWorktreePath as ValidatedWorktreePath
from .types import WindowEpochId as WindowEpochId
from .types import WitnessKind as WitnessKind
from .types import WorkspaceManager as WorkspaceManager
from .types import WriteBehaviorSpec as WriteBehaviorSpec
from .types import WriteEvidence as WriteEvidence
Expand Down
Loading
Loading