sim-lib-lang-python
Embedded, capability-scoped, agent-authored Python scripting over SIM values.
It is deliberately not a CPython replacement. Thin, bounded Python core
evaluation enters through
codec/python; the profile directly interprets the stable lowering and composes
shared runtime organs, numbers, managed arena, and optional tracing collection.
PYTHON_FIDELITY reports syntax, lowering, direct evaluation, object/control,
module/library, boundedness, and expected gaps separately. PYTHON_EVIDENCE_CASES
publishes frozen call, cycle, exception, generator, matching, import, and
capability-refusal cases. CPython 3.14.6 supplied offline expected values for
simple differential cases only; it is never linked, imported, spawned, or used
as a fallback. There is no bytecode, compiler IR, optimizer, project graph, or
private language organ.
Capability-gated eval, exec, and imports
Dynamic Python is safer than ambient CPython evaluation by construction.
DynamicPython sends both eval and exec through the installed source codec
and the canonical diminished read-eval broker. The caller must supply a trusted
ReadPolicy, already hold every required capability, and choose the smaller
capability set visible to decoded code. Source text cannot mint authority.
PythonModulePolicy likewise resolves only through a caller-supplied Dir,
then delegates decoding, failure/cycle caching, live exports, and receipts to
the shared namespace module lifecycle. It never searches host paths.
python_library_manifest() derives present members from the checked Python
matrix. Host-facing names such as open, os, subprocess, and socket are
explicit absences; they never fall back to CPython or ambient host services.
Structural cases compose ordered Shape checks and case-local captures. Guards
run only after a shape accepts, and unsupported Python pattern forms remain a
no-match gap instead of acquiring a second matcher.
PythonObjectSpace supplies checked class construction, C3 MRO, Python
data/non-data descriptor precedence, bound methods, and super while leaving
storage and interception in sim-lib-dispatch. PythonGenerator projects
start/send/throw/close over sim-lib-control's bounded resumable frame; checked
exceptions, groups, chaining, and synchronous context cleanup add no scheduler.
Tracing collection is the default constructor. PythonHeap::retaining is an
explicit supported alternative and reports its strong-cycle leak gap.
The public PYTHON_OBJECT_CONTROL_GAPS list is the precise fail-closed boundary:
custom metaclasses, post-construction descriptor-protocol mutation,
weak-reference callbacks/proxies, __del__ resurrection, and async scheduling
remain unclaimed.