<div dir="ltr"><font color="#000000"><span class="gmail-token gmail-token" style="">Claude.ai is recommending this change to X3D JSON schema on the grounds that it's more validateable.  I'm not sure if it works yet.  Colors must be in tuples of 3.  I know I was originally against this, but it does make sense from a validation point of view.</span></font><div><font color="#000000"><br></font></div><div><font color="#000000">Essentially, it's an array of arrays.</font></div><div><font color="#000000"><br></font></div><div><font color="#000000">My argument was that a single array was more inline with the rest of the X3D encodings, but perhaps not SAI?</font></div><div><font color="#000000"><br></font></div><div><font color="#000000">WebGL uses TypedArrays.<br><span class="gmail-token gmail-token" style=""></span></font><div><font color="#000000"><span class="gmail-token gmail-token" style=""><br></span></font></div><div><font color="#000000"><span class="gmail-token gmail-token" style="">"@groundColor"</span><span class="gmail-token gmail-token" style="">:</span> <span class="gmail-token gmail-token" style="">{</span><span class="gmail-token gmail-token" style=""><br>"description"</span><span class="gmail-token gmail-token" style="">:</span> <span class="gmail-token gmail-token" style="">"MFColor inputOutput"</span><span class="gmail-token gmail-token" style="">,</span></font><div><font color="#000000"><span class="gmail-token gmail-token" style="">"type"</span><span class="gmail-token gmail-token" style="">:</span> <span class="gmail-token gmail-token" style="">"array"</span><span class="gmail-token gmail-token" style="">,</span></font></div><div><font color="#000000"><span class="gmail-token gmail-token" style="">"items"</span><span class="gmail-token gmail-token" style="">:</span> <span class="gmail-token gmail-token" style="">{</span></font></div><div><font color="#000000"><span class="gmail-token gmail-token" style="">              "type"</span><span class="gmail-token gmail-token" style="">:</span> <span class="gmail-token gmail-token" style="">"array"</span><span class="gmail-token gmail-token" style="">,</span></font></div><div><font color="#000000"><span class="gmail-token gmail-token" style="">              "minItems"</span><span class="gmail-token gmail-token" style="">:</span> <span class="gmail-token gmail-token" style="">3</span><span class="gmail-token gmail-token" style="">,</span></font></div><div><font color="#000000"><span class="gmail-token gmail-token" style="">              "maxItems"</span><span class="gmail-token gmail-token" style="">:</span> <span class="gmail-token gmail-token" style="">3</span><span class="gmail-token gmail-token" style="">,</span></font></div><div><font color="#000000"><span class="gmail-token gmail-token" style="">              "items"</span><span class="gmail-token gmail-token" style="">:</span> <span class="gmail-token gmail-token" style="">{</span></font></div><div><font color="#000000"><span class="gmail-token gmail-token" style="">                    "type"</span><span class="gmail-token gmail-token" style="">:</span> <span class="gmail-token gmail-token" style="">"number"</span><span class="gmail-token gmail-token" style="">,</span></font></div><div><font color="#000000"><span class="gmail-token gmail-token" style="">                    "minimum"</span><span class="gmail-token gmail-token" style="">:</span> <span class="gmail-token gmail-token" style="">0</span><span class="gmail-token gmail-token" style="">,</span></font></div><div><font color="#000000"><span class="gmail-token gmail-token" style="">                    "maximum"</span><span class="gmail-token gmail-token" style="">:</span> <span class="gmail-token gmail-token" style="">1</span></font></div><div><font color="#000000"><span class="gmail-token gmail-token" style="">               }</span></font></div><div><span class="gmail-token gmail-token" style="color:rgb(0,0,0)">}</span></div><div><span style="color:rgb(0,0,0)">
</span><span class="gmail-token gmail-token" style="color:rgb(0,0,0)">}</span></div></div></div></div><br><div class="gmail_quote gmail_quote_container"><div dir="ltr" class="gmail_attr">On Thu, Feb 19, 2026 at 4:32 AM John Carlson <<a href="mailto:yottzumm@gmail.com">yottzumm@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr">I'm looking for someone to work on JSON schemas, particularly, improving X3D JSON schema.<div><br></div><div>While the X3D JSON schema works in non-strict mode (for JSON schema draft2020-12), it doesn't work in strict mode.  While I have been successful at removing some of these stumbling blocks, I need help with some, particular understanding how properties like prefixItems, items, minItems and maxItems work with arrays, and with oneOf.</div><div><br></div><div>Knowledge of JavaScript is helpful, and I'd like to work on the @geoSystem field to work in strict mode, yet still offer the same validation capabilities (or better).  Knowledge of coordinate systems like UTM, GD, WGS84 might be helpful.  But it's more important to know about enumerations and arrays of strings.</div><div><br></div><div>Here's my development environment:</div><div><br></div><div><a href="https://github.com/coderextreme/x3dvalidate" target="_blank">https://github.com/coderextreme/x3dvalidate</a></div><div><br></div><div>Once you have the project checked out, you can test with:</div><div><br></div><div>C:\> node.exe index.js examples\abox.json</div><div><br></div><div>(or node, or nodejs)</div><div><br></div><div>The schemas are in the schemas folder.  Here's the one that needs work:  schemas\x3d-4.1-JSONSchema.json  Let's just get this one schema working for now.</div><div><br></div><div>Once the schema has been prepared, I will work on getting the auto-generation working for strictly complying schemas (I've already been working on that).</div><div><br></div><div>There may either be updates to X3D JSON schema, or we may request enhancements to the JSON schema standard for our use case.  Possibly, enhancements to Ajv may be needed.</div><div><br>The work will involve validating the X3D JSON schema over and over again as the schema is improved, validating the X3D JSON schema itself.</div><div><br></div><div>While I'm not a business, there might be other ways to renumerate you.  Kind of like working for someone to work your house, I guess?</div><div><br></div><div>I guess I'll try to get AI to make suggestions next.</div><div><br></div><div>Thanks,</div><div><br></div><div>John</div></div>
</blockquote></div>