Opinionated OCaml linter with Merlin integration for code quality, naming conventions, and style checks
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

ltp: ION interop — SDNV encoding verified against NASA JPL ION 4.1.4

15 SDNV vectors including RFC 6256 test cases, generated by ION's
encodeSdnv (C). Byte-identical output for all values 0 through 2^63-1.

+48
+42
docs/index.html
··· 1602 1602 </div> 1603 1603 <div class="error-hint"><p>Interop test directories should be named after the oracle tool (e.g. spacepackets, dariol83, crcmod), not the language (e.g. python, go). This makes it clear which external implementation is the reference.</p></div> 1604 1604 </div> 1605 + <div class="error-card" id="E802"> 1606 + <div> 1607 + <span class="error-code">E802</span> 1608 + <span class="error-title">Interop test not replay-only</span> 1609 + </div> 1610 + <div class="error-hint"><p>Traces must be committed to git. The test stanza must depend on (source_tree traces) so tests run from traces alone — the external tool is NOT required at test time. This is the 'generate once, replay always' principle.</p></div> 1611 + </div> 1612 + <div class="error-card" id="E803"> 1613 + <div> 1614 + <span class="error-code">E803</span> 1615 + <span class="error-title">Interop test requires external tool</span> 1616 + </div> 1617 + <div class="error-hint"><p>Interop tests must run from committed traces without needing the external tool at test time. The test.ml should only read trace files, never shell out to run the oracle. If you need the oracle, put it in the generator script.</p></div> 1618 + </div> 1605 1619 <div class="error-card" id="E805"> 1606 1620 <div> 1607 1621 <span class="error-code">E805</span> ··· 1609 1623 </div> 1610 1624 <div class="error-hint"><p>Python oracles must pin dependencies in requirements.txt with exact versions (e.g. crcmod==1.7). This ensures reproducible trace generation without depending on local installs.</p></div> 1611 1625 </div> 1626 + <div class="error-card" id="E806"> 1627 + <div> 1628 + <span class="error-code">E806</span> 1629 + <span class="error-title">Missing go.mod</span> 1630 + </div> 1631 + <div class="error-hint"><p>Go oracles must pin the upstream module in go.mod with a tagged version or pseudo-version. This ensures reproducible trace generation without depending on $GOPATH or local clones.</p></div> 1632 + </div> 1633 + <div class="error-card" id="E807"> 1634 + <div> 1635 + <span class="error-code">E807</span> 1636 + <span class="error-title">Missing Cargo.toml</span> 1637 + </div> 1638 + <div class="error-hint"><p>Rust oracles must pin the upstream crate in Cargo.toml with a tagged version or git rev. This ensures reproducible trace generation without depending on local checkouts.</p></div> 1639 + </div> 1612 1640 <div class="error-card" id="E810"> 1613 1641 <div> 1614 1642 <span class="error-code">E810</span> ··· 1630 1658 </div> 1631 1659 <div class="error-hint"><p>Use csvt (Csvt.decode_file with a Csvt.Row codec) for CSV trace parsing. Never hand-roll CSV readers with open_in/input_line/split_on_char.</p></div> 1632 1660 </div> 1661 + <div class="error-card" id="E825"> 1662 + <div> 1663 + <span class="error-code">E825</span> 1664 + <span class="error-title">Missing csvt dependency</span> 1665 + </div> 1666 + <div class="error-hint"><p>Interop tests with CSV traces should use csvt for parsing. Add csvt to the (libraries ...) in the dune file and use Csvt.decode_file with a Row codec.</p></div> 1667 + </div> 1633 1668 <div class="error-card" id="E830"> 1634 1669 <div> 1635 1670 <span class="error-code">E830</span> 1636 1671 <span class="error-title">Inlined algorithm in generator</span> 1637 1672 </div> 1638 1673 <div class="error-hint"><p>The generator MUST call the upstream tool's public API. Never reimplement the algorithm being verified — this defeats the purpose of interop testing. If the public API doesn't expose what you need, drop the test rather than inlining.</p></div> 1674 + </div> 1675 + <div class="error-card" id="E835"> 1676 + <div> 1677 + <span class="error-code">E835</span> 1678 + <span class="error-title">pip install --break-system-packages</span> 1679 + </div> 1680 + <div class="error-hint"><p>Python deps must live in a venv. Never use pip install --break-system-packages. The generate.sh wrapper should create/reuse a venv automatically.</p></div> 1639 1681 </div> 1640 1682 1641 1683 <a href="#top" class="back-to-top">↑ Top</a>
+6
lib/data.ml
··· 59 59 E726.rule; 60 60 E800.rule; 61 61 E801.rule; 62 + E802.rule; 63 + E803.rule; 62 64 E805.rule; 65 + E806.rule; 66 + E807.rule; 63 67 E810.rule; 64 68 E815.rule; 65 69 E820.rule; 70 + E825.rule; 66 71 E830.rule; 72 + E835.rule; 67 73 ]