Scope
The most expensive item in the batch: it turns Loop from a production-fixup application into a genuine PDF editor — and it is the page-content object model the other mutation work depends on.
Core requirement
A page-content AST, not raw content-stream string editing:
GraphicsObject: Path, TextRun, Image, Form, Shading, Clip, Group. Every object carries its effective CTM, graphics state, clipping stack, transparency state, colour space, and resource dependencies.
Vector editing
Node movement, Bézier handles, fill/stroke changes, transform, delete, duplicate, compound paths; winding rules and clipping semantics preserved.
Image editing
V1 means production-safe placement editing: move, crop, scale, rotate, replace image, change resolution metadata intentionally, preserve ICC profile, masks and transparency. Not Photoshop.
Text editing
Much harder than it looks: a PDF may contain subset fonts holding only the glyphs used at generation time, so replacing text may need glyphs that do not exist. Expose two modes:
- Safe text correction — existing encoded glyphs/font resources permit the requested replacement.
- Recompose — choose/embed a font, reshape the text, and explicitly warn that metrics/reflow may change.
Text state (matrices, kerning arrays, character/word spacing, rise, horizontal scaling, encodings) means text is treated as structured runs, not characters painted onto a canvas.
Non-negotiables
- Edits share the mutation/undo/provenance architecture from the beginning (one change record per edit; reversibility stated).
- Render/preflight/separation regression after every mutation class; untouched objects preserved where possible.
- No second rewriting engine: this AST is the foundation Ink Manager, hairlines, trapping, imposition and packaging build on.
Prerequisites / related
Everything in this batch depends on it; it in turn consumes the existing operation registry/planner/transaction contracts (0.3.0 line).
Batch context (2026-09-15 architecture review). These items are epics sharing five foundations, not isolated UI features: a production PDF object/mutation engine (parse page content/resources into an editable object model, mutate transactionally, regenerate a valid PDF, preserve untouched objects, run render/preflight/separation regression after every mutation), a separation/color engine, a sheet/layout engine, a production semantic/job model, and a revision/provenance model. Every edit is expected to produce a change record (changed_object_ids, operation, before, after, warnings, reversible). Recommended sequencing: Ink Manager + mutation foundation + printer furniture + basic hairline normalization first; then imposition and direct-object editing foundations; then ISO 19593 packaging; then PDF/VT and XJDF; customer portals and cloud collaboration much later.
Parked: no milestone, labeled future planned. Promote by assigning a milestone and removing the label when a release train picks this up.
Scope
The most expensive item in the batch: it turns Loop from a production-fixup application into a genuine PDF editor — and it is the page-content object model the other mutation work depends on.
Core requirement
A page-content AST, not raw content-stream string editing:
GraphicsObject: Path, TextRun, Image, Form, Shading, Clip, Group. Every object carries its effective CTM, graphics state, clipping stack, transparency state, colour space, and resource dependencies.Vector editing
Node movement, Bézier handles, fill/stroke changes, transform, delete, duplicate, compound paths; winding rules and clipping semantics preserved.
Image editing
V1 means production-safe placement editing: move, crop, scale, rotate, replace image, change resolution metadata intentionally, preserve ICC profile, masks and transparency. Not Photoshop.
Text editing
Much harder than it looks: a PDF may contain subset fonts holding only the glyphs used at generation time, so replacing text may need glyphs that do not exist. Expose two modes:
Text state (matrices, kerning arrays, character/word spacing, rise, horizontal scaling, encodings) means text is treated as structured runs, not characters painted onto a canvas.
Non-negotiables
Prerequisites / related
Everything in this batch depends on it; it in turn consumes the existing operation registry/planner/transaction contracts (0.3.0 line).
Batch context (2026-09-15 architecture review). These items are epics sharing five foundations, not isolated UI features: a production PDF object/mutation engine (parse page content/resources into an editable object model, mutate transactionally, regenerate a valid PDF, preserve untouched objects, run render/preflight/separation regression after every mutation), a separation/color engine, a sheet/layout engine, a production semantic/job model, and a revision/provenance model. Every edit is expected to produce a change record (
changed_object_ids,operation,before,after,warnings,reversible). Recommended sequencing: Ink Manager + mutation foundation + printer furniture + basic hairline normalization first; then imposition and direct-object editing foundations; then ISO 19593 packaging; then PDF/VT and XJDF; customer portals and cloud collaboration much later.Parked: no milestone, labeled
future planned. Promote by assigning a milestone and removing the label when a release train picks this up.