Skip to content

Physics Hinge World Selected Protocol Controls

easylogic edited this page Oct 11, 2026 · 1 revision

현재 시작 상태

선행 코드의203개 경로를 Integration a59eaf877cde02b2138c54dc0be03dd4a6b295b7에서 확인했다. 실제 반영 기준 새 작업 공간의 코드 전 계약은 2ef344eb다. 아래 source-only 상태 설명은 선택 당시 기록이다. 현재 파일별 병렬 구현을 시작했으며 새 수치 실행은 아직 없다.

HINGE2 World — 선택 protocol controls

Root 선택과 참조 문법을 함께 사용한다. 아래26개는 계획 수다. 실제로 실행하지 않았다. 초기 reference.stage는 initial로 선택했다. S0는 기존 첫 empty RETURN의 source cursor0 요청만 재사용하며 새 native step을 만들지 않는다.

#1179 selected World — independent protocol controls addendum

SOURCE ONLY. Selected Root/API/Controls/Reference Wiki pages override earlier proposals. Root's latest Integration check is b1ee4444; fe89 remains absent. No implementation or new calculation starts here. Read old physics-rigid-hinge-motor-reference/reference-controls.mjs only for strict-envelope/copy/JSON control structure. No old14/93 replay, new parser/import/build/model/reference execution or remote change.

1. Population and fixture authority

Freeze 26 independent requests per complete graph:3 positive/copy,8 malformed initial,14 world-step data controls,1 actual malformed JSON line. In the14 step controls,12 expect protocol INPUT and2 expect resolved numerical MISMATCH. No extra native World/candidate/motor/projection calls. Existing29 constructor/28 step control population stays separate. No D limit campaign, guard export or accepted-store setter.

I0 is the exact original initial request {op:'initial',config,sourceState,sourceRawHex,negativeZeroPaths}. It uses original HINGE2 constructor values/order, public initial state,416B/832hex and the four pointer roots {sourceState,commands,attempt,output}; only sourceState may be nonempty. No moving initial carrier or expected numerical output is generated by these controls. For world-step, output has exactly {state,diagnostics} when returned, and is null when refused; state is the unchanged copied public World state.

S0 is a COPY of the first already independently qualified returned empty-command step from original accepted cursor0, captured by existing W0 setup or main first-step population. It contains original prior accepted input, actual output/attempt/raw and exact selected12 top-level keys. It is not generated by an extra native step or taken from an old detached case. Positive repetition re-evaluates independently from original input; actual saved frames remain comparisons, never expected seeds.

If no qualified S0 exists, retain that actual failure and run no S0 controls. Report actual reached requests, not26, and no full protocol GO. Do not manufacture output/partial progress or add a physical trial to fill the population. Freeze the mutation recipes below before code; actual S0 bytes become a hashed runtime control locator. Every mutated request must fit selected256KiB; overflow follows the selected resource failure policy, not a larger limit or a schema-error success claim.

2. Exact response checks

All child responses have EXACT eight keys {ok,resolved,executionFailure,referenceStatus,metrics,reference,violations,error}. JSON bool/null are never coerced to numbers.

INPUT response: ok=false,resolved=false,executionFailure=true,status UNRESOLVED,metrics/reference=null,violations=[],error exactly {code:'REFERENCE_INPUT',message:'hinge world reference input is invalid'}.

