atrep-cli 0.3.0__py3-none-win_amd64.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Binary file
@@ -0,0 +1,491 @@
1
+ Metadata-Version: 2.4
2
+ Name: atrep-cli
3
+ Version: 0.3.0
4
+ Classifier: Development Status :: 4 - Beta
5
+ Classifier: Intended Audience :: Developers
6
+ Classifier: Programming Language :: Rust
7
+ Classifier: Topic :: Text Processing :: Markup
8
+ License-File: LICENSE-MIT
9
+ License-File: LICENSE-APACHE
10
+ Summary: The atrep command-line tool: check, respellings, outline, kanonizo, endo importers, morphisms, exo rendering, collation
11
+ Keywords: atrep,markup,semantic,document,dialect,cli
12
+ Author: Bojan Đuričković
13
+ License-Expression: MIT OR Apache-2.0
14
+ Requires-Python: >=3.9
15
+ Description-Content-Type: text/markdown; charset=UTF-8; variant=GFM
16
+ Project-URL: Repository, https://gitlab.com/atrep/atrep-rs
17
+
18
+ # atrep-rs
19
+
20
+ Pilot Rust implementation of the **Atrep** core: parser, Dendron
21
+ (AST), kanonizo (canonicalization), litosis (content hashing),
22
+ metamorphoses (exomorphosis engine; Markdown, HTML, and
23
+ reStructuredText endomorphoses), and morphisms (.hom/.iso with
24
+ group rules and transitive route resolution, spec v0.11).
25
+
26
+ ## Spec reference
27
+
28
+ This implementation targets the **Atreptos Platform Specification
29
+ v0.12.1** (the Dialektoi Network and Witnesses & Coordinates
30
+ freezes plus their addenda), as published in the `atrep/spec`
31
+ repository:
32
+
33
+ - tag: `v0.12.1`
34
+ - commit: `3c72861`
35
+
36
+ Where behavior is underspecified at that commit, the choices made
37
+ here are documented under "Spec gaps" below, as input for the next
38
+ spec revision.
39
+
40
+ ## Layout
41
+
42
+ - `crates/atrep` — library: `sigil` (escaping, symbol
43
+ classes), `dialektos` (`.lektos`/`.dia` definitions, local
44
+ inheritance and import), `parser` (document to Dendron),
45
+ `dendron` (AST + canonical serializer), `kanonizo`, `litosis`.
46
+ - `crates/atrep-cli` — the `atrep` binary.
47
+ - `crates/atrep-lsp` — the `atrep-lsp` language server:
48
+ diagnostics + semantic-token highlighting for `.atd`/`.atk`
49
+ documents and `.dia`/`.lektos` definitions (see its README
50
+ for editor configuration).
51
+
52
+ ## Usage
53
+
54
+ ```
55
+ atrep check <file> parse + validate a document
56
+ (.atd/.atk) or definition
57
+ (.lektos/.dia)
58
+ atrep kanonizo <file> [-o out] .atd -> .atk
59
+ (+ .atk.tar.gz when media
60
+ is bundled);
61
+ .dia -> .lektos for
62
+ definition files
63
+ [--timeout <secs>] remote-fetch timeout (30)
64
+ [--retries <n>] remote-fetch retries (2)
65
+ atrep morph <file> <dialektos> [-o out]
66
+ map a kanon to another dialektos
67
+ via .hom/.iso rules or a
68
+ lineage-derived embedding
69
+ atrep litos <file> [--save-litos-file]
70
+ print the litos ID (SHA-256)
71
+ atrep exo <file> <target> [-o out]
72
+ render a kanon to an external
73
+ format via <dialektos>.<target>.exo
74
+ (.atd input is kanonized first)
75
+ atrep endo <file> [-o out] import Markdown (.md), HTML
76
+ (.html), reStructuredText
77
+ (.rst), or TEI (.xml/.tei) as
78
+ at-markdown/at-html/at-rst/
79
+ litogramma documents
80
+ ```
81
+
82
+ Dialektoi resolve local-only, per the v0.10 spec: the parser looks
83
+ for `<dialect-id>.lektos` (falling back to `<dialect-id>.dia`) in
84
+ the directory of the file being processed. Remote *resources*
85
+ (transclusion targets and media) may be `http(s)` URLs.
86
+
87
+ `scripts/pandoc-corpus.sh` uses pandoc as a specimen
88
+ generator: each Markdown seed converts into every imported
89
+ format and runs through `atrep endo`; rejections are coverage
90
+ findings, not gated failures.
91
+
92
+ The crate builds for `wasm32-unknown-unknown` with
93
+ `--no-default-features`: the `net` feature (remote resource
94
+ fetching) and the `bundle` feature (`.atk.tar.gz` archive
95
+ output) are on by default and off for wasm targets.
96
+
97
+ Milestones and zygosis (spec v0.12): `@("scheme:value")` is
98
+ the core global anchor — the quoted sibling of the onym
99
+ anchor, kanonizo-exempt (duplicates rejected) and
100
+ litosis-surviving. Exos render it through the `*milestone
101
+ [<scheme>]` pattern with `@(scheme)`/`@(value)` slots. `atrep
102
+ zygo a.atk b.atk --scheme stephanus --as grc,eng -o bi.atd`
103
+ weaves witness kanons of one dialektos into the zygoma:
104
+ milestone-headed segments in the merged coordinate order
105
+ (order-consistency checked, contradictions are errors), each
106
+ witness's slice on a `zyg-<id>`-tagged diaphane, blocks and
107
+ even inline phrases split cleanly at cut points, headings and
108
+ speech prefixes hoisted so they don't repeat. The TEI importer
109
+ emits core milestones (scheme from resp, unit as a
110
+ presentation genos).
111
+
112
+ Controlled vocabularies (spec v0.11): a dialektos may define
113
+ named term sets with multilingual aliases, bound to a sim's
114
+ lemma or genoses; kanonizo canonicalizes aliases
115
+ case-insensitively (authoring language cannot fork hashes),
116
+ vocabulary-bound genoses survive litosis as semantic content,
117
+ and exo rules gain term-keyed variants (`@-> :(auctor)`).
118
+ Bibliogramma drives it: Latin canonical terms, ~40 languages of
119
+ aliases, biblatex as the lossless export and classic BibTeX as
120
+ the lossy one.
121
+
122
+ Resolution is storage-agnostic behind the `source::Source` trait:
123
+ `DirSource` is the classical directory context, `MemorySource`
124
+ serves definitions, morphisms, and exos from an in-memory map
125
+ (embedded engines, registry services, wasm targets with no
126
+ filesystem). The `*_from` variants (`dialektos::resolve_from`,
127
+ `morph::resolve_morph_from` / `resolve_route_from`,
128
+ `exo::resolve_exo_from`) take any source; the path-based entry
129
+ points delegate to `DirSource`.
130
+
131
+ ## Conformance status (spec v0.10)
132
+
133
+ Implemented:
134
+
135
+ - The three basic forms (endo-simmere, para-simmere, monosim) with
136
+ onym/genos/taxis annotations; both sigils (`@` / `\`) with the
137
+ inactive-sigil escaping rules (`\@`, `@\`, `\|`); bracket
138
+ matching in episims; core stichoi (`@@@=`); comments; diaphanes;
139
+ axiomata; verbatim and semantic inclusion (inline, block, and
140
+ file forms); enmedia; the deixis (`@<sym>(onym)`, spec v0.10.1) —
141
+ a core pointing reference to an onymized para-simmere, validated
142
+ against its target's sim, surviving litosis with its target's
143
+ onym under fresh declaration-order numbering (so stripped
144
+ metadata cannot influence the litos ID), and rendered via the
145
+ `*deixis <symbol>` exo pattern.
146
+ - Dialektos definitions in the `atrep` meta-dialektos: ostensive
147
+ sim definitions (including line-structured grammata via the
148
+ `stichos` keyword), descriptions, parent references, full
149
+ inheritance, sim import (single, aliased, list, exclusion) —
150
+ local-only, with conflict and cycle detection.
151
+ - Kanonizo: shebang removal, sigil canonicalization with escape
152
+ recomputation, Unicode NFC, recursive transclusion expansion
153
+ with cycle detection (local paths and URLs), axioma expansion,
154
+ axioma-enlexis resolution against onymized simmeres, onym
155
+ canonicalization (`o1`, `o2`, ...), taxis evaluation and
156
+ validation, comment and unreferenced-diaphane removal,
157
+ paragraph collapsing, whitespace normalization, media bundling
158
+ (`media/m<n>.<ext>`, manifest, deterministic `.atk.tar.gz`).
159
+ - Remote resources over `http(s)`: transclusion targets and
160
+ enmedia, with configurable timeout/retry, extension inference
161
+ (source extension, then Content-Type, then magic bytes), and
162
+ source-URL + checksum provenance in the media manifest.
163
+ - Definition-file kanonizo (`.dia` -> `.lektos`): inheritance and
164
+ imports expanded, canonical sigil, sim definitions sorted by
165
+ name; re-emitting a canonical `.lektos` is byte-identical.
166
+ - Litosis and the litos ID (SHA-256), including enmedia content
167
+ hashing (`@@@@[SHA256:...]`).
168
+ - Exomorphosis (spec v0.10.1, optional conformance class): `.exo`
169
+ files in the `atrep-exo` meta-dialektos — symbol-keyed template
170
+ rules with genos-suffix specificity, structural `*` patterns
171
+ (including `*solo` and `*deixis`), sigil slots with raw and
172
+ hanging-prefix forms, conditional sections (`@[ ... ]@`,
173
+ emitted only when every slot inside renders non-empty),
174
+ single-pass escape tables, englossis rule-set switching,
175
+ strict unhandled-pattern errors, deterministic output. Rule
176
+ inheritance follows the dialektos lineage (spec v0.10.2 draft):
177
+ parents' effective rule sets are pulled in declaration order
178
+ (later ops overriding earlier), filtered and alias-remapped
179
+ per import kind, then overlaid by the dialektos's own file; a
180
+ dialektos with no `.exo` of its own still renders through
181
+ inherited rules, and the most derived non-empty escape table
182
+ applies. The spec's worked example (`exempli.html.exo`) is a
183
+ golden test.
184
+ - A standard library, embedded in the binary and used when local
185
+ resolution fails: `at-html`, a syntax mapper between a useful
186
+ subset of HTML and atrep (each sim corresponds to one HTML
187
+ element; its exomorphosis and the HTML endomorphosis are
188
+ inverses over the canonical subset), and `at-markdown`
189
+ (realizing the dialektos the spec's inheritance examples treat
190
+ as hypothetical), which is pure lineage: every sim is inherited
191
+ from at-html — containers excluded (markdown is flat), emphasis
192
+ and strong aliased to `*`/`**` — and its HTML rendering is
193
+ acquired entirely through rule inheritance, with no HTML `.exo`
194
+ of its own. The library also carries the literary target
195
+ itself, promoted to core: `litogramma` and `bibliogramma`,
196
+ vendored byte-identical from the normative litogramma repo (a
197
+ drift-guard test compares the copies whenever the sibling
198
+ checkout is present), together with their base exomorphoses
199
+ (`html`, `gemtext`, `latex`; `bib`, `bibtex`) and the
200
+ litogramma↔at-html/at-docbook/at-tei homs — so the
201
+ litogramma-targeting importers (TEI, JATS, BibTeX, atramento)
202
+ have their target resolvable everywhere, with no local
203
+ definition files. The
204
+ publisher-register exos (Loeb, OCT, Penguin, GOST, …) remain
205
+ in the litogramma repo.
206
+ - Morphisms (spec v0.11, optional conformance class):
207
+ `.hom` (directional, possibly lossy) and `.iso` (rename-only,
208
+ bijective, one file serving both directions) in the
209
+ atrep-hom/atrep-iso meta-dialektoi — rename with form-
210
+ compatibility validation, unwrap (wrapper dissolves, content
211
+ splices), drop; implicit identity for same-symbol
212
+ form-compatible sims; core forms pass through; deixes follow
213
+ their target sim's rule (removed with it on drop/unwrap); the
214
+ output kanon is re-validated (taxis runs, deixis targets).
215
+ Embedding morphisms are derived from the dialektos lineage
216
+ with no file at all: at-markdown => at-html morphs purely from
217
+ its inheritance declarations, and the std
218
+ `at-html.at-markdown.hom` provides the lossy reverse — the
219
+ flat-content round trip is byte-identical. Renames may append
220
+ genoses (admonition kinds survive as presentation hints on
221
+ generic containers) and the extract rule (`@<# <sym>
222
+ <endo-sym>`) dissolves a lemma-bearing para-simmere into a
223
+ flat heading plus content. Morphisms apply **transitively**:
224
+ when no direct morphism resolves, the shortest route through
225
+ the known dialektoi applies in validated stages (ambiguous
226
+ routes are errors, never silent choices) — at-rst =>
227
+ at-markdown composes through at-html with no direct file. A
228
+ pair may carry several morphisms as named variants
229
+ (`<a>.<b>.<variant>.hom`, `atrep morph ... --variant <name>`)
230
+ — distinct representations of the source in the target. The
231
+ std graph carries its first **isomorphism**: at-djot and
232
+ at-markdown share one sim inventory under different symbols
233
+ (`at-djot.at-markdown.iso`), so the pair converts losslessly
234
+ both ways, round-trips to the identity morphism, and
235
+ collapses into one equivalence class.
236
+ The algebra's one sequence-level action is the **group
237
+ family** (`@>#` / `@><` / `@>-` / `@>:`), the flat-to-nested
238
+ converse of extract: a solo-heading paragraph triggers a
239
+ region spanning the following siblings, wrapped into a
240
+ para-simmere with the trigger content as lemma (or discarded,
241
+ or the region dropped, or the trigger relabeled/deleted, or —
242
+ operand-less `@>#`, the v0.11.1 deplain — stripped to a plain
243
+ paragraph with the region untouched);
244
+ rules nest by file order, the trigger's onym and genoses
245
+ transfer to the wrapper, and deixes follow. The
246
+ group-then-extract round trip recovers the flat document
247
+ exactly. Morphisms are **statically validated at
248
+ resolution**, with no documents present: every rule against
249
+ both dialektoi, plus *totality* — every source sim accounted
250
+ for by a rule, an implicit identity, or a group trigger, with
251
+ `@--` marking deliberate drops (derived embeddings stay
252
+ partial by nature).
253
+ Morphisms **compose symbolically**: the table algebra is
254
+ three actions (rename, drop, dissolve — with the lemma
255
+ discarded, emitted plain, or extracted into a heading endo)
256
+ and is closed under composition, group dispositions chasing
257
+ the second factor's table, so a route fuses into a single
258
+ composite morphism applied in one traversal (`apply_route`
259
+ does this by default; staged application is the reference
260
+ semantics it must match). Grouping bounds fusion: a grouping
261
+ second factor fuses only across a rename-only first factor,
262
+ and never across a non-injective rename onto a trigger (peer
263
+ triggers would share a rank the serialized form cannot
264
+ express; spec v0.11.1) — everywhere else `apply_route` falls
265
+ back to staged application automatically. `atrep compose a b [c ...]` writes
266
+ the composite as an ordinary `.hom` file in normal form —
267
+ group rules in rank order, table rules sorted, implicit
268
+ identities elided, with `@=via` declarations recording the
269
+ hops (provenance, excluded from the `normal_form` equality
270
+ surface) — making morphism equality a byte comparison.
271
+ - Endomorphoses (pilot, engine-side): **atramento**, the
272
+ Markdown-like authoring surface for litogramma (`.atr`,
273
+ text-to-text: a litogramma superset whose sugar — typewriter
274
+ emphasis with flanking rules, ATX headings with a declared
275
+ base and implied closure, Markdown lists/quotes/fences,
276
+ autolinks, note callout/definition/inline sugar, verse fences,
277
+ drama auto-closure — compiles away; the compiler is an
278
+ idempotent projection and canonical litogramma passes through
279
+ byte-identical; spec in the atramento repo); CommonMark-subset,
280
+ HTML-subset, and reStructuredText-subset importers into
281
+ `at-markdown`/`at-html`/`at-rst` (strict over the canonical
282
+ subsets; RST footnotes become deixis callouts, fixed adornment
283
+ table for title levels), Org-mode and Djot subset importers into the
284
+ `at-org` and `at-djot` std dialektoi, a DocBook subset
285
+ importer into `at-docbook` (`.dbk`); the `at-tei` std dialektos
286
+ applies the bibliogramma pattern to TEI — ~15 form sims with
287
+ the TEI element identity in vocabulary-bound genoses
288
+ (`@,x,@.persname`), a `tei` exo emitting real TEI XML, and a
289
+ litogramma hom giving litogramma TEI export via morph+exo, a BibTeX importer into
290
+ `bibliogramma` (`.bib`), a JATS subset importer (`.jats`) into
291
+ litogramma with the ref-list embedded as a bibliogramma
292
+ englossis — the BibTeX-isomorphic bibliography
293
+ extension defined beside litogramma (entry lemma = citation
294
+ key, genos = entry type, fields as lemma-named sims) — the first *nested* std
295
+ dialektos: one uniform section sim nests, so
296
+ structure-preserving morphisms to and from litogramma need
297
+ no flattening — (`.org`: star headings, the emphasis
298
+ family, quote/verse/example/src blocks with language genoses,
299
+ pipe tables as stichoi rows, footnotes as deixis callouts,
300
+ links), plus a TEI P5 basic-subset importer
301
+ into `litogramma` (`.xml`/`.tei`): teiHeader front matter,
302
+ nested div sectioning with type/depth laddering, lg/l verse,
303
+ sp/speaker drama with stage directions, epigraphs with
304
+ attribution, and notes as deixis callouts with footnote
305
+ bodies. Roundtrips are tested in all three
306
+ formats: the canonical form of each is a fixed point of
307
+ export∘import.
308
+ The `at-usfm` std dialektos maps scripture (`.usfm`/`.sfm`):
309
+ one dialektos, three export surfaces (`usfm`, `usx`, `osis`).
310
+ Books are vocabulary-bound lemmas (the 66 canonical plus 21
311
+ deuterocanonical USFM codes with English-name aliases, so
312
+ `@# john` and `@# jhn` hash identically); chapters and verses
313
+ are milestone monosims — text flows across verse boundaries,
314
+ the classic overlapping hierarchy; heading markers ride a
315
+ `markers` vocabulary on one typed solo-block sim while
316
+ paragraph-class markers (`\m`, `\pi1`, `\li1`, …) accumulate
317
+ verse flow as typed paragraphs; character markers (`\wj`,
318
+ `\nd`, `\add`, …) are genos-typed phrases, wordlist wrappers
319
+ (`\w …|attrs`, `\+w`) unwrap to their text; footnotes and
320
+ cross-references sit inline at their anchor with `\fr`/`\xo`
321
+ references as typed sub-phrases; poetry lines wrap in
322
+ per-line `q`-level phrases inside stichoi so indent levels
323
+ survive. The OSIS exo maps semantics, not styling (`\wj` →
324
+ `<q who="Jesus">`, `\nd` → `<divineName>`, `\add` →
325
+ `<transChange>`). All three surfaces import as well as
326
+ export: `.usfm`/`.sfm`, `.usx`, and `.osis` files (including
327
+ whole-Bible multi-book files, which become one book block
328
+ per book). The USX surface is information-complete — export
329
+ then import lands on the identical litos; OSIS import
330
+ handles both container and milestone chapter/verse forms,
331
+ Paratext-style sID/eID pairs, and pretty-printed sources
332
+ (insignificant whitespace collapses), while milestone-form
333
+ red-letter `<q sID/>` spans are skipped (the overlapping
334
+ hierarchy OSIS itself avoids in container form).
335
+ The `latex` surface prints it: the exo
336
+ emits a semantic macro layer (`\atbook`, `\atchapter`,
337
+ `\atverse`, `\atmarker{s1}{...}`, `\atchar{wj}{...}`,
338
+ `\atq`, `\atnote`) and carries the `atrep-bible` document
339
+ class as an **asset section** (`@=* <filename> <sentinel>`
340
+ ... sentinel) — a presentation companion delivered
341
+ byte-verbatim as an unconditional auxiliary output, so the
342
+ exo stays one artifact under one content address. The class
343
+ compiles the layer into a two-column dense print Bible:
344
+ drop-number chapters with the first verse suppressed (or
345
+ centered `PSALM n` headings when the book declares `\cl`),
346
+ superscript verses, q-level poetry ladders with right-set
347
+ *Selah*, italic superscriptions, per-column footnotes with
348
+ bold references, running heads from `\h` (falling back to
349
+ `\mt1`), and a `redletter` class option. Genoses interpolate
350
+ as macro arguments, so vocabulary growth touches only the
351
+ class — unknown markers fall through to a visible fallback,
352
+ never an error. Named **exo variants**
353
+ (`<dialektos>.<target>.<variant>.exo`, `atrep exo ...
354
+ --variant <name>`) overlay the base rule set — the
355
+ `redletter` edition redefines only the document rule and
356
+ inherits everything else, class asset included. The class
357
+ sets corner running heads the print way (every verse marks
358
+ `BOOK c:v`; first reference on the verso's outer edge, last
359
+ on the recto's), opens each book at the top of a fresh
360
+ column, sets chapters as lettrine drop numbers, gives
361
+ cross-references their own symbol series beside the numbered
362
+ translation notes, prints a two-column dotted Contents page
363
+ when the document holds more than one book (with PDF
364
+ bookmarks via hyperref), switches to a covering serif for
365
+ Hebrew (right-to-left) and polytonic Greek runs in
366
+ footnotes, and offers a `9pt` option for a denser setting
367
+ and an `a5` exo variant (the classic 148×210 hand-Bible
368
+ format at 9pt). The geometry is calibrated against
369
+ distributed print Bibles (measured block proportions,
370
+ margins, and baseline pitch), and an ink-zone check renders
371
+ every page and asserts nothing prints into the gutter or
372
+ margins.
373
+ `scripts/bible-pdf.sh <src>` typesets any
374
+ USFM/USX/OSIS source (single book or whole Bible) to PDF;
375
+ the complete WEB runs 942 pages, the KJV 853.
376
+ Validated against the complete World English Bible (81
377
+ books through all three surfaces: USFM byte-level fixed
378
+ point with litos identity, USX import litos-identical to
379
+ the USFM-derived kanon, OSIS import→export fixed point,
380
+ well-formed XML throughout) and against the whole-Bible
381
+ KJV OSIS from a foreign toolchain (Haiola, 10 MB, 66 books
382
+ in one file — imports in ~0.2 s and passes the same
383
+ battery).
384
+ - Strict error handling: every error condition enumerated in the
385
+ spec's Parsing chapter maps to a typed error with file/line/
386
+ column and, for transcluded content, the inclusion chain.
387
+
388
+ The spec's worked-example appendix ("From Deltos to Litos") is the
389
+ golden test (`crates/atrep/tests/golden.rs`), including a
390
+ kanonizo idempotency check. Remote fetching is covered by
391
+ `tests/remote.rs` against an ephemeral localhost listener.
392
+
393
+ Not yet implemented:
394
+
395
+ - The `.endo` file format (still unspecified by the spec; the
396
+ Markdown and HTML importers are engine-side, as the spec
397
+ allows).
398
+
399
+ Known Markdown-pilot limitations: exported lists are loose (a
400
+ blank line between items); ordered lists must start at 1 (taxis
401
+ validation); text paragraphs beginning with a literal list
402
+ marker like `1. ` are not escaped and would re-import as items.
403
+
404
+ Known parsing limitation: paragraph boundaries are detected
405
+ line-first, so a verbatim inline (`@@"..."@@`) cannot span a line
406
+ that itself looks like a block construct.
407
+
408
+ ## Spec gaps found while implementing
409
+
410
+ Decisions this pilot had to make where spec v0.10 is silent;
411
+ flagged as input for the next spec revision:
412
+
413
+ 1. **Kanon blank-line layout.** "Removes extraneous blank lines"
414
+ does not say which blank lines remain. Pilot rule: one blank
415
+ line between sibling blocks, none around compact single-line
416
+ blocks (enmedia and monosim-shaped forms) — this reproduces
417
+ the spec's worked-example appendix byte-for-byte.
418
+ 2. **Bracket-matching disablement** has no declared syntax in
419
+ `.lektos` files. The pilot infers it from the ostensive
420
+ definition: an unflipped shown episymbol means matching is
421
+ disabled.
422
+ 3. **Onym-referencing monosims** are not marked as such in sim
423
+ definitions. The pilot treats any monosim parameter that
424
+ matches a declared onym as a reference (and rewrites it during
425
+ onym canonicalization).
426
+ 4. **Axioma definitions in the kanon**: the spec says references
427
+ are expanded but not whether definitions remain. The pilot
428
+ removes them (the kanon is fully expanded, so they are dead
429
+ weight).
430
+ 5. **Dialektos-defined stichoi**: resolved in spec v0.10.1 — the
431
+ `stichos` ostensive keyword (in place of `grammata`) declares
432
+ line-structured grammata, implemented here. Stichos whitespace
433
+ is likewise resolved (litogramma feedback F2): leading and
434
+ internal whitespace is content, preserved through kanonizo and
435
+ litosis (so it participates in the litos ID); only trailing
436
+ whitespace is trimmed. One caveat: a monosim removed by litosis
437
+ mid-stichos leaves its surrounding spaces as written — in verse,
438
+ spacing is content, so no re-normalization is applied.
439
+ 6. **Version pinning in the kanon**: the pilot preserves the
440
+ declared version specifier verbatim rather than pinning the
441
+ resolved version.
442
+ 7. **Remote transclusion fetch policy** is specified for media
443
+ only. The pilot applies the media policy to transclusion too:
444
+ same timeout/retry configuration, and an unavailable resource
445
+ fails kanonizo.
446
+ 8. **Remote documents have no local directory.** Their dialektos
447
+ declarations and any relative transclusion targets resolve
448
+ against the *including* document's directory.
449
+ 9. **`.lektos` sim ordering**: the spec says "alphabetically by
450
+ sim name" without a collation. The pilot sorts byte-wise on
451
+ the UTF-8 name, with the symbol (byte-wise) as tie-break —
452
+ duplicate names are legal via aliased imports.
453
+ 10. **Canonical `.lektos` layout** is otherwise unpinned. The
454
+ pilot emits the declaration, then blank-line-separated sim
455
+ blocks; property sims in ASCII symbol order (`"` short
456
+ description, `""` long description, `^` parent); long
457
+ descriptions always in block form with the body verbatim.
458
+ 11. **Axioma-enlexis to onymized simmeres**: the spec states the
459
+ before-first-reference rule for axiomata only, so the pilot
460
+ allows forward references to simmere onyms. The verbatim copy
461
+ is the simmere's canonical serialization minus its own onym;
462
+ onyms and taxis nested inside the copy keep their source
463
+ form; an onym whose only reference was the expanded enlexis
464
+ is then dropped as unreferenced.
465
+ 12. **Standard-library resolution**: spec resolution is
466
+ local-only and defines no standard library. The pilot falls
467
+ back to definitions embedded in the binary (`at-markdown`
468
+ and its `md` exomorphosis) when no local file resolves.
469
+ 13. **The `at-markdown` sim inventory**: the spec's inheritance
470
+ examples pin `#`..`######`, `-`, and `*` (emphasis) but no
471
+ full definition. The pilot adds `**` (strong), `>`
472
+ (blockquote), and `.` (ordered item, required taxis), and
473
+ maps inline code, fenced code, and images to the core
474
+ enlexis/enmedia forms rather than new sims.
475
+ 14. **Monosim ostensive keyword**: the spec's examples show
476
+ `(param)`, but litogramma uses semantic keywords (`(onym)`,
477
+ `(depth)`, `(key)`). The pilot accepts any identifier except
478
+ the reserved `taxis` and preserves it in the canonical form.
479
+ 15. **Comments in definition files**: the atrep-meta chapter
480
+ does not say which comment forms `.dia`/`.lektos` files may
481
+ carry. The pilot accepts line (`@@/`) and block
482
+ (`@@@/ ... /@@@`) comments, both removed by kanonizo.
483
+
484
+ ## Development
485
+
486
+ ```
487
+ cargo test # unit + golden + error-condition tests
488
+ cargo clippy # lint (kept warning-free)
489
+ cargo fmt # rustfmt (kept clean)
490
+ ```
491
+
@@ -0,0 +1,7 @@
1
+ atrep_cli-0.3.0.data/scripts/atrep.exe,sha256=OoW6KK_NxRlb27ksb6RmCT3t_FAzLd08bOzo_f_bNuY,5438976
2
+ atrep_cli-0.3.0.dist-info/METADATA,sha256=yqSMeqcCZP0_kPrX4QX79eq0bXK_L3RiVvdWEKPElaI,26406
3
+ atrep_cli-0.3.0.dist-info/WHEEL,sha256=2zDlIYIdD4m4N3p5DVEG3iJhGLdhsBQgdH-FqVkAur8,94
4
+ atrep_cli-0.3.0.dist-info/licenses/LICENSE-APACHE,sha256=ynptvmAalf0iNiINivQYhPVrH0t2eEjtZwf6TQFuGt4,11552
5
+ atrep_cli-0.3.0.dist-info/licenses/LICENSE-MIT,sha256=a76195udV7lOnI1FPuq-Kn10vH8IuGYp23Yh8tr9NL0,1097
6
+ atrep_cli-0.3.0.dist-info/sboms/atrep-cli.cyclonedx.json,sha256=XGfwRk22CLko3koU4ji761Ldaq6ZTHdZLFQ8JP5ZG7o,78758
7
+ atrep_cli-0.3.0.dist-info/RECORD,,
@@ -0,0 +1,4 @@
1
+ Wheel-Version: 1.0
2
+ Generator: maturin (1.14.1)
3
+ Root-Is-Purelib: false
4
+ Tag: py3-none-win_amd64