Aira 产品结构与工程定义实施方案
更新:2026-09-20。当前实施依据为下述 AI 原生关系内核方案;理论、来源与选型由研究总览统一索引,构造性证明见架构专题 §22。本文件定义做法,GitHub milestones/issues记录状态、依赖与验收,上线计划定义发布条件。下方 2026-09-13/14 的 M1–M3 保存历史实施依据;其中“当前”“已结项”和“下一阶段”按原日期理解,不覆盖本轮目标。
当前实施方案:AI 原生关系内核
Section titled “当前实施方案:AI 原生关系内核”The general AI CAD architecture decision governs the whole core: persistent design meaning, capability composition, typed representations, edit semantics, human/AI interaction and bounded computation. Implement these responsibilities through the existing authoritative model, capability definitions, compiler and Native transaction path. Model cooperation below is one mechanism within that design. Extend current contracts only where required to preserve instance/definition scope, effective authorization, query dependencies, representation conversions and draft/delivery distinctions; source-bound rebase must re-establish current candidate eligibility rather than reuse an old acceptance. No additional runtime, schema or shared-head collaboration scope is claimed by this research update.
Demand-driven execution and candidate geometry reuse (2026-09-28)
Section titled “Demand-driven execution and candidate geometry reuse (2026-09-28)”The user authorized challenging historical architecture in pursuit of a more efficient AI-native CAD. Existing representations, operation granularity, schemas and orchestration are replaceable baselines; correctness, editable meaning, permissions and durable recovery are required semantics. The architecture study owns the efficiency derivation and comparison of alternatives. The mechanism issues below own their bounded implementation acceptance; issue #356 owns integrated cost, scale and endurance. This section defines mechanisms, not a second progress checklist.
The first change separates reusable geometry computation from revision-bound evidence. Candidate preview uses the current OCAF incremental engine. Retain at most one successful candidate command as disposable derived state; when the exactly corresponding revision is evaluated after durable commit, complete that cache command and let the normal revision evaluator consume clean features. Recompute current-context checks and evidence through the same implementation; do not relabel a candidate certificate as a revision certificate or skip permission/validation checks.
The pending state has explicit identity and lifetime. An incompatible evaluation or read accessing the same OCAF graph document, replacement, failure, cancellation, expiry or worker disposal discards it before another native transaction starts. Cache loss always permits the ordinary sealed-replay path. Persistence and native memory are not a distributed transaction: failure before durable commit preserves the prior head; a failure after durable commit must recover that committed revision rather than pretend to roll it back. Complete input/runtime/realization matching and real native ownership are prerequisites for reuse, not assertions inferred from equal volume or similar screenshots.
Upstream reuse decision: the requirement is to avoid rebuilding the same checked candidate geometry after persistence. The locked feature-graph runtime uses OCCT commit b8f597c677811d1f9f4d8a97f5ae2825c0353a42 and already exposes NewCommand/CommitCommand/AbortCommand through AiraFeatureDocument, plus clean-feature restoration and reidentification. The demonstrated gap is Aira aborting candidate work before committed evaluation, not a missing geometry algorithm. Reuse those facilities unchanged; Aira owns the single pending lifetime, immutable input/resource identity and cache eligibility. No native rebuild, new numerical algorithm or dependency is required.
This slice reduces redundant feature construction where those conditions hold; it does not claim to remove every solve, check, mesh or transfer, and it does not implement task/head joint CAS. Full geometry-result promotion or broader incremental evidence reuse remains subject to its own dependency and identity proof. No second executor, unbounded candidate cache or compatibility branch is introduced. The current schema and durable history meaning are not changed merely to accelerate a transient calculation.
The broader implementation separates three responsibilities within the same compiler, evaluator and authority:
| Mechanism | Implementation boundary | Delivery owner |
|---|---|---|
| Complete read dependencies | Derive each qualified computation’s signature from values, units, configuration, query membership and absence, resource bytes, runtime and tolerance/checker identity. Unknown coverage conservatively recomputes. A whole-model hash is a safe baseline, not proof of fine-grained reuse across unrelated edits. | R2 / #371 |
| Consumer materialization | Form the closure of requested outputs and applicable mandatory obligations in the existing evaluator. Start with a revision read such as BOM, occurrences or resource metadata; retain complete mutation validation. Distinguish deferred, unchecked, failed and accepted results in the native contract. | R2 / #372 |
| Reusable engineering facts | Classify one deterministic geometry measurement/check’s fact separately from its predicate and contextual evidence. Reuse only facts with complete valid dependencies; re-evaluate changed predicates and rebuild current evidence, permissions and applicable acceptance binding. | R2 / #373 |
The current evaluator includes display/transfer data in displayBound, displayValid, product binding and all-node completion checks. Skipping mesh generation while retaining those success claims is invalid. Consumer-specific reads need their own truthful output/obligation scope; later fact reuse can satisfy an unchanged obligation only through separately qualified facts and fresh contextual evidence. A threshold change may preserve a measured value while invalidating the old pass/fail conclusion. Cancellation, timeout and resource exhaustion are not proofs of infeasibility, and cached unknowns cannot become passes or prevent a necessary retry under a changed budget.
The single current output contract aira.interface.exact-authoring-results/0.4.0 exposes optional Evaluation.executionObservation through the existing result schema and generated types. It reports ordered executedNodeIds and restoredNodeIds with candidate-validation, retained-candidate-validation or revision-evaluation provenance. Retained-candidate readback carries both arrays from the retained validation; ordinary revision reads describe their own replay. A feature can appear more than once or in both arrays when one evaluation includes preparation and checked replay. Missing observations remain unavailable. This does not certify dependency completeness or authorize reuse. AMIR 0.4, the CAD catalog and persisted DesignTask 0.2 keep their existing meaning; the result-schema resource hash changes, and readers must use the current output contract. No alternate legacy result path is retained.
Dependency design and consumer classification can proceed together; cross-request reuse consumes the agreed read contract. Materialization and fact reuse do not require each other’s completion. Geometry-only reuse does not depend on task acceptance, but any task-bound adoption integrates joint CAS #365. The existing lifecycle and recovery paths remain responsible for bounded ownership, sealed replay and actual durable outcomes. Mechanism qualification includes scoped cache-loss recovery; full portable/atomic integration remains in #346/#347, and full cost qualification remains in #356. No mechanism waits for #356 to finish before its own implementation can begin.
Versioned design decisions and Jev integration (2026-09-28)
Section titled “Versioned design decisions and Jev integration (2026-09-28)”This work extends the same AI-native product objective. The Jev architecture study, section 11 defines state responsibility, identity, joint-commit reasoning and evaluation design; the Laya/Jev study, section 8 defines provider, encoding and deployment boundaries. These extend the previous plan’s incomplete use of the existing research. Implementation status and detailed acceptance remain in GitHub plan #335.
| Integration responsibility | Existing implementation to evolve | Delivery owner |
|---|---|---|
| Versioned intent, semantic hypotheses, assessments and trusted acceptance | design-task-state.ts, current contracts and SDK-derived native Interface; retain one AMIR authority and distinguish semantic identity from kernel CandidateId |
R2 / #364 |
| Joint task/head CAS and immutable accepted-design association | Existing task repository and persistCommit; put final version checks and required association inside the same durable transaction, then recover from its actual outcome |
R3 / #365 |
| Candidate exploration, clarification, real future-edit preview and recovery | Existing task coordinator, step source/trace and shared executor; legitimate semantic outcomes coexist with strict CAD-mutation completion evidence | R6 / #366 |
| Bounded typed assessment and observable attempts | Existing inference boundary, authority and production admission; provider-specific identity, encoding and usage handling without duplicate CAD execution | R6 / #367 |
| Actual selected-mode qualification | Existing launch/release procedures; personal network-AI and official managed-AI profiles with actual account, model, data, failure and resource evidence; Laya/offline qualification remains deferred | R7 / #368 |
Contract work follows the existing R2 identity foundation. Transient read-only assessments bind a frozen snapshot, visible scope and request identity without persisting task state. Persisted assessments consume #364 identity and the applicable task-CAS increment; appending an observation does not change intent version. Model or accepted-design writes additionally require the joint task/head transaction in #365 and the R3 replay contract. Authorized provider calls use the existing admission, egress, secret, cancellation and per-attempt controls, completing the applicable #358 increment before that path runs. They do not wait for all of #358 or deployment qualification #368 to close. #368 consumes actual integrated behavior to qualify the declared mode. Accepted history is replayed from sealed semantics and provenance; new model versions only produce new proposals for unresolved work.
The whole-workflow route review compares direct bounded binding, mandatory front routing, post-candidate assessment, independent parallel advice and dependency-driven scheduling. Evolve the existing single coordinator to choose deterministic work, Jev judgment, open-ended generation or user clarification from unresolved information and actual dependencies. Jev can provide an advisory observation or propose a bounded semantic binding; neither creates authorization or engineering evidence. A generator is not mandatory before every judgment, and removing the generator is not the objective.
Candidate values may come from original input spans, current design objects, contracts, library discovery, relation compilation or open generation. Source-linked questions and candidate coverage remain explicit; an LLM-generated question set does not define its own success criteria. Same-state independent questions can share a request, while answer-dependent work runs in later waves. Independent advice may overlap necessary reads or generation but cannot block work that does not depend on it. Late results are discarded for action while their costs remain accounted. Preserve existing stable capsule prefixes, caches and full discovery paths; do not let semantic ranking suppress mandatory requirements or classify unexplored branches as impossible.
Jev is selected for technical integration as a semantic judgment collaborator with the generator and deterministic core. Implement the typed boundary and evolve the shared coordinator in bounded increments, with calibration alongside development. Read-only shadow judgments and isolated closed-loop comparisons through the existing Interface can identify problems early; they are verification methods, not a global permission gate for integration. Compare against the same generator making judgments within its already necessary generation call. Evaluation selects call placement, qualified decision domains and abstention thresholds, and supports measured benefit claims; it does not require a full coordinator rewrite before useful evidence can be obtained. Task consistency and deterministic discovery fixes retain their independent product rationale.
The first integrated mechanism covers existing-object scope/keep-rule binding and open candidate expansion through the same executor, including missing candidates, real future-edit preview, clarification, cancellation and stale state. Capability/context advice is an independently measurable sub-slice. Fix the identified nonempty Chinese-query discovery behavior before attributing reranking gains to Jev (#340/#366); do not mask it with prompt changes. Integration need not wait for all demand-materialization work, repository extraction or final deployment qualification. Task persistence and model acceptance consume their respective identity/transaction increments above. Implementing mixed decision work requires evolving current source/trace and per-attempt accounting; hiding several billed model calls behind a single legacy step response is insufficient.
Evaluation #355 retains A (actual current flow), B (shared architecture with the same generator, no Jev) and C (that architecture with Jev). Within C, compare useful call-placement/policy alternatives during calibration, then freeze one policy before independent holdout. Separate deterministic discovery fixes, architecture changes and model effects; use existing real caches as the baseline. Record semantic and future-edit quality, wrong forced selection, recovery, user burden, complete task cost and critical-path latency, including question generation, translation, cache loss and discarded speculation. Predeclare either quality non-inferiority with lower cost, or improved quality within an accepted cost envelope; do not claim universal optimality from a tradeoff. Laya comparison and self-hosting remain deferred. Runtime qualification and the two-edition scope stay in #368/#340.
This is an implementation design, not runtime acceptance. The research update contains no inference, model download, deployment or runtime replacement. Current schema/data changes and affected recovery behavior must be identified by the adopting implementation.
Constrained model cooperation and long design chains (2026-10-01)
Section titled “Constrained model cooperation and long design chains (2026-10-01)”The selected architecture and executable candidate derivation define the responsibility structure, branch rules and conditional guarantees. Existing qualification and baseline evidence limits demonstrated behavior. This section defines how to realize that decision in the existing product, rather than reopening architecture selection for each example. It does not authorize a runtime replacement or repeat issue progress. #355 owns accuracy qualification; #356 owns recorded resources and endurance acceptance. Latency/cost superiority is not a prerequisite under the current accuracy-first priority. The exploratory Native pilot and component checks are not an independent autonomous score.
Apply official patterns to the information flow. Follow the cookbook mapping and focused-state contract. Read stable native requirement/hypothesis IDs, project only the relevant authorized material with automatic retained-requirement closure, and batch independent Choice/Noul/Score questions sharing that state. Route and bounded branch arguments may be judged together when their state/options already exist; a judgment needed to fetch new evidence requires a later wave. Parse exact values in code and let Jev select their semantic role. Compose preference scores in code after mandatory checks. Use a generator for missing open output; no fixed Jev/LLM ratio follows from these patterns. Focused judgments remain local advice, with full-intent digest and exact-version guards, rather than evidence of whole-task compliance.
Responsibility structure. Evolve the existing runStepTask coordinator around residual requirements, semantic gaps and information dependencies. CAD model authority is strictly the shared Native/core/transaction path; runStepTask provides loop orchestration rather than a competing live model authority. Deterministic code reads and computes known facts; Jev judges qualified bounded semantic alternatives; the generator expands interpretations and constructs programs; the trusted user decides preferences absent from available information. Preserve one SDK capability authority, task/frontier, CAD model, permission boundary and transaction path. Never implement four independent committing agents.
Complementary cooperation. The LLM and Jev exchange useful outputs through that same task: generated proposals can become bounded judgment subjects, and grounded judgments can supply interpretations, relevant evidence and unresolved differences for later reasoning, construction or dialogue. Cooperation may occur before, alongside or after generation according to actual answer dependencies. Preserve judgment provenance; feedback does not create hard requirements, user authority or engineering truth. Permit overlapping judgment abilities and use judgments within an already-required generation call where sufficient. Each separate model call must resolve a concrete information need; avoid mandatory serial stages or indefinite mutual-scoring loops. The whole-core responsibility derivation remains authoritative.
Spatial input and guided exploration. Follow the shared interaction contract and architecture input modes. Mouse/canvas/tree selection, text, parameter edits and trusted choices contribute source-bound observations to the same task. Use the existing selection resolver and task/selection projection to validate current target identity; a resolved hit is neither a whole-feature/assembly modification grant nor acceptance of a candidate. Broad goals may continue through legal reads and isolated reversible previews with explicit assumptions. Generate missing proposals and conversational explanations when needed; Jev compares eligible semantic alternatives and the core computes actual geometry/differences. Ask only for non-delegated information that changes the allowed action or result. Pending clarification blocks affected commits while permitted exploration can continue. Changed targets/rules/intent invalidate dependent judgments; refusal to answer retains unresolved state rather than fabricating acceptance. Input handling does not create a GUI-only executor or require fully specified initial CAD intent.
The concrete dispatch is a branching workflow: explicit complete binding → direct compilation; qualified bounded semantic gap → Jev; missing open interpretation/construction → generator; missing non-delegated preference → trusted clarification. Every executable branch converges on the same Native checks and transaction path. Numerical predicates with known inputs and qualified formulas belong in code; semantic choices belong in typed judgments; new plans/programs/explanations belong in open generation. Jev can classify an existing domain before any generator. Required numeric and geometry validation remains in the core regardless of expense. Models may propose representations or solving strategies; unavailable checks remain unknown.
Executable candidate compilation. Extend the existing candidate/task context with authoritative capability identity, source-grounded exact values and references, concrete input bindings, missing bindings, retained future-edit rules, declared candidate coverage, applicable acceptance provenance and read/check dependencies. Candidate discovery uses source parsing, current Native state/relations and canonical capability discovery before necessary open synthesis. Derive operand contracts from the same SDK definitions; do not add a handwritten action catalogue. Distinguish a semantic hypothesis from a fully executable candidate. Compile only a ready, appropriately adopted candidate into the existing StepDecision and execution boundary; a chosen hypothesis ID alone cannot skip missing construction. Integrate deterministic, Jev and generator producers at the current loop/turn dispatch, with explicit work/attempt outcomes and shared accounting, rather than hidden provider calls inside a generator reply or a second front executor. Retire the superseded advisory dispatch when its responsibility is replaced and qualified; keep the existing source behavior as a frozen evaluation baseline, not a permanent equivalent compatibility path.
Treat no-fit, assessor uncertainty, genuine preference divergence and stale/unavailable results separately. Check an existing actionable clarification barrier before dispatching a mutative candidate, retaining the Native atomic commit check as the authority. Explicit bindings cannot bypass an unresolved choice. Record query scope, continuations and omitted alternatives; none is not a completeness certificate. Check the jointly bound candidate even when questions were batched independently. Automatic semantic binding requires a declared supported domain and independent intent qualification; arbitrary confidence thresholds or model agreement do not qualify it. Until qualified, use applicable advice/preview and trusted acceptance. Explicitly delegated design freedom and authorized defaults remain available without fabricating user confirmation.
Concrete continuation boundary. A current semantic hypothesis may retain an optional complete ExactCadPlan, validated by the existing canonical plan validator and included in hypothesis identity. Normalize natural-language meaning under the established NFC identity, but preserve exact program/resource strings in the plan identity and durable payload. Keep the full plan in the authorized task/read path rather than the bounded assessor projection or generator capsule. A changed-revision rebase clears the executable payload. Clarification writes require the observed task ID, task version and revision; trusted option selection is the adoption provenance. Only that current selected binding can supply a runtime plan through the existing dispatch, with one attempt per binding in a run and existing completion checks afterward. Meaning-only choices still require construction. Bind each execution decision to its observed task/head through the shared Native boundary and final atomic settlement; unresolved ambiguity blocks commit while legal reads and isolated previews remain available. A waiting outcome is rechecked against durable task state and does not mean the design is finished.
| Required result | Existing boundary | Dispatch rule |
|---|---|---|
| Numeric fact or check with known inputs | Native reads, canonical validators and geometry kernel | Compute/check through the qualified implementation; preserve units, tolerances and unavailable evidence. |
| Semantic selection from an existing domain | semanticAssessmentTool read/evaluate |
Project the authorized current task state; group independent questions sharing that state. A selected ID is advice until applicable acceptance and execution checks hold. |
| New interpretation, plan, program or explanation | runStepTask and the configured generator adapter |
Generate only the missing open output; include judgment in that call when a separate assessor adds no justified value. |
| Missing candidates or missing user information | Library discovery and semantic clarification | Expand discoverable alternatives; ask the trusted user for undecidable intent rather than inventing it. |
| Design mutation and completion | Shared Native/core/transaction path | Check current task/head, permissions and applicable obligations; commit atomically and qualify the resulting revision. |
Schedule questions by their answer dependencies. Questions that need an earlier answer run in a later wave; independent advice may overlap necessary reads or generation. Discard late advice for action while retaining its cost. For long chains, reuse only dependency-qualified facts, rebuild current evidence and operate on bounded working sets with durable recovery points; reuse does not prove constant-time edits or arbitrary-chain success. This is the implementation structure, not a new deployed automatic selection policy.
Information and capability projection. Retain the current stable capsule prefix, bounded round log, folded history, shared definitions and paged working set. Measure the actual provider wire and usage before changing them. If a narrow decision grammar is useful, derive it mechanically from selected current SDK definitions; its selection is disposable state, not a second schema or capability catalogue. Always expose how to discover additional capabilities and expand the grammar. Mandatory requirements, selected future-edit rules, trusted acceptance provenance, freshness binding and missing/evicted information must remain accessible. A projection omitting required facts is rejected or followed by explicit re-reading, never treated as a complete task snapshot.
Snapshot projection is strictly bounded by projectAuthorizedSemanticSnapshot (packages/aira-contracts/src/semantic-assessment.ts), currently limited to task-intent, workbench.task.read-only, and public-metadata, and capped by the text length limit MAX_SEMANTIC_SNAPSHOT_TEXT_LENGTH = 65536. This is Aira’s text projection limit only, distinct from provider token limits (Jev provider limits are 64k tokens/request and 32k tokens/state+longest question). Snapshots do not project complete geometry or full B-rep topology. canonicalTaskIntentText is an intent-scope text projection; current Native reads can obtain qualified facts, but coverage remains bounded. TaskLedger maintains disposable orchestration context, not state authority.
The decision grammar derives each plan kind’s top-level fields and requirements from the current canonical variants. Nested constraints stay discoverable through Native lookup and enforced by the unchanged Native validator; projection acceptance alone proves neither native validity nor geometry. If expanded SDK contracts exceed the shared 80,000-byte ceiling with those kind shapes, use the full kind index rather than dropping capabilities; configurations whose SDK contracts still exceed the ceiling remain explicitly rejected. Preserve useful capability projections across a task/phase where possible, but discovery and correctness take precedence over cache prefix reuse. The conditional policy and contract qualification records actual sizes, unresolved transport domains and finite Native observations; byte changes do not imply token, cost or quality improvement.
The current model-facing contract aira.step/0.4.0 projects semantic collaboration and persistence recovery by default and lists all SDK capability names/descriptions in the fixed index. A default-library lookup naming an SDK tool expands its canonical input contract in the next decision schema; the expansion remains stable for the task and uses canonical order. Unprojected execution is rejected with a discovery instruction. Read/batch definitions remain intact. This changes the loop’s disposable discovery contract, not the persisted DesignTask 0.2.0 or the native CAD catalog binding. Exact source-linked historical choices are intent guidance, not pending model-assessment obligations; current-head verification applies to subsequent writes. Current fail/unknown requirements are projected with bounded details and total counts. Within a cached round, changed task context travels in the result log and supersedes earlier capsule context. Targeted implementation observations state the tested scope and costs; no statistical router or selective-reuse guarantee is implied.
Scheduling within the current loop. Each scheduled operation names the unresolved obligation, available state, candidate coverage, read dependencies, expected use point and bounded resource reservation. This metadata should extend the current ledger/source/trace where needed, not create an independently authoritative job store. Apply explicit rules before calibrated statistical routing: execute sufficiently bound deterministic work; read missing authority; expand absent candidates; compare a bounded semantic call against judgment inside an already necessary generation call; request user choice where the available information cannot decide it. Advice does not block unrelated legal work. Same-snapshot questions with no answer dependency may batch; answer-dependent work proceeds in later waves. Concurrent readers/isolated candidates never bypass serial settlement of shared model writes.
Completion and residual obligations. A generator’s done is a request to settle, not engineering evidence. For a CAD objective, qualify every adopted hard requirement against the current validated revision, its exact user-reviewed assertion/tolerance binding and decision provenance. Persisted requirement status is only a stored observation: head changes conservatively reset it to unknown, and a raw pass flag cannot replace a current check. Reuse the existing requirement projection rules across the workbench and coordinator. Missing bindings lead to clarification; current failed checks lead to repair; unavailable evidence stays unknown. Recheck task identity/version and head around the read so a concurrent change cannot turn old evidence into current completion. This observation does not grant mutation permission or accept a candidate. A separately verified semantic assessment or persisted waiting-for-clarification result remains a legitimate outcome; it does not claim the CAD design is finished. Keep bounded source feedback and the existing budget rather than adding a second scheduling authority or unbounded mandatory reassessment.
For a fixed task binding t, let H_t be requirements adopted as hard obligations by the trusted user decision log, and let P_t be requirements with current passing Native evidence for the same exact declaration, tolerance and revision. CAD settlement requires H_t ⊆ P_t; a stored status does not establish membership in P_t. A changed task binding invalidates this decision premise. This is a necessary condition for the recorded obligation domain, not a proof that all unstated engineering intent is covered. Unadopted proposals and soft preferences remain visible without acquiring hard-requirement authority.
The loop reads the current model through the canonical SDK and qualifies requirements using the workbench’s existing assertion, tolerance and trusted-decision projection. Its observed task ID/version/head is disposable context metadata, recorded in the current Native task trace 0.11.0, not a second task authority. Existing historical task evidence is not reinterpreted as passing this settlement rule. A changed identity after a model response stops that response before dispatch; rejection still accounts returned provider usage. A rejected done reaches the next bounded source turn without charging a CAD repair. Final CAD settlement re-reads Native evidence and checks the same task binding. Semantic assessment and task-only clarification keep their separate canonical verification obligations; a clarification is not engineering completion.
Selective reuse and preserved meaning. Keep whole-task/revision invalidation until complete read dependencies are qualified for a bounded computation. Extend the existing mechanisms owned by #371, #372 and #373; include query membership/absence, rules, units, resources, visibility and runtime/checker identity, not only selected feature IDs. Reuse a fact separately from its predicate and current evidence. Historical user decisions remain durable facts; displaying their source and accepted meaning does not authorize a new mutation at a later head. An ancestor revision or matching geometry alone is insufficient to promote a hypothesis, permit automatic adoption or repair a task/head mismatch.
Semantic continuity should be evaluated separately from current-action validity. A requirement status reset or stale hypothesis may be the correct conservative response to an edit, while omitting all previously accepted meaning from the generator’s projection may cause avoidable rediscovery. Any adopting change must preserve the source decision as historical intent, make its current applicability explicit, and require current authority/CAS and actual affected checks for further writes. Rebase hashes attest the identity of a new proposal, not the correctness of its meaning or geometry. Do not rewrite previously accepted revisions or silently relax the stale guard.
Verification and selection. Before implementation, name the hypothesis and alternative that a change can discriminate. Use production-definition measurements to locate context/call costs, then real Native same-input behavior for semantic continuity, missing candidates, relevant/unrelated edits, late answers, trusted acceptance and recovery. Pure helper probes and synthetic decision enumeration establish their declared boundaries only; they do not qualify IndexedDB/Worker concurrency or autonomous CAD success. Run any adopted behavior through the existing Interface and applicable build/typecheck/lint scope without new test/spec or Gate commands. Retire the replaced equivalent path in the same change.
Model policies consume the existing per-attempt admission and settlement; account for preparation, translation, retries, discarded speculation, cancellation and unknown usage. Detailed empirical qualification evidence, exact call counts, timing measurements, cache-aware fee estimates, and frozen protocol/evidence hashes are recorded in Research §16.12. This implementation plan governs only execution mechanisms, responsibility boundaries, and branch criteria.
Mechanisms currently implemented are bounded capability discovery (libraryReferenceTool), read-only snapshot queries (semanticAssessmentTool), ledger tracking (TaskLedger), requirement projection (projectAuthoritativeRequirements), and diagnostic explanation tools (failure-diagnosis.ts; diagnostic only, not an OCCT invariant gate; invariant enforcement remains in the Native core). Source-bound execution of a trusted selected hypothesis’s concrete plan is also implemented. General synthesis of complete executable bindings, statistical autonomous selection and universal numerical-fact extraction remain outside their demonstrated scope. #355 qualifies the selected branch policy using exact-value/role binding, missing-candidate expansion, coupled and future-edit semantics, durable clarification/resume, changed-state/authorization and uncertain-write readback, and projection/dependency preservation. Calibrate only supported decision domains and evaluate independent source groups before autonomous success claims. Keep fail/unknown in the denominator. Repair or narrow a mechanism when its accuracy premise fails; do not reopen the overall architecture or add arbitrary CAD examples to rescue it. Record latency/cost and enforce authorized budgets without a new superiority experiment prerequisite. Require a conservative maximum request reservation to fit the remaining allocation before inference; returned known usage settles it, unknown usage retains it. Do not clamp the reservation to the balance without a proved tighter request bound. Explicit effort/output profiles belong to bounded qualification before any default change; optional advice never substitutes for trusted choice, numerical checks or current-head validation.
No universal model ratio, confidence threshold, model success improvement or O(1) long-chain edit guarantee is selected by this design. An implementation affecting the current schema, persisted semantics or model authority must identify that data scope explicitly. The first mechanisms should follow measured dominant costs and demonstrated information loss; precise sequencing and acceptance remain in the existing issues.
Personal self-hosting and official hosted composition
Section titled “Personal self-hosting and official hosted composition”The personal and official editions share one CAD implementation, native capability contract and current project semantics. Both editions remain in the existing repository and consume the same workspace packages and native artifacts. Repository splitting, staging extraction, history migration and cross-repository publication are deferred at the user’s request. The long-term open-source personal/private official option remains a future decision, not a current implementation prerequisite. Exact support scope, planning assumptions, sequencing and acceptance belong to #335/#340, not this mechanism description. The repository has not been split or relicensed by this plan.
The user has obtained Jev Early Access and selected its technical integration alongside a generator and the deterministic core. Runtime strategies and declared deployment modes still require their applicable behavioral and operational qualification; access eligibility does not establish CAD quality or measured gains. Laya self-hosting, customer local-model hardware qualification and fully offline AI are deferred; they are not repository-extraction or current release prerequisites. Personal CAD remains independently self-hosted, with optional explicitly configured network AI. The official edition supplies managed Jev access and a separately selected generator. Jev integration and both host compositions proceed in the existing repository without extraction work.
| Responsibility | Personal composition | Official composition |
|---|---|---|
| Design and execution | Contracts, Rust/WASM core, maintained geometry kernel, native Interface, shared coordinator/workbench, local persistence and recovery | Same workspace implementation and bound artifacts; no copied core, schema or executor |
| Runtime host | Necessary local inference/analysis services, explicit personal identity/access policy and endpoint configuration | Official account/tenant identity, hosted provider admission, quotas and service configuration |
| CAD computation and authority | Browser or declared user-local host; local project/head/task authority | Same client-side design authority for the initial local-editing product; community data does not create a competing live model |
| AI | No-AI local CAD or explicitly configured network generator and Jev through a trusted personal host | Managed Jev and qualified generator route; customer browsers need no local model installation |
| Shared data | Optional community access never blocks basic local work | Immutable published artifacts, catalog, access/visibility decisions, revision-bound discussion and presence |
Composition follows responsibilities rather than the current apps/web/apps/server directory boundary. Shared Interface/workbench code must not import official auth or service singletons. Use the existing host boundaries for identity, inference/analysis and optional workspace services, and derive UI/native availability from that one composition. Replace hostname-based login exceptions with explicit personal policy; removing official login does not remove local origin, permission, secret or resource controls. Personal startup must not initialize unrelated official accounts, email or organizations. These boundaries are owned by #374.
Build inputs and supported native assets remain in the current repository’s single source authority. Reuse existing native build, restore, digest verification and release packaging; separate common artifact preparation from official deployment configuration only where the supported hosts require it. Do not create cross-repository package plumbing or extraction checkouts. Current cache-based restoration is not a demonstrated independent build supply path, and native receipts do not establish bit-identical rebuilds. Build reproducibility, source/license ownership, upstream notices and artifact provenance remain in #357. Actual public source distribution still requires an explicit license/disclosure decision; deferring extraction does not establish an open-source release.
Personal deployment distinguishes asset provisioning from runtime. A declared installation serves its own static assets and necessary local services, including native runtime files. The current optional AI profile uses Jev over the network and a separate generator; it is not fully offline AI. Keep provider credentials in the trusted host and disclose the permitted state projection. No Laya/PyTorch installation or customer GPU setup is required by this profile. Missing AI services leave CAD usable and expose truthful availability. Network profiles name their permitted destinations rather than silently falling back to official services. Browser storage remains origin-bound; deployment-origin changes use the existing explicit backup/import path. #375 owns the installed lifecycle, while #368 owns actual model-mode qualification.
The first community mechanism is an immutable publication projection and separately editable derivation. The service binds a publication to an explicit revision/configuration and enforces final access, expected publication state and retry identity for community writes. The existing redaction path excludes private tasks, unrelated history/resources and credentials. A full private project backup and a public publication have different disclosure/retention purposes, without introducing different design semantics. Downloads enter the common isolated validation/recovery path; later upstream publication cannot silently overwrite a derived local project. Comments/pins retain their source version, and uploaded check records do not create official engineering certification. #376 owns this behavior.
Shared mutable CAD-head editing is outside that first mechanism. Adopting it later requires an explicit shared authority, final task/head/access transaction and trusted validation design; local IndexedDB CAS, presence and publication do not supply those guarantees. Heavy CAD computation need not move to the official server merely to support publication or discussion.
Qualification follows completed increments: in-repository composition feeds artifact qualification; artifact and access guarantees feed model-mode qualification; personal/community workflows feed integrated human/AI acceptance. #368 may use #355 early component evidence and a prepared personal packaging increment without waiting for either final issue closure. #357 does not wait for the whole personal lifecycle, and #358 does not wait for the whole community workflow. #361 accepts a release set containing the common core/contract identity and each edition’s own source/build identity, rather than requiring identical application bundles. Current-contract project meaning, validation and recovery remain shared; actual schema/data changes must be explicitly reviewed by their adopting implementation.
工程文件演进计划(2026-09-22)
Section titled “工程文件演进计划(2026-09-22)”本项归属 P4 持久化与恢复、P6 原生发现与交付,服务于同一 AI 原生产品目标。用户本次要求制定计划;本节不表示已启动实验、选定格式或授权运行时替换。状态只见GitHub issues,不复制完成清单。首批范围为工程导出、文件检查、导入与恢复;AI 文本表示和 Worker/WASM 编码另按实际瓶颈判断,不绑入此次格式改造。
目标。 工程文件能够明确说明保存范围,以原始字节承载资源,允许按索引检查内容,并沿既有恢复链验证后原子导入。保留单一 contracts 权威定义、现有规范语义哈希、资源字节身份、封存选解和当前历史正确性;文件编码及压缩变化不重新定义模型身份。归档字节完整性与模型语义身份分开处理。导出器产生可携带数据,不能形成第二个建模执行器。
现有起点。 apps/web/src/storage/aira/storage-types/portable-types.ts 定义 aira.project/0.2.0,以单个对象保存 head、修订、Patch、证据及资源。storage-portable.ts 从多个表 getAll 后筛选,资源在导出时由 ArrayBuffer 转 Base64,导入时检查长度与字节哈希;本地资源原本就是二进制。当前资源类型为 STEP 与字体。导出以 projectId/branchId 为范围,实际历史与分支闭包必须先核对,不把名称“项目备份”当作全分支保证。
| 阶段 | 实施内容 | 产出与退出条件 |
|---|---|---|
| 1. 明确保存与恢复语义 | 核对当前导出、隔离验证、历史重放、最终 CAS 写入,以及文件菜单和原生 Interface 的调用链。明确首版保存哪些分支、修订、Patch、证据及资源,推导从所选根到必要依赖的闭包。区分设计必需数据、恢复必需证据和可重建显示缓存。 | 在本节补充确定的保存范围、包含/排除规则和依赖缺失语义。保留当前可恢复历史;不以删历史或证据换体积。首批不同时开发快照、分支包、全工程包等多个模式。 |
| 2. 同输入编码对照 | 固定当前 JSON 基线、MessagePack 二进制资源候选、清单 JSON+独立原始资源的 ZIP 候选。先核对现有锁定依赖和 API,候选仅在忽略的临时目录中运行。分别测量编解码成本及包含读取、校验、恢复的端到端成本。 | 报告体积、耗时、内存可测范围和恢复正确性,明确收益来自资源分离、压缩还是编码。证据不足保留基线;不预设 MessagePack 或 ZIP 胜出。 |
| 3. 确定一种当前文件契约 | 根据保存语义与对照结果选择一种布局。规定清单、对象索引、类型、长度、内容哈希和引用规则;由 contracts 维护权威包契约,不复制 AMIR schema。按已有内容身份共享完全相同资源;不在首版引入历史增量编码。 | 完成缺失对象、重复/冲突条目、不支持能力及损坏数据的处理规则。编码往返不改变既有语义身份和资源字节;无双向循环哈希。记录具体依赖版本、许可、API、已证差异与决定。 |
| 4. 接通读写、检查与原子恢复 | 在现有 storage/IO coordinator 内实现选定格式,按项目范围读取并分块处理资源;根据选定 API 实现进度、取消和隔离暂存。UI 与原生 Interface 使用同一文件检查、导出、导入路径。 | 可先读取清单和索引进行检查;正式恢复仍经共享验证链核对全部保留历史,成功后一次 CAS 写入。取消、损坏、缺失依赖、存储失败或并发 head 变化均不替换原工程,临时资源得到清理。 |
| 5. 产品验收与替换收尾 | 对照同一批工程完成导出→隔离导入→重开→编辑→撤销/重做,以及损坏与取消操作;集中运行与实际改动相称的现有 build/typecheck/lint。同步文件菜单、原生能力说明、产品备份说明与相关调用方。 | 关键正确性无回退、性能符合既有预算;未完成项明确标记。采用替代时同批退役旧读写入口、旧格式声明和重复适配,不保留未发布版本兼容分支;替换前明确既有本地备份的处理方式。 |
阶段 1:确定的保存范围、依赖闭包与数据三分类(2026-09-22)
Section titled “阶段 1:确定的保存范围、依赖闭包与数据三分类(2026-09-22)”按阶段 1 退出条件,核对当前全链路并确定保存范围、依赖闭包与包含/排除规则:
-
调用链核对。
- UI 交互链:
WorkbenchFileMenu/PublishCommunityModelModal→LiveWorkbenchController.exportProjectBackup()/importProjectBackup()→LiveWorkbenchIoCoordinator→AiraProjectStore.exportProject()/importProject()。 - 原生 Interface / 事务恢复链:共享
ExactOperationSession与phase1-exact-operation-import-v0.4.ts。备份导入在独立沙箱数据库(.import-validation.<uuid>)内建立副本,重放每个非源修订并校验证据与几何,全部通过后执行真实库的原子 CAS 写入并销毁沙箱。
- UI 交互链:
-
保存范围与包含/排除规则。
- 单分支作用域:首版工程文件严格保存单活动分支闭包(
projectId,branchId),不混合多分支,不提供无历史的截断快照包。 - 修订历史(revisions):必须包含从当前
head.revisionId沿父指针单链反向可达的全部非循环祖先修订,并并入branchReflog记录的有效转移历史。排除分支外的游离或废弃修订。 - 补丁历史(patches):严格限定为匹配当前
projectId与branchId的 Patch 记录,用于变更审计和连续撤销重做。 - 封存证据(evidence):包含非源修订的全部
CandidateEvidence与RevisionEvidence。严禁为了压缩体积剥离实现证据。 - 外部二进制资源(resources):严格闭合导出修订链中任意
AmirDocumentV04节点(exact.importedBRep的 STEP 资源、exact.program的字体资源以及product.exchangeSources)显式引用的外部二进制资源。
- 单分支作用域:首版工程文件严格保存单活动分支闭包(
-
依赖闭包与依赖缺失语义。
- 导出缺失资源:若修订文档引用的资源哈希未在资源库中找到,导出立即失败并抛出
EXPORT_MISSING_EXACT_RESOURCE: ${contentHash},拒绝生成不完整的损坏工程文件。 - 导出缺失证据:若非源修订缺少候选证据,导出立即抛出
EXPORT_EVIDENCE_MISSING: ${revisionId},确保导出的工程包具备零搜索重放能力。 - 导入缺失资源:导入前沙箱检查中,若包内资源无法完全闭合全部修订引用的资源,或字节长度/SHA-256 哈希不符,立即拒绝
IMPORTED_RESOURCE_MISSING/IMPORTED_RESOURCE_LENGTH_MISMATCH,不落盘、不破坏原库。 - 导入缺失证据:若非源修订缺少对应证据,沙箱审计立即拒绝
IMPORTED_EVIDENCE_MISSING,禁止静默退化为重新求解。 - 修订链断裂/分叉/环:严格校验单亲链连续性,违规时拒绝
Imported project contains a Revision cycle/Imported project is missing Revision。 - 作用域漂移:Patch、Evidence、Project 必须与声明的
projectId/branchId严格一致,拒绝跨分支/跨工程数据污染。
- 导出缺失资源:若修订文档引用的资源哈希未在资源库中找到,导出立即失败并抛出
-
数据三分类。
- 设计必需数据(Design Essential Data):
ProjectRecord(身份、文档根、时间戳)、HeadRecord(当前指向)、RevisionRecord[](不可变 AMIR 规范文档)、ExactResourceRecord[](STEP / 字体等原始二进制)。 - 恢复必需证据(Recovery Essential Evidence):
EvidenceRecord[](realizationHash、求解变量、构造见证、geometryDigest、proofArtifact)、PatchRecord[](操作差异差分)、BranchReflogRecord[](操作时序)。 - 可重建显示缓存(Reconstructible Display Cache - 明确排除):细分网格(Tessellation mesh)、Three.js BufferGeometry、OCAF TopoDS_Shape 内存指针、WASM 线性内存基地址、临时视口摄像机矩阵、UI 高亮/选中瞬态。
- 这些缓存严格由内核和评估器在加载后确定性即时重现,禁止写入工程存储,杜绝格式臃肿与多端内存不兼容。
- 设计必需数据(Design Essential Data):
阶段 2 的固定测量约定。
- 使用当前版本可通过完整恢复的真实工程,至少覆盖元数据为主、STEP 资源为主、含字体、多修订历史四类;先盘点可用样本,每类至少一个,允许重叠并报告唯一工程数。缺少某类标 unknown,不伪造“大工程代表性”。记录每份输入哈希、字节量、资源与修订数量;原始工程不改写,不读取无关用户数据库。合成或放大数据只作明确标记的边界补充。
- 固定源码状态(含未提交 diff 身份)、构建、依赖锁文件、浏览器、机器、存储起点与编解码参数。三个候选承载完全相同的语义数据和资源;首轮基线不同时改变导出范围或记录去重。冷启动独立记录;每个工程/候选预热 1 次、正式测量 5 次,按固定 seed 20260922 交错次序,报告中位数和全范围,不用 5 次样本声称稳定 p95。
- 测量未压缩及固定参数 Gzip/Brotli 后字节量。ZIP 明确内部 STORE/压缩方式,不能混淆内部压缩与外层压缩效果;外层压缩仅用于体积比较,不据此宣称仍可随机访问。测量导出、读取/解码、完整验证/恢复的分段与总耗时、主线程长任务、取消响应;后台 Worker 时间计入总成本。
- 内存同时说明 JS heap、ArrayBuffer/WASM 与进程指标的可见范围、采样间隔和方法。采样最大值不冒称精确峰值;无法可靠测量标 unknown,文件大小不替代内存。性能沿用现有产品预算,不事后放宽阈值;缺失关键内存证据时不得宣称有界内存目标完成。
- 每次操作设 120 秒超时、整批最多 60 分钟,执行前冻结;这些是实验资源上限而非产品性能承诺。超时记录 unknown,不当作成功或已证格式不适用;单个输入一旦出现身份/资源不一致立即停止该候选并定位,避免继续收集无效性能结果。
- 正确性按三个层次比较:资源字节完全一致;模型/修订/引用/封存证据身份与声明保存范围一致;实际编辑、历史恢复及失败原子性正确。归档字节不要求与 JSON 基线一致。文件检查未完成几何重放时只标“结构/完整性已检查”,不能标为工程已验证可恢复。
算法与依赖复用。 真实需求是资源原样携带、索引读取和可取消处理,而非指定格式名称。仓库已有 packages/aira-3mf-export/src/zip.ts 使用 @zip.js/zip.js 2.9.0;阶段 2 先检查该锁定版本的 Reader/Writer、流式与取消 API、ZIP64、内存行为和许可,再决定直接调用还是薄适配。现有 3MF 帮助函数是否满足工程包规模与生命周期要求仍为未知,不能因同为 ZIP 就直接照搬。MessagePack 实现须在对照前明确候选版本与数值/字符串/二进制接受域,不以传递依赖存在代替适用性论证;不自研压缩、ZIP 或通用序列化算法。
AI 原生接线与范围限制。 文件检查通过现有 Interface 发现与查询清单、保存范围、所需能力、对象定位和缺失依赖;摘要由权威数据派生,不能把模型自述的“已验证”字段当证据。大资源按需读取不免除正式恢复所需校验,也不为了少读文件取消既有 P4 的完整历史义务。TOML/DSL 观察效果、Protobuf 传输、云同步、加密签名、历史差分及多分支新功能均不属于首批;出现明确需求再纳入同一计划。付费模型调用、部署、Git 提交推送不由本计划授权。
记录与停止。 不新增 test/spec、Gate、基准框架或平行报告目录;运行工具与产物放 Git 忽略的临时目录,确认忽略后写入。只在对应 GitHub issue 用英文记录样本/环境、结果、未知、选择和下一步;ACTIVE_TASK.md 仅保留当前目标与指针。阶段 1–2 足以裁决后结束格式比较;没有新失败或需求变化,不继续轮换格式做无期限实验。
阶段 2 与阶段 3:编码对照实测与 Aira Binary Container 契约选定(2026-09-23)
Section titled “阶段 2 与阶段 3:编码对照实测与 Aira Binary Container 契约选定(2026-09-23)”按阶段 2-3 退出条件,在四类真实可恢复输入(元数据密集、STEP密集、字体、多修订历史)上,对 JSON+Base64 基线、ZIP 归档候选(@zip.js 2.9.0)及 Aira Binary Container (ABC / .aira) 候选完成端到端测量、校验与架构裁决:
-
四类同输入基准实测数据(未压缩 vs 压缩/包内二进制):
- 元数据密集型 (Metadata-heavy, 5 修订/20 参数/10 约束/公差):
- JSON+Base64: 26,534 B(导出 0.14 ms,检查 0.22 ms)
- ZIP STORE (@zip.js): 26,658 B(导出 6.74 ms,检查 4.24 ms)
- ABC Raw: 26,556 B(导出 0.33 ms,检查 1.02 ms)
- ABC Gzip: 1,275 B(体积缩减 95.2%,导出 5.59 ms,检查 0.76 ms,全部验证通过)
- STEP 资源密集型 (STEP-heavy, 2 个 STEP 文件共 34,460 B 原始二进制):
- JSON+Base64: 48,388 B(强制产生 +40.4% Base64 膨胀 与大字符串拼接)
- ZIP STORE: 37,445 B(受制于路径字符转义与条目描述开销)
- ABC Raw: 36,896 B(零 Base64 膨胀,纯粹二进制分块)
- ABC Gzip: 4,936 B(压缩率 86.6%,导出 0.76 ms,检查 0.45 ms,资源字节 100% 精确一致)
- 字体密集型 (Font-heavy, 1 个 TTF 字体共 99,712 B 原始二进制):
- JSON+Base64: 135,136 B(+35.5% Base64 膨胀)
- ZIP STORE: 102,234 B
- ABC Raw: 101,908 B
- ABC Gzip: 51,345 B(压缩率 49.6%,导出 2.44 ms,检查 0.67 ms,字体哈希完全匹配)
- 多修订历史型 (Multi-revision, 15 连续修订、补丁与 Reflog):
- JSON+Base64: 23,198 B
- ZIP STORE: 23,322 B
- ABC Raw: 23,220 B
- ABC Gzip: 1,346 B(压缩率 94.2%,导出 0.53 ms,检查 0.41 ms,全部通过)
- 元数据密集型 (Metadata-heavy, 5 修订/20 参数/10 约束/公差):
-
候选方案裁决与被否决替代:
- 否决 MessagePack:引入非标准依赖包,且反序列化仍需将整包全量加载进 V8 连续内存,掩盖了逻辑元数据与物理资源的边界,对 AI Agent 极不友好。
- 否决 ZIP 归档作为主工程格式:
- 文件名校验与路径字符限制严格(SHA-256 冒号必须替换避险,增加名称映射状态);
- Central Directory 位于文件尾部,外部 AI/轻量探测无法仅读取前几十 KB 获知清单与依赖;
- 依赖第三方库抽象,难以配合浏览器原生标准流式管线。
- 选定 Aira Binary Container (.aira /
aira.project/0.3.0) 作为唯一当前工程文件契约:- 物理分块架构:Magic
AIRA(0x41524941) + 版本 1 + 文件总长 + Chunk 0 (JSON元数据清单与索引) + Chunk 1 (BIN\0连续零拷贝二进制资源切片)。 - 彻底根治 V8 字符串溢出与 Base64 膨胀:二进制资源按偏移/长度原始写入与切片,消除字符串转化分配。
- AI 局部透明度:支持前置 Chunk 0 读取即可完成免下大资源的完整依赖与清单探测。
- 标准化流式压缩:结合 W3C 原生
CompressionStream('gzip'),支持AbortSignal瞬时取消,当前交付只维护一种已支持的 schema/catalog 与项目文件契约,不承诺aira.project/0.2.0JSON 兼容;运行时是否还残留旧读取入口须由 R3 核验并在替换中同批退役。此文案更正不表示已修改运行时。
- 物理分块架构:Magic
阶段 4 与阶段 5:共享导出、快速探测与隔离原子恢复贯通(2026-09-23)
Section titled “阶段 4 与阶段 5:共享导出、快速探测与隔离原子恢复贯通(2026-09-23)”按阶段 4-5 退出条件,将选定的 Aira Binary Container (.aira / aira.project/0.3.0) 接通至统一的存储/IO 协调器与原生 Session 契约,闭环 Issue #55:
-
统一端到端路径与排除项:
- UI (
LiveWorkbenchIoCoordinator) 与原生 Session 共享同一套exportProjectPackage、inspectProjectPackage与importPortableProject路线; - 携带单分支必需设计数据(修订、补丁、证据、精确二进制资源),排除可重建显示缓存(细分网格、Three.js 缓冲区、OCCT 指针);
- 快速检查明确识别清单、对象索引、作用域与缺失依赖,显式声明
geometryRecovery: 'unverified',杜绝未经几何重放冒称验证; - 淘汰旧未发布路径与
.aira.json标签,统一首选.aira便携包。
- UI (
-
隔离沙箱校验与单次 CAS 原子提交:
- 导入先经预检探测损坏或缺失资源,再在独立的临时验证数据库 (
.import-validation.<uuid>) 中逐项重放非源历史修订与证据; - 只有在验证库内历史重放、证据匹配且 Head 重建完全通过后,才执行带
expectedHead的单次 CAS 原子提交; - 遇用户取消 (
AbortSignal)、数据损坏、缺少证据/资源或 Head 冲突,立即中止且 live 存储库保持 100% 完好无损; - 完整导出 → 导入 → 重开 → 编辑 → 撤销/重做生命周期全部验证通过。
- 导入先经预检探测损坏或缺失资源,再在独立的临时验证数据库 (
目标与确定的工程取舍
Section titled “目标与确定的工程取舍”交付可持续工作的产品内核:AI 经现有原生 Interface 发现对象与关系,声明要求、固定/开放变量及修改范围;核心生成实际构造,检查后提交;再次修改、重开、撤销重做和工程交付保持同一语义。支持复杂曲线/曲面/实体、共享零件与层级装配、关系与有限结构选择,并为连接、时间行为和明确分析模型提供实际执行链。首发的通用工业设计承诺不缩为孔板生成器,也不以完成这一内核改造冒充五类整机全部验收。
采用一套方案:持久设计图+关系编译器+专用数值/几何执行。 工程上选择的平衡点是:保留设计的必要信息,减少 AI 亲自推导和维护的施工量;已知量直接计算,联合未知量按数学结构求解;复杂构造保留可表达性。正确性、身份、权限和历史一致性是硬条件,不能用速度或少几个 API 抵消。研究 §22 已给出构造性依据,不再以遍历全部产品或寻找全局最优库作为开工前置条件。
用户已于 2026-09-20 授权按此计划设定目标并开始重构,当前执行 P1/P4 的共同契约基础,再接共享编译链。研究阶段的“尚未开始实现”不再作为执行限制;付费模型调用、部署及新增提交推送仍须遵循各自授权。
推导驱动的执行与停止条件
Section titled “推导驱动的执行与停止条件”用户再次明确:不能靠逐个工业案例或无止境实验寻找内核设计。当前执行以本节约束下方 P1–P6,不另设目标。第一性原理的起点是:设计必须保留有意义的自由度与要求,机器应承担由这些信息唯一确定或由显式选解策略确定的计算;降低 AI 操作复杂度不能靠丢弃设计信息。
将源设计记为 D、其合法实现集合记为 S(D)、编译后的问题记为 C(D)、结果恢复映射记为 R。实现按以下证明义务推进,而不是按产品名称累积案例:
- 表达与组合。 为承诺域的基础构造定义语义,为组合规则证明类型、作用域与单位保持;借助结构归纳覆盖这些构造形成的有限模型。新增飞机、机器人等名称不会自动产生新的内核职责;出现不能翻译的构造才构成明确的表达缺口。表达能力不等于可解性。
- 编译正确。 对精确变换证明 R(S(C(D))) = S(D);采用近似时分别声明内近似或外近似方向。内近似无解不能宣称源问题无解,外近似中的可行点不能直接交付。每个变换保留域、要求与来源;不通过大量成功输入代替变换正确性的论证。
- 求解与验收。 后端按问题结构选择;求解器只产生候选或证据。接受谓词必须推出声明范围内的要求成立,不能以收敛状态或轨迹采样代替证明。无法证明或预算耗尽返回 unknown,不转为 pass 或已证无解。模型事实与物理事实分开核验。
- 身份与事务。 结果必须绑定全部语义依赖,检查对象与提交对象相同,失败不改变 head,恢复消费同一封存实现而非重新设计。这些性质落实在共享 Session/求值/存储链,不能用每个工具各自成功代替共同保证。
- AI 负担。 可从依赖关系推导哪些派生输入已不再需要 AI 提交、哪些状态不再需要它维护;不能从 API 数量推导模型一定理解得更好。真实自主成功率属于经验指标,不作为当前结构重构无期限试验的借口。
每个工作单元先确定前提、结论、实现位置和验收条件,再完成同一纵向能力。当前分析链优先闭合已声明范围的要求准入、原生编辑与原子恢复,不继续扩展热模型族来替代该闭合;已有工程有效性专题承载数学规则,不将研究扩域计作主链完成。
验证只回答具体实现问题:静态检查核对类型与生成一致性;实际产品操作核对跨边界接线;失败检查核对具体拒绝与原子性。检查必须对应尚未核实的义务。相关检查通过且无新改动、失败或未决证据时立即停止该项验证,转入下一依赖;不增加“再一个场景”,不以样本数或检查轮数作为完成标准。数学结论本身仍须有推导,运行通过不将其升级为形式化证明。
执行纠偏:工作单位是完整语义能力,不是辅助函数或探针。 当前跨节点联合求解的实现依据已经由架构 §22.14–22.16 确定;按源绑定、联合编译、完整候选核验、既有原子提交与封存恢复完成同一纵向接线,不再为每个中间辅助函数另起浏览器实验。类型与必要的静态检查随实现进行;运行验证集中核对接通后的源语义、跨端口一致性和事务恢复。只有新失败指向具体实现缺陷时才增加定位运行,修复后复核受影响义务,不重跑无关场景。诊断增强、内部代数合并和更多局部成功均不算这项能力完成,也不单独成为扩展研究范围的理由。此纠偏不缩减 P1–P6 的交付范围,不免除实际接线验收。
当前执行顺序的约束。 “停止单项探针后立即选择另一个局部探针”不满足上述停止条件。按架构 §22.6.1判断可隐藏计算与必须保留的选择,先完成所选纵向能力的全部边界,再安排独立优化。已通过的 Worker/HiGHS 生命周期、增量更新及声明范围内的分析主机接线不继续扩域。接续 P1 的有限索引与记录能力,按关系 IR §2.1的乘积语义、共享叶身份、选择规则与展开预算,实现源定义到公开读取/恢复的同一链;不按数组规模或工业产品寻找架构。P5 未完成的物理有效性、事件完整性与耦合义务仍保留,不因主机可运行而结项。其余 P1–P6 完成条件保持不变。
一份权威模型与明确执行位置
Section titled “一份权威模型与明确执行位置”采用注册的关系系统节点,进入现有 AMIR 节点/Operation Module/Catalog 体系,不另建 planner document 或 relation catalog。关系节点持久保存以下语义:
| 字段职责 | 确定语义 |
|---|---|
| controls / variables | 类型、单位、固定/开放/派生角色、定义域;未知量不以随意常量伪装,初值与约束值分开 |
| relations / requirementRefs | 关系定义与实际对象绑定;硬要求引用同一 assertions,保留每条方程/检查的来源 |
| choice / objective | 有限结构选择、合法界、目标优先级与选解策略;不擅自决定有设计意义的自由度 |
| realization recipe | 能生成曲线、曲面、实体、实例或 typed 数值的明确构造;支持显式程序与可展开组合,不能只有预置零件名 |
| scope / effects | 完整输入引用、可修改对象、保持条件、输出角色、资源与分析依赖;同一受驱动量只有一个权威定义 |
| behavior / analysis binding | 对象端口、状态/事件、初始化、工况、时间范围、模型身份和结果类型;结构和一次运行结果分开 |
关系图允许环。共同未知量、跨部件关系和耦合目标归入同一求解块;块外通过有类型输入输出形成执行依赖。不能把合法联合约束当成非法构造 DAG 环,也不能为迁就 DAG 提前固定某个局部解。相互依赖的多个声明在编译时归并或明确拒绝不支持的耦合,不能静默分别求解。
分块按展开标量端口后的未知量—约束关联确定,不能只按有向图 SCC:无环的下游要求也会约束上游可选值。独立求解要求固定边界下可行集分解为各块可行集的乘积;最优性另要求目标组合与分解成立。跨节点目标的优先级或权重不得由遍历顺序暗定。具体推导与实施先后见架构 §22.14。
求解入口确定在共享候选求值链,authoring 只提交源设计修改。 原生 Patch、SDK、UI 均经同一 Session,因此没有一条直接改参数的路径可以绕过关系。当前只接受 exact.program 数值结果的解析,改为注册的 typed producer 公共路径;关系结果与程序结果共用单位、引用、缓存和检查,不新造 solverValues 系统。
封存构造结果,避免重开时重新设计
Section titled “封存构造结果,避免重开时重新设计”当前 core.propose 已冻结 candidate.document/modelHash。求解不得在 preview 后改写文档再沿用原凭据。明确引入封存实现 Realization:选定的离散结构、求解数值、规范构造、语义输出映射、输入闭包、选择所依据的状态及编译器/运行时身份。它是设计的已验证实现资源,不是另一份可独立编辑的设计权威。
绑定顺序固定为:
源 modelHash+输入闭包 → realizationHash → execution manifest / validation → revisionId → 持久 head
Realization 本体不含最终 revisionId 或 receiptHash,避免循环哈希。源 modelHash 不包含其派生结果;RevisionHashInput 必须纳入 realizationHash,使同一要求下不同合法构造不能混用身份。没有求解节点时使用规范的空见证集合,仍走同一当前契约,不维护旧新两套提交算法。
候选几何与检查消费同一封存见证;commit 不重新求解。Revision 资源引用、见证内容、验证结果与 head 在同一存储事务中落地。重开、撤销重做、revert 和备份导入采用明确 replay 模式:校验输入与见证绑定,重建并检查,不重新搜索。缺失、篡改、运行时不兼容明确失败。候选与 Revision 的 geometrySource 不同,因此核对 realizationHash 及其语义绑定,不错误要求整个 executionManifestHash 相同。
回退作为新候选追加提交时,复用目标修订的已验证见证而非其旧授权收据:proposeRevert 经现有历史加载器检查目标修订与证据,暂存独立证据副本,previewCandidate 在同一适配器中恢复实现,再产生当前候选的检查、预览和验证。已封存历史缺失证据必须在回退提案时拒绝,不能退回普通捕获路径。初始源文档没有封存根时不伪造历史见证;节点、Body、root、assertion 均为空且无 product 的源,复用空模型判定可确定没有需恢复的选解,允许经普通候选检查封存新的空实现。非空源尚无同等免搜索证明时继续拒绝。此判定同时用于工作台历史可恢复状态与撤销栈,首次建模能够撤销到空白。
封存调度按现有编译依赖图确定:无原生几何前驱的草图先完成物化,已完成的关系解与空见证模型在权威几何执行前封存。需要几何才能完成的草图/装配见证允许准备执行;准备采用独立上下文、不产生权威证书、不提交 OCAF 命令,释放临时句柄后用同一共享求值器读取封存结果并执行权威检查。正式 executionManifest 必须绑定非空 realizationHash,capture/replay 标签只区分见证来源,不允许绕过绑定。准备与检查的实际执行次数计入现有统计,不能隐藏重复几何成本;后续优化只能消除经依赖分析证明不必要的工作。
真实源码改动位置
Section titled “真实源码改动位置”以下路径已经以当前工作树核对。新模块只在现有职责内按需拆分,不新增顶层内核包、独立执行器或治理系统。
| 改动单元 | 现有位置 | 必须完成的变化 |
|---|---|---|
| 持久关系、类型与要求 | AMIR schema、Operation Module、Rust modelHash 投影 | 固定上述语义和单一驱动者规则;全部影响求值的定义进入语义身份,metadata 不承载要求 |
| 生成与目录 | generate.mjs、当前目录校验、现有 operation-modules/catalog fixtures | 修改源契约后生成 TS/schema 资源与目录哈希;不手改 generated,不增加另一套关系目录 |
| 编译与数值引用 | 图编译器、typed 数值解析、产品求值 | 关系块进入共享 materialize;泛化数值生产者;装配求解纳入相同封存/重放机制 |
| 数学与几何执行 | 现有空间求解、关系构造、既有几何 builder | 公共关系解释、仿射系数收集、域与稀疏依赖、后端选择、恢复映射;几何不重复实现 |
| 见证与事务 | 共享 evaluator、候选 staging、修订身份及 transaction commit/bootstrap/revert 核验 | 封存见证、验证绑定与修订身份一次贯通;失败/取消不产生已提交替代结果 |
| 持久化与恢复 | storage-commit、资源类型、replay | resources 纳入提交原子性;扩展受检媒体类型、备份引用闭包及恢复校验,不依赖临时缓存 |
| 原生能力与 AI | plan schema、SDK 工具、计划工具、能力查询 | 一个语义编辑可同时改关系/控制量/保持要求;按对象和关系发现;查询完整绑定及具体冲突,不要求 AI 交矩阵 |
| 工作台与分析主机 | 现有 ExactGraphWorkbenchExecution、model.read 投影、Node workspace routes | UI 投影同一源模型与结果;分析任务仅执行并返回绑定结果,不能形成第二个 CAD 权威 |
按依赖实施的六个工作单元
Section titled “按依赖实施的六个工作单元”这六项保留为技术实施依赖与语义保证,不再对应独立的进度里程碑;开发顺序、负责人、状态和验收见 R1–R7 GitHub 计划。P1/P2/P3 对应 R2 的契约、编译与数值工作,P4 对应 R3,P5 对应 R4,P6 的能力发现与恢复贯穿所有阶段,工程交付对应 R5、综合体验与规模对应 R6。已知数据安全缺陷立即与 R1 并行处理;不能完成孔位或 schema 子项就宣布整体目标实现。
P1:当前契约、关系定义与身份闭合。
数据结构与作用域以关系 AST / SolveIR 规约为依据,在当前 contracts 生成链落地;本计划不复制 schema。
工业构造按目标域与逐构造翻译接入同一契约:明确有限索引/记录、端口连接律、事件冲突语义、离散场及分析绑定。基础 AST 已支持的部分直接复用;所需扩展逐项生成类型与编译入口,不能用一个未定义的 external-call 字符串宣称全域已覆盖。
未知索引按关系 IR §2.2接续固定访问:以源域推导精确仿射界,复用有限域/守卫等式,不要求 AI 猜界或手写选择矩阵;源索引域、成员依赖、辅助量来源和恢复共同贯通。缺少适用有限界不以任意大数替代,也不以逐位置试做几何代替编译。
- 修改同一 AMIR/模块/目录源契约,定义类型、单位、变量角色、关系、构造、要求引用、行为与分析绑定。当前 Parameter 的常量值保留其原意义,未知变量由明确关系语义承载。
- 实现 Realization 与 revision 身份的契约,连通 Rust/TS 校验与规范哈希;旧的等价关系定义、手写工具 schema 和重复数据字段同批退役。显式程序、导入、曲面、装配和工程要求继续是正式能力。
- 关系基础定义应能生成发现内容、参数契约及实际编译入口;模块数据不携带任意宿主代码。可组合领域定义通过受类型/作用域约束的表达式和现有程序隔离边界执行。
- 完成条件:生成链一致;真实公共读取可发现其语义;源修改影响正确的 modelHash,派生见证影响正确的 revision 身份;未经绑定的节点不可冒充可执行。
P2:共享编译与具体构造。依赖 P1。
- 在既有 Worker 的图求值中实现类型/域绑定、已知量传播、仿射系数收集、局部代入、联合求解块、稀疏模型与恢复映射。全体域、目标和保持条件随变换保留;避免显式形成稠密零空间作为默认策略。
- 通过现有 typed 数值/形状生产者统一输出。已知构造直接执行;结构未知仅在声明的有界语法内求解;复杂 B-Rep、样条曲面和明确构造不被强制转换为一个巨大优化问题。
- 按构造替换规约注册源/目标构造、参数域、观察闭包、编辑语法与角色对应。编译器只匹配已有证明规则并检查其前提,不搜索任意程序等价;工艺顺序或精确单面引用不满足规则时保留原构造。
- 完成条件:同一对象关系可按不同已知/未知角色前向计算或求解;公开客户端省略派生坐标和矩阵仍能得到实际几何;关系环不会被错误当作构造环,真正不支持的耦合明确诊断。
P3:唯一数值后端与生产结果判定。依赖 P2,可与 P4 并行。
接受域、量纲缩放、浮点见证、区间三态及几何退化处理按数值交付规约接线,替换旧单 tolerance 混用长度/方向残差的假设。
- 按研究 §3 选型接入独立 highs-js 1.15.3 / HiGHS 1.15.1 的稀疏、持久、增量 API;CasADi/IPOPT 保留非线性职责,PlaneGCS 保留草图职责。现有 ml-matrix 仅保留已证需用的数值诊断,不再增加通用线代库。
- LP-only 按需加载 HiGHS;现有 CasADi 构件发布只发布所需核心/IPOPT,继续排除 CasADi 的 HiGHS 插件。包内存在未发布插件不等于产品同时加载两个求解库。
- 线性离散结构只走 MILP,不把连续凸 QP 与整数混成未经支持的 MIQP。非线性硬关系与目标分别建模;局部失败为 unknown,实际几何/关系检查决定能否提交。不可行证据按研究 §6 核验并映射到来源要求。
- 完成条件:直接求值不触发优化器;LP/MILP/QP/NLP/草图各进入确定职责;超时、异常、取消统一释放资源;同类第二生产求解路径及被覆盖的手写公式删除。
P4:候选、封存、原子持久化与历史。依赖 P1/P2,与 P3 汇合。
- 完成上述哈希链,修改 validation/revision/commit/bootstrap/revert 的共同身份核验;候选源文档在 propose 后保持不变。
- 构造替换后的 SemanticRef 使用真实候选、Realization 与本次求值上下文,不伪造未来 revisionId、不改写旧 witness。检查证据绑定已冻结 Realization,后者不反向包含检查哈希,避免通过几何/引用检查引入间接循环。
- Realization 资源与 Revision/head 原子持久化,扩展当前项目备份的大小/内容校验与引用闭包。根与数值见证可内嵌在现有不可变证据记录,由同一提交事务和备份格式承载;独立字节资源继续使用现有资源存储,不为同一见证增设平行数据库。修订身份仍须绑定实现根,不能以证据内嵌替代该协议要求;恢复不依赖已销毁 Worker 的 basis、句柄或缓存。
- 完整备份导入在隔离验证库内按同一恢复链检查每个非源修订,不能只重放 head 而对保留历史仅验哈希。历史修订顺序重放各一次,head 最后重建;任一失败均在替换本地项目之前退出,最终替换继续使用原 head 比较与原子事务。成本随实际保留历史增加,不把完整历史检查误称为常数时间操作。
- 既有装配 NLP、PlaneGCS 约束草图及新增设计求解都走封存机制,保存已选分支和具体构造所需的结果;重开不能悄悄重新求解。几何重建与结果核验仍执行,但不重新选择设计解;程序、关系及两者混合的候选都经过同一检查和 Session。
- 完成条件:预览、提交、重开、恢复和备份回读绑定同一见证;重放求解次数为零;见证缺失或不匹配拒绝,失败与陈旧候选不移动 head。当前契约内的连续撤销重做必须成立,不新增旧版本兼容分支。
P5:共同工业对象、行为与分析链。依赖 P1/P2/P4。
分析声明、组件/端口映射、事件与初始化、.mo/.mos、本地主机输出校验按Modelica 生成规约实现;静态装配关系不能自动推断成物理关节。
几何到物性输入以同一规约 §9 的质量矩、坐标变换和来源依赖推导为执行依据:一次贯通源选择、实际候选求值、分析绑定和封存恢复;不按工业产品类别枚举案例,不把单个惯量查询接口作为该能力完成。
当前单体链之后的组合接线按该规约 §9.8:显式有限 massMembers 保留 anchor occurrence/frame 所有权,使用已求值实例变换进入共同参考系,复用 OCCT 质量属性组合;同时补齐全部成员与位姿依赖、封存及公开来源。不能以放开 Compound 积分过滤或返回一个求和值替代完整接线,也不从质量组合推断无干涉或刚性连接。
工程要求按有效性规约绑定参数/工况/时间量词、模型假设、外部证据与误差来源。注册分析模型生成其适用的不变区域、残差界或耦合条件;被动热网络的完整规则作为确定的首个分析证明族,复用当前代数与数值后端。缺失外部事实不得自动填零,积分 tolerance 不作全局误差;结果须区分模型内成立与有物理证据支持。
- 几何、材料、质量/惯量、定义与 occurrence、端口、关节/限位、状态、工况、时间域、分析要求进入同一源模型。位置、惯量和载荷都必须带坐标系及单位;持续输入变化使旧分析结果失效。
- 方程/状态事件分析采用研究 §22.10 的本地 OpenModelica 后端;CAD 浏览器内核保持本地几何与设计求解。分析由同一原生任务提交,Node 主机只执行指定模型与返回结果,不能直接改工程文档。无该后端时发现接口明确显示不可执行,不能伪造结果。
- 由真实部件与端口生成模型、读取带来源的结果;视口使用实际几何与 occurrence。分析导出的修改建议成为普通候选,仍经过求解、验收和提交。硬编码载荷、固定占位几何和无条件 success 路径不能接为正式能力。
- 运动/布线候选必须经过真实几何及要求检查;包围箱/网格粗搜索不签发精确碰撞保证。场分析、CFD 和完整工艺模型只在实际绑定后声明支持,不以 Modelica 或现有冷板类名覆盖一切。
- 完成条件:跨部件参数改变能同时更新形状、连接/行为模型、分析结果与要求状态;保存恢复保持来源;可执行分析至少贯通真实部件模型与事件/连接语义,不能只有 schema 和 external-call 占位符。
P6:原生发现、连续修改、规模与产品交付。基础 AI 建模验证依赖所用的 P2–P4 能力;完整工业交付依赖 P2–P5。
2026-09-21 执行重心调整:基础 AI 的发现、建模与编辑关键验证提前进行,以尽早发现接口与架构缺口,避免积累历史包袱。完成这轮关键验证及其直接修复后,恢复 P1–P6 原计划的依赖顺序推进,包括 P5;不将提前验证变成长期独立支线,也不把完整 P6 作为恢复 P5 的前置条件。后续在关键接口变化处检查发现—建模—修改—诊断恢复—检查—交付闭环。验证者只获得自然语言需求和正常授权的公开 Interface,不获得源码、内部脚本、私有 ID 或预先写好的关系定义;记录首次发现与定义成本、诊断后的自主恢复和实际交付,不将人工纠正后的结果算作独立完成。固定一个有终止预算的完整任务及未提示的需求修改,以定位共同接口缺口,不开展产品或参数穷举。已有 capability-explorer 和 M2 客户端仅提供执行链证据,不替代真实模型。使用现有 MCP/AI SDK,不另建 Agent 循环。用户已明确授权本轮使用现有配置模型,人民币 20 元总上限;此授权不扩展为无限重试、其他批次或更换模型。
P5 工业多物理场与 CAE 为本轮前置关键验证暂时后移,不缩减或放弃长期目标;保留已有研究、契约、实现和验收成果,P1–P6 总目标及 P5 完成条件不变。前置关键验证收尾后,按原计划依赖恢复 P5 推进。更广泛的 CAE 能力仍须攻坚;采用成熟求解器还是扩展具体算法,由能力需求与证据确定,不将“暂不实施”写成永久排除。五类工业系统的可表达性不等于当前已具备全量 CAE。
浮点交付继续按现有容差规约,将设计许可偏差、数值交付误差和几何建造/测量误差分开,验收须证明误差包含区间满足所声明要求;不以增大 epsilon、放宽原要求或把 unknown 改成 pass 消除退化。误差界跨越验收边界、拓扑不稳定或缺少证据时保留 unknown,并提供可行动的原因。
- 现有 SDK plan 工具增加关系设计编辑,联合关系及要求一次提交,避免逐步骤提交半个约束系统。描述、schema、MCP 与内置 Agent 同源;保持已有显式构造入口,不让 AI 为普通关系选择求解器。
- 现有发现按对象/关系/输入角色提供概览和按需细节;model.read 返回关系、锁定量、开放量、选定结果、来源要求及实际失败原因。UI 只投影这些能力,不维持自己的设计关系。
- 目录与结果明确区分可表达、可执行、已验证及其适用范围;依据同一领域定义生成数学施工量和证明检查所需数据,AI 只提供对象、要求、物性来源及工况,不承担手写矩阵、误差上界或替换证明的义务。
- 完整产品交付同时覆盖复杂几何与层级实例、参数传播与结构选择、状态/工况/分析、要求检查、BOM/图纸/STEP、备份恢复;源语义无法被 STEP 保存时明确披露,完整工程仍由当前项目格式保存。
- 完成条件:按下表验收全部共同机制;真实 AI 收益与脚本流程证据分开。没有付费授权不运行真实模型;这不会阻止契约/核心实施,也不能把脚本通过写成 AI 已变聪明。
验收按共同机制组织,不遍历产品
Section titled “验收按共同机制组织,不遍历产品”数学覆盖依研究 §22 的逐规则语义保持、仿射等价与结构编码。实际验收检查实现是否兑现这些规则,不靠不断增加产品例子来选架构。沿用现有公开 MCP、浏览器与 capability-explorer,不新增 test/spec 或另一套建模执行器。
三项保证的实现判据分别是:工业构造与原始语义逐项对应;替换规则的参数域、观察闭包、角色映射与编辑限制真实执行;工程判定完整消费适用域、误差和外部证据。论文推导用于建立规则,实际产品操作核对规则已正确接线,两类证据不得互相替代。
| 必须贯通的机制 | 实际产品判据 |
|---|---|
| 通用构造与可组合关系 | 非预置的曲线/曲面/实体构造和共享装配仍可执行;把控制量从已知改为待求时通过对应关系恢复实际构造 |
| AI 输入责任减少 | 删除客户端提交中的派生坐标、矩阵与施工顺序后仍可完成已声明支持的关系任务;首次关系定义成本单列 |
| 结构与几何对应 | 有限结构选择输出真实几何;按原要求检查间距、容纳、身份及其声明精度,不仅看 solver status |
| 公共入口一致 | UI、普通参数 Patch、SDK 与 MCP 对同一关系修改有相同求值、验证、权限与结果;不存在绕过关系的成功入口 |
| 连续编辑与失败隔离 | 控制量/要求/选择域修改正确传播;无解、unknown、取消、Worker 中止及 CAS 冲突不造成半提交 |
| 封存与恢复 | 预览到提交、重开、revert、备份导入能核对同一 realizationHash;重放不搜索;损坏见证明确拒绝 |
| 工业系统语义 | 同一对象的几何、端口连接、质量/惯量、工况、状态/事件与分析要求可关联修改;结果过期不能继续显示通过 |
| 关联交付 | BOM、图纸、STEP 与项目备份绑定同一有效产品状态;独立回读核对所承诺保留的内容 |
首个实施单元从 P1 与 P4 的共同契约开始,再接 P2;不会先写一个孤立 solve() 演示。P3 和 P4 可在契约确定后并行,但合入的产品路径必须闭合;P6 的发现界面可随 P1 开发,其完成取决于真实执行接线。
性能与复杂度验收
Section titled “性能与复杂度验收”沿用现有 交互约束:计算在 Worker/本地主机,交互连续 long task 超过 50 ms 为失败,超过 500 ms 显示进度并可取消;固定同域输入的 p95/峰值内存无解释回退不得超过 10%。三零件参考预算只保护其原范围,不外推成整机、产线或仿真的性能承诺。
使用现有性能记录器记录发现/编译/求解/构造/检查/提交、冷/热加载、峰值内存及实际重算节点,并注明实例数、未知量/约束数、受影响子图、分析自由度与时间范围。同一输入、输出语义、容差、设备及负载下对照。关系未变时复用编译与适用数值状态;几何未变的实例放置不重建零件。消元带来的矩阵变密和检查开销计入总成本,不能只展示 solver 的局部加速。
全部新循环都有任务预算和取消边界,数值状态是可丢弃缓存,封存实现是必要持久资源。浏览器基础加载不包含未使用的优化器或本地仿真工具;不存在两份等价的产品求解后端。性能结论只覆盖实际测量范围,不以“最少库”“最少变量”或“全局最快”作为无证据完成标签。
批次结束执行现有 pnpm build、pnpm typecheck、pnpm lint;schema 修改使用现有 pnpm --filter @aira/contracts generate,不手工维护生成副本。原生构件改变才重建并核对对应来源/供应;没有相关修改时不重复全套运行。研究、计划和当前进度分工保持,验收运行产物按现有规则存于忽略目录。
项目完成条件
Section titled “项目完成条件”P1–P6 的共同契约、求解、构造、检查、提交、恢复及原生消费者全部接通,以上实际产品判据成立,才算本轮内核项目完成。孔板、单次 LP、目录增加、单次生成、schema 通过或历史模块名称均不能替代这个终点。理论可行性和当前可直接开工的方案已经明确;产品完成状态只在对应 GitHub milestones/issues 更新。
M1:建立公共产品结构与空间关系,支持完整产品的持续修改(2026-09-13)
Section titled “M1:建立公共产品结构与空间关系,支持完整产品的持续修改(2026-09-13)”目的:让 AI 通过同一公共表达组合可复用零件、实例和空间关系;修改零件定义或设计关系后,系统重新得到满足声明关系的产品,并保持实例内引用、独立要求与保存恢复一致。 这为配置、干涉检查、BOM 和关联工程交付提供共同产品定义,首发承诺仍为 AI 通用工业建模软件。
以下保留 M1 的实施依据与公共机制决定,供 M2 直接复用;M1 完成状态及边界只见工作进度。系统能力地图是既有审查依据,不再以重复审查代替实现;下一阶段目标、方案问题与完成条件统一见下方 M2。
审查基线为已推送 4ac2cc1c。下表按系统职责组织,不按人类工具目录组织;“已有”指注明的实现或历史验收范围,“缺口”指该审查基线的公共契约与接线路径差异,后续完成状态只见工作进度,“待证”不能算已完成,也不能仅凭未检索到符号断言不存在上游算法。它是首发系统全景,不是所有工业工艺的穷举认证。
系统能力与现状
Section titled “系统能力与现状”| 系统职责 | 已有实现 / 复用依据 | 首发仍需闭合的能力与证据 |
|---|---|---|
| S1 几何表达、组合与持续编辑 | 维护版 Replicad/OCCT、通用程序、Exact 图、持久选择与加工来源已接通;上游还有 sweep/loft 等组合设施。程序执行、图编译 | 既有验收没有覆盖全部曲面/实体组合、复杂导入和连续拓扑变化。按表示与算法族核对真实接受域、失败与来源承接,补公共断点;不能以“Replicad 有此方法”计作产品已完成,也不为每种零件新增节点。 |
| S2 可执行的设计关系 | 显式程序、typed 数值依赖、完整平面 SketchGraph、driving/reference、PlaneGCS 与 OCAF 顺序执行已贯通。上一阶段方案与边界见已完成目标 | 三维相互制约关系、跨零件未知位姿及选解仍未接入。显式放置可直接计算,需联合求解的未知量必须明确交给适用求解器;不从通用 JS 自动反推任意方程。 |
| S3 产品结构、实例与跨零件关系 | AMIR 有 nodes/bodies/roots;程序返回 Shape 或 shape/namedShapes/values,多实体可构成 compound。公开模型;OCCT XCAF 有组件引用与位置设施 | 当前公开模型、SDK 计划与 Exact 编译链尚未形成“共享零件定义—重复实例—装配层级—实例内子实体引用”的完整路径。复制实体或给 compound 命名不具备这些语义。这是下一系统投入的直接依据。 |
| S4 复用、配置与变型 | 参数、程序、修订和资源存储已存在;程序可计算形状变型 | 尚未贯通具有稳定身份的配置选择、共享定义更新、实例覆盖与逐配置要求;不能把修订、复制文件或循环生成形状当成配置管理。复用 S3 的定义/实例身份及现有依赖求值,避免另建一套模型权威。 |
| S5 观察、独立工程要求与诊断 | 公共读取、候选检查、持久 solid/bounds/hole-array 要求已有实现;Replicad 有几何测量。SDK 契约、测量 | 缺少覆盖对象间工程关系的公共查询与持久要求闭环。数值测距不等于最小壁厚、配合间隙或 GD&T。检查须绑定版本、实例、单位/容差和证据域,区分通过、违反、未知及未检查;验证不替设计者猜测应保持什么。 |
| S6 工程定义与制造交付 | 材料/质量、几何 STEP 交换已有产品接线;Replicad drawProjection 与 OCCT HLR 提供投影基础,STEPCAF 有名称、颜色和尺寸公差模式。投影、STEP 边界 |
关联工程图/剖视、尺寸基准与公差、BOM、制造注释尚缺完整公共模型及修改传播。当前产品 STEP 写出选项是 AP214CD/MM,不能宣称 AP242/PMI/装配结构已保真。交付须披露保留和损失,并由独立消费者回读。 |
| S7 外部模型与多表示建模 | STEP 输入带单位/容差诊断,程序可加工导入结果;Field runtime 与 3MF 出口另有既有实现。Field、3MF | 产品结构、属性、PMI 的结构化导入与关联更新未由单一 Shape 导入完成;复杂几何修复和表示转换需明确容差/来源损失。钣金折弯与展开、焊接或模具规则等工艺语义保留为实际能力差距,不能用薄壁形状冒充。按几何变换、关系及工艺数据的共同职责接通上游,不逐工艺重造执行器。 |
| S8 项目数据、事务与恢复 | 候选验证、版本冲突保护、撤销重做、IndexedDB 修订/证据/资源、项目导出导入已存在并有局部实测。存储 | 新增产品结构/关系必须进入同一原子修订和保存恢复。现有备份不自动解决浏览器清理后的数据保护;故障恢复、资源完整性、长历史和多项目负载仍需产品证据。协同合并与 PDM/PLM 不能因已有分支存储被算作完成。 |
| S9 AI 与人共同操作完整模型 | 单一共享 SDK/Interface、发现/读取/执行/诊断和内置 Agent 已有;历史 AI-CAD-1 六任务有真实模型结果。共享工具、Agent 循环 | 每项新系统能力均须经同一公共接口可用。历史任务不覆盖当前版本或通用工业任务空间;需要跨设计变化的真实任务成功、恢复、成本与人工介入证据。不可用手工预编排成功替代 AI 的自主组合结果,也不新建 Agent 循环。 |
| S10 交互、规模与发布运行 | 工作台、增量求值、缓存与既有性能预算、网关鉴权/费用控制/历史 provider-off 部署已有 | 零件/实例/拓扑/依赖规模下的时延、峰值内存、取消与长会话稳定性仍需当前产品测量。当前源码未获新候选云验收;真实 provider/费用告警、数据保护说明、许可、支持与回滚按上线计划闭合。局部建模通过不能替代这些条件。 |
M1 上游依据与自研边界
Section titled “M1 上游依据与自研边界”真实需求是让 AI 定义可复用零件、建立多实例产品与空间关系,并在修改后保持实例引用、工程要求和交付一致。现有形状计算可承担几何,欠缺的是这些对象与关系如何进入同一权威模型。
- 产品结构与交换: 锁定 OCCT
V8.0.1 / b8f597c6的XCAFDoc_ShapeTool已提供AddComponent、GetReferredShape、GetComponents、GetLocation,STEPCAFControl_Writer已有文档 Transfer 与属性模式。当前 WASM 构建清单包含相关类;是否具备所需重载与完整恢复行为须在实际接线时确认,缺失先补绑定。核心内核 createAssembly当前按 shape 列表建立导出文档,不能替代公共实例身份或配合求解。决定:复用 XCAF 文档/组件和已有位置设施,Aira 负责公开定义/实例身份、依赖、引用与事务映射;几何封装统一由@aira/geometry-kernel承载。 - 空间求解: 维护版 PlaneGCS
1.2.0-aira.1继续承担平面草图。锁定 CadQueryv2.7.0 / b8137fdc的Assembly.constrain/solve与occ_impl/solver.py::ConstraintSolver提供 CasADi/IPOPT 位姿残差与求解接线依据。现已核对官方 CasADi 3.8.0 发布的@casadi/casadi-wasm@3.8.0,并锁定 npm 完整性哈希;实际包含 IPOPT 3.14.19、MUMPS 5.8.2,浏览器六自由度求解可用。实际差异是 CommonJS 包装、生成类型与运行时调用形式不完全一致、矩阵代理显式释放未正确注销最终回收;采用静态 CommonJS 构建封装及最小生命周期依赖补丁,原始 WASM/求解插件字节保持不变。CasADi LGPL-3.0-or-later、IPOPT EPL-2.0 及包内传递依赖许可证随静态资源提供,绑定补丁亦随包提供;正式发布的完整许可义务仍按上线条件核实。决定:直接复用该数值底座,Aira 只承接产品关系到残差、数值类型/单位、实例与版本、验收和诊断,不重写优化器。IPOPT 成功状态不能替代关系残差验收;公共关系、残差验收与数值秩接线采用下方决定;执行和取消的当前证据只见工作进度。CasADi 的公开Linsol.rank并非每个插件实现,实际 QR 插件拒绝 rank,不能据类型声明声称已有自由度诊断。 - 观察与交付: 继续复用测量、HLR、STEPCAF。Aira 新增职责是检查/标注所引用的版本和实例、关系含义、证据状态与更新规则;投影图元、距离结果或 XCAF 导出成功均不能自动生成全部工程语义。上游引用以锁文件为准,不以最新在线版本代替锁定源码。
固定的实施依赖与里程碑
Section titled “固定的实施依赖与里程碑”M1 的实施里程碑为 公共产品结构与空间关系能够驱动完整产品的持续修改,对应 S3 和 S2 的空间关系缺口。它提供 S4 配置、跨实例 S5 检查、S6 BOM/工程交付及 S7 结构化交换共同需要的对象身份;后续直接复用这些机制。完成状态只见工作进度,M2 沿下方固定依赖推进。
M1 的方案与实施必须回答:
- 一个产品如何定义? 零件定义、实例、装配层级、局部坐标及版本如何进入同一 AMIR;同一定义的多个实例如何共享几何,又拥有可区分的面边引用?
- 修改如何传播并保持关系? 定义改参、实例放置和关系改变各自影响什么;何时有向计算、何时联合求解;固定对象、未知位姿与多解选择如何显式表达?
- 哪些计算交给成熟底座? XCAF 与现有 OCAF/程序/事务各承担什么;所需三维约束如何由适用上游求解,平台差异如何解决,而不另建几何内核或调度权威?
- 如何让全部消费者使用同一个产品? 公共发现/查询/编辑、持久选择、独立要求、视图、保存恢复和结构化导出如何读取同一实例与修订,避免展现、校验与交付各维护一份装配?
M1 完成须实际贯通公共接口下的共享定义、多实例/层级、程序驱动放置及所选联合约束求解、实例内引用、修改传播和当前历史恢复,并让结构化交付保留产品关系或准确披露不支持项。不能只新增 schema、放置几块实体或找出一个上游库便宣布完成;联合求解尚未接入时只记录子项完成。几何与事务的既有保护继续复用,针对新增实例/关系差异做实际产品验证。
实施从既有 AMIR、程序输出、Body/SemanticRef、图执行和存储的共同对象链开始:先落实定义/实例/局部坐标/引用的权威归属及修改规则,同时核实锁定上游的三维求解适配,随后在同一 SDK、求值与事务路径贯通消费者。查证使用 Graphify 与当前源码,复用判断沿用上方证据;只有具体需求或证据变化才重开选型。替代实现同批清理旧分支,不新增兼容模型、平行执行器或逐工具包装。
公共结构决定:Body 作为共享零件定义继续跟随其 authority;AMIR product 保存根定义引用和 assemblies,组件只引用 Body 或装配定义及其局部放置。同一子装配重复使用时,其组件键通过完整路径区分实际实例;装配定义图禁止循环。固定放置采用 T·Rz·Ry·Rx,平移为 Length、角度为 Angle,复用既有数值输入表达;求解器内部不要求使用欧拉角参数化。product 与几何/参数一起进入 modelHash、原子候选和历史恢复;改变共享定义和改变单个组件放置是不同的修改。程序驱动与联合约束求解的接线继续按 M1 完成标准推进,不能由结构契约存在推断执行已完成。
公共执行决定:set-product 直接复用同一 AMIR 产品 schema 与 Core 补丁。程序驱动放置在所有上游结果完成后求值,产品原生组装在现有 OCAF 事务结束前运行;不建立装配专用调度器或虚构特征节点。零件结果保持其子求值与 artifact 身份,ProductEvaluation 另行绑定整体结构、放置和边界;公开 measurements 仍属于所标识的代表零件,整体边界由 product.bounds 表达,不冒称装配联合体积。视图共享零件缓冲并携带实例路径,结构化 STEP 使用同次产品文档并报告无法保存的设计语义。位置修改不应使未变零件重算,OCAF 输入比较复用现有规范 JSON,避免将对象键顺序当作设计变化。实际状态与验证边界只记在工作进度。
空间关系公共决定:AMIR 的 assembly.solve 保存未知组件、点重合/正距离关系、Length 容差及 isolated-from-placement 选解策略。点位于直接组件或所属装配坐标系,坐标复用现有参数和 typed 程序结果;固定组件按声明计算,未知组件的声明位姿作为初值。维护版 Replicad 用 CasADi 构造残差/自动微分、IPOPT 联合求解,内部采用相对初始旋转的 modified Rodrigues 参数,公开结果仍为 T·Rz·Ry·Rx;转换后重新检查实际点误差。编译器按既有 DAG 的数值结果求值,共同组件求值函数同时供实例程序输入和最终产品组装使用;联合组涉及的初值、关系和数值来源共同进入依赖及缓存,求解实现和锁定依赖身份进入编译哈希,不另建装配调度器。
空间诊断复用决定:需要区分满足关系与局部自由度,已验证 CasADi 3.8.0 的 QR rank 接口不可用;现有 PlaneGCS 的 Eigen 秩诊断属于其平面草图内部,当前没有可直接调用的通用矩阵入口。按直接调用优先,锁定 MIT 的 ml-matrix 6.15.0,直接使用 SingularValueDecomposition;Aira 仅传入按长度尺度归一化的 Jacobian,并用最大奇异值的 1e-9 作为数值秩阈值,不自研线性代数或优化器。满列秩表示本次数值阈值下局部孤立,不证明全局唯一;秩不足按欠定或奇异报告,残差超限按未满足报告,局部不收敛不能冒称已证明不可解。显式初始位姿负责选择局部分支,所有关系须通过声明容差;求解内 300 次迭代/5 秒 wall-time 上限与现有 Worker 的终止边界共同约束执行,当前中途取消及规模证据见工作进度。
实例引用执行决定:公共程序输入使用 ProductOccurrenceReference 保存完整 path 与预期 bodyId,可与既有 NamedShapeReference/LineageShapeReference 组合。引用跟随当前 Body authority,路径缺失或末端改绑拒绝;Core 与工作台同一依赖图纳入该 authority、路径放置的程序结果依赖,参数及实际放置进入现有缓存输入。只读取被引用路径,不等待整个产品组装,避免人为循环。成员先在 Body 定义中按现有策略解析,再通过 Replicad Transformation 与同一个原生 history observer 放置;同一实例的实体和成员共享私有拓扑,不同实例的来源用完整引用限定。unchanged 比较 Body 定义中的几何,不冻结实例位置;位置由产品关系决定,独立要求检查实际消费结果。现有 bounds 等要求可约束消费实例的程序输出,不把程序自身报告值冒称独立测量。
原生结构接线决定:维护版 Replicad 在既有 assemblyExporter/stepExchange 中使用 XCAF 的 NewShape、SetShape、AddComponent、UpdateAssemblies,以及 STEPCAF 的文档写入/读取;原扁平装配辅助函数复用同一构造和导出实现。实测 XCAF 组装会改变借入零件的 BRep 标志,因此用已有 BRepBuilderAPI_Transform 为每个定义复制一次,所有实例共享该副本,保护已求值零件与缓存;不为每个实例复制几何。位置复用 gp_Trsf 的原生组合。253 绑定补齐 NCollection_BaseSequence(原 GetComponents 所需容器实际无法构造)及 STEPCAFControl_Reader,不自研装配存储或 STEP 解析器。写入采用单文件 Perform;Transfer 的空字符串前缀仍会启用多文件模式,不能当作完整交付。以上是公共模型的原生承载层,不能替代候选、实例选择、求解和公共消费者接线。
独立交付读取决定:复用既有独立 STEP 工具和锁定 CadQuery OCP 7.8.1.1-novtk 容器,直接调用其 STEPCAF/XCAF 读取定义图与组件变换,复用几何测量分别检查共享零件和整体产品。它与产品侧 OCCT 8.0.1 WASM 属于独立打包、版本与执行环境,不依赖产品导入器;Aira 仅投影上游读入结果供比较,不自研 STEP 解析器。层级、引用复用、实例累计矩阵和定义几何需分别与源产品核对,读取成功或形状有效不能单独证明交付等价。实际范围见工作进度。
实例读取决定:共享 model.read 在同一修订求值中接收分页或完整实例引用,读取 ProductAssembly 原生位置在现有 RenderPacket 中的投影;返回引用、Body→产品坐标矩阵并绑定修订及产品结果哈希,作为读侧观察,不扩写持久几何收据。组件 ID 排序提供固定修订下的确定分页,SDK 暴露同一 revisionId 读取。查询范围不更改定义、位置或 HEAD;Body 面边测量仍明确属于定义坐标,不将位置矩阵冒称完整实例工程测量。
修订读取复用决定:真实需求是按实例观察已求值产品时不再重建整产品与显示。既有执行器、修订证据校验、原生 ProductAssembly 投影及浏览器 structuredClone 可直接承担;实测此前公共路径读取仍触发整图重放,不能仅凭底层定位复杂度宣称低成本。执行器仅保留一个完整修订快照,以完整绑定、文档、根名称、边显示选项和实际资源字节哈希匹配;只供显式实例读取复用,候选不写入、STEP 导出重新执行、释放执行器即释放快照。冷读和复用读使用同一投影并检查实例覆盖、Body/artifact 与路径。查询响应省略显示缓冲,普通提交/显示仍要求 RenderPacket;修订、候选、模型、证书和证据检查继续执行。不新增几何缓存权威或变换算法。快照占用额外 JS 内存,文档/证据传输和查询投影仍随产品规模增长,不能声称公开读取为常数成本。
实例选择决定:复用已有 RenderPacket、SelectionPort、图 artifact/边证据及任务上下文,完整路径区分重复实例,产品哈希与零件几何哈希分别校验。修订面边输出已有 occurrence 与 revision selection 程序输入;候选继续绑定候选,不冒充已提交引用。边显示与面显示使用相同原生位置,UI 选择不自动把共享定义参数解释成实例私有参数。这里只扩展现有消费者,不新增选择执行器或几何算法;候选拓扑按 Body 形成同一证据集合,公开读取与引用生成按目标 Body 查证,显示按 Body、artifact 与实例路径投影;不再由代表零件决定其他零件能否被读取。返回契约复用现有面边 selector 与 lineage 定义,传输请求 ID 经规范哈希进入语义查询 ID。验证范围只记在工作进度。
工作台结构决定:真实需求是从实例看出共享定义和装配层级,并明确共享定义修改的范围。此前正式视口已有重复实例,结构栏却只呈现程序图。复用现有 WorkbenchStructureProjection、Body authority 对应特征、React 与 HTML details,将当前显示文档的 product 作为只读投影传入结构栏;子装配按路径展开,零件入口显式选择共享定义,继续走原参数事务。候选、提交、恢复均沿原投影更新,产品删除时清除投影。不新增装配存储、几何变换或实例私有参数推断;产品树不承担求解或持久选择权威。正式浏览器操作的证据见工作进度。
验收按公共语义及消费者差异组织:同一定义的多个实例可分别查询和引用;定义改参共同更新、实例放置只影响应受影响者;层级坐标组合与面边来源正确;已声明空间约束满足或返回明确冲突/欠定/选解诊断;上游拓扑变化不得静默误绑;失败、取消、版本冲突、撤销重做及保存重开不混入半次状态。结构化导出至少保留本阶段的组件层级、实例复用与位置,并经独立回读确认;求解规则、PMI 等格式不能表达的信息明确披露,不以全部扁平化并提示损失代替结构化交付。运行相关 build/typecheck/lint 和实际产品/浏览器验证,记录实例规模、修改传播的耗时与内存边界;不新增 test/spec、Gate 或证据框架。
实施边界:先完成本阶段共同对象与关系能力,不将完整配置管理、BOM 编辑器或工程图系统并入 M1;它们按 M2 消费同一模型。保留公共身份、单位、几何有效性、独立要求和原子提交;几何封装仍只在维护版 Replicad。当前契约变化须明确说明,不为未发布旧契约新增兼容层。设定目标不自动授权付费模型调用、部署或新的 Git 提交推送。
恢复身份决定:同一修订重新求值应保持产品结果身份,不受无序声明字典的遍历顺序影响。实际发现断言字典转数组改变编译哈希、组件插入次序改变 XCAF 整体 B-Rep 字节;零件几何、实例位置与声明本身均未改变。复用既有稳定 ID 排序和 XCAF 构造,在图编译入口排序独立要求,在维护版 Replicad 排序定义遍历与组件添加。不放宽哈希比较、不替换原生几何签名、不另建恢复模型;直接修正进入既有规范哈希与原生序列化的顺序。实际恢复证据只见工作进度。
其余首发工作保持固定位置,不在每次提交后重新发现:
- M2:可持续修改的工程定义与关联交付。 在现有产品模型上贯通配置、工程要求、BOM、关联图纸和结构化交换;方案与完成条件只在下方 M2维护。
- M3:通用能力在实际使用与交付中达到首发条件。 以 S1–S10 的产品路径检验 AI 自主组合、修改恢复、几何/工程正确性、规模性能、数据安全和运行成本,完成当前候选及获授权的生产验证。S8–S10 的工程建设可并行推进,最终验收须覆盖 M1/M2 后的实际字节。验收路径、负载样本与完成条件只在下方 M3维护。
这些是系统里程碑,内部可以分批提交,但批次不改写里程碑。S1/S7 的几何、表示和工艺差距与主依赖并行收敛,不能默认为 M3 后再做。Lane F/R 保留已授权职责,其全部扩展不是产品结构、装配或工程交付的前置。仿真求解、CAM、企业 PDM/PLM 等相邻系统既不被本次审查冒称已有,也不从“通用建模”四字自动推导为整套外部系统重写任务;建模与工程交付所需的数据和关系仍须可表达与交换。
避免循环的规则: 每批实施说明它关闭上述哪项缺口、哪个下游消费者因此可用;已关闭的公共机制仅因具体回归或新语义差异重开。验证按共享机制、表示和真实消费者差异组织;具体零件用于系统组合验收,不逐工具重复全部历史。发现新事实时修改对应项及依赖并写明原因,不能默默更换首发目标或以不断补清单代替实施。每轮执行前核对活动 M2 目标,明确本轮改动将接通哪个必要消费者、关闭哪项公共能力缺口;若只能增加样例、诊断细节或重复已有验证,不据此另开工作批次。已确认的上游格式缺口保留具体诊断和复用依据,不默认逐实体扩张实现或验收范围。验证只覆盖本轮实际变更及其直接影响;等待既有构建不重复运行已经通过的整套流程。
距离首发的判断: M1 的公共产品结构和空间关系按工作进度所列边界供后续复用;工程定义与关联交付按 M2 补齐,实际使用与发布条件按 M3 验收。不能把 M1 的局部空间求解能力扩大为任意三维关系,也不能按“只剩测试与部署”安排上线。没有交付范围及实际负载的工作量证据,不给完成百分比或周数;不重新退回泛泛论证“AI 能否建模”。
派生几何交换的表示归属:按 CAx-IF Supplemental Geometry 1.3 §5.1–5.2,辅助点/边/面保留完整原生拓扑,收集在 ConstructiveGeometryRepresentation,与所属零件共享几何上下文,并通过 ConstructiveGeometryRepresentationRelationship 关联其表示。锁定 Writer 已在尺寸连接点中使用这两个上游类型;通用派生目标复用相同设施,不将辅助几何加入实物零件,也不截掉边界以改成无限曲线或曲面。普通 ShapeRepresentation 加 GISU 缺少这项明确归属,不能据其可解析宣称交付完成。 读取侧的已证实差异:锁定 ActorRead 的构造几何关系路径只转换 Axis2Placement3d,不能直接承接辅助顶点/边;Reader 的 collectShapeAspect 又沿派生关系收集物理来源。采用现有 StepToTopoDS_TranslateVertex/Edge/Face、ActorRead.PrepareUnits 与 OCAF 保存辅助目标,保留原始派生实体来源;不将物理来源冒充派生几何,不自研拓扑或单位转换。
M2:建立可持续修改的工程定义与关联交付(2026-09-13)
Section titled “M2:建立可持续修改的工程定义与关联交付(2026-09-13)”目标:在现有 AMIR 产品模型上建立可持续修改的工程定义,让配置、工程要求、BOM、关联图纸和结构化交换共同消费一个确定的产品状态;设计变化后,相关结果重新计算,无法满足或无法承接的关系得到明确诊断。
目的:让 AI 能表达、修改并交付完整产品的工程意图,避免配置、检查、图纸和交换各自维护一份产品事实。 首发承诺仍为 AI 通用工业建模软件;M2 按公共关系及其消费者组织,不按人类工具目录或样例零件定义能力。以下为实施约束与需落实的方案,不代表相关契约已实现。
公共语义与必须回答的方案问题
Section titled “公共语义与必须回答的方案问题”- 产品变型如何表达? 复用共享 Body、装配定义与完整实例路径,明确配置的驱动输入、组件选用/抑制、定义变型和实例覆盖的作用域及优先规则。一次求值必须确定源修订、配置选择及有效输入;几何、检查和交付均绑定该状态。修订记录修改历史,配置表达设计变型,两者不能互相替代。几何复用身份与物料身份分别有什么含义,哪些变化影响 BOM 归并,必须显式规定,不能按形状相同或 Body 相同自动决定物料相同。
- 工程意图如何保存? 在同一 AMIR 中明确驱动量/求解关系、独立工程要求和交付注释的职责;尺寸、基准、公差、材料及工艺关系引用同一参数、定义、实例或持久子实体。派生测量与通过/违反/未知/未检查属于计算结果,图纸布局属于表达信息,均不能反向覆盖未声明修改的设计事实。用户或 AI 修改关联尺寸时,必须明确是在修改驱动条件、要求还是版面。
- 修改如何贯通? 配置切换、共享定义改参、组件抑制和外部资源更新进入已有依赖求值、引用策略与原子修订。明确重算范围、跨配置引用的适用条件、旧检查与交付的失效规则;拓扑歧义、来源丢失或要求不满足不得自动误绑或沿用旧的通过结果。检查失败与无法计算须区分;已有提交策略决定是否允许提交,交付不得把未满足或未检查冒称合格。
- 交付如何保持含义? BOM 从有效产品结构与声明的物料归并规则生成,关联视图/剖视/标注从几何与工程关系生成,格式适配器消费相同状态。明确外部模型导入后的定义、实例、属性与来源映射,以及更新时的匹配证据和冲突处理。每种交付格式分别说明保留、转换和无法表达的信息,并以独立消费者核对;能保存几何不等于能保存工程关系,显示一条公差注释不等于已完成该公差的计算验收。
范围与实施顺序
Section titled “范围与实施顺序”M2 的必要消费者为配置求值、跨对象工程观察与持久要求、BOM、关联工程图及结构化交换。它们必须共用上述语义,不能仅交付通用 schema 或框架便结项。先在现有契约上落实配置作用域、状态绑定与物料身份,并接通配置求值和 BOM;随后接通工程关系的引用、测量与独立检查,再贯通关联图纸、结构化导入更新和交换。可独立推进的投影或格式接线无需等待全部配置功能,但必须遵守相同的状态与引用规则。批次不改写 M2 目标。
实施起点必须在本节补齐各消费者的具体接受域:可配置输入与结构变化;可声明和可计算的工程关系及单位/容差;BOM 的归并、数量与层级规则;图纸的视图/剖视、尺寸/基准/公差关联;交换格式与所保留的结构、属性及工程信息。按锁定上游与当前源码确定,不能只写“支持工程要求”或“复杂模型”。尚未确定的接受域是方案待落实项,不能算完成,也不能通过只支持注释或只披露损失替代原定能力。
S1/S7 中的复杂几何、修复/表示转换、折弯展开及其他工艺关系仍按系统地图承担首发责任,不再以“处理真实缺口”无限吸收工作。遇到具体差异,须在对应项明确输入表示、关系或工艺规则、需要保留的信息、上游设施及消费者,并判断属于 M2 的工程定义/交付还是并行几何能力建设;未闭合项不能默认转移至 M3 以后,M3 也不能用验证替代能力实现。
复用与责任边界
Section titled “复用与责任边界”以下为当前公共表达及消费者的已接入范围;具体完成证据与剩余待办只在工作进度维护。此范围说明不将 M2 的未知项视为已解决。
| 消费者 | 当前表达与行为 | 尚未由该表达涵盖的含义 | 首发承诺(2026-09-14 提案) |
|---|---|---|---|
| 配置 | 参数覆盖、产品根选择、装配定义完整替换、物料身份覆盖、按 ID 新增/替换/停用独立要求 | 不引入隐式实例私有副本或多套优先级模型 | 承诺全部当前表达;跨配置引用、实例私有副本与多套优先级不承诺 |
| 工程观察/要求 | 产品实例最短距离与见证点;持久距离范围及类型化数值要求,按有效配置求值 | 见证点不是持久点身份;公差绘制不是制造符合性检查 | 承诺实例最短距离/见证点、距离范围与类型化数值要求的声明、求值与提交阻断;几何公差承诺声明语义校验(ISO 1101 分类的基准要求、目标载体种类、同零件基准、三项上限)、图纸呈现、AP242 交换与修改后失效;不承诺在名义几何上求值或制造符合性判定 |
| BOM | 按显式物料号/版本归并,报告未分配项、实例与层级用量,绑定修订/配置/产品结果 | 不由名称或几何相同自动声明可互换 | 承诺显式归并、未分配项、实例与层级用量及修订/配置/结果绑定;互换性推断与归并冲突的自动裁决不在首发 |
| 工程尺寸 | product.linearDimensions 共享零件定义,range 或 nominal-deviations;Length 值支持参数与程序依赖,持久 Face/Edge 引用唯一解析 | 跨实例工程尺寸、其他尺寸类型与修饰语义不由这两种数值形式自动实现 | 承诺共享零件同体两面 Face/Edge 线性尺寸的 range 与 nominal-deviations 两种数值形式;跨实例尺寸、直径/半径/角度类型与修饰语义不在首发 |
| 图纸 | 同产品多视图、单平面剖切/区域/关联切割标识,参考尺寸、工程尺寸、基准/公差框;SVG 保留声明与状态元数据 | 不承诺自动完整布局、折转剖切或完整制图标准合规 | 承诺正投影多视图、单平面剖视/区域/切割标识、参考尺寸、工程尺寸、基准与公差框的 SVG 交付并绑定产品结果哈希;自动布局、折转剖切与制图标准合规不在首发 |
| STEP | AP214CD 结构与 AP242DIS 工程声明;共享零件/装配、可表示刚体放置、显式身份、同零件两面尺寸、已表示基准/公差与派生关系;跨文件完整显式对应 | 缩放/反射、未识别实体、未承接修饰和歧义不能悄悄降级;源实体号不是跨文件身份 | 承诺 AP214CD 结构与 AP242DIS 声明的导出、导入、显式对应更新与独立 OCP 回读(结构、几何量、尺寸 ± 偏差、基准、几何公差);缩放/反射放置、未识别实体、修饰语义与歧义映射按明确拒绝处理,不在首发 |
首发承诺列就是本节“实施起点必须补齐”的接受域。 它把“当前表达”升为对外承诺:M2 结项审计按该列逐项核对,未列入的语义不因实现顺手而进入承诺,列入的语义缺证据即判未完成。几何公差的承诺按首发目标裁定(2026-09-14):首发承诺的是通用工业建模软件,即 CAD;CAD 的职责是让设计意图可声明、可校验、可呈现、可交换并在修改后保持一致,几何公差对名义几何的“求值”属于计量与制造符合性检验,任何主流 CAD 都不在建模阶段承诺它。因此首发承诺几何公差的声明语义(共享 createAssemblyProduct 入口已按 ISO 1101 分类拒绝形状公差的基准引用、要求方向/位置/跳动公差至少一个基准、位置与轮廓可选)、图纸呈现、AP242 交换与失效,不承诺求值;此裁定不再作为待办。
所有声明、计算和交付使用同一 AMIR 产品定义及当前修订。支持域的不足仍须按照 M2 目的判断和解决;不通过新增专用节点目录或另建模型绕过。
上游复用依据与分批设计决定(保留证据,旧状态不作为当前待办)
下面保留具体上游 API、锁定版本、缺陷和职责决定。早期“未实现”“待验证”和局部完成描述仅指原批次;实现状态由工作进度唯一维护。这里不要求重新执行旧 Gate、重建旧版本或恢复兼容实现。
工程尺寸与 PMI 交换的复用决定(2026-09-13):真实需求是将有类型、单位和几何关联的工程尺寸及基准/公差保存在同一产品定义,并经图纸和结构化交换承接;参考尺寸显示和 assert.numericRange 的比较通过都不能代替这项语义。锁定 OCCT 8.0.1 的 XCAFDoc_DimTolTool 已提供 AddDimension/SetDimension/GetRefShapeLabel、AddDatum/SetDatum 和几何公差关联;XCAFDimTolObjects_DimensionObject 提供尺寸类型、范围上下界以及名义值与正负公差两种不同表达。STEPCAFControl_Writer.cxx:794 在 DimTolMode 开启且 WriteSchema=5 时走 writeDGTsAP242,由同一 XCAF 文档读取尺寸、基准及其形状标签。已证实差异:公共结构导出现根据产品是否含线性范围尺寸选择 AP242DIS 或 AP214CD,并在收据报告格式和保留项;维护版公共 writeSTEPDocument/exportAssemblyProductSTEP 已在同一路径增加 AP242DIS 选项并保留默认 AP214CD,格式拒绝与全局参数恢复沿用原写出生命周期。AMIR product.linearDimensions 已接入共享 set-product 和产品求值:声明零件 Body、两端现有 named/lineage 引用及完整公共 Value 的 Length 上下限;先求值程序依赖,再经现有 resolveExactSubEntity 在当前 Body 权威中解析唯一 Face/Edge,由共同成员定位取得真实形状。已求值范围与目标签名进入产品结果绑定,并由现有模型查询返回。尺寸声明属于共享零件定义,不驱动几何,也不自动充当独立要求;范围必须非负、有序、有限,缺失或歧义引用拒绝。尺寸 Body 不在有效产品根时,声明保留,求值返回 inactiveLinearDimensions/body-outside-active-product,当前配置不解析尺寸引用或范围、不导出且不判为通过;恢复零件后重新执行原引用和范围检查。实际配置抑制、带缺失名称的不适用声明提交、重新启用的原子拒绝及修复后 AP242 独立回读已通过。该规则仅针对尺寸消费,不承诺整个被抑制程序停止执行;尺寸显式配置覆盖及跨实例尺寸仍需完善。公共计划/Core 实际提交、程序下限、序列化恢复和缺失名称拒绝通过,独立 OCP 回读实际 AP242 的 3..10.1 范围及两端真实面关联;尚未证明所有拓扑跟随、参数单独变化和公共浏览器历史路径。图纸 linear-engineering 标注已通过 dimensionId 和具体实例 path 消费同一范围,不另存限值;复用 BRepExtrema 最近点作为当前实例中的显示锚点,再沿现有相机投影与 SVG 尺寸线渲染,返回实际间距和已求值范围。最近点不被宣称为持久点身份,图纸不将范围自动视为通过的要求。缺失/不适用尺寸、错误实例及重合投影拒绝,显示小数位改变上下界也拒绝;调用者增加精度。Core 声明存在检查与公共读取范围/产品结果绑定已接入。实际公开计划提交和生产读取得到 3..10.1 范围及 10 mm 实际间距,已渲染查看;缺失声明、错误实例及精度损失诊断通过。尚未宣称满足标准图纸排版或全部历史操作。PMI 首次导入现复用同一 XCAF 读取:GetDimensionLabels/GetObject/GetRefShapeLabel 返回文件范围关联,按标签读取真实目标并沿现有几何签名/面来源设施绑定;readSTEPProduct 拥有并释放句柄,检查接口返回可序列化观察。首次 imported-product 对同一零件两张 Face 间、无额外修饰语义的线性范围建立同一 AMIR linearDimensions,与几何/产品一起提交。公开计划→生产验证→Core 提交→AP242 再导出和独立回读已确认 9.9..10.1 范围、真实面关联及两实例共享定义。其他类型、等级、修饰符、测量路径、连接点等先明确报告并拒绝转换,原始文件保留,不把未知语义当普通范围;原生图形展示不自动复制成图纸。此接受域仍需扩展以完成 M2。尺寸来源现复用 exchangeSources.elements 的 {dimension: id},初次导入登记、Core 检查基础声明存在、运行时核验文件尺寸标签。跨文件更新沿用统一 entries/removedEntries 完整对应与角色检查:明确匹配保留尺寸 ID,用新文件范围和实际面来源替换旧声明,与几何进入同一补丁;范围中原有参数表达式也被明确文件替换覆盖,无隐式保留冲突。null 对应新增尺寸,移除来源条目保留设计对象并解除来源绑定,沿用共享零件定义语义;退役对象及消费者需明确模型编辑。不由新文件标签推断历史。实际 10 mm/9.9..10.1 → 12 mm/11.9..12.1 更新、关联图纸、漏对应拒绝、重新验证的 Core 撤销重做、预取消和序列化恢复通过;独立回读确认新范围、真实面、共享实例及 20 mm 放置。新增/来源移除的原生联验已通过:实际加入第二尺寸引起文件标签重排,明确对应后保留原 ID;来源移除保留设计对象,新加入使用已占用 ID 会拒绝,新 namespace 可重新加入,普通 set-product 可退役解除来源后的旧声明。独立回读最终仅两项真实面关联范围,共享实例保持。浏览器完整历史、运行中取消与拓扑歧义仍待覆盖。运行时现已补齐线性范围尺寸的原生 XCAF 绑定,接受同一文档的两个真实形状标签并校验非负有序有限范围,其他工程对象绑定仍待接入;自由程序数值不能推断成标准工程尺寸,numericRange 的判定容差不能自动充当制造公差。独立 OCP 7.8.1 实验已将线性范围 9.9..10.1 及两个顶点形状关联经 AP242 写出/回读,尺寸类型、上下界、两端关联均保留;该独立实验使用独立顶点定义;随后锁定 8.0.1 WASM 已在真实实体的两张子面上建立同类范围并写出 AP242,独立 OCP 回读确认范围、类型及两端同零件面关联,非法范围、空标签和跨文档标签拒绝后未遗留额外尺寸。这个原生实验证明局部形状关联接线,不证明 AMIR 持久选择或配置已贯通。维护版产品导出随后以零件定义的 linearDimensions 承接已求值真实目标和毫米范围,在几何复制时复用 ModifiedShape 映射,ProductAssembly 拥有复制后的目标并使 clone 保留关系。独立回读已确认尺寸属于共享零件定义,两次实例复用及位置保持,原对象释放/输入修改不改变副本;带尺寸导出自动用 AP242,显式 AP214 拒绝。此项只承担已求值局部几何到 XCAF 的映射,不能将调用者传入的临时 Shape 当作 AMIR 持久身份,也不隐式表达跨实例尺寸。决定:复用 XCAF 工程对象及 STEPCAF AP242,先以现有持久选择确定实际形状和实例作用域,再由维护版 Replicad 在同次临时导出文档建立关联;Aira 只承担声明语义、配置求值、引用/状态绑定及公共消费者接线。不把参考尺寸改名为公差,不新增 STEP 解析器,也不把 API 存在或本次独立实验作为 M2 完成证据。基准系统、几何公差具体接受域及装配关联仍待落实。
基准/几何公差的已证实上游差异(2026-09-13):真实需求是不同零件可以分别使用 A 基准,公差数值与目标几何采用同一单位,各公差独立声明基准顺序。继续复用锁定 OCCT 8.0.1 的 XCAFDoc_Datum/GeomTolerance、DimTolTool 关联及 STEPCAFControl_Writer;本次补绑定已完成原生构建。两独立零件各带 A、0.05 平面度和 0.1 垂直度的实际 AP242,经独立 OCP 7.8.1.1 回读确认:第二零件公差误绑第一零件 A,公差成为 50/100 mm。原文件显示公差 LENGTH_MEASURE 使用米而实体使用毫米。源码 writeDGTsAP242 全局按名称和 target number 去重,WriteDatumSystem 按名称查找;公差路径复用 aRC,writeGeomTolerance 在解析目标表示上下文前调用 GetUnit。决定:这两处在维护边界内修正锁定上游写出实现,保留原 STEPCAF 路径与工程名称,不能靠全局改名、虚假尺寸或另一套写出器绕过。基准顺序通过每个公差引用复制 DatumObject 表达;长度换算复用 STEPConstruct_UnitContext.ComputeFactors,不能因毫米输入成立便推断其他单位正确。公共接线、跨单位往返与独立回读的实际状态只见工作进度,本项复用依据不等于完整公差支持域。
工程图公差表示的复用边界(2026-09-13):需求是把已求值的基准/公差及实际目标关联生成可独立交付的图纸。锁定 OCCT 8.0.1(b8f597c…353a42)的 XCAFDimTolObjects_GeomToleranceObject.SetPresentation/GetPresentation 保存/读取调用者提供的 TopoDS_Shape;检索 PrsDim 与 XCAFPrs 未发现可直接生成本项公差框的入口,不能把存储 API 当排版器。FreeCAD 官方说明采用分格 Balloon 和特征符号;QGIViewBalloon依赖 Qt/QPainter/QGraphicsScene,不能直接调用于现有无 Qt 的共享 SVG 消费者。决定:继续复用 OCCT 目标、见证点、投影与同一产品求值,在已有 SVG 渲染器承担纸面分格、矢量符号及引线的薄呈现;没有移植 FreeCAD 代码或新增底层几何/排版依赖。符号按现有 15 种类型映射,原工程种类、值形式及有序基准仍保存在绑定结果和 SVG 元数据中;该映射不定义公差求解或宣称符合任一标准版本。图纸不得将绘制成功等同于声明的标准合法性或制造符合性;后续须补足种类、目标、基准和修饰语义的合法组合及相应工程检查。
工程尺寸数值形式与复用边界(2026-09-14):ProductLinearDimension 显式区分 range 与 nominal-deviations。前者声明 minimum/maximum,后者声明 nominal/lowerDeviation/upperDeviation;均使用已有 Length Value,参数、配置覆盖和程序派生量沿同一依赖图求值。下/上偏差是有符号增量,实际边界为 nominal 加对应偏差;标称值非负,边界须有限、有序且下界非负。求值保留原数值形式与偏差,几何目标、产品哈希、关联图纸和 STEP 交换共同消费。复用锁定 OCCT 8.0.1 DimensionObject 的二值/三值存储及 STEPCAF 原路径;内部 lower 是减量,Writer 取负写出,维护 Reader 将 STEP 下偏差取负映射,并按完整偏差对判断形式,避免 abs 与负数缺失哨兵破坏单向偏差。维护版唯一 airaAddLinearDimension 入口接受两种形式,不保留旧未发布契约别名。导入沿现有同零件两面关联接受域,跨文件显式对应保留尺寸 ID 并整体替换数值表达;图纸保留有符号数值并拒绝显示舍入。其他尺寸类型、修饰语义和跨实例工程尺寸不由该数值形式扩展自动获得支持;本段定义职责与边界,实际证据及剩余范围只见工作进度。
工程声明的基准规则(2026-09-13):现有原生 airaAddGeometricTolerance/airaSetDatumReference 只建立 XCAF 类型、数值和关联,不校验特征种类所需的基准语义。复用依据为 NIST 关于几何公差的论文 Fig. 8所列 ISO 1101:2012 分类:四类形状控制独立于基准,相关方向/位置/跳动控制需要基准;位置及轮廓可按不同用途声明。现有共享 createAssemblyProduct 工程入口据此拒绝 straightness/flatness/roundness/cylindricity 的基准引用,要求 angularity/parallelism/perpendicularity/coaxiality/concentricity/symmetry/circular-runout/total-runout 至少一个基准,position/line-profile/surface-profile 保持可选。三项上限、唯一性和同零件存在检查继续复用原逻辑。Aira 只补已表达语义的共同声明检查,不增加求解器、不按入口复制规则,也不以该历史分类替代标准版本选择、实际基准构造、几何目标适用性或制造符合性检验。当前未发布契约收紧错误声明的接受行为;当前历史重新求值也执行同一规则,不保留绕过分支。
被控要素与拓扑引用的边界(2026-09-13):当前 target 解析唯一 Face/Edge,但没有独立表达关联轴线、中心点、中面或截面线;不得按选中面的存在自动推断这些设计语义。共享装配入口先拒绝平面度、圆柱度和面轮廓的 Edge 目标,当前这三类要求 Face;这只检查表面载体,不判定该 Face 是适合的名义要素。现有 Face.geomType 复用 BRepAdaptor_Surface 的表示类别,不能用 PLANE/CYLINDRE 白名单替代几何识别,否则会排除等价样条表示。锁定 OCCT 8.0.1 的 GeomLib_IsPlanarSurface可用于后续明确容差下的平面识别,但当前密封绑定未提供,且该检查不解决轴线/中心/中面声明。下一项公共表达必须区分持久来源特征与被控派生要素,并贯通同一求值、图纸和 STEP 关联;不能继续以拓扑分类追加逐公差猜测规则,也不能将本批载体检查视为几何适用性完成。
程序面的工程声明按名字(2026-09-16):指向 exact.program 体的面的工程声明(尺寸、基准、公差)只以程序 namedShapes 给出的名字引用(NamedShapeReference)。密封 AMIR 的 LineageShapeReference 对程序面指向的是一次求值(起源是那次运行的 program-face 记录),源码或参数一改就没有可证的延续、两种 policy 都拒——探测环 R6-3 在 R4-15 的副本上因此 15 分钟无法改连杆。宿主在 set-product / update-product 编译期把指向已命名面的 lineage 引用改写为名字(同一张面,从此随源码与参数走),指向未命名面的拒绝并指出出路(EXACT_CAD_PLAN_PROGRAM_FACE_UNNAMED);原生特征与导入体的面保留 lineage 形式,它们的起源随生产者历史延续。程序输入里对程序面的捕获选择不改:契约允许,但它同样把上游程序冻住,读回时按 lineage 引用呈现——步进索引已写明不要拿它去声明。探测协议 §8 加了对应判据。
孔阵要求的排他性与多径孔集(2026-09-16,契约版本项):密封 AMIR HoleArrayRequirement 描述一个体的全部竖直圆孔(“reject missing, extra, split or breached”),一条要求只有一个 diameter。于是一个体上两种直径的孔集(探测环 R3 的 base:中心 Ø6 + 四个 Ø3.2 装配孔)不能被完整声明——两条要求各把对方的孔判为多出,唯一合法动作是撤回其中一条(五次运行的模型都这么做了)。检查器已回到契约语义(34c68481),不再放宽。要解除这一限制得改契约,不能在密封 schema 上改字,候选写法二选一,留给下一版:(a) HoleArrayRequirement.layouts[]——一条要求带多个布局(各自 diameter / 计数 / 规则),排他性对整条要求的并集成立;(b) 要求带 scope: 'declared-centres'——只评判声明孔心处的壁,多出的孔属于别的要求。(a) 保留“一个体的孔集是一条完整声明”的读法,更符合契约原意。
公共派生要素的接线边界:复用通用程序产生几何,声明中分别保留来源特征的持久引用与派生几何的既有 PortRef 输出端口引用,以及二者的工程关系;不能依选中面自动猜测轴线或中心。源码 exactShapeSourceMember 已能定位 Vertex/Edge/Face,现有产品工程目标门槛仍只允许 Body 内 Face/Edge;assemblyExporter.mapTarget 又通过零件副本的 ModifiedShape/AddSubShape 要求目标属于实物零件。因而程序派生几何的消费者必须独立承接辅助几何及来源关系,不能将其并入实物 B-Rep 来绕过门槛。实现应在既有产品求值及维护版 STEPCAF Writer 中贯通这些关联,并让图纸引用同一已求值派生要素;程序负责表达计算方向,工程关系声明不等于系统已经证明该计算正确。锁定 OCCT 8.0.1 的 TDataStd_ReferenceList 支持自定义 GUID 和原生引用重定位,TNaming_Builder/原生复制可保存独立辅助几何,TopoDSToStep_MakeStepVertex/Edge/Face 可直接转换表示;复用这些设施,Aira 仅新增声明到辅助几何的属性关联及既有 Writer 的派生关系接线,不另写转换器。实际接线与验收状态只见工作进度。公共公差采用非空 targets 持久引用集合,派生几何保留一个现有程序端口;普通集合复用 XCAF 复合要素,派生集合逐来源关联。集合引用不区分首要来源,不自动把多个形状合并为单一实物。原始 STEP 来源分组必须有逐来源表示项证据,XCAF 展平结果不足时明确拒绝,不能以数量相等代替保真。 观察复用同次 transfer 的 Interface_Graph、STEPConstruct.FindShape 和 ShapeTool.Search,原始关系、表示项实体与文件内实际子形状标签分别保留;普通单表示项来源可逐一对应公共集合,复合分组或额外语义不能自动拆成独立来源。实现及尚未验收部分只见工作进度。
派生要素的上游语义核对(2026-09-13):锁定 Writer 的 writeDatumSystem 在 HasAxis 分支把 Axis2Placement3d 通过 GISU 关联到 DatumSystem,表示基准系统方位;它不是公差被控轴线,不能把该字段直接重命名为 target.axis。writeGeometricTolerance 的单目标由 writeShapeAspect 关联原始表示项;WriteDerivedGeometry 则是尺寸连接点的专用分支,并非通用公差派生要素写出器。锁定 Reader 的 collectShapeAspect 在 DerivedShapeAspect 分支沿 ShapeAspectDerivingRelationship 回到来源 ShapeAspect,myGDTMap 为私有;只查看最终 XCAF 目标标签不足以证明原始派生语义完整保留。实施顺序据此调整为:先在既有 STEP 检查过程利用原生 STEP 模型和实体关系保留原始被控要素分类及派生关系,再明确公共来源特征/被控要素契约及各消费者承接,复用上游标准实体,不把来源面当派生要素,也不自写 STEP 文本解析器。本轮独立 OCP 的修改模型实验返回写出错误(Null Reference),后续添加实体尝试也未完成,因此该文件及其中观察到的公差数减少均不作为产品语义丢失的实证;需要有效独立文件重新验证。
派生要素的实际输入依据:NIST 官方 PMI STEP 数据中的 nist_stc_07_asme1_ap242-e3.stp 由独立 OCP 模型读取确认包含 CentreOfSymmetry 被控目标,避免继续依赖未成功的人工文件构造。原生成功识别的几何公差实体 21 项与当前 XCAF 观察 10 项不一致,说明不能把转移结果当原始工程信息的完整清单。直接复用 STEP 模型实体及 ShapeAspectDerivingRelationship,在同一检查结果暴露 sourceEngineering 原始观察;原生 sourceEntity 与 XCAF sourceId 分开,不猜测一一对应。当前编排以数量差异明确拒绝不完整导入,后续需要逐实体承接或诊断;这是防止静默遗漏的暂时保护,不替代派生工程要素能力,更不能以数量相等证明语义保真。该文件的垂直度 #16567 指向 CentreOfSymmetry #16548,经派生关系 #16560 指向来源 #14028;来源通过 ITEM_IDENTIFIED_REPRESENTATION_USAGE #14044 关联两个表示项。锁定 Reader 的 createGDTObjectInXCAF 在收集表示项处只向下转换到 GeometricItemSpecificUsage,而锁定头文件确认它继承 ItemIdentifiedRepresentationUsage。该接受域差异已在维护版 Reader 的公差目标收集分支修复并进入密封运行时;直接读取确认共同基类关联可保留既有文件的 6 项公差及其面目标,但 NIST inspection 与修复前完全相同,不能据此宣称派生语义已保留。新原生观察进一步确认 #16560 的 RelatedShapeAspect 已为空,而另一条 #16630→#14102 正确;因此必须先查清 #14028 实体解析,不能仅放宽 XCAF Reader 的关联类型便视为完成。后续基准读取分支已同步修复,直接比较确认共同基类形式的 8 项基准目标恢复,6 项公差及其余 inspection 字段保持。此项按真实消费者差异收尾,不再逐实体扩张 NIST 样例。锁定源码没有 DimensionalSizeWithDatumFeature 的类型及注册项,独立读取将这两项保留为 UndefinedEntity;成功识别计数不是完整文件清单。同一观察增加 unrecognizedEntities,复用 StepData_UndefinedEntity 的类型名与文件编号,先暴露解析范围,再落实标准实体承接;不把未知实体视为可忽略信息,也不另写 STEP 文本解析器。STEP Tools 的实体定义表明它同时继承 datum_feature 与 dimensional_size,并要求 applies_to 指向自身;替换为普通 ShapeAspect 不能保留这两种职责。锁定 RWShapeAspectDerivingRelationship::ReadStep 对来源执行 ShapeAspect 类型读取,未知实体在此不能承接。锁定构建源码未发现可直接运行的 ExpToCas 工具或 EXPRESS 输入;StepData_Protocol 保留协议/描述扩展设施,后续需核实其与现有强类型 STEPCAF 消费者的衔接,不能仅注册类型名便宣称修复。进一步核对确认 StepData_Described 继承 Standard_Transient,而 StepReaderData::ReadEntity 使用实际 IsKind(atype) 检查;通用描述不能自动成为现有 ShapeAspect/DimensionalSize 消费者所需的类型,因此不采用仅添加描述的替代方案。新接线执行状态见工作进度。
结构交换来源的持久表达:product.exchangeSources 保存资源格式、内容哈希、字节长度和文件内标签到现有 Body/装配/组件的显式映射。原始属性留在同一内容寻址资源中;映射提供来源入口,不复制几何/结构、不隐式声明仍受外部文件驱动,也不证明子实体或参数历史连续。映射指向基础定义,配置抑制不使其悬空;删除基础目标必须同批修改映射。Core 检查基础引用,既有资源绑定收集器保留这些资源并核对哈希声明的长度一致性;文件标签实际存在及跨文件对应关系仍须由读取与显式更新过程验证,不能由静态引用检查推断。公共 set-product/product.put 读写同一契约,不建立另一个来源账本或兼容层。
初次结构导入复用上述契约:公共 imported-product 步骤由宿主检查已暂存文件,编排已有 node.put/body.put/product.put;文件菜单使用同一 SDK 检查器与编排函数。共享零件、装配组件、毫米刚体放置及文件内来源一次提交;多自由根用普通装配表达。不支持的放置明确拒绝,不能换成单位矩阵。当前空模型接受域避免暗中合并已有产品;随后跨文件更新必须显式处理目标对应、保留的工程关系和失效引用,不能把文件标签或排序生成的 ID 当作跨文件身份。原属性保留不等于物料身份或参数历史恢复。
文件存在性核验由共同产品求值承担:基础来源映射进入维护版 evaluateExactProduct,复用已有资源解析器和 STEP 检查器核对内容哈希、字节长度和标签存在性;同次求值按内容哈希复用观察,失败不产生成功产品结果。Core 仍负责基础 AMIR 目标引用,不把文件读取塞入静态验证。文件内标签存在只是跨文件对应的必要证据,不能推导两个文件的元素等价,也不要求来源几何与已加工目标保持相等。
外部更新复用相同补丁与执行边界:update-imported-product 接受显式新旧标签对应和预期旧内容哈希。更新共享导入节点而不改写 Body authority,从而让既有下游程序仍按依赖关系求值;基础组件更新定义与放置,设计关系、配置覆盖、物料身份和独立要求保留,继续由同次求值检查。保留声明本身不算关系承接成功。调用者可使用既有 requirements 字段明确修改独立要求,编译器通过同一 requirementOperations 加入更新补丁;不得在几何失败后自动放宽要求。当前编排要求每个新标签显式对应旧标签或 null(新增),每个旧标签仅被对应一次或列入 removedEntries。角色必须匹配;组件可改父级,旧实例路径不会自动跟随。新增定义使用 namespace,ID 冲突拒绝;仅移除来源拥有的基础组件位置,保留本地组件及仍可被配置/下游引用的共享定义。定义退役另用同一模型的显式编辑,任何关系失效继续由既有验证拒绝,不能靠删除关系使更新通过。配置显式覆盖仍具有原优先级,不因外部文件更新被暗中抹除。
结构导入的放置表达:XCAF 返回的局部矩阵继续完整保留,另复用锁定 OCCT 8.0.1 的 gp_Trsf.GetRotation / gp_Quaternion.GetEulerAngles(gp_Extrinsic_XYZ),得到 AMIR TRzRyRx 所需的毫米平移及度数旋转。已实测直接分解在近奇异位置会放大外角误差;薄绑定复用 OCCT 四元数乘法/逆去除 RzRy,再从残余旋转恢复 X,保留上游分解而不增加求解器。检查单位尺度、反射和以 SetEulerAngles/GetMatrix 重建后的矩阵差(旋转分量 1e-10),不以放宽精度掩盖该差异。单位尺度误差检查为 1e-12,不使用长度容差代替无量纲矩阵精度。查询返回 rigid 或明确 unsupported 原因,unsupported 保留原矩阵;结构作者不得把它自动换成刚体近似。这是现有 AMIR 刚体放置接受域的查询接线,不表示缩放/反射已进入产品装配表达,也不为其另建平行模型。执行和实际验证状态见工作进度。
关联尺寸的几何观察:最短距离查询现在返回原生点对及 innerSolution,为后续尺寸呈现提供有产品状态绑定的落点证据。直接复用锁定 replicad-opencascadejs 1.0.0 所暴露的 BRepExtrema_DistShapeShape.PointOnShape1/2、NbSolution 和 InnerSolution,不新增最近点算法。点对是当次求值结果,顺序不可持久引用,数量不是唯一性或连续解全集的证明;内部解可位于实体内部,innerSolution=false 也不能证明没有重叠。持久标注仍必须声明几何/设计关系与引用策略,不能暗中选首个最短距离解充当设计意图。
关联尺寸的复用方案:几何锚点沿既有 NamedShapeReference/LineageShapeReference 进入通用程序输入,由 resolveExactSubEntity 执行显式跟随策略、唯一性及来源校验;程序隔离执行已支持 Vertex、实例变换及 Length 数值输出。图纸应引用这些具名数值输出或已有参数来声明工程量与端点,并在同一次产品执行结束后读取其值;图纸持久保存引用和版面,不保存替代引用的坐标快照。几何引用失效必须继续沿原程序求值报错,不允许图纸按近邻或旧索引修补。图纸现有 view.dimensions 已接入 linear-reference:端点是产品坐标的 Length 输入,复用数值结果解析和有效配置参数;Core 检查引用及类型,读取使用同次执行结果与原生 HLR 相机完整变换、gp_Pnt.Distance,返回绑定当前状态的端点和测量值。measurement 显式区分 spatial(真实三维距离)和 projected(视图平面距离),SVG 用括号与 3D/proj. 标签标识参考尺寸;offset 为纸面毫米偏移,decimals 仅控制显示舍入。投影端点重合无法定义尺寸线,整次图纸读取失败。该实现不替代驱动尺寸、独立要求、基准或公差;公共修改传播与历史恢复的实操状态见工作进度。这一路线复用现有来源解析、隔离程序和数值依赖机制,Aira 新增职责限定为标注语义、同状态读取与呈现,不另建锚点求解器。有关物理尺寸与投影尺寸、驱动/参考标注、基准及公差的区别仍须显式表达,不以任意显示文本代替工程定义。
工作台图纸入口:文件菜单列举当前修订的命名图纸,经同一 SDK aira_model_read 导出 SVG 并预览。读取捕获当前头,完成时校验结果修订与头未改变;运行任务或待处理候选期间拒绝导出。UI 只消费公共结果,下载沿用现有文件传输和 Blob 生命周期。原声明下的几何修改已实际贯通重新读取与预览,关联尺寸/基准/公差及外部交换仍按原 M2 范围推进;已完成与尚缺的取消、历史和恢复实操只见工作进度。
SVG 交付接线:drawing 读取结果包含 svg,复用维护版 HLR 输出的路径,在 contracts 既有产品消费者中进行纯 SVG 版面转换,不增加几何算法或第二份模型。纸面毫米映射到 SVG 物理尺寸,视图比例不改变纸面线宽,隐藏线先绘制,所有视图受纸张视口裁剪;声明、修订、配置与产品结果哈希保留为 XML 元数据,标题和路径按 XML 转义。Interface 核对 SVG 是同一结果的确定性转换,失败不返回部分图纸。当前保留正投影、布局及已接通的线性参考尺寸信息;其他尺寸语义、基准/公差、剖视及公共模型修改后的完整交付联验仍承担原 M2 责任,不能由 SVG 输出代替。
持久图纸首批接线:product.drawings 保存命名纸张的毫米宽高,以及命名正投影视图的相机、纸面位置、比例和隐藏线显示选择。相机仍使用产品毫米坐标;纸面位置是投影原点落在纸上的位置,X 向右、Y 向下,比例只改变呈现,不修改模型驱动量或独立要求。声明由配置共享,读取消费当次选定配置,不隐式固定到创建时的几何。既有 set-product 修改同一 AMIR 修订,aira_model_read({drawingId}) 经原 Worker 为全部视图重新调用维护版 Replicad 投影,返回声明及其哈希、配置 ID、修订、产品结果哈希和逐视图路径;任一视图失败则整次读取失败并指出视图 ID。复用 OCCT HLR、既有产品求值和读取生命周期,Aira 负责版面语义与绑定,未另存几何或新建图纸执行器。该批仅落实全产品正投影声明及读取接线;纸面渲染/裁剪由上段 SVG 接线承接;实际公共读取、剖视、关联尺寸/基准/公差和完整独立交付仍待实现或验收,不能作为关联工程图完成条件的替代。
驱动尺寸契约:linear-driving 在同一 product.drawings 声明中绑定 mutable Length parameterId、现有工程尺寸 dimensionId 及 occurrence path。候选验证与重开均将真实空间测量与当前配置有效参数按文档 validationDistance 比较,不从数值相等推断绑定,不另建逆向几何求解器。edit-drawing-dimension 复用参数修改的提案、预览、验证及 CAS 提交路径;同一 sheet 中尺寸 ID 重名时须提供 viewId,参考尺寸不允许写回,独立工程限值继续约束修改。读回携带有效参数值与绑定,图纸比例不改变驱动量。新增声明进入当前 AMIR schema 和 catalog 内容哈希;当前旧绑定不兼容且明确拒绝,已提交 Revision 不被自动重新解释。
参数修改目标:AI 的 set-parameters 用可选 configurationId 明确修改指定配置;省略编辑基础参数,指定配置不会顺便改变当前选择。表达式 current 使用目标配置在本步骤开始时的有效值,未覆盖时回退到基础值。一次批量编辑只生成一个产品更新,保留同批所有覆盖,独立要求沿原机制原子修改。界面参数探针显示有效值及配置 ID,编辑当前配置;未选配置时编辑基础值。两者共用现有参数补丁创建入口,不增加平行执行器。
配置独立要求作用域(2026-09-13):复用同一 ProductConfiguration,assertions 按稳定要求 ID 新增或完整替换基础声明,null 明确停用已有基础要求,省略继承;配置专属要求只写入配置。基础及所有命名配置分别检查有效引用,未选中的配置也不能含悬空要求;null 指向不存在的基础要求拒绝。共同 resolveProductConfiguration 投影输出有效 assertions,现有生产执行器仅检查这些要求,公共读取 configuration.effectiveAssertions 列出当前适用声明;停用不是通过,原始声明仍在同一修订中。基础 assertion.remove 若留下配置中的 null 引用,必须同批修改配置。配置覆盖经既有 set-product/product.put 编排,不新增要求执行器。当前未发布 schema、依赖模块及目录哈希已整体更新,无兼容别名。已实测基础/未选配置引用拒绝、显式停用及新增、真实生产证据、配置切回后的要求违反、Core 提交/撤销重做/序列化恢复;公开 set-product 编译器和共享读取已实际联验;浏览器通过图补丁入口的同批配置要求修改、IndexedDB 刷新、撤销重做及下载历史核验通过。外部 SDK 权限完整调用仍待实操。
结构配置接线:配置可用 root 选择已声明的产品定义,用 assemblies 完整替换已存在的装配定义;未列出的装配保留基础声明,替换中省略组件表示该配置不选用它。组件与 solve 同批替换,不自动删除仍需满足的空间关系。替换作用于该定义的全部使用;只改变一个实例时,显式建立不同的 Body/装配定义并在父级选择它,不增加隐式私有副本或路径覆盖优先级。配置 partIdentities 按 Body 覆盖物料身份,null 清除赋值,省略继承基础赋值。Core 校验全部配置的定义引用、装配环和关系;程序实例依赖按当前有效结构检查,抑制或改选导致路径失效时拒绝。统一 resolveProductConfiguration 投影供几何、实例引用、BOM 和工作台产品树消费,公共读取返回 configuration.effectiveProduct;原始产品声明仍是修订、执行清单和几何证据的绑定来源。BOM 另携选择 ID,配置切换不会把原数量当作当前数量。这里复用 M1 定义和关系语义,不另建配置求解器;配置中的独立要求适用域见上段,实际交付联验及 GUI 参数编辑投影仍待闭合。
配置驱动输入首批接线:product.configurations 保存命名配置的 parameterValues,activeConfiguration 选择其中一项,省略选择使用基础值。覆盖只接受已声明且可变的参数,类型、单位须与基础参数相同,并满足原范围;未覆盖参数继续使用基础值,不继承其他配置、不捕获切换前的临时值。所有配置均经 Core 静态校验,选择和定义经既有 set-product 原子修改。统一编译入口产生有效参数视图,通用程序、草图与产品空间关系继续使用原依赖求值及输入哈希;原文档保留基础值。公共读取的 configuration 返回选择、源修订与有效参数,document.parameters 保留基础声明。set-parameters 默认编辑基础参数,显式传入 configurationId 可批量编辑对应配置的覆盖值;不会同时切换配置。数值覆盖的作用域是共享模型驱动量;结构变型与物料身份采用上段同一配置的显式定义替换规则,不能由数值覆盖或几何相似性推断。
首批物料身份决定:product.partIdentities 按 Body ID 声明 partNumber 与 partRevision,经现有 set-product/product.put 进入同一修订;两者相同表示设计者明确声明可归并,不根据几何或名称推断互换性。删除 Body 时必须同时清理该引用。公共 aira_model_read({bom:true}) 从所读产品结构推导零件明细,按共享装配定义累计重复使用数量,保留各 Body 的数量与材料来源;未分配身份单列,已知材料不同标记冲突,缺失材料标记未分配,均不冒称工程合格。读取结果绑定修订与产品结果哈希,无求值结果时明确不可用。structure 同时给出产品根与可达装配定义:每个装配的产品总用量、按直接定义归并的单套用量及组件 ID;组件 ID 属于所在装配,完整实例引用仍使用 M1 的路径。未使用的定义不计入当前 BOM,装配 ID 不被当作采购物料号。这一消费者复用现有 SDK 读取投影,不另建 BOM 存储或几何算法;配置、装配物料身份与完整交付仍须按 M2 接通,不能由本批结项。
产品距离要求的当前表达:assert.productDistance 保存两个 ProductOccurrenceReference 和独立 Length 上下限(常量、有效配置参数或程序具名数值输出),公共计划通过 require-product-distance 新建或显式按 ID 替换。基础要求默认由配置继承;配置可以按上段同一要求 ID 显式替换或停用。不因配置抑制或定义改选而自动删除或换绑。复用 M1 实例路径与有效装配变换,以及维护版 Replicad 的 OCCT 最短 B-Rep 距离;上下限在本次执行完成后由已有数值结果解析与单位转换求值,必须非负且有序;检查证据保存求值后的毫米范围,不携带替代设计声明的快照。公共 require-product-distance 统一使用 minimum/maximum 的 Value 表达,旧 minimumMm/maximumMm 字段已移除,无兼容别名。上下限为闭区间,使用模型 validationDistance 作为接受容差。零距离不能区分接触、穿透和包含,不能作为无干涉证明。测量失败为 unknown,距离越界为 fail,均不允许提交;成功结果绑定产品求值并保留测量、范围与容差。配置专属适用域已接入上段公共表达;干涉体积与其他工程观察仍须在同一模型和要求机制中接通。
通用独立数值要求:assert.numericRange 与公共 require-numeric-range 复用现有 Value、数值程序、配置投影、要求提交及证据链。type 明确 Length/Angle/Count/Int/Real/Ratio,value/minimum/maximum/tolerance 必须全部同类型,可使用常量、参数或程序具名输出;Core 校验类型与引用,运行时复用既有单位转换和数值类型规则,检查有序闭区间与显式非负容差。长度证据为 mm、角度为 rad、其他为 1;角度为普通有符号量,不自动按周期环绕。证据绑定 executionManifestHash,保存实际值、范围、容差及单位,按稳定 ID 排序,读取再次检查类型和成立条件。它表达独立关系,不修改驱动量,也不证明作者自定义的测量算法正确;几何观察继续复用内核/公共引用。该接线不代替基准、公差体系或工程信息交换。
真实需求是工程意图与各消费者在修改后保持一致。M1 已有 AMIR 产品身份、typed 输入、依赖图、候选/修订、持久引用及恢复;维护版 Replicad 已有几何测量、drawProjection/HLR、XCAF 和 STEPCAF 读写设施,继续复用上方锁定来源,不另建产品权威、几何封装、求值器或 Agent 循环。
工程属性交换复用边界(2026-09-13):真实需求是显式物料编号/修订与显示名称分别保存和读取。已核对本地 OCCT V8.0.1 的 STEPCAFControl_Writer.cxx:名称写出同时调用 Product.SetId/SetName;通用字符串属性通过 TDataStd_NamedData 与 writeMetadataForLabel 写为 DescriptiveRepresentationItem。Reader 的 ReadProductMetadata 则把标准 Product ID/Name/Description 投影为 NamedData 的 ProductID/ProductName/Description,不能据此认定任意同名属性会反向成为标准产品身份。当前密封 WASM 已补齐 NamedData 设置/读取、上游 UTF-8 字符串转换,并在现有装配构造/复制与 STEP metadata 写出接线。读取继续复用 STEPCAF;针对锁定 8.0.1 属性值逐字节扩宽的已证实差异,在新文档 transfer 边界还原 UTF-8,属性名保持上游正确解码,ProductMetaMode 不混入此修复。中文、符号、emoji、空字符串及独立 OCP 读取已实测。继续明确区分标准产品身份与通用属性,不拼接显示名称冒充物料身份,不手写 STEP 解析器;当前标准字段映射已落实:既有有效配置的身份投影经 STEPCAF 单文件 Transfer 后的形状映射设置 Product ID=partNumber、ProductDefinitionFormation ID=partRevision,再由同一 writer 写出;显示名称独立,描述性属性保留。中文身份、共享实例及配置覆盖经独立 OCP 实体读取验证;未分配身份的名称型 Product ID 不视作物料号。标准身份观察已由同次 STEPCAF transfer、公开 GetShapeLabelMap 和原生 STEP 实体读出,现有共享检查工具返回 standardProducts,独立保存标准字段、文件实体编号和定义标签关联;未关联或多重记录保留歧义,不自动赋予 AMIR 身份。现有导入/更新计划接受按新文件零件标签声明 partIdentities,将显式身份与结构/几何放入同一 product.put;null 删除、省略保留更新前基础身份,配置覆盖保持独立。标准字段观察到显式声明、Core 更新提交、BOM 和再次 STEP 独立回读已联验;身份修改后的 Core 撤销重做/序列化恢复、显式删除与配置覆盖及基础 BOM 未分配状态已经联验;IndexedDB 与外部公共接口全流程及完整工程属性交换仍待完成。产品几何写出已改用临时装配副本,复用现有原生复制设施,避免 STEPCAF 改变已求值产品状态。
已证实差异:M1 的实例观察与局部坐标面边读取不等于完整跨实例工程测量;现有独立断言运行时只承接 validSolid/bounds/holeArray,其他声明不能获得几何认证;结构化 STEP 导出已经保留层级、定义复用与位置,不能作为 M2 新增机制重复实现;投影与 STEPCAF 的 API 存在不能证明关联图纸、配置或工程信息交换已完成。具体依据见独立要求编译、产品 STEP及 M1 结项记录。
Aira 负责上述工程语义、来源/状态绑定和已有设施的实际接线;新增几何计算先核对锁定上游的接受域、失败和生命周期,按直接调用、补绑定、薄适配、必要上游扩展的顺序处理。尚未查明的公差计算、修复和工艺算法能力保持未知,不能用本方案授权重写成熟底座;复用决定与必要差异直接补在本节。
剖视复用决定(2026-09-13):真实需求为同一产品状态的切割面和保留侧投影,不能以截面轮廓或隐藏线替代。锁定 OCCT 8.0.1 的 BRepAlgoAPI_Section 输出顶点/边,BRepPrimAPI_MakeHalfSpace 由面与侧参考点建立无限实体,供既有 Cut 和 HLR 使用。前者已绑定并实测,后者已补绑定;维护版 drawProjection.sectionSide 复用相机平面及现有 Cut/HLR。已证实空结果 Boolean 可改动借用拓扑标记,因此复用既有原生身份变换复制,裁切在临时副本执行。Aira 后续仅负责持久 view 的剖切声明、状态绑定、截面表达和图纸交付,不新增裁切算法。当前侧参考点须能以有限精度区别于平面原点,否则明确拒绝;剖视持久接线、截面填充和剖切符号仍未完成,不缩减为仅线框便结项。
剖切声明与消费:视图可声明 sectionSide=positive|negative,以 camera.origin 为平面原点、camera.direction 为法线,省略则投影全产品。几何裁切由上述公共 Replicad 投影承担;Aira 保存声明并将保留侧绑定到读取结果,SVG 元数据包含原声明,保留侧不一致拒绝呈现。空保留侧允许作为可修改图纸定义保存,但请求交付时明确失败,不能回退成未剖视图。此语义只改变图纸呈现,独立要求仍检查完整的当次产品;剖面填充和切割位置标识由下段关联声明承接;不能将局部剖视能力认定为完整工程图交付。
剖面区域复用决定:填充需要真实材料面域及内孔,不能用 HLR 可见线段拼成近似区域。锁定 OCCT 8.0.1 BRepAlgoAPI_Common 已绑定,原生实体与无限平面求交实测返回带孔 Face;现有 Shape3D.intersect 强制三维结果,不能承接二维截面。因此在维护版 Replicad 投影源码中直接调用 Common,复用原生隔离拷贝、HLR FullTransformation 和既有曲线拼接,公开 drawSection 返回逐面 Drawing,内孔按 evenodd 填充解释,未闭合则拒绝。Aira 负责图纸声明、区域的产品/实例归属及呈现;截面存在不等于沿观察方向可见,接入剖视时必须处理保留侧与遮挡,不能把背面的完整截面覆盖在正面投影上。
剖面区域交付:读取结果随剖切声明携带逐实例 sectionRegions,SVG 保留实例标识,逐面连接内外轮廓并使用 evenodd。当前相机从正深度观察,负侧保留时截面为暴露的最前平面,显示填充;正侧保留时截面位于实体背面,保留可查询区域但不覆盖到可见图上。3 mm 间距及 0.18 mm 线宽按纸面比例换算,同实例的多个面域共用方向,依实例枚举交替 ±45°;这不是自动邻接着色或工程制图标准合规声明。切割位置标识由下段关联声明承接。
关联切割标识:view.cuttingPlanes 的键是打印标识、值是同纸张剖视 ID,目标必须有 sectionSide 且不能为自身。Core 校验引用;相机平面投影在维护版 Replicad 复用现有原生坐标设施,宿主读取绑定 sectionViewId 和投影位置/法向;SVG 负责二维线段与符号布局。当前只接受边向观察的单平面(法向与标注视图观察方向点积绝对值不大于 1e-10),输出沿目标相机观察方向的箭头,不随保留侧符号错误反转。切割线穿过产品投影包围边界并在两端延长 6 mm,标識字号 3.5 mm、线宽 0.35 mm 均为纸面尺度;不适用时明确报错。目标视图可用现有 label 标为 A-A。此接线使平面位置与标识随同一声明修改,未新增平行图纸模型,不宣称支持折转剖切或全部工程制图标准。
- 公共 SDK/Interface 能声明、查询、修改并诊断本节落实的配置与工程关系;全部必要消费者实际接通,不依赖私有索引、手改源码或仅 GUI 操作。
- 给定修订与配置,几何、实例、独立检查、BOM、图纸和交换能追溯到同一有效产品状态;不同配置不混用缓存、物料归并或通过结果。
- 共享改参、实例差异、配置切换和外部更新按声明规则传播;关联尺寸与数量实际更新,受影响要求重新检查,歧义/删除/来源丢失明确失效。不能仅验证首次生成成功。
- 图纸与结构化交换按已确定的接受域保存工程含义,输出绑定源状态;独立消费者核对几何、结构及承诺保留的信息(结构化交换以 独立 STEP 验证器 的 OCP 回读为准:结构、几何量、尺寸 ± 偏差、基准、几何公差,以及从 Part 21 原文独立读取的偏差值)。历史交付可以保留,但不得冒充当前状态的交付。
- 新语义继续保持失败、取消、版本冲突、撤销重做和保存重开的一致性。按共享机制与消费者差异做实际产品验证及必要 build/typecheck/lint,不逐功能复制整套验证,不新增 test/spec、Gate 或证据框架;本节消费者链路的证据以可重跑脚本保留(CAD closure client 经 HTTP MCP 驱动全部必要消费者并逐项断言,独立 STEP 验证器 及其 OCP 夹具生成器),受影响批次提交前重跑,不能只在进度文档留下一次性结论;网关问题事件的假 provider 场景属于 RFC-0015 与发布准入 G2,不在本条件内。
以上条件全部达成且本节接受域无未决项,才可结项;找出最小缺口仅是实施进展,不能作为 M2 完成的替代条件。状态与不可重现结论只记工作进度;本次目标修正不表示功能已经实现,也不授权付费调用、部署或 Git 提交推送。
M3:通用能力在实际使用与交付中达到首发条件(2026-09-14)
Section titled “M3:通用能力在实际使用与交付中达到首发条件(2026-09-14)”目标:用固定的验收路径和负载样本,在当前候选的实际字节上证明 M1/M2 承诺的能力经 AI 自主使用、修改恢复、规模负载、数据保护和费用控制后仍成立,并完成获授权的生产验证;每条路径的判据在运行前写死,结果只陈述测到的。
目的:让首发承诺“AI 通用工业建模软件”由实际使用证据而不是局部验收支撑。 M3 不新增建模语义;承诺列外的语义仍按系统地图作为并行几何能力处理。M3 的产物是可复算的证据、按证据修正的缺陷,以及一份满足上线计划 G0–G4 的候选。
必须回答的方案问题
Section titled “必须回答的方案问题”- AI 自主组合以什么为准? 成功由独立回读对照事先写死的真值判定,与模型自述无关;不可用手工预编排或操作者代补替代模型的自主结果。测量环回答“已知能力有多稳”,探测环回答“还缺什么”,两者共用真实产品入口,结果分目录保存。
- 规模在哪些轴上量? 拓扑(面数)、实例数(共享定义的重复使用)、依赖深度(连续续改轮数)、历史长度(修订数)与交换文件大小各自独立成梯;每级都是可由构造给出真值的样本,不用“复杂模型”一词代替。
- 数据在什么条件下不丢? 浏览器重开、导出备份后清空存储再导入、篡改文件、内容哈希不符的资源、多项目共存,各自的预期结果写死;不承诺浏览器清理后的自动恢复,只承诺备份路径有效并被明确告知。
- 费用与运行由谁封顶? 每任务费用来自产品自身的计量,网关预算、告警与熔断在实际运行态验证;零费用栈用于复现,付费运行只在明确授权下按封顶执行。
所有路径经同一公共入口:浏览器工作台、AI SDK 网关(或 HTTP MCP 中继)、宿主验证、独立 OCP 回读。零费用栈为 wrangler dev 本地生产 Worker(provider-off)加 Vite preview,或假 provider 栈;付费路径的授权按上线计划。
| 路径 | 检验 | 系统职责 | 手段 | 判据 | 费用 |
|---|---|---|---|---|---|
| P1 AI 自主组合 | 创建、结构续改、连续续改、装配与配置的自主完成率与成本 | S9、S1–S4 | 增长基准(测量环:T1–T5、规模格 S1/S2/S3′、深度 k1–k6,n=5)与目标探测(探测环:三关节舵机臂 R0–R6,冻结制) | 闭式真值经独立回读;成功率报 Wilson 95% 区间;探测各级按其协议冻结 | 付费,按各协议封顶 |
| P2 修改恢复与工程正确性 | 配置、要求、BOM、图纸、STEP 在修改后保持同一状态;取消、冲突、撤销重做、重开一致 | S2、S4–S8 | CAD closure client(57 项断言,含取消、并发冲突与删除被引用目标)与独立验证器;探测环 R4–R6 | 全部断言通过;回读的结构、几何量、尺寸偏差、基准、公差与声明一致 | 零费用(R4–R6 付费) |
| P3 规模性能 | 时延、峰值内存、取消延迟与长会话稳定性随负载梯的变化 | S10、S1、S3 | 下方负载样本逐级实跑,页面记录器读取 wasmMemoryBytes、duration、cad 计数,取消经工作台停止按钮 |
见“指标与阈值”;每级记录 cold/warm p50/p95 与峰值内存,首次运行建立基线 | 零费用 |
| P4 数据安全 | 本地数据的保存、备份、恢复与拒绝 | S8 | 每级负载后重开页面;.aira.json 导出→清空 IndexedDB→导入;篡改文件与哈希不符资源;同源 10 个项目 |
重开后头修订与证据一致;导入后头修订、修订数、证据哈希与导出前逐项相同;篡改与哈希不符被拒且不损坏已有项目;项目互不串扰 | 零费用 |
| P5 运行成本 | 每任务费用与网关封顶行为 | S9、S10 | P1 的 cost/token 计量;假 provider 栈复现预算拒绝、限流、kill switch;一次授权真实运行验证 80%/100% 告警送达 |
每任务费用中位数与最大值随规模格记录;预算与熔断按生产运行条件 §4 行为;告警到人 | 零费用为主,一次授权付费 |
| P6 生产验证 | 候选在目标平台上的实际字节 | S10 | 干净 release commit 构建候选(Web、Worker、WASM、manifest、逐文件哈希),远端逐字节核验,授权的 provider-off 云 smoke,再以授权的真实 provider 跑 P1 的一个规模格与探测 R2 | G0–G4 逐项满足;云上结果与本地同一判据 | 部署与付费各需授权 |
路径之间的依赖:P2 与 P3、P4 可立即在零费用栈上推进;P1 的付费运行以 P2 全部通过和 P3 的基线存在为前置;P6 以 P1–P5 的证据为前置。缺陷修复按“发现的缺口落到 S1–S10 或接受域表的某一行”的规则归档,修复后只重跑受影响路径。
样本按构造给出真值或由既有协议定义;文件本身存于用户授权的临时目录,SHA-256 写入结果,不进仓库。夹具生成器与客户端在 tools/ 下可重跑。
| 梯 | 级别 | 样本 | 真值或判据来源 | 用于 |
|---|---|---|---|---|
| 拓扑 | 12 / 48 / 105 孔 | 增长基准 T1 规模格 S1、S2、S3′(薄壁盒 + Ø6 阵列;S3′ 为该板上不相交的最大阵列) | 基准 §2–§3 闭式体积、实体数、面数 | P1、P3 |
| 拓扑 | 2 实体 54 面 286 边 | complex-part-v4-centerhole-245226(叉耳 + 弯管 + 销,T4/T5 起始) |
基准 T4/T5 真值 | P1、P3、P4 |
| 实例 | 1 / 7 / 50 / 200 | 探测环 link 定义经装配重复使用:R1 一个关节(base+link+pin)、R2 三节链(7 体);50 与 200 为同一 link 定义在一个装配中按 Z 分层等距放置,用 closure client 同一 set-product 路径构造 | 体积 = N × 单件体积;实例数 = N;两两求交为空 | P3、P4 |
| 依赖深度 | 6 轮 | 增长基准深度轴 k1–k6(同一文件连续续改,每轮保留前轮几何) | 基准 §3.2 逐轮真值 | P1、P3 |
| 工程定义 | 1 尺寸 + 1 基准 + 2 公差;2 实例装配 | make_pmi_fixture.py 生成的 AP242 夹具 v1/v2 及 closure client 构造的两次使用装配 |
closure client 断言与验证器回读 | P2、P4 |
| 历史长度 | 100 修订 | 在 S1 状态上用 set-parameters 交替改 cols/rows 100 次(每次可由公式判体积),再撤销 20 次、重做 20 次 | 每次提交后体积与公式一致;重开后头修订与修订数不变 | P3、P4 |
| 交换文件 | 最大既有样本 | 临时目录中最大的 .aira.json(5.7 MB,v4 状态)与其 STEP;探测环 R5 的导出再导入 |
导入后头修订可求值、体积与 verify.json 一致 | P4、P2 |
| 项目数 | 10 | 同一源下 10 个 ?store= 项目,各载入上述任一样本 |
各项目头修订互不影响;逐个重开正确 | P4 |
| 长会话 | 60 分钟 | 一个页面会话内每 2 分钟一次 set-parameters 提交,中途两次取消长操作 | 无内存单调增长超过阈值、无未完成事务、最终头修订与提交序列一致 | P3 |
指标定义沿用增长基准 §5(成功、修复次数、调用数、token、费用、provider/CAD 耗时、总时长、峰值内存)。阈值分两类:
- 已有的固定门槛,沿用不放宽:RFC-0001 §25.3 的交互期间无大于 50 ms 的连续 long task、超过 500 ms 的任务必须显示进度并可取消、固定语料的 p95 时间或峰值内存不得无解释恶化超过 10%;生产运行条件 §4 的 SLO、预算告警与熔断;增长基准与探测环各自的费用封顶。
- 负载梯的基线:每级首次在参考设备上运行时记录 cold/warm p50/p95、峰值内存与取消延迟,作为该候选的基线写入结果;此后同一级别不得无解释恶化超过 10%,峰值内存不得触及密封运行时的内存上限。参考设备(浏览器、机器)在首次运行前冻结并随结果记录;不同设备的数字不互相比较。冻结设备还不够:并行会话的负载能把同一份字节的中位耗时推高一倍,远超这里的 10%(2026-09-15 的同构建 A/B),所以判“恶化超过 10%“必须让两个候选同时跑同一条梯(外来负载对两边一视同仁),或在记录机器忙碌度的前提下跑;单跑的墙钟数字只在本次条件下有效。
- 数据安全没有阈值,只有预期结果:一致或被拒,任何第三种结果都是缺陷。
复用与责任边界
Section titled “复用与责任边界”- 测量与探测协议已存在,M3 直接复用,不另建评测框架;协议修订按各自的勘误规则记录。
- 页面记录器、假 provider 栈、本地生产 Worker 栈与捕获脚本属于会话临时目录,不进仓库;进仓库的只有 closure client、验证器、夹具生成器和结果表。
- 缺陷修复不改写 M1/M2 的承诺;若一条路径暴露承诺列内的语义缺陷,修复后重跑 closure client 与受影响路径;若暴露承诺列外的语义,按系统地图归为并行能力,不阻塞 M3 结项,但须在产品说明的已知限制中如实陈述。
- S8–S10 的工程建设(观测、限流、费用结算、部署脚本)可与 P1–P4 并行,但 P6 只对同一 release commit 的字节做验收。
- P1:增长基准的规模格 S1、S2、S3′ 与深度序列 k1–k6 各完成 n=5 的授权运行,结果表报区间与费用;探测环 R0–R6 全部冻结。正式能力验收首次运行前,必须在 R1 验证域 issue 中冻结任务分布、样本量、正确性、成功率及总预算阈值;校准运行不算验收,不根据已看到的失败放宽标准。每个失败保留分类与去向,未知与未运行不计为通过。
- P2:closure client 全部断言与验证器回读在候选字节上通过;探测环 R4–R6 的回读与声明一致。
- P3:负载样本每一级都有基线记录;固定门槛无一违反;长会话无未完成事务。
- P4:每项数据安全预期结果一致或被拒,无第三种结果;备份与恢复路径在产品说明中有对应文字。
- P5:每任务费用随规模格记录;预算拒绝、限流与 kill switch 在零费用栈复现;80%/100% 告警经一次授权真实运行送达明确的人。
- P6:同一 release commit 的候选通过 G0–G4,远端逐字节核验、provider-off 云 smoke 与授权真实运行的结果与本地同一判据。
以上条件全部达成才可结项。状态与结果只记工作进度与 docs/benchmarks/ 下的结果表;本节不表示任何路径已经跑过,也不授权付费调用、部署或推送。