Vextor

Editing

Read the baseline

Revisioned document sessions

Read the session contract for fields and bounds, and use vextor vxl session schema for closed executable schemas. The public lifecycle recipe provides all ten local CLI commands and the hosted REST routes.

<!-- vxl-session-actions:local:begin -->

Local CLI actions: open, replace, set-overrides, undo, redo, status, cancel, entities, preview, publish.

<!-- vxl-session-actions:local:end --><!-- vxl-session-actions:hosted:begin -->

Hosted REST actions: open, replace, set_overrides, undo, redo, status, cancel, entities, preview, publish.

<!-- vxl-session-actions:hosted:end -->

The CLI uses set-overrides, the wire uses set_overrides.

Replace and overrides

Keep authoring complete VXL documents using the gated loop. Open with standard padded base64 of the checked authored document, schema_version:1, the complete overrides and optional immutable timeout/TTL. Retain session_ref and read status for canonical document, overrides, revision, build refs and report/packet descriptors. Preserve questions and assumptions in edits. Each edit uses current base_revision and a fresh printable idempotency key; an equal retry reuses its key and body. Replace sends a whole document and whole overrides map; set-overrides replaces the whole map and {} clears it. Never send operation batches or display numbers as selectors; repair authored geometric predicates and expected counts.

# both roots must already exist.
vextor vxl session open open.json --session-root PRIVATE --generation-root PUBLIC --cell-manifest CELL --idempotency-key KEY
# status.json contains {}.
vextor vxl session status SESSION status.json --session-root PRIVATE
# replacement includes schema_version, base_revision, document, overrides.
vextor vxl session replace SESSION replace.json --session-root PRIVATE --idempotency-key EDIT_KEY

Undo and redo

HOLD and RELEASE accept source; FAILED/check refusal/cancellation preserve the previous source and overrides. Read the revision packet and follow the same repair/stop rules; count session rebuild attempts, including an undo that must rebuild, toward the existing four-build cap. Undo restores the preceding accepted source at a higher revision; local redo restores the next undone source at a further revision (empty_redo if none remains). Entities queries measure retained STEP with explicit evidence; preview reads fixed captured PNGs unless a schema-2 diagnostic is requested.

Variants

Use variants[] for named finite override sets and when only for structure selected by finite-domain parameters. See the language card. Set-overrides replaces the whole map; {} clears it.

Compact replies

Use --compact (wire compact:true) on replace, set-overrides, undo, redo or publish. The reply projects the retained report: outcome, label, changed steps, all nonpassing requirements, first diagnostic, nullable measures delta and full report reference. Equal semantic key/body retries may request full or compact without rebuilding. Compact does not truncate failures, perform measurements or upgrade HOLD to RELEASE.

Entities and pages

Use --filter with AND predicates (kind, carrier, normal_near, within_aabb_mm), --limit (1–1024) and the returned --cursor for continuation. within_aabb_mm tests face centroids, not whole-entity containment. Exact edge centroids are unavailable; there is no step-provenance filter. Display numbers are observations, never authored selectors. Keep revision, build, terminal, topology and filter fixed across pages; inspect complete and next_cursor. Delivered mesh triangle pages are diagnostic-only. Use vextor commands --with-entries to find real CLI/REST adapters; entries do not grant backend admission. See the session contract.

Diagnostic preview

Diagnostic preview: session preview uses schema 2. Add --azimuth, --elevation, --section OX,OY,OZ:NX,NY,NZ[:negative], repeatable --ghost/--solid, or entity highlight flags (--highlight-terminal, --highlight-faces, --highlight-edges, --topology-digest) to render delivered meshes at --size up to 2048. --target and --span set the orthographic framing. vextor vxl render GENERATION_DIR --terminal T --section 0,0,5:0,0,1 --output section.png renders a finished generation. These images are diagnostic-only, never verification evidence; sections have no exact caps.

Recovery and publish

Publish only the current build/ref at its current revision when the user's request calls for delivery. Publishing HOLD is allowed, retains its label and keeps it out of the release index. Publish does not close the session or increment revision. No idle native worker is retained; source and authenticated outcomes survive restart. Status distinguishes idle, building, publishing, recovering and expired. After a hosted precommit interruption, last_request.state is interrupted and current is unchanged; retrying its key replays that outcome, while a fresh key may rebuild. A durable committed source or commit journal is reconciled without modeling again. Unknown publication requires install reconciliation. Keep HOLD files labelled in private previews and published deliveries. Hosted calls require vxl_session; cancellation also requires request_cancel, and private file reads require artifact_read. Do not claim RELEASE from missing measurements.

Deliver a native document

After a successful accepted build, run vextor vxl export-native RUN/generations/NAME --output model.vextor using the native OCCT package for exact intake. It cold-authenticates the generation, retains canonical VXL, overrides and original assets with generation provenance, imports exact terminals as exact STEP parts and mesh terminals as native meshes, then saves/reopens the existing native format. Cold export with part export --format step|stl|3mf for exact parts or mesh export for a single mesh. Multiple exact parts require the returned --part-id; multiple meshes use mesh export --mesh-id UUID. Native mesh-chain editing currently requires a single mesh root.

For session history, publish every accepted revision and pass all generation directories in oldest-to-newest order (up to 33) before --output history.vextor. Each generation becomes one native revision; failed builds are omitted. A final generation alone cannot recover earlier session revisions. Native bodies remain editable imported snapshots; keep the VXL recipe for parametric feature edits. This does not recover a native VXL feature tree, assembly constraints, or retained multires detail layers. See the VXL reference.

Examples

  • when_variants
  • provisional_open_question