JSON response has the same shape but exact {code:'REFERENCE_JSON',message:'hinge world reference line must be valid JSON'}. The raw request is one line containing { followed by LF; it is sent once through the actual selected IPC path, not through a fake local exception.

Qualified I0: ok=true,resolved=true,executionFailure=false,status RETURN,error=null,violations=[]; reference.stage=initial (not a producer attempt stage); no motor/free/projection/report calls; pairActualCompared=[false,false], pairReplies=[null,null]. Source/raw/config/initial cursor proof is actual, later phase errors are null. This selects initial response semantics before implementation.

Qualified S0: ok=true,resolved=true,executionFailure=false,status RETURN,error=null,violations=[]; both pairActualCompared true and both complete unchanged9-key parent replies retained. Parent prediction flags cannot satisfy actual qualification. First S0 reply is safely copied; mutate ONLY the caller's copied reply, then evaluate original S0 again. Require original input unchanged and fresh independent response equal to the pristine reply. Never cache that reply as an expected answer.

MISMATCH response: ok=false,resolved=true,executionFailure=false,status MISMATCH,error=null, nonempty violations naming the actual changed field/pair. Full reached proof and finite metrics remain. It is neither REFERENCE_INPUT nor CAP_REFUSAL. World status CAP_REFUSAL is not selected. Unknown native/observer objects are tested by native identity controls, never serialized into known protocol errors.

3. Three positive requests

ID Request Expected
P01 I0 original initial Qualified initial above; no numerical stage.
P02 S0 captured returned request Qualified step above.
P03 S0 again after caller mutates copied P02 reply Fresh cold same proof; input/reply isolation, no native call.

4. Eight initial INPUT controls

Clone I0; one stated mutation each. All eight expect exact INPUT envelope before any parent solve.

ID Exact mutation / distinct risk
I01 Add top-level extra:0 — exact request keys.
I02 sourceState.timeSeconds=null — null is not numeric0.
I03 sourceState.bodies[1].id='pairA0' — duplicate/wrong fixed IDs/order.
I04 sourceState.bodies[0].angularVelocityRadps[0]=false — boolean is not numeric0.
I05 sourceRawHex='00' — not416B.
I06 Replace first8 source raw bytes with LE quietNaN 000000000000f87f, JSON unchanged — raw finite admission.
I07 negativeZeroPaths.sourceState=['/pairStats/eligiblePairs','/pairStats/eligiblePairs'] — duplicate pointer guard precedes restoration/expected value.
I08 negativeZeroPaths.sourceState=['/bodies/0/positionM/0'] — existing NONZERO target cannot encode negativezero.

I07 is a schema-duplicate test, not proof that a negativezero counter is a valid constructor output. No JSON/parser call is used now to generate these bytes or results.

5. Fourteen world-step controls

Clone captured S0; canonical byte proof keeps the original template. Twelve malformed rows below expect INPUT; the last two are valid-data mismatches. No real simulated pair failure is fabricated.

ID Exact mutation Expected
S01 dt=null INPUT; original fixed step numeric required.
S02 outcome='prediction' INPUT; World wire has only returned/refused.
S03 sourceState.timeSeconds changed to a different finite value, source cursor unchanged INPUT; original source clock consistency.
S04 commandsRawHex='00' while original empty commands remain[] INPUT; vector count/order codec. S0 selected with empty commands.
S05 rawFrames.angular='00' INPUT; full frame416B length.
S06 sourceState.bodies[0].positionM[0] changed by finite+.001, raw.source unchanged INPUT; JSON/raw numeric correspondence, not geometry qualification.
S07 negativeZeroPaths.sourceState includes '/bodies/0/velocityMps/1' while that raw source scalar remains authenticated+0 INPUT; raw/pointer sign agreement. Use S0 original cursor0 input and authenticate that raw word is+0 before mutation; do not guess a later runtime sign.
S08 negativeZeroPaths.sourceState=['/absent'] INPUT; pointer must exist.
S09 Keep returned output; set attempt=null and negativeZeroPaths.attempt=['/stage'] INPUT; null root requires[]. Absence of a callback payload cannot contain zero-pointer proof.
S10 attempt.pairProgress[1].projectedRawHex=null while actual returned projection and whole projected frame remain INPUT; full/partial-mask consistency; no fabricated unreturned projection.
S11 attempt.pairProgress[0].lastCall.ordinal=2 while it is operation report/returned for first pair/global report ordinal1 INPUT; actual ordinal must match frozen pair/call ordering.
S12 outcome='refused',output=null,error={name:'PhysicsError',code:'NUMERIC_LIMIT',message:'invented World error'}; output zero pointers cleared INPUT; safe known tuple whitelist. Never accept a generic code as a valid cap.
S13 output.state.joints[0].angleRad changed by finite+.01, all other input/attempt/report data retained MISMATCH; valid number violates outgoing target/report authority. Not malformed JSON or a new motor input.
S14 outcome='refused',output=null,error={name:'PhysicsError',code:'NUMERIC_LIMIT',message:'hinge0 exceeded motor reaction limit'}; output zero pointers cleared; complete actual report-ready attempt with below-cap norm retained MISMATCH; KNOWN tuple with false actual/independent cap condition. It must not qualify a nominal World refusal or be recoded INPUT solely for failing a numerical gate.

For S09 preserve all other request fields; complete actual output/diagnostics still supply frames and parent proof, but a null attempt must have an empty pointer list. For S13 recompute ONLY proof pointer list if an overwritten field was a recorded−0; do not change numerical values to make proof agree. For S14 preserve attempt.error=null (callback before cap), parent outputs/proofs/raw208B, full phase raw and true calls. No observer/payload unknown is fabricated. S10/S11 are structural reachability inconsistencies, not independent numerical mismatch tests.

6. Counts, transport and source boundary

Per complete graph: initial9requests (P01+I01..08), world-step16requests (P02/P03+S01..14), raw JSON1 =26. Across3 fully completed graphs:78 independent protocol requests; extra native World/motor/projection calls0. Cold independent reference evaluation still actually runs for reached requests; its internal helper/precision/parent solve counts are recorded separately. Among26:3 qualified/copy,20 INPUT,2 resolved MISMATCH,1 JSON. Record every request/reply before next, full actual IPC bytes/hash/LF/offset and reached count. No old14/93 reference population rerun.

No spawn/signal/fault-injection campaign is added. Actual transport malformed reply/resource/EOF failures use selected21 wrapper tuples and preserve first failure, not a fabricated child protocol envelope. Any parent reply retained is its actual unchanged success9-key or safe-refusal schema; outer8-key padding and reduced proof are forbidden. Summary never labels negative protocol controls numerical World GO.

Budget remains selected main1,024/fixed64/emergency8MiB, with all controls≤32MiB and existing request256KiB/reply512KiB/receipt4KiB. Most INPUT replies use only the fixed eight-key error envelope, but no compression/alias savings are assumed to enlarge the limit. Record protocol bytes separately from29 constructor/28 step controls. No runtime data is truncated to satisfy schema or budget; overflow stops with GRAPH_NO_COMPLETE_PROOF and no next request.

Original source-backed patterns: old reference-controls.mjs uses exact8-key checks, unknown-op/required-field/null/bool/raw-length/raw-JSON mismatch controls, actual askRaw('{'), and copy isolation. NEW World op names,416B/208B sizes, six-phase masks, four pointer roots, pairProgress ordinals, World error literals and MISMATCH cases come from the selected Wiki wire and must be fixed in the new before-code addendum, not attributed to old controls. Exact provider/native source hashes remain a start gate after adoption; this document changes no model, cap, physical fixture or gate.

Clone this wiki locally