Roll back junction-contact / discharge / light-theme simulation changes to the previously stable production tree while keeping linear history. Co-authored-by: Cursor <cursoragent@cursor.com>
183 lines
6.2 KiB
TypeScript
183 lines
6.2 KiB
TypeScript
/**
|
||
* Canonical summary data for `/documentation`.
|
||
* Authority: official sources present in-repo → production code → unit tests.
|
||
* Unverified / planned items are labeled explicitly — never implied complete.
|
||
*/
|
||
|
||
/** Kept for e2e (`docs-production-status`) and acquisition-pack provenance. */
|
||
export const PRODUCTION_STATUS = {
|
||
acquisitionPackStatus: 'DATA_ACQUISITION_PACK_READY',
|
||
webTwinStatus: 'BASELINE_PRESERVED',
|
||
unitTests: '196/196',
|
||
productionBuild: 'PASS',
|
||
contactPhysics: 'NOT_FULLY_VALIDATED',
|
||
officialCompliance: 'PARTIAL_SOURCES_PRESENT',
|
||
} as const;
|
||
|
||
export const CONFIRMED_LAYOUT = {
|
||
workspaceMm: { length: 10000, width: 6000 },
|
||
conveyorWidthMm: 500,
|
||
conveyorHeightMm: 700,
|
||
modules: ['clean', 'camera', 'sorter'] as const,
|
||
receivers: ['B_STRAIGHT', 'ZONE_C', 'ZONE_D'] as const,
|
||
} as const;
|
||
|
||
export const CLASSIFIER_BOUNDS = {
|
||
status: 'CURRENT_IMPLEMENTATION_VERIFIED_IN_CODE' as const,
|
||
officialSourceReference: 'official_sources/doc-1783095831.pdf',
|
||
officialSourceParsedThisPass: false,
|
||
minExclusiveMm: { width: 10, depth: 10, height: 10 },
|
||
maxExclusiveMm: { width: 450, depth: 320, height: 320 },
|
||
roundnessThresholdExclusive: 0.8,
|
||
display: {
|
||
min: '> 10×10×10 мм',
|
||
max: '< 450×320×320 мм',
|
||
roundness: 'K > 0.8',
|
||
},
|
||
checkOrder: 'dimensions→C, else circular→D, else B' as const,
|
||
} as const;
|
||
|
||
export const ROUTE_MAPPING = [
|
||
{ category: 'B', physicalRoute: 'STRAIGHT', activeDiverter: 'NONE', signedAngleDeg: 0 },
|
||
{ category: 'C', physicalRoute: 'PHYSICAL_LEFT', activeDiverter: 'LEFT', signedAngleDeg: -45 },
|
||
{ category: 'D', physicalRoute: 'PHYSICAL_RIGHT', activeDiverter: 'RIGHT', signedAngleDeg: 45 },
|
||
] as const;
|
||
|
||
export const DIVERTER_KINEMATICS = {
|
||
rotationDurationSec: 0.5,
|
||
openingSafetyMarginSec: 0.15,
|
||
contactPlaneS: 1.0538,
|
||
clearPlaneS: 1.6,
|
||
phases: ['READY', 'ARMED', 'OPENING', 'HOLDING', 'CLOSING'] as const,
|
||
productBound: true,
|
||
oneActiveProduct: true,
|
||
closeAfterRearClear: true,
|
||
generatedMechanismActive: false,
|
||
} as const;
|
||
|
||
export const CAD_PROVENANCE = {
|
||
authorFcstd: '3d_models/conveer.FCStd',
|
||
authorSha256: '90c1844a4ca05e26def783d6130fc4b993430dde14307534ef8fbb21c9fac2e6',
|
||
runtimeGlb: 'public/models/sorter/conveyor-clean.glb',
|
||
runtimeSha256: '1dc7a8d7891bfe756e277ad5368df74cb73410156b2fe0f92845afb8a56f285a',
|
||
authorServosInSorterModule: true,
|
||
generatedMechanismInactive: true,
|
||
hornTransmissionInGlb: 'ABSENT_OR_INCOMPLETE' as const,
|
||
} as const;
|
||
|
||
export const PHYSICS_STATUS = {
|
||
implemented: [
|
||
'Runtime product motion on belt (domain pose + Rapier handoff)',
|
||
'Product-associated diverter route timing (productId-bound)',
|
||
'Synchronized CAD diverter visual / kinematic targets',
|
||
'CCD enabled for light/thin SKUs in runtime and headless sim',
|
||
'Visual/physics spawn gating via product asset preload',
|
||
],
|
||
notFullyValidated: [
|
||
'Complete contact-only routing through CAD diverters',
|
||
'Belt surface velocity exactly 1 m/s with tangential drive',
|
||
'Calibrated friction / mass / COM per SKU',
|
||
'Fully physical continuous conveyor loop',
|
||
'Receiver capture under all item classes',
|
||
],
|
||
planned: [
|
||
'Visual full belt loop with surface-velocity coupling',
|
||
'Controlled tangential friction at 1 m/s',
|
||
'Dynamic rigid bodies for divert segment with fixed timestep',
|
||
'Per-SKU collider, damping, and friction profiles',
|
||
],
|
||
} as const;
|
||
|
||
export const VALIDATION_BOARD = [
|
||
{ item: 'Unit tests', status: '196/196 PASS' },
|
||
{ item: 'Production build', status: 'PASS' },
|
||
{ item: 'Active routes / + /documentation', status: 'PASS' },
|
||
{ item: 'conveyor-clean.glb checksum', status: 'PASS' },
|
||
{ item: 'Author FCStd checksum', status: 'PASS' },
|
||
{ item: 'Frozen diverter angles / 0.50 s', status: 'PASS' },
|
||
{ item: 'Full contact physics', status: 'NOT_FULLY_VALIDATED' },
|
||
] as const;
|
||
|
||
export const OFFICIAL_SOURCE_MATRIX = [
|
||
{
|
||
source: 'input_info/doc-1783009063.pdf',
|
||
purpose: 'Allowed software list',
|
||
present: true,
|
||
canonical: true,
|
||
usage: 'Stack compliance reference',
|
||
},
|
||
{
|
||
source: 'input_info/doc-1783009942.pdf',
|
||
purpose: 'Workspace / zone scheme',
|
||
present: true,
|
||
canonical: true,
|
||
usage: 'Layout provenance (workspace 10×6 m)',
|
||
},
|
||
{
|
||
source: 'input_info/doc-1783011400.pdf',
|
||
purpose: 'Track 3 scoring criteria',
|
||
present: true,
|
||
canonical: true,
|
||
usage: 'Jury scoring — not re-parsed this pass',
|
||
},
|
||
{
|
||
source: 'input_info/doc-1782987706.zip',
|
||
purpose: 'Official STEP product set',
|
||
present: true,
|
||
canonical: true,
|
||
usage: 'Product geometry source archive',
|
||
},
|
||
{
|
||
source: 'input_info/doc-1782987733.zip',
|
||
purpose: 'Official STL product set',
|
||
present: true,
|
||
canonical: true,
|
||
usage: 'Feeds public/models/*.stl',
|
||
},
|
||
{
|
||
source: 'input_info/doc-1783011771.zip',
|
||
purpose: 'Official pack archive',
|
||
present: true,
|
||
canonical: true,
|
||
usage: 'Retained official material',
|
||
},
|
||
{
|
||
source: 'official_sources/doc-1783095831.pdf',
|
||
purpose: 'Classifier bounds authority cited by code',
|
||
present: true,
|
||
canonical: true,
|
||
usage: 'Referenced by classifier.ts; not re-parsed this pass',
|
||
},
|
||
{
|
||
source: 'input_info/extracted/Постановка_Задача_3_сжато_2.pdf',
|
||
purpose: 'Full task brief (historical citation)',
|
||
present: false,
|
||
canonical: false,
|
||
usage: 'MISSING — do not cite as available evidence',
|
||
},
|
||
] as const;
|
||
|
||
export const RUNTIME_FLOW = [
|
||
'SPAWN',
|
||
'CONVEYOR',
|
||
'CAMERA',
|
||
'CLASSIFICATION',
|
||
'ARMED',
|
||
'OPENING',
|
||
'HOLDING',
|
||
'CLOSING',
|
||
'RECEIVER',
|
||
] as const;
|
||
|
||
export const CURRENT_LIMITATIONS = [
|
||
'Full physical contact sorting through CAD diverters is not fully validated.',
|
||
'Belt surface-velocity drive at exactly 1 m/s is planned, not complete.',
|
||
'Per-SKU physical parameters still require profiling/calibration.',
|
||
'Author CAD horn / transmission incomplete in active GLB.',
|
||
'Official compliance is partial: missing extracted task PDF; scoring PDF not re-parsed this pass.',
|
||
'Repository retains only the web twin, author CAD, official sources, and active tests.',
|
||
] as const;
|
||
|
||
/** @deprecated alias — historical Gate wording retained for acquisition-pack note */
|
||
export const DATA_ACQUISITION_SEQUENCE = ['MEASURE', 'VERIFY', 'FREEZE', 'DESIGN'] as const;
|