Skip to content

Extend Engineering Paper

Contract-only Extension surface

The editor, template, codec, and presentation contributions below are planned. The production Flow reader currently renders installed Component targets as read-only unsupported Nodes; it has no renderer/modal/editor or decorator-to-package bridge. Multi-declaration containers and host presentation belong to the contract_only V2 in Node presentation and third-party UI. The V2 Canvas uses only host-owned component.declarative@2; rich editors, renderers, and non-empty settings remain blocked until RFC-014 and a separate versioned settings contract are both approved. The current V1 legacy setting remains a distinct compatibility branch: canonical schema and Rust require contractSnapshot · document, validate the snapshot on read, and keep it out of generic Component recovery and successor V2 authority.

Engineering Paper is the target editor for one Component supplied by the optional Engineering Paper package. Its Extension contract assigns templates, Document/PDF artifacts, editor elements, and the versioned manual to that package.

Choose the contribution point

GoalContribution point
Add reusable calculation logiccore @px.function
Add a Component with a dedicated UI@px.component
Add a reusable document templateExtension @px.paper template contribution
Add a section, formula, or evidence presentationExtension editor element contribution
Add an importer or exporterversioned Extension document-codec contribution
Add a Canvas ComponentComponent package @px.component export and flow.node(...) placement

The target Engineering Paper surface exposes one Canvas Component: engineering_paper. Formula blocks and evidence tables remain inside its planned editor.

Connection rule

Initial successor V2 receives calculation values only through ports fixed by component declaration.inputs. A planned editor element projects a current Node input or field into a stable document block only after its separate settings/rich-surface contracts are admitted.

Runtime executes the typed input binding and the editor displays that value in a stable document block.

An Extension must not invent a hidden Flow invocation, dotted-path binding, private Run button, or raw MCP execution path.

A future deterministic Paper compiler may lower document.input(...) at publish/materialization time into fixed declaration inputs after separate approval; this is not Node-instance port materialization. Engineering Paper retains exactly one engineering_paper Component, so a template with a different input contract is unsupported until versioned settings and port-projection contracts exist. Generic package one-to-many support does not widen this inventory. Add input and instance-port materialization remain blocked on the same contracts.

Package layout

text
engineering-paper-extension/
├─ pyproject.toml
├─ src/<package>/
│  ├─ components.py
│  └─ templates.py
├─ editor/
│  ├─ package.json
│  └─ src/index.ts
├─ docs/
│  ├─ ko/
│  └─ en/
└─ tests/

A successor V2 package uses the package-envelope manifest authority, requiredContractVersion: 2, and the exact seven-field ComponentRef including publisher. Its Canvas projection is host-owned. Editor assets, templates, codecs, viewers, print renderers, manuals, and non-empty settings remain deferred until both RFC-014 and the separate settings contract pass admission. px.Report and Report Workbench remain the separate .pxreport authoring surfaces.

No successor V2 release artifact bytes exist. The seven-field ComponentRef is a contract-only non-resolvable member shape, not a concrete identity: package/release digests must not be invented, and exact-ref creation, installation, and admission remain forbidden until actual bytes are measured.

Manual contract

Ship a versioned manual for each public contribution. Describe where the user finds it, its typed inputs and artifacts, supported hosts, permissions, recovery from a missing Component package, and migration behavior.

Continue