Files

22 lines
5.0 KiB
Markdown

# Runtime, portability and provenance
This Skill contains selection/project tools, native authoring wrappers, and an unmodified compiler snapshot. It does not require another installed Skill, its home directory, or an original machine path. Templates/themes stay external and are supplied through explicit manifests. Host image generation and supported PowerPoint UI remain host capabilities, used only for work that needs them.
The native route requires Python 3.12+ and the nine pinned packages in [requirements.txt](../runtime/requirements.txt). The installer prepares that environment; this Skill does not install globally or ship Python, wheels, application binaries or fonts. Metadata-only selection/project/paint commands use Python 3.10+ and the standard library. A missing native dependency produces an actionable error and preserves existing output.
The compiler is the MIT-licensed `ppt-master` 4.6.0 snapshot from [hugohe3/ppt-master](https://github.com/hugohe3/ppt-master). `runtime/ppt-master/` preserves its LICENSE, sponsorship files, original SKILL.md and all scripts, including the executable attribution guard. Its exact shipped file hashes are in [provenance.json](../runtime/provenance.json). The nested SKILL.md is an attribution file, not a second installable Skill; install only this package's root. No upstream reference library, organization assets or themes are bundled. Do not remove the guard or rewrite upstream files to suppress it.
The preserved snapshot also contains optional upstream utilities and their documentation. Those legacy utility paths, remote services and optional executables are not this Skill's maintained authoring route or an installation requirement. Use the local native wrapper and host image/UI tools described here; do not invoke an optional utility while assuming its separate service configuration exists.
The maintained wrapper's [math component](mathematics.md) builds native DrawingML Office Math from explicit expression trees using the existing `lxml` dependency. It does not modify the preserved compiler or add a network provider/TeX executable. Math fonts come from the template or a declared project-local math style; destination installation, glyph/MATH-table identity, current rendering and editing remain separate checks.
Page/mockup planning and strict input-asset handling draw on the workflow concepts of [codex-ppt](https://github.com/ningzimu/codex-ppt-skill); object inventory, background/material separation and object-type verification draw on the source-reconstruction workflow available in the development environment. The guidance here is independently written and self-contained. No external workflow script, OCR service, mandatory CLI, review state or installation path is required. Complex automatic asset separation and OCR are not represented as bundled capabilities: use the host visual tools and review the result.
The generic wrapper consumes declared palette/font/size data. `preserve_declared_font_families(style)` temporarily protects only those families from the compiler's platform replacement map during a serial compile, restoring process memory on success or failure. It preserves source identity before conversion; it does not replace arbitrary finished-document occurrences of a fallback font. Declared font names do not install, embed or license a font. Verify family, style, version/hash, source, license and actual rendering on the destination device.
For a portable author project, [prepare_native_project.py](../scripts/prepare_native_project.py) copies the required runtime, wrappers, typography/paragraph/spacing and math modules into `vendor/native-workflow/`, supplies `tools/native_builder.py`, and records them as build inputs. It accepts an initialized project with an untouched author lock, no builder and an empty dependency/font/tool declaration. It refuses existing destinations and custom environments/builders. It deliberately leaves the old author lock unchanged so the new source must be reviewed and explicitly locked. If a project-local math style adds a font beyond the template families, add that font declaration to the project environment before locking.
The prepared builder reads finalized page SVGs and Markdown speaker notes in project order. It checks the layout IDs and local asset boundaries, then compiles using the vendored template and compiler. `content.json` and declared `data` remain author inputs; this generic builder does not invent a binding schema or automatically regenerate SVG text from those files. If the deck needs data-driven generation, supply a reviewed project-local preprocessing/builder step and declare its inputs before locking.
Move or pack the whole locked project, provision the declared packages/fonts, then use its own tools to check and rebuild. Test from a different directory with the original source unavailable and verify an intentional source/notes change after relocking. Same-device relocation proves path independence for that snapshot, not another physical device's rendering or application editing.