Repository navigation
GPU Axis Box Boolean Buffers
Current status: native CPU preparation COMPLETE at9831bd0e. The initial READY freeze is retained below. Issue1111. Renderer/Viewer adoption is separate.
Native CAD1101 now supplies actual restricted integer-axis-box Boolean results, merged at059891face3efa449cebe06bf4d674c6f3467315. Native range818f514a→346c07fa and receipt6086967511 preserve first build/new source/file/compiled proof. Nonempty aggregate cubical embedding/manifold/material is certified within that family; individual generated open Face bundles remain solid:false. Empty has no output Bodies/Shells/panels/sources and solid:false. Source0/schema0 inputs retain whole original models (the recorded seven-object inputs are not schema7), generated panel Model5 sources and original qualified lineage.
Actual GPU capability audit found no whole-result route: prepareBooleanShellBuffers expects a different coplanar extrusion-mesh DTO; QualifiedFace admits2..6, Mesh/Primitive1..4. Numeric capacity alone is not profile compatibility. No matching all-stateGPU axis-box title card. A subset/two scenes or synthetic single originalSurface is not whole-result adoption. Reuse actual CAD validator/tessellation and GPU coordinate/geometry checks; never rebuild Boolean geometry with a new kernel.
Exact actual merged parent9ab76c4fd846ef75760b2615936f9ca4b4cf1f38 includes1101 and GPU1102/1103/1107, plus native World-query1105 (not required or called here). Reuse clean isolated /Users/user/.barocss-ai/v3/wt/gpu-curve-coordinate-loss, branchcodex/gpu-axis-box-boolean-buffers. Preserve all prior native branches and1095 separate policy-denied worktree. Four paths only: new packages/barocss-gpu/src/axis-box-boolean-buffers.ts, src/index.ts, GPU README, new examples/gpu-scene/axis-box-boolean-buffers-flow.mjs. Root owns module/barrel/README/build/evidence; helper may own ONLYnewflow/static syntax. No CAD/Viewer/Loader/editor/root/lock/manifest/static/policy/kernel edits or self-merge.
Runtime exports prepareAxisBoxBooleanBuffers(input:unknown,options:AxisBoxBooleanBufferOptions):PreparedAxisBoxBooleanBuffers and AxisBoxBooleanBufferError. Types exported AxisBoxBooleanBufferOptions, PreparedAxisBoxBooleanBuffers, AxisBoxBooleanPanelRange, AxisBoxBooleanBufferDiagnosticCode. Typed codes INPUT/BUDGET/NATIVE/BINDING/CONVERSION; Error includes real cause, message<=1024. No public renderer/compileGpu/native schema/source change. Existing public root names remain; only2 new runtime names.
Options exact own3 fields: basis:'authored-xyz-matches-rhyup',mmToSceneUnit finitepositive,translate3finiteScene values abs<=1000. Required explicit basis; no inferredup/permutation/DPR/pose/color/material/camera. Native original authoredXYZ/mm is retained; only derived coordinates multiply by the scale once then add scene translation once. Existing per-coordinate binary64/F32zero loss, final±1000 and triangle/winding checks apply. No tolerance clamp/weld/rescale or originalsource/native rewrite.
Output exact schema:'barocss-gpu-axis-box-boolean-buffers',version0,profile:'native-integer-axis-box-boolean-panels-v0',coordinateSystem:'right-handed-y-up',native(full independently copied/frozen whole AxisBoxSolidBooleanResult),options,positions:F32,normals:F32,indices:U16,panels:readonlyRanges,bounds:min/maxScene|null,report. Typed arrays are independent caller-owned mutable copies; immutable native/metadata/options never alias caller input. Repeated preparation has no cache/timer/acceptedframe state. Buffers alone are not input to oldrenderer profiles and are not an originalSurface.
Whole copied input is validated once through actual publicvalidateAxisBoxSolidBoolean before reading trusted topology or allocating outputbuffers. Reuse existing GPU snapshotNativeMesh:1Mvalues/depth40/arrays8192/fields64/string262144, plain ornull ownrecords, dense arrays, no getters/symbols/hidden/foreign/cycles/nonfinite. These are explicit GPU bounds (producer depth64 does not widen them). Envelope/options refusal mapsINPUT with actual cause; explicit output/source-cap refusalBUDGET, parentvalidationNATIVE with actualnativecause, map/profile incoherenceBINDING, unsafe sampling/conversion/triangleCONVERSION. Original+generated source text totalUTF8<=4MiB; generated individual source<=65536UTF8bytes, original<=262144codeunits within inherited envelope. Do not fabricate readiness from unrun integrated checks.
For every validatedpanel exactly one actualtessellateSurface(original generated degree1 Surface,{countU:2,countV:2,revision:0}); no arbitraryresampling orsource regeneration. Source.model must equal complete panel.bundle.geometry; exactly one Surface/four Curves Model0/mm, forwardFace ID/Surface ID/source.panelId binding. Parent validator already reconstructs source compilation; newdirectsourcecompilecalls0, inherited work retained separately.
Canonical buffer order is actual2×2 CAD parameter order [0,0],[0,1],[1,0],[1,1], matching nativepanelvertexIDs [0,3,1,2]; verify exact packetXYZ against full nativevertexpointmap. Local indices [0,2,1,2,3,1]; copy with globalvertexoffset4i. Verify native normals point on panel.axis with panel.sign toward its empty neighbor, including cavity. Keep hardnormal face vertices separate; no welding. One unique shell perpanel and matchingbody/shell association. Preservegenerated sourceId/modelId/SurfaceId/FaceId versus originaloperandqualification/relativeorientation/exactdimensionlessUVlineage; never collapse these namespaces.
Panel range exact fields panelId/bodyId/shellId/sourceId/modelId/surfaceId/faceId,vertexOffset/indexOffset,vertexCount4/indexCount6,nativeVertexIdsInBufferOrder,lineage. Preserve complete nativeBodies/Shellroles/originalSources in native; no fake singleBody or flattening of provenance. Maximum72panels=>288vertices/144triangles/432indices,7776 typed geometry bytes (3456positions+3456normals+864indices), capacity arithmetic not device/memory/performance certification. Preflight capacities before typed allocation; sample into bounded temporaryNumber arrays, check allconverted positions/geometry before outputF32/U16 creation, then finalFloat32 geometrycheck. Failed candidate exposes no partial publicoutput; localCPUarrays areGC-owned, noGL resource.
Validempty returns zero arrays/ranges,nullbounds, retained emptyNative/report; no inventedSolid or dummytriangle. Report directnativeValidationCalls1,tessellateSurfaceCallsP,sourceCompilationCalls0,vertexCount4P,triangleCount2P,geometryBytes,sourceBytes,maximumPanels72,maximumGeometryBytes7776. Inherited CAD validator/tessellation internalwork is not relabelled GPUdirectcounts. Firstcard stages only filledpanels; trueedge paths, colors, renderer, screenpicking, Viewer/editor adoption andGLB are later independently frozen stages. Full nativeedges/lineage still retained.
First affectedGPUbuild then ONE new Node22 source/API/file flow using actual recorded1101 union/cavity/sever/empty resultfiles in evidence-axis-box-boolean-cad/demo-output, not oldproducer-demo reruns. Current ordinaryGPU source and actualpublishConfig compiledpublicJS prepare each wholeinput, preserve originals/unusedCurve/qualifiedIDs/sourcebits/coldfiles. ActualFloat32/U16arrays and allpanel/body/shell/source/range/normal/vertex binding checked independently; cavity60panels/outer+innerShells/sever2Bodies/emptyzeroArrays tested. One safe scale/translation conversion and exactstage/supportcounts. Reject changed generatedsource/nativebinding/foreignfamily, optionsbasis/getter/unsafeconversion andmalformed nativegetter without execution; acceptedpriorfiles/native/output unchanged. Mutating outputtypedarrays or callerinput does not alter ownednative/another freshoutput. Emit compact CPUreceipt/coldreprepare through publiccompiledAPI, actualrootJS/types/newnames/hashes; no packed/independentreader/broadparent/GL/browser/gallery/performance campaign.
Native COMPLETE means whole CPU buffer preparation only. CADrestrictedSolidproof stays native; derivedF32 is not a geometric/manufacturing certificate. No automatic renderer/Viewer/Loader/editor adoption/publication.1095's denied actualbrowserflow cannot be substituted; no browser/port/tool/CDP/proxy workaround. Exactcleanparent/head/results/firstfailures/repairs/supportlimits inIssue/Wiki, oneimmutablefourpathhandoff tosoleIntegration andactualfutureconsumer when defined. Immediatelynextownedroadmapneed; no Planner assignment/ordergate/newpermanentWork/model/cadence/release change.
3D capability map · native Shell buffer manual · qualified Face contract · GPU roadmap.
Clean immutable parent 9ab76c4fd846ef75760b2615936f9ca4b4cf1f38 → initial c38c987896333c76f802dbcb7fb2c23f42077cf4 → final 9831bd0eca5a750cc2607c57b0cddd531bad4bb4. Branch codex/gpu-axis-box-boolean-buffers, isolated /Users/user/.barocss-ai/v3/wt/gpu-curve-coordinate-loss. Exactly four paths: new axis-box-boolean-buffers.ts, GPU index.ts, README and new axis-box-boolean-buffers-flow.mjs. Author/committer easylogic cyberuls@gmail.com, gh easylogic. No CAD/kernel/Viewer/Loader/editor/shared/root/lock/manifest changes.
FIRST affected GPU build0 (697.9KiB) and FIRST ONE focused source/emitted-public API/cold-file flow0:8 accepted preparations and16 actual refusals across2 providers. Before handoff, incoming CAD1108 broadened the same producer schema/API to separated/contact inputs. Final9831bd0e therefore explicitly retains this frozen first GPU profile's positive-overlap requirement on ALL3 axes. Same owned flow reran after that concrete scope guard at clean final head: affected build0 (698.2KiB), same8 accepted/16 refusals passed. Earlier proof and hashes remain preserved. No first build/flow failure. This is not a timer-driven replay or new contact adoption.
Public prepareAxisBoxBooleanBuffers and AxisBoxBooleanBufferError plus4 public types are available in actual source and compiled JS/declarations. Root runtime exports54; old52 names retained. Whole copied native result is validated once, then actual native2×2 tessellation stages every panel. Generated versus original source/model/Face/Surface qualification, body/shell ownership, outward normals including cavity, native vertex order[0,3,1,2], actual indices and exact lineage retained. No Boolean or tessellation kernel was replaced; new direct source compilation0, inherited validator work stays in native report.
Actual recorded1101 union/cavity/sever/empty files were consumed, not producer demos rerun. Cavity60 panels/2 shells/volume208mm3, sever2 bodies and valid empty zero arrays/null bounds/solid:false passed. All originals, unused degree5 Curve, generated source text, source/native/caller bits and cold files survived. Typed-buffer and caller mutation isolation passed. Maximum executed geometry6480bytes; declared72-panel/288-vertex/144-triangle/7776-byte cap is arithmetic, not executed72 capacity or device/memory/performance certification. Getter0, real child causes and prior accepted files retained on generated-source/body-binding/foreign-family/options/getter/F32 loss/translated-collapse refusals. Explicit wrong basis has no invented cause.
Final actual hashes: ordinary GPU source79f6825755976756f964c0bf98fe86a2f4e106c0a05b4d4772f1ca1a9b093302; compiled root641649938ec9a97ebd17d355adc62deb56d22697fe71ae61ad5864a57ec06ed1; root declarations1a053e26308500aada122107823add113842a9ab0e4ba28ada51c65bf1012944. Evidence /Users/user/.barocss-ai/v3/evidence-axis-box-buffers-gpu/{contract.md,checkpoint.json,checkpoint.scope.json,build-first.log,flow-first.log,build-scope.log,flow-scope.log,flow-first/actual-result.json,flow-scope/actual-result.json} plus copied original/generated/cold native/prepared files. Helper only wrote the new flow and checked syntax; root owns executed evidence. A pre-run fixture correction allowed cause:null for a direct basis check; no runtime failure or fake cause.
Native COMPLETE is whole CPU panel-buffer preparation only. actualGL:false/successfulRenderer:false; no renderer, Viewer/Loader/editor target, pixels, recovery, manufacturing or global floating certificate. Native restricted integer-cell Solid certification remains native and unchanged; individual Face bundles remain open/not-Solid. No legacy profile widening or synthetic aggregate Surface. CAD1108 separated/contact domain remains an explicit follow-up with its own actual provider/input acceptance. No extra CAD build, old producer replay, broad reader/packed/gallery/performance/Review campaign, publication or browser workaround.1095 still needs its actual authorized browser flow after policy restoration.
One immutable final four-path delta to sole Integration; actual consumers are tracked separately. Next owned work freezes the actual new1108 input domain and a future complete-result renderer. Native, merged, current integrated, consumer and publication stages remain separate; no Planner order gate.