master
Drew Owens Share frozen native Rust mechanical development checkpoint and qualification scope b2d7cdb 26d ago

Native assembly qualification client

Standalone Rust protocol verifier for R20's explicit native-root-assembly-v1 contract. One new task document, two empty native component definitions, three identity occurrences (A, B, shared A), and two local metadata updates. The verifier separately checks every native add/set acknowledgment, retained identities, complete supported resource counts, JSON metadata encoding, shared quantities, purchasing flags, final published readback, durable records, stale refusal and known-success replay/conflict without SDK dispatch. A read through the prior dimension contract checks additive compatibility.

Invoke once with fusion-native-assembly-verifier RUNTIME_JSON AUTHORITY_JSON NEW_RECEIPT_DIRECTORY. All paths are local to the runtime host; output must be new and absolute. Root separately establishes the exact Windows process lifetime, source/DLL hashes and current document roster. This executable validates runtime bytes/PID/epoch and authority binding but does not itself query Windows process creation time.

Authority has exactly these fields: schemaVersion:1; purpose:r20-native-assembly-qualification; pid; epoch; processCreationTime100ns (decimal string); runtimeSha256 (exact file bytes); baselineSha256 (compact serde_json of runtime.before, insertion order preserved); campaignId (8..32 ASCII alphanumeric); baselineDocumentCount:1..3; priorTaskDocumentIds (0..2 unique, separately root-proven prior task IDs); fixture:two-definitions-three-occurrences-local-metadata-v1; and true booleans allowCreateOneTaskDocument, allowTwoNativeComponentDefinitions, allowOneSharedOccurrence, allowTwoLocalMetadataUpdates. Runtime baseline must contain one pristine unsaved Untitled blank plus the authorized modified task documents, with exactly one active document. Metadata preservation excludes the expected active-flag change; it is not a geometry-wide preservation proof.

The request table is initialized privately after exact authority validation. Only fixed authored effects and known-success replay/conflict variations can be sent. No arbitrary operation, original-document mutation, online-metadata read, import/export, close, activation, cleanup, host call or screenshot is exposed. Stops after any uncertain/unsettled effect; no automatic retries. A pre-admission refusal requires a fresh successful exact empty journal lookup. Durably not-executed stale writes are distinct from unknown outcomes. Literal parsed response bodies are preserved before interpretation; unparseable responses preserve bounded error text. Every intent/result uses exclusive receipt creation and sync.

Hard limits: 96 requests, 300 seconds total, absolute 8-second exchange capped by campaign deadline, 2 MiB response. The successful campaign confirms six distinct operations. Three deliberate known-success replay/conflict pairs must leave dispatch counters unchanged. All IDs come from this runtime and its exact newly returned task document.

This client is authored independently of the product implementation, but it observes product responses. A separate public-SDK observer is required for independent model truth. Online part number/description, BOM traversal/export, populated physical components, nested/external assemblies, nonidentity placement, solver constraints, rendering and full legacy parity remain unqualified. Test models remain for independently authorized archival/reopen/retirement; this client never grants cleanup authority.

The exact frozen 16-file C19 baseline is archived under evidence/baseline-source with BASELINE-C19-SOURCE-SHA256-1.txt (SHA256 7104108031073f0ca1035a9d77804c49d775cb34400bdc530d2e6d28d4e02bb4). Transport, durable-envelope and digest checks are inherited. Product code is not a dependency; only mechanical wire/schema core is. Source and dependency manifests must be frozen and independently reviewed before Windows/live use. serde_json preserve_order and float_roundtrip preserve baseline hashing and numeric receipts.

Freeze2 corrects centralized read epoch admission found by independent review. Dynamic reads require the exact runtime epoch; static capabilities may omit epoch but any present epoch must match. A mismatch latches uncertainty before any later effect/socket request. Freeze1 source and blocked review remain preserved.