YIDL's Astichi boundary¶
YIDL owns facts, rule selection, ordering and consumer policy. Astichi owns Python fragment composition, scopes, hygiene, free-load resolution and AST lowering. The current source/compiler is the authority for marker mechanics; see the Astichi repository for its own documentation.
| Marker/surface | Position and purpose | This documentation's evidence |
|---|---|---|
astichi_hole(name) |
Named insertion point | Tutorial module/class/method bodies |
params__astichi_param_hole__ |
Function parameter surface | Zero/one/two tutorial parameters |
astichi_params(...) |
Parameter payload carrier | Tutorial and dataclass fixtures |
astichi_funcargs(...) |
Call-argument payload | Canonical Lifecycle call argument fixtures |
name__astichi_arg__ |
Identifier demand | Tutorial class/parameter names |
astichi_ref(external=path) |
Expression path, Name/Attribute chain | Tutorial direct slot access |
._ / .astichi_v |
Transparent target wrapper | Tutorial Store; other target contexts separately qualified |
astichi_pass(..., outer_bind=True) |
Cross-scope value reference | Constructor store reads |
astichi_import/export |
Scope boundary declarations | SDK-owned; not runtime Python imports/captures |
astichi_keep / suffix keep |
Deliberate spelling preservation | Distinct from providing a value |
astichi_pyimport |
Generated Python import | Generated DDS runtime assembly |
astichi_for |
Compile-time unrolling | SDK construct, no broad tutorial qualification |
A path is a validated dotted identifier chain, not arbitrary executable source. Bare statement-form reference/pass markers are not value expressions in a valid receiving surface. Ordinary attributes do not become demands by name suffix.
Scope of construct claims¶
Normal Python if/elif/else, exceptions, loops/else, with, decorators and
comprehensions can appear as authored resource constructs only insofar as the
selected SDK supports their surfaces. An unchanged construct that compiles is not
evidence that arbitrary insertions inside it compose correctly. Insertion must
preserve legal target and lexical contexts and fill mandatory empty suites.
The executable control_flow.py recipe checks insertion into interacting if,
for/else, with and try/except/finally constructs, with decorator/comprehension
context. Its precise Python tuple is qualified; other combinations/minors remain
listed in compatibility.
The consumer's original nested scalar chain and reference-annotation arrangement remain bounded investigations. Astichi source improvements, API changes or native repairs are separate projects, not prerequisites silently added to this tutorial.