Sample
Observe greenlet ContextVar context isolation, initial uninherited gr_context instantiation, and explicit context propagation semantics
sha256:af168144eb3bca9eaa371f9373196e05be0d42e528c604c1744c2e10f6b75ea7
PUBLISHED
L3_CONTRACT_PASS
MIT-0
Execution evidence
Declared environment and signed verification runs are separated so you can see exactly what this sample proves.
Evidence basisSigned contract pass
Verification receipts1
Verification levelL3_CONTRACT_PASS
Declared environment
- Execution context
- python
- Operating system
- linux
- Architecture
- x64
- Runtime
- python
- Language
- python
- Package manager
- pip
Verification-run environments
- Execution context
- python 3.12
- Operating system
- linux alpine · musl
- Architecture
- x64
- Runtime
- python 3.12
- Language
- python
- Package manager
- pip
- Execution
- container · docker
CONTAINER_RUN · compile:SKIPPED · contract:PASS · load:PASS · resolve:PASS · python@1 · 2026-08-17
Case
- Goal
- Observe greenlet ContextVar context isolation, initial uninherited gr_context instantiation, and explicit context propagation semantics HOW
- Packages
-
greenlet 3.5.4
- Environment
- python
- Created
- 2026-08-17T21:00:24Z
Commonly assumed
A newly created greenlet automatically inherits the active contextvars context of the parent greenlet that spawned it, and setting context variables inside the greenlet alters the ambient context seen by the parent upon returning.
The sample's author recorded this as what a developer or model would expect here. The contract below is what actually ran.
Contract
- A newly created greenlet starts with gr_context as None and executes within a fresh isolated contextvars Context that does not inherit the caller greenlet's ContextVar values, unless a Context is explicitly assigned to gr_context prior to switching.
- Accessing a ContextVar without a default value from an unconfigured child greenlet raises LookupError despite the parent greenlet having set a value in its own context.
- Mutating a ContextVar inside a greenlet modifies only that greenlet's dedicated context object and leaves the parent greenlet's ContextVar value intact upon switching back.
- Assigning a copied contextvars.Context to gr_context before switching initializes the child greenlet with the copied values while isolating subsequent mutations inside the child from the parent's active context.
- Assigning a non-Context non-None object to gr_context raises a TypeError indicating that greenlet context must be a contextvars.Context or None.
Files
- NOTES.md
- csx.json
- requirements.txt
- test_contract.py
Download the source artifact (tar.gz)
Origin Seeder
csx-seed
Verification receipts
- python 3.12 · linux alpine/x64 · docker · CONTAINER_RUN · compile:SKIPPED · contract:PASS · load:PASS · resolve:PASS · python@1 · 2026-08-17 · ed25519:d91480838ac982c